1. 引言
目前国内各个科研机构与高校都开发了许多自主化的严重事故计算程序,但在开发这些严重事故计算程序时,各单位开发人员更倾向于集中精力进行计算模型的开发,导致这些自主化严重事故计算程序普遍没有较为灵活的API接口或与外部程序直接交互的功能 [1] [2] [3] 。
为解决当前三代非能动核电站严重事故原理模拟机缺失问题,中核武汉核电运行技术股份有限公司与国际原子能组织签订合同,使用自主化核电厂仿真严重事故分析程序(Nuclear Simulation Severe Accident analysis Program,简称NUSSAP)开发严重事故原理模拟机软件,用于在IAEA成员国中进行三代非能动电厂科普推广与运行特性基础培训。严重事故原理模拟机充分利用了仿真平台的程序包容性,将不同计算软件进行集成对接,使各计算软件均能在自身优势计算范围内高效运行,确保系统所进行的核电站仿真范围全面、精度准确、计算迅速。本文基于严重事故原理模拟机的系统框架,对使用NUSSAP开发严重事故原理模拟机的方式方法以及设计理念进行了阐述,阐述内容主要包括教控控制、系统外部接口、逻辑控制等,为各研发单位提供程序集成思路。
2. 总体设计
严重事故原理模拟机组成部分包含:参考电站(Reference Nuclear Power Plant,简称RNPP)模块、严重事故(Severe Accident Basic Principle,简称SABP)模块、软件人机界面(Human Machine Interface,简称HMI)、严重事故3D展示界面以及仿真支撑平台。原理模拟机组成结构如图1所示。
参考电站模块与严重事故模块均依托CNPO自主研发的RINSIM仿真支撑平台运行,平台基于COM/.net、java beans、CORBA、XPCOM等组件架构,具备数据库管理、程序调度管理、接口管理、运行控制等功能。原理模拟机有两种运行模式:1) 电站运行模式,电站运行模式下只有参考电站模块RNPP

Figure 1. Framework of severe accident simulator
图1. 原理模拟机组成结构示意图
运行,严重事故模块处于冻结状态;2) 严重事故仿真模式,严重事故仿真模式下参考电站模块的堆芯、反应堆冷却剂及安全壳模块退出运行,严重事故模块替代这3个模块参与运行,此模式下原理模拟机运行的模块为模拟机组成结构示意图中黄色虚线框标注的模块,同时,3D显示程序从严重事故计算模块获取相应的参数对事故进程进行显示。在两种模式下,原理模拟机的运行、冻结、复位、故障插入等控制均在同一人机界面上进行操作实现。本文将重点介绍严重事故模块与仿真支撑平台、模拟机工艺系统的交互设计。
3. 教控交互设计
教控交互设计的要求是NUSSAP在运行过程中可以实时接受仿真平台的调度,满足实时计算以及对教控命令的响应要求。本项目中的涉及到的教控交互主要包括:1) 运行/冻结;2) 计算同步;3) 快照;4) 复位。
3.1. 运行/冻结
NUSSAP运行过程中,仿真平台在每一个时间步长内均向严重事故计算程序发送“运行状态标识”变量,该标识变量为平台运行状态的指示变量,主要为运行(1)与冻结(0)两个值,NUSSAP程序可对该变量进行响应,进而控制程序的运行状态。在接收到仿真平台的状态为“运行”时,NUSSAP程序正常进入主计算循环进行计算。在接收到仿真平台的状态为“冻结”时,NUSSAP程序同步冻结。
3.2. 计算同步
NUSSAP本身为一个自适应变步长程序,在计算过程中会依据方程求解收敛情况进行时间步长的自动调整,而严重事故原理模拟机开发要求各计算模块的计算速度保持一致,因此需要对NUSSAP程序的计算速度进行控制,使其计算速度与仿真平台需要的计算速度保持一致。
计算同步主要是控制NUSSAP的时间步长,仿真平台传递给NUSSAP两个变量:“调度次数”与“快时倍率”,仿真平台实时调度速度为一秒20次,即每次调度NUSSAP需要计算的时间为50 ms*快时倍率,程序需要根据接收到的这两个变量进行计算速度的调节。由于NUSSAP程序在绝大多数情况下均可以实现快时计算,因此NUSSAP在计算完一个时间步之后,应自动处于冻结状态,待接收仿真平台的下一次调度,每一次调度中程序的计算逻辑如图2所示。
程序处于冻结状态时,定时检测由仿真平台传递而来的调度次数是否发生变化。若调度次数发生变化,则进入以下调度步骤:
1) 程序进入主计算循环,计算此次循环求解的时间步长Td;
2) 计算从本次调度开始直至本次循环结束的累计计算时间Tim;
3) 将Tim与所需计算时间T0 (T0 = 50 ms*快时倍率)进行比较;
4.1) 若Tim小于T0,则使用Td进行求解,求解结束后进入下一个计算循环;
4.2) 若Tim大于T0,则根据Tim与T0的差值重新计算Td的值,并使用新计算的时间步长进行求解,求解结束后程序冻结,不再进入下一个计算循环,等待仿真平台的下一次调度。

Figure 2. Calculation control logic diagram
图2. 计算同步控制逻辑图
3.3. 快照
仿真平台进行快照时,会发送出“快照指令”与“快照号”两个快照变量。根据教控台发出的指令,NUSSAP进行restart文件的生成,并将生成的restart文件命名为“快照号.res”,每保存一个快照号的同时生成一个和与之对应的restart文件。快照操作在运行与冻结状态下均可进行,且进行快照时严重事故计算程序保持原来的运行状态。
在进行NUSSAP改造时,需要识别出写restart文件的程序模块,并将其添加至程序的主计算循环中,并搭建相应的执行逻辑,使得程序在收到快照指令后,可以正确进入快照逻辑,进行restart文件的生成。程序快照逻辑见图3。
NUSSAP在每一次运行循环过程中,均会判断是否收到RINSIM平台发出的快照指令,若未收到快照指令,则程序维持正常运行;若接收到快照指令,则进入快照逻辑。
进入快照逻辑后,NUSSAP需要先检测快照文件夹中是否存在与仿真平台传递出的快照号同名的res文件,若存在,则将文件打开并清空;若不存在相应res文件,则先创建一个与快照号名称一致的res文件。
文件清空或创建成功后,进行快照数据的写入,写入完成后,关闭res文件,至此快照指令执行结束,并将快照结束信号反馈回RINSIM平台,快照指令结束之后程序继续正常运行。
3.4. 复位
仿真平台进行复位时,会发送“复位指令”与“快照号”两个复位变量。程序在接收到复位指令后,进入复位逻辑,且复位操作在运行与冻结状态下均可进行。
在进行NUSSAP改造时,需要识别出读取restart文件的程序模块,并将其添加至程序的主计算循环中,并搭建相应的执行逻辑,使得程序在收到复位指令后,可以正确进入复位逻辑,进行restart文件的读取,使得程序状态回到存储restart文件时的状态。程序复位逻辑见图4。
NUSSAP在正常运行时,在每一次调度中均会判断是否接收到复位指令,若未收到复位指令,则程序保持正常运行;收到复位指令后,程序选择与“快照号”对应的res文件读取文件对程序进行复位,使程序计算状态回到res文件保存时的状态。
完成数据读取与运行时间处理后,机理性严重事故分析程序需要关闭已打开的res文件,并向仿真平台反馈复位结束信号,之后程序恢复正常运行。
4. 外部接口设计
开发严重事故分析程序与外部模拟系统的接口,可以使得严重事故分析程序在计算堆芯、一回路、安全壳等与严重事故现象直接相关的系统时,可与外部模拟系统进行数据交互,实现严重事故分析程序

Figure 4. Reset control logic diagram
图4. 程序复位控制逻辑图
与外部模拟系统模拟范围的优势互补。本章节将就安全注射系统接口、蒸汽发生器蒸汽给水系统接口、安全壳流量能量接口进行阐述。外部接口设计参考了CNPO对MAAP程序的改造思路 [4] [5] 。
4.1. 安全注射系统接口
与安全注射接口的改造主要集中在NUSSAP的一回路热工水力计算模块,在一回路热工水力计算程序完成相关参数变化率计算代码的执行后,增加相关外部给定变化率,并考虑外部给定变化率与程序自身计算出的变化率的综合效应。接口示意图如图5所示。

Figure 5. Interface about safety injection
图5. 安全注射系统接口示意图
在完成接口改造后的程序中,程序对主回路各节点热工水力参数、流入流量、流入焓值等参数的计算逻辑按照改造前进行。并额外添加一组变量,可以通过这一组变量从外部提供安注流量、安注温度、安注焓值等参数。通过这一组变量传递入程序的参数,应与程序自身计算出的安注相关参数进行加权平均,得到安注注入主回路节点的质量与能量的注入率。同时,添加另一组变量,控制由一回路节点流出的汽水流量,用于程序与一回路充排、余热排出等系统的补充接口。需要进行相关接口的变化率见表1。

Table 1. Parameters of safety injection interface
表1. 安全注射系统接口变量表
4.2. 蒸汽发生器蒸汽给水系统接口设计
蒸汽发生器接口主要分为蒸汽接口、给水接口以及排污接口。蒸汽、给水以及排污接口均为压力-流量接口。蒸汽发生器的接口改造主要集中在NUSSAP的蒸汽发生器热工水力计算模块,覆盖相关的边界条件赋值语句,并使用外部接口控制变量来控制是否接入外部变量。
蒸汽发生器外部接口逻辑关系图如图6所示。在接收到蒸汽发生器外部接口开启时,NUSSAP程序屏蔽原有的进出口边界条件计算逻辑,并将当前计算出的状态参数传递至事故仿真平台数据库;仿真平

Figure 6. Interface about steam generator
图6. 蒸汽发生器接口示意图
台外部系统依据蒸汽发生器出口蒸汽压力值与其下游管线压力值的差值计算出蒸汽发生器的蒸汽流量,并将流量反馈回机理性严重事故仿真程序;机理性严重事故仿真程序对接收到的蒸汽流量进行响应,使得响应流量的蒸汽流出蒸汽发生器。两模块分别根据对方计算结果实现相互之间的耦合计算。
与安全注射系统接口不同是是,蒸汽发生器接口需要通过一个逻辑变量来控制外部蒸汽/给水系统的接入,外部系统接入后,程序将不再接收原有计算逻辑计算出的蒸汽、给水参数。蒸汽发生器接口交互变量见表2。

Table 2. Parameters of steam generator interface
表2. 蒸汽发生器接口交互变量
4.3. 安全壳流量能量接口设计
安全壳能量流量接口的接口方式与安全注射系统的接口方式较为类似。安全壳质能接口与安全注射系统接口的不同在于安全壳中存在大量的不可凝气体,实际核设施中,会有各种系统与设备对安全壳中的不可凝气体进行冷却、充排等处理,因此除了对注水排水进行接口外,还需要对进行不可凝气体计算的程序进行接口改造。安全壳能量流量接口逻辑图如图7所示。

Figure 7. Interface about containment
图7. 安全壳质能接口示意图
蒸在改造后的程序中,程序对安全壳各节点热工水力现象(包括换热、流动、扩散、蒸发、冷凝等)的计算按照改造前进行。
额外添加一组变量,可以通过这一组变量从外部提供等参数。通过这一组变量传递入程序的参数,应与程序自身计算出的相应热工水力参数变化率进行加权平均,得到注入/流出安全壳节点的质量与能量的注入率。
同时,添加另一组变量,控制由安全壳节点流出的汽水流量,用于程序与通风、空调、充排等安全壳系统的补充接口。需要进行交互的参数见表3。

Table 3. Parameters of containment interface
表3. 安全壳流量能量接口交互变量
5. 逻辑接口设计
逻辑接口主要用于控制NUSSAP建模中已经进行建模的设备(如泵或阀的开启与停闭)。该部分控制原本在NUSSAP的控制功能模块中有相应的控制逻辑,在进行程序改造时,在控制功能模块程序最后添加相关的外部控制逻辑变量,来进行设备状态控制,该控制逻辑写在程序原本控制逻辑之后,会直接覆盖程序本来存在的控制逻辑。控制逻辑图如图8所示。

Figure 8. Interface about logic control
图8. 逻辑接口控制示意图
一个设备的外部启停逻辑由两个外部控制变量(开启flag与关闭flag)来进行控制。当开启flag与关闭flag同为true或同为false时,设备的控制逻辑将不受控制变量的影响,按照程序原有控制逻辑进行设备控制;当开启flag为true且关闭flag为false时,设备会无视原有逻辑强制启动;当关闭flag为true且开启flag为false时,设备会无视原有逻辑强制关闭。
6. 结论
本文对使用自主化严重事故仿真程序NUSSAP进行原理模拟机开发过程的设计方案进行了较为详尽的阐述。主要介绍了三部分内容。1) 介绍了利用程序既有功能开发控制程序的运行/冻结、快照、复位等运行控制接口开发的思路;2) 结合NUSSAP程序模块化建模与编程的特点,对一回路、蒸发器、安全壳等重要设备与外部程序的过程接口改造方式进行了介绍;3) 介绍了如何使用外部变量控制程序内部设备与系统启停的API逻辑接口。
CNPO将接口方法用于工程实践,并得到用户认可,证明了API改造方法的适用性。国内自主化严重事故计算程序开发单位可以结合程序自身特点依据本文的接口方法改造程序,开发API接口,扩大程序的适用范围。
基金项目
本论文/本研究得到国家重点研发计划(编号:2019YFB1900700)的资助。