.. _section_dynamics: 时空动力学计算(仅限企业版本) ================================ RMC支持时空动力学计算功能,该功能用于模拟稳态反应堆在受到反应性扰动后,系统内中 子通量随时间和空间的变化情况。RMC时空动力学计算功能采用预估修正准静态方法,计算 过程中,将中子时空动力学方程拆解成具有刚性的关于幅度函数的点堆方程,以及关于预 估通量的形状函数方程。点堆方程采用常微分方程组的数值解法求解,形状函数方程采用蒙 卡方法求解,其中点堆方程中的点堆参数由蒙卡方法直接统计得到。RMC时空动力学计算模 块可使用多群和连续能量的中子核反应截面。 .. _section_dynamics_cards: 时空动力学模块输入卡 ------------------------- 由于时空动力学计算的对象包含反应堆的两种状态,即扰动前的稳态和扰动后的瞬态,因此 相应地需要两种输入文件来描述反应堆的状态。第一种输入文件对应于反应堆稳态,其中的 动力学模块输入卡用于引导RMC进行相应动力学稳态计算;第二种输入文件对应于反应堆瞬 态,其中的动力学模块输入卡用于引导RMC进行相应的动力学瞬态计算。需要注意的是,稳 态计算输入卡与瞬态计算输入卡中的population参数应保持一致。时空动力学计算模块支持 并行计算功能,但是目前输入文件中不可指定并行计算模式,其强制采用主从并行模式。 时空动力学模块稳态计算输入卡 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: none QUASISTATIC_S PowerIter Population = InitSrc type= Timestep deltat= Adjoint WriteSourceCount WriteKineticsSrc 其中, - **QUASISTATIC_S**\ 为稳态时空动力学计算关键词,后缀S表示Static; - **PowerIter**\ 指定源迭代参数; - **InitSrc**\ 指定初始裂变源; - **Timestep**\ 指定瞬态第一个形状时间步的步长,单位为秒; - **Adjoint**\ 指定动力学计算过程中是否使用伴随通量加权,**0**\ 表示使用常数加权 ,**1**\ 表示使用伴随通量加权。注意,当使用伴随通量加权时,除输入卡外,还需要准备 伴随通量文件,该文件可由反复裂变几率法生成,需命名为*Adjoint*\ 。 - **WriteSourceCount**\ 指定在动力学计算中,生成的缓发中子源与时间吸收源的数目, 默认与源迭代参数中的每代中子数保持一致。由于在准静态计算中,每个时间步生成的源都会 输出到.source文件中,因此减少该选项的数目,可以减小.source文件的体积。 - **WriteKineticsSrc**\ 指定是否输出直接模拟法初始临界源分布,0为不输出,1为输出,默认为0。生成源中子的数目默认与源迭代参数中的每代中子数保持一致,若指定了WriteSourceCount参数,则与WriteSourceCount参数一致。 时空动力学模块瞬态计算输入卡 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: none QUASISTATIC_D PowerIter Population = Timestep deltat= Adjoint WriteSourceCount Substep number= interpolate= 其中, - **QUASISTATIC_D**\ 为瞬态时空动力学计算关键词,后缀D表示Dynamic; - **PowerIter**\ 指定源迭代参数,参数population应与稳态计算输入卡保持一致; - **Timestep**\ 指定瞬态下一个形状时间步的步长,单位为秒。RMC支持变步长计算。 - **Adjoint**\ 指定动力学计算过程中是否使用伴随通量加权,**0**\ 表示使用常数加权 ,**1**\ 表示使用伴随通量加权。注意,当使用伴随通量加权时,除输入卡外,还需要准备 伴随通量文件,该文件可由反复裂变几率法生成,需命名为*Adjoint*\ 。由准静态方法的 理论可知,该文件应与稳态计算所用的伴随通量文件一致。 - **WriteSourceCount**\ 指定在动力学计算中,生成的缓发中子源与时间吸收源的数目, 默认与源迭代参数中的每代中子数保持一致。由于在准静态计算中,每个时间步生成的源都会 输出到.source文件中,因此减少该选项的数目,可以减小.source文件的体积。 - **Substep**\ 指定动力学计算中,当前形状时间步与上一个形状时间步之间,用于求解点堆方程的动态参数 的插值数。其中,**number**\ 指定插值的数量,**interpolate**\ 指定是否进行 线性插值。例如,**number = 50 interpolate = 1**\ 表示在两个形状时间步之间进行 动态参数插值,插值后的子步数量为50。使用该选项可以提高点堆方程的求解精度。 注意,在计算瞬态时间步时,需要将上一个时间步生成的.source保存,并将其前缀改为 当前时间步的输入卡文件名。例如,假设稳态时间步的输入卡名为"static",第一个 瞬态时间步的输入卡名为"step1",那么就需要在完成稳态时间步的计算后, 将"static.source"重命名为"step1.source",然后再执行第一个瞬态时间步的计算。 用户可以自行编写shell、python等脚本文件,来方便、灵活地完成整个瞬态计算。 .. _section_dynamics_example: 时空动力学模块输入示例 --------------------------- 时空动力学模块稳态计算输入示例 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c QUASISTATIC_S PowerIter population=500000 200 800 Keff0=1.0 InitSrc point=12.5 5.5 6.5 11.5 5.5 6.5 Timestep deltat=2.0E+00 Adjoint 1 WriteSourceCount 500000 时空动力学模块瞬态计算输入示例 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c QUASISTATIC_D PowerIter population=500000 200 800 Keff0=1.0 Timestep deltat=2.0E+00 Adjoint 1 WriteSourceCount 500000 Substep number=200 interpolate=1 输出文件说明 ----------------- RMC时空动力学计算产生两类重要的结果输出文件,用户只需关心此两类输出文件。第一类 结果输出文件包含各个时间步对应的反应堆功率、通量幅度、点堆参数以及若干中间结果等 信息;第二类结果输出文件包含各个时间步对应的未经过归一化处理的通量形状或者功率空 间分布信息。第一类文件以".innerproduct"命名,第二类文件以".tally"命 名。 RMC一次时空动力学模拟会产生多个".innerproduct"和".tally"文 件,用户可以自行编写脚本文件,从这些文件中提取信息。 需要注意的是, “.innerproduct”、".tally"文件中的功率变化及功率空间分布(或中子通量形状) 是未经过归一化的。 .innerproduct中的各参数含义为: - **NeuPopu**\ 表示的物理量为 :math:`<1/v * \Phi(r,\Omega,E,t_n+1), W(r,\omega,E)>` - **Lambda x**\ (x>0)表示的物理量为各组缓发中子的平均衰变系数; - **Beta 0**\ 表示瞬发中子份额(加权后); - **Beta x**\ (x>0)表示各组缓发中子份额(加权后); - **Reactivity**\ 表示动态反应性; - **GenTime**\ 表示加权后的中子代时间,单位是10^-8s;