王思力
摘 要:结合核技术应用专业技术人员在科研生产中遇到的问题,针对专业计算程序二次开发中的典型问题给出了具体的技术解决方案。以放射性后果分析程序和射线屏蔽计算程序为例,分别采用PAVAN、PAVDOS编制了放射性事故后果分析计算程序PandP,采用LabWindows/CVI、VC++设计实现了加速器屏蔽计算程序AcDose,对专业计算程序的二次开发进行了详细分析。
关键词:核技术应用;二次开发;FORTRAN;VC;LabWindows/CVI
DOIDOI:10.11907/rjdk.1511375
中图分类号:TP303
文献标识码:A 文章编号文章编号:16727800(2015)012002803
1 核技术专业程序应用中存在的问题
核技术应用领域涉及大量专业计算,科研人员进行分析计算时需要专业的程序。然而,实际应用中这些程序存在以下问题:
(1)多数采用FORTRAN语言开发,源代码不宜阅读。程序开发人员在编制程序时,注释的内容比较少,同时程序中经常会用到经验公式,很多参数采用了FORTRAN程序的默认变量声明,造成源程序非常难懂[1]。
(2)计算程序没有操作界面,输入输出都是基于文本文件,采用“卡片”(就是一行有特定要求和意义的字符串)式操作,需要对计算结果进行二次处理,过程繁琐。“卡片”编写较慢、不直观,经常需要查阅手册;如果分析对象太复杂,输入卡就会非常复杂,容易出错;输出结果中包含多种信息,分析结果提取比较繁琐。
(3)专业计算程序基本上都是由核工程专业技术人员编制和修改,他们既是开发者又是使用者。专业计算程序用户集中且总数较少,他们关注的重点不是程序的实现形式,而是程序的算法和数学模型,导致这些计算程序在数据录入和结果输出方面功能比较单一。
(4)大部分专业程序没有源代码,只有可执行程序,不能直接在源代码的基础上进行修改,虽然程序比较权威,但功能单一,需要进行大量的假设和后续数据处理。
2 技术解决方案
在核技术科研生产中,经常会出现一项任务涉及多个计算任务,每一种计算任务又从属于不同的研究方向。如加速器设计过程中,就会涉及到热工(冷却系统)、力学(结构设计)、辐射防护(屏蔽计算)、加速器物理(磁场计算)、自动控制(PLC编程)等。尽管有专业划分和多人协作,但工作过程中,一个人往往需要对各个方面都有所了解。此时,依据现有分析工具进行二次开发,往往可以有效提升单个科研人员科研设计工作效率。
核技术专业的技术人员通常已具备使用C/C++语言编程的基本能力,缺乏的是交互式软件的开发经验,在对这些程序进行二次开发时往往力不从心。结合核技术专业程序的特点,二次开发中常用的技术解决方案如下:
(1)通过人性化的设计为用户提供交互式的操作界面,将专业的输入形象化,将繁琐的建模分析工作简单化,最终达到简化建模和计算的目的。VC、VB和LabWindows/CVI由于简单易学,是首选的工具。
(2)按照一定要求调用不同的计算程序,通过操作每个计算程序输入文件和输出文件,建立各个程序之间的衔接关系,通过对这些数据加工处理来拓展程序的功能,实现数据的衔接和批量化的计算。VC、VB和LabWindows/CVI都有调用外部可执行程序的命令,可以方便地实现调用外部执行程序这一功能。
(3)将计算结果进行特定提取、分析计算,根据VC、VB和LabWindows/CVI提供的外部接口,将数据按照一定的要求输出到Excel、Word等文件中。
尽管上述3种技术解决方案简单实用,但在针对具体问题时,往往还需要具体分析。下面将以核技术应用领域经常用到的剂量计算程序和屏蔽计算程序为例,详细介绍专业程序的二次开发过程。
3 PandP设计
3.1 PandP概述
核技术应用过程中,如果发生放射性物质释放,就要开展环境影响评价,分析可能造成的潜在放射性危害。通常做法是首先使用大气扩散模型计算放射性物质在空气中的扩散情况,然后再根据放射性物质在空中的分布情况,使用剂量分析软件计算指定区域公众可能受到的照射剂量。
PAVAN和PAVDOS程序分别可以用于放射性物质扩散计算和公众有效剂量的计算,这两个程序均没有交互式的窗口,程序输入输出采用典型的输入文件和输出文件形式。PAVAN的输出结果是PAVDOS的输入数据之一。此外,PAVDOS还需要一系列的数据作为输入,这些数据有些来自于国际原子能机构的文件[23]。
VC++具有丰富的界面组件和丰富的GDI函数集,可以方便地实现交互式输入与图形化、格式化输出。本文采用VC对PAVAN与PAVDOS进行耦合,设计实现放射性事故后果分析计算程序PandP[4]。
3.2 程序实现
PandP是采用VC编制的交互式程序,通过调用PAVAN和PAVDOS的可执行程序开展相应计算,根据PAVAN和PAVDOS的输入输出文件格式要求,实现数据传递。
采用模块化的设计思想,将程序划分为:①PAVAN功能模块,主要用于编辑输入文件;②PAVDOS功能模块,读取PAVAN输出文件,核素数据库中核素数据,字符串的拾取与数据的转换;③输出显示模块,根据PAVDOS输出结果,约束条件,计算剂量分布情况,显示剂量约束边界。如图1~图3所示。
图1 PAVAN输入文件
图2 PAVAN/PAVDOS耦合程序主界面及源项设置界面
图3 PAVDOS计算结果
使用文件类CStdioFile对输入输出文件中的数据行进行读写操作;使用字符串数组类CStringArray作为数据缓存区域,方便数据访问;使用字符串类CString对字符串中的数据进行提取、替换等操作;使用atoi()、atof()进行字符串和数据之间的转换。
3.3 程序应用
该耦合程序PandP是专业计算程序二次开发的典型例子。它将原有非交互时输入的程序,重新进行包装,为其增加一个可以进行交互式输入、输出程序,将繁琐的输入规则蕴含到交互式输入界面中,使得原有程序的使用更加简便。通过耦合程序将两个彼此独立的程序有机结合在一起,共同完成某个放射性释放后果评价,并且可以更加直观、便捷的输出计算结果。
4 AcDose设计
4.1 概述
屏蔽计算是探伤室辐射防护设计过程中非常重要的内容,需要运用大量的辐射防护经验公式进行迭代计算,数据信息量大,容易造成人为失误。为了提高计算效率,减少人为失误,采用LabWindows/CVI软件开发设计了专门针对探伤设备的辐射屏蔽计算程序AcDose。
LabWindows/CVI是一个完全的ANSI C开发环境,以ANSI C为核心,将功能强大、使用灵活的C语言平台与用于数据采集、分析和显示的测控专业工具有机结合起来。广泛应用于仪器控制、自动检测、数据处理等。
在充分考虑不同工况下,提供下拉菜单以供用户选择。操作界面简单、友好,并能够在操作人员进行错误操作时给出信息提示;实现数据、信息记录处理及输出报表等功能。
4.2 程序实现
程序界面中需要技术人员设置的参数有:年累计工作时间(每天工作小时数和每年工作天数)、剂量率、屏蔽体(混凝土墙体或铅门)与测试点设置。界面可以设置成默认值,也可以根据用户具体要求重新输入;屏蔽体位置可进行修改;墙体材料可根据下拉菜单进行选择,为方便程序设计统一设定成混凝土材料[5]。
分析对比界面是将不同界面计算完成后进行汇总对比。如果点击“显示结果”,可将不同界面中相同表格的计算结果汇总显示在当前界面相应的表格中,方便进行对比分析。若需对输出数据进行后续处理,点击“到Excel”可将数据结果输出到Excel表格中,数据导出准确快捷。屏蔽室设计完成后,需要生成一份设计报告,可以通过点击“生成报告”将结果插入到Word模板中的相应表格中,自动生成一篇设计报告,减少技术人员工作量,提高设计效率[6]。
4.3 程序应用
该AcDose程序利用LabWindows/CVI丰富的界面组件,可以制作出各种形式的表格以显示各种计算结果,而且为大量的数据写入提供了程序支持。利用LabWindows/CVI丰富的Office组件接口,根据文档中的标签可以将计算结果输出到文档中的指定位置,自动更新设计报告。
5 结语
本文对核技术应用过程中的专业计算程序的二次开发方法进行了分析和归纳,分别以PandP和AcDose程序为例,讲解了采用VC和LabWindows/CVI进行二次开发的基本思路和方法。本文提供的方法简单实用,可为专业人员对专业计算程序进行二次开发提供参考。
参考文献参考文献:
[1] 刘瑾等. Fortran 95/2003程序设计(第三版)[M]. 北京:中国电力出版社,2009.
[2] NUREG/CR2858.PAVAN:an atmosphericdispersion program for evaluating designbasis accidental releases of radioactive materials from nuclear power stations[S].U.S.Nuclear Regulatory Commission,2013.
[3] Generic models for use in assessing the impact of discharges of radioactive substances to the environment[S]. International Atomic Energy Agency,2001.
[4] 孙鑫. VC++深入详解(修订版)[M].北京:电子工业出版社,2012.
[5] 李星洪等编. 辐射防护基础[M].北京:原子能出版社,1982:134143.
[6] 陈红红,汪洋. LabWindows/CVI环境下实现Word复杂报表[J]. 计算机与现代化,2011(6).
(责任编辑:陈福时)