.. _section_energy_deposition: 能量释放与沉积 =============== 尽管在 :ref:`section_tally` 中已经给出了有关能量释放和沉积的统计信息,但本节将更详细地介绍有关能量释放和沉积的 统计方法。 .. _section_energy_release: 能量释放 --------- 目前,我们所说的能量释放通常都是指中子与介质发生相互作用时所释放的能量。根据中子相互作用的种类不同,能量释放大致可分为 裂变能量释放及非裂变能量释放(包括(n,g),(n,a),(n,p)反应等)。在RMC当中,能量释放的统计可以通过设置不同的计数类型 来实现。 在更早版本的RMC当中,如RMC2.5.0,RMC仅支持通过设置计数类型 ``type=2`` 来统计裂变能量释放。每次裂变反应释放的能量数据, 通过hard-coded的方式直接存储在RMC的源代码中,这些数据的来源并不清楚,但其物理含义是明确的,仅仅是裂变反应过程中的瞬发能量, 不包括缓发中子、:math:`\gamma` 射线以及 :math:`\beta` 的能量。此外,该能量释放数据与入射中子的能量无关,即不同能量的 中子发生裂变反应时释放的能量都是相同的。以 :math:`^{235}U` 和 :math:`^{238}U` 为例,其每次裂变反应释放的瞬发能量分别 为180.88MeV和181.31MeV。这意味着,使用较早版本的RMC,对于裂变能量释放的统计是不准确的,因为其统计的是瞬发裂变能量,而且 忽略了与入射中子的能量依赖性。此外,较早版本的RMC并不支持统计非裂变能量释放。 在RMC3.5.0及之后的版本中,我们对RMC的能量释放统计进行了更新,以支持用户根据需求统计不同物理含义、不同计算成本的能量释放数据。 相比较于较早版本的RMC,更新主要体现在以下几个方面: 1. 解决了较早版本中RMC内置的能量释放数据来源不明的问题,新版本中使用的中子反应(裂变和非裂变)能量释放数据直接取自ENDF评价核数据库, 不同核素的能量释放数据存储于 ``RMC_DATA`` 目录下的 ``neutron_hdf5`` 文件夹下各个核素的HDF5文件中。用户可以通过 ``HDFViewer`` 等第三方软件查看文件中的数据。此外,也可以通过编写相应的 ``Python`` 脚本修改HDF5文件中的数据,以满足用户的需求。 2. 新版本RMC支持统计与入射中子能量相关的裂变能量释放数据,但不支持统计具备入射中子能量依赖性的非裂变能量释放数据。这是因为ENDF评价核数据库 通过 ``MF1 MT458`` 数据,给出了不同入射中子能量下的裂变能量释放数据,但非裂变反应的能量释放数据则是在 ``MF 3`` 中以反应的Q值的形式给出, 其不具备入射中子能量依赖性。因此,新版本的RMC仅仅支持统计与入射中子能量相关的裂变能量释放数据,而不支持统计非裂变能量释放数据。 3. 新版本的RMC支持非裂变反应的能量释放统计。如前所述,该能量释放数据与入射中子能量无关。 裂变能量释放统计 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在保留此前版本RMC中的 ``type=2`` 裂变能量统计的基础上(目的是尽可能保证用户的输入文件以及代码测试的兼容性),新版本的RMC增加了多种裂变能量统计方式。 根据能量数据与入射中子能量的关系,分为两类统计类型。 与入射中子能量无关的裂变能量统计 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :type 2: 继承自较早版本的RMC,统计的是裂变反应中释放的瞬发能量,不包括缓发中子、缓发 :math:`\gamma` 、缓发 :math:`\beta` 和裂变中微子的能量。 :type 11: Kappa Fission,统计的是裂变反应的可利用能,其每次裂变反应释放的能量数据取自ENDF ``MF=3 MT=18`` 的反应Q值。 与入射中子能量有关的裂变能量统计 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ :type 10: 裂变可利用能,即裂变反应中释放的可利用能量,包括裂变碎片、瞬发和缓发中子、瞬发和缓发 :math:`\gamma` 、 缓发 :math:`\beta` 的能量,不包括裂变中微子的能量。 :type 17: 瞬发裂变能,即裂变反应中的瞬发能量释放,包括裂变碎片、瞬发中子和瞬发 :math:`\gamma` 的能量 :type 18: 除了以上两种裂变能量释放统计外,RMC还支持统计裂变反应中各个组分的能量释放数据,包括裂变碎片、瞬发和缓发中子、瞬发和缓发 :math:`\gamma` 、 缓发 :math:`\beta` 和裂变中微子的能量。 不同的裂变组分通过在计数器中设置 ``component`` 选项卡,其对应关系如下表所示: .. table:: 裂变组分的对应关系 :name: tally_component +------------------+-----------------------+ | component | 裂变组分 | +==================+=======================+ | 1 | 裂变碎片 | +------------------+-----------------------+ | 2 | 瞬发中子 | +------------------+-----------------------+ | 3 | 缓发中子 | +------------------+-----------------------+ | 4 | 瞬发 :math:`\gamma` | +------------------+-----------------------+ | 5 | 缓发 :math:`\gamma` | +------------------+-----------------------+ | 6 | 瞬发 :math:`\beta` | +------------------+-----------------------+ | 7 | 裂变中微子 | +------------------+-----------------------+ | 8 | 瞬发裂变能 | +------------------+-----------------------+ | 9 | 裂变可利用能 | +------------------+-----------------------+ | 10 | 总的裂变能 | +------------------+-----------------------+ 非裂变能量释放统计 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 对于非裂变反应能量释放的统计,用户可以通过设置 ``type=15`` 来实现。该计数器统计的是目标计数器中所有核素发生非裂变反应时释放的能量总和。 :type 15: 统计非裂变反应的能量释放,包括(n,g),(n,a),(n,p)等非裂变反应。 总的能量释放统计 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 基于裂变能量释放统计和非裂变能量释放统计,RMC支持统计总的能量释放数据,即裂变能量释放和非裂变能量释放的总和。用户可以通过设置 ``type=9`` 来实现。 :type 9: 统计总的能量释放,包括裂变能量释放(Kappa fission)和非裂变能量释放的总和。 .. note:: 总的能量释放统计中的裂变能量释放数据与 ``type=11`` 中的裂变可利用能量统计数据相同,与入射中子的能量入关。 :type 20: 统计总的能量释放,包括裂变能量释放(recoverable fission)和非裂变能量释放的总和。 .. note:: 与 ``type=9`` 不同的是,该计数器统计的裂变能量释放数据与入射中子的能量有关。 能量沉积 --------- 与能量释放不同,能量沉积统计的是这些在中子或光子反应过程中释放的能量在介质中的沉积情况。在较早版本的RMC当中,可以通过使用 ``type=6`` 来统计中子及光子 的能量沉积情况。但该方法受制于中子热数数据库及光子输运模型的限制,对于能量沉积的统计并不精确。因此,我们在新版本的RMC中,提出了一种精细能量沉积统计模型, 在消除中子热数数据库误差的同时,通过一个先进光子输运模型及光子能量沉积统计方法,实现了对于不同尺度的中子及光子能量沉积的精确统计。 新的精细能量沉积统计模型使用了全新制作的中子热数数据库,该数据库使用NJOY程序加工ENDF评价核数据库中的中子评价数据产生,不同温度点下的中子热数数据存放于 ``RMC_DATA`` 目录下的 ``neutron_hdf5`` 文件夹下各个核素的HDF5文件中的 ``reactions/heating`` 和 ``reactions/heating_local`` 组中。 目前,数据库中仅包含了0K, 200K, 294K, 300K, 600K, 900K, 1200K和2500K八个温度点的中子热数数据。如果材料对应的温度在该数据库中不存在,则RMC会 通过报错的方式提醒用户。如用户有需要,可以通过联系 `REAL`_ 来获取更多温度点的中子热数数据。 值得一提的是,在 :ref:`section_energy_release` 中给出的总的能量释放统计方法,同样可以视作一种能量沉积统计方法。在这种统计方法中,所有释放的能量 都被视作原地沉积,即能量释放与沉积的位置是相同的。在此基础上,我们在RMC中实现了两种不同的能量沉积统计方法,分别是 ``heating_local`` 和 ``heating``。 在前者中,光子(中子反应的产物)的能量被假设为原地沉积。而在后者中,光子的能量则会随着光子的输运过程,在随后的光子相互作用中沉积能量。 heating_local ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在 ``heating_local`` 中,光子的能量被假设为原地沉积。在这种情况下,仅需要开展纯中子输运,忽略中子反应产生的光子的输运过程。因此,该统计方法的计算成本较低。 RMC通过一个 ``heating_local`` 计数器来实现该统计方法,用户可以通过设置 ``type=13`` 来实现。 :type 13: 能量沉积统计,光子的能量被假设为原地沉积。在这种情况下,仅需要开展纯中子输运,忽略中子反应产生的光子的输运过程。 .. _REAL: https://forum.reallab.org.cn/ heating ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在 ``heating`` 中,光子的能量则会随着光子的输运过程沉积能量。因此,该统计方法必须开启中光子混合输运。与此同时,为了保证光子能量沉积统计的精确性,建议用户 使用最新版本的光子输运模型。RMC通过在 :ref:`section_transport_mode` 中的光子输运计算物理开关添加一个选项 ``newphoton 1`` 来控制开启先进光子输运模型。如果用户不设置该选项,则 默认使用传统的光子输运模型。 相比 ``heating_local`` , ``heating`` 的计算成本较高,但其能够提供更精确的能量沉积统计。为了实现精细的光子能量统计计数,其计数器的参数设置也要更为负责。 RMC通过一个 ``heating`` 计数器来实现该统计方法,用户可以通过设置 ``type=12`` 来实现。 :type 12: 能量沉积统计,光子的能量会随着光子的输运过程沉积能量。在这种情况下,必须开启中光子混合输运。 .. note:: 由于 ``heating`` 中开启了中光子混合输运。为了保证计算的正确性,建议用户在设置光子输运参数时,开启TTB、Doppler、PProduceE、COHERENT选项卡, 详见 :ref:`section_transport_mode` 。 对不同粒子的能量沉积统计 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 在 ``heating_local`` 中,除中子外所有粒子的能量都被假设为原地沉积。而在 ``heating`` 中,由于开启了中光子混合输运,除了中子和光子外,在光子相互作用中 产生的次级电子及正电子的能量也会被沉积。因此,必须区分不同粒子的能量沉积统计。用户可以通过在计数器中设置 ``particle`` 选项卡来实现不同粒子的能量沉积统计。 .. note:: 需要注意的是,在较早版本的RMC代码中,并未对电子和正电子进行区分,即将与正电子有关的计数均视为电子的计数。而在对于精细能量沉积的统计中,需要对正电子 和电子进行显式区分。因此,当用户使用 ``newphoton 1`` 选项卡时,用户可以用 ``particle=4`` 来指定统计正电子的能量沉积。 在某些情况下,我们并不关心不同粒子对于某个区域或某种材料中的能量沉积的贡献,而只希望获得某个区域或某种材料中所有粒子的能量沉积综合。在这种情况下,用户可以通过 定义 ``particle=0`` 来实现。在这种情况下,所有粒子的能量都会被统计。 .. note:: 由于在 ``heating_local`` 中, 仅仅中子被输运,因此仅 ``particle=1`` 选项会有正确计数,其余选项的计数均为0。 对不同类型光子的能量沉积统计 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 除了对于不同粒子的能量沉积的统计外,特别地,RMC还支持对于在中子引发的裂变反应及俘获反应(所有产生光子的非裂变反应)中产生的不同类型的次级光子的能量沉积统计。这些次级光子主要包括: 裂变瞬发光子、裂变缓发光子和俘获光子。用户可以通过在计数器中设置 ``attr`` 选项卡,来实现对于不同类型光子的能量沉积统计,以估计不同类型光子对于能量沉积的贡献。 ``attr`` 与粒子 属性的对应关系如下表: +------------------+-----------------------+ | attr | 粒子属性 | +==================+=======================+ | 0 | 未定义 | +------------------+-----------------------+ | 1 | 裂变瞬发光子 | +------------------+-----------------------+ | 2 | 裂变缓发光子 | +------------------+-----------------------+ | 3 | 俘获光子 | +------------------+-----------------------+ .. note:: 当用户未定义 ``attr`` 选项时,则计数器不会对粒子属性加以区分,默认统计所有属性的光子的能量沉积。 缓发光子的能量沉积统计 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 在实际的中光子耦合输运过程中,缓发光子的能量沉积统计是一个比较复杂的问题。在真实的物理过程中,裂变过程中的缓发光子是由裂变反应产生的缓发光子先驱核发生 :math:`\gamma` 衰变而产生的。 ACE数据库中仅存储了中子产生瞬发光子的产额、角分布和能量分布数据。为了实现对缓发光子的能量沉积统计,RMC提供了两种不同的方法。 第一种方法是通过使用ACE数据库中的瞬发光子数据来模拟缓发光子的能量沉积。该方法假设缓发光子的能量分布和角分布与瞬发光子相同,基于评价核数据库中 ``MT458`` 裂变能量释放数据中给出的缓发光子 能量与瞬发光子能量释放数据,通过计算当前入射中子能量对应的两者的比值,进而调整中子产生光子的产额为 :math:`(1+\alpha)` 倍,其中 :math:`\alpha` 为该比值。进一步,为了实现瞬发和缓发 光子对于能量沉积的贡献,采用了减方差方法中的分裂技巧。即产生一个权重为 :math:`w` 的瞬发光子和一个权重为 :math:`\alpha w` 的缓发光子,其中 :math:`w` 为抽样得到的光子权重。 .. important:: 缓发光子的产生,需要开启 :ref:`section_transport_mode` 中 ``photon`` 子卡中的 ``delayedphotonscaling`` 选项。即 ``delayedphotonscaling = 1``。 第二种方法是通过燃耗计算,获得某个时刻的缓发光子的空间分布和能量分布。进一步,通过求解固定源方程,得到这些缓发光子的空间分布及能量沉积情况。该方法的计算成本较高,但能够提供更精确的缓发光子能 量沉积统计。 .. note:: 该方法可以通过在 :ref:`section_burnup` 中设置 `DecaySource` 选项卡进行开启,详情参考 :ref:`section_burnup`。 .. caution:: 第二类方法尚未完全测试,其功能正确性有待验证。相关选项卡的设置方法可能会发生变化。