.. _section_material: 材料 ========== 材料输入模块描述材料组成,包括材料密度、核素对应的数据库、核素份额,以及定义与连续 能量截面或多群截面数据库相关的参数选项。 .. _section_mat_mat: 基于ACE格式数据库下的材料输入卡 ------------------------------------ 普通材料的输入卡为: .. code-block:: none Mat …… 其中, - **Mat**\ 为材料输入卡关键词。 - **mat_id**\ 为材料编号,与Cell输入卡当中的填充材料相对应。 - **density**\ 为材料总密度。\ **density > 0**\ 表示原子密度,单位为10\ :sup:`24`\ 原子/cm\ :sup:`3`\ ; \ **density < 0**\ 表示质量密度,单位为g/cm\ :sup:`3`\ ;\ **density = 0**\ 则程序会自动计算材料密度。 - **zaid.xxx**\ 指定核素所对应的ACE数据库标识,其中\ **zaid**\ 为核素ID,后缀 \ **.xxx**\ 指定了数据库的类型。为便于区分,建议用户在生成数据库时使用后 缀\ **.xxc**\ 对应连续能量ACE数据库,使用后缀\ **.xxm**\ 对应多群数据库。 数据库具体对应的核素和类型可以查阅数据库索引文件xsdir。 - **fraction**\ 为核素在材料中所占的比例。若\ **fraction > 0**\ ,表示原子密度 份额(相对值),若\ **fraction < 0**\ ,表示质量密度份额(相对值)。同一种材 料中的\ **fraction**\ 必须具有相同符号。 除普通材料输入卡以外,RMC还提供热化材料输入卡,为连续能量ACE截面指定相应的热化数据库。 .. code-block:: none Sab …… 其中, - **Sab**\ 为热化材料输入卡的关键词。 - **mat_id**\ 为材料编号,与\ **Mat**\ 卡中的材料编号相匹配。 - **zaid.xxx**\ 指定核素所使用的热化数据库标识,具体请查阅数据库索引文件xsdir。 基于HDF5格式AIS数据库的材料输入卡 ---------------------------------------- 目前,HDF5格式AIS数据库只支持临界源中子输运计算,支持的功能有:所有截面在线处理功能,栅元、面、网格计数器(type 1-8),截面计数器, 点计数器,材料微扰,UFS方法,源收敛诊断与加速。 普通材料的输入卡为: .. code-block:: none Mat …… 其中, - **Mat**\ 为材料输入卡关键词。 - **mat_id**\ 为材料编号,与Cell输入卡当中的填充材料相对应。 - **density**\ 为材料总密度。\ **density > 0**\ 表示原子密度,单位为10\ :sup:`24`\ 原子/cm\ :sup:`3`\ ; \ **density < 0**\ 表示质量密度,单位为g/cm\ :sup:`3`\ ;\ **density = 0**\ 则程序会自动计算材料密度。 - **IsoSym**\ 指定同位素标识,HDF5格式AIS核数据库是以同位素标识命名的。 - **FRACTION**\ 为核素在材料中所占的比例。若\ **fraction > 0**\ ,表示原子密度 份额(相对值),若\ **fraction < 0**\ ,表示质量密度份额(相对值)。同一种材 料中的\ **fraction**\ 必须具有相同符号。 - **ENDFVERSION**\ 指定HDF5格式AIS核数据库所基于的数据评价核数据库版本,程序会去以该版本命名的目录下索引以 \ **IsoSym**\ 命名的核数据文件。 - **TMP**\ 指定所使用的某同位素核数据库的开尔文温度,程序在读入核数据的时候会根据用户输入的该温度值读入数据文件中 偏差小于等于0.1K的温度下的核数据。 除普通材料输入卡以外,RMC还提供热化材料输入卡,为连续能量ACE截面指定相应的热化数据库。 .. code-block:: none Sab …… 其中, - **Sab**\ 为热化材料输入卡的关键词。 - **mat_id**\ 为材料编号,与\ **Mat**\ 卡中的材料编号相匹配,必须换行后输入\ **IsoSym**\ 参数。 - **IsoSym**\ 指定核素所使用的热化数据库标识。 - **ENDFVERSION**\ 指定HDF5格式AIS核数据库所基于的数据评价核数据库版本,程序会去以该版本命名的目录下索引以 \ **IsoSym**\ 命名的核数据文件。 - **TMP**\ 指定所使用的某同位素核数据库的开尔文温度,程序在读入核数据的时候会根据用户输入的该温度值读入数据文件中 偏差小于等于0.1K的温度下的核数据。 .. _section_mat_ceace: 连续能量ACE截面相关输入卡 ----------------------------- 若材料输入卡中的核素使用连续能量ACE截面,则可以通过以下输入卡为其设定相关参数选项。 .. code-block:: none CeAce [ErgBinHash = ] [pTable = ] [OTFPTB = ] [OTFSAB=] [DBRC = ] [TMS = ] [TMSTally = ] [OTFDB = ] 其中, - **CeAce**\ 为连续能量ACE截面相关输入卡的关键词。 - **ErgBinHash**\ 选项卡指定是否使用程序内置的哈希表方法加速能量格点查找速度。 当核素较多时,使用加速方法能获得更高的计算效率,但也会消耗少量额外的内存。 \ **ErgBinHash = 1**\ (缺省值),使用哈希表加速;\ **ErgBinHash =0**\ ,不 使用哈希表加速。 - **pTable**\ 选项卡指定是否对不可分辨共振区使用概率表。仅当核素使用的ACE截面数 据库中包含UNR模块时,该选项才生效。\ **pTable = 1**\ (缺省值)表示使用概率 表,\ **pTable = 0**\ 表示不使用概率表。 - **OTFPTB**\ 选项卡指定是否对不可分辨共振区使用在线概率表插值。该选项卡与 **pTable**\配合使用,当\ **pTable = 1**\时才使用在线概率表插值。 \ **OTFPTB = 1**\ 表示使用在线概率表插值,\ **OTFPTB = 0**\ (缺省值) 表示不使用在线概率表插值。 - **OTFSab**\选项卡指定是否对热化能区使用热散射数据在线插值(目前只支持轻水中氢 的在线插值处理)。\ **OTFSab = 0**\ (缺省值)表示不使用在线热化插值,\ **OTFSab = 1**\ 表示使用在线热化插值。注意:使用在线热化插值时截面库中必须配备若干参考温度点下的 热化截面库。同时,材料卡中对应的热化材料 " **lwtr.**\"可以采用截面库中具有的任意 温度的热化库(只填写一种热化库即可)。" **xsdir_sab**\ "是热化插值时热化库的索引 文件,该文件放置于与执行程序同一个文件夹中, " **xsdir_sab**\ "的内部结构如下所示: \ **Datapath = //**\ 此处跟插值用热化库所在文件夹 **lwtr 293.6K lwtr01 //**\ **lwtr**\为热化材料的名称,此处为水中氢; "**293.6K**\"为热化核素的温度,单位为 **K**\; **lwtr01**\为插值用热化库的名称。 - **DBRC**\ 选项卡指定是否使用多普勒展宽拒绝修正(Doppler Broaden Rejection Correction, DBRC)算法。 **DBRC = 1** 表示使用DBRC, **DBRC = 0** (缺省值)表示不使用DBRC。 不使用DBRC算法将忽略重核在超热区的共振弹性散射,使用DBRC算法会增加计算时间。 DBRC算法需要用到0K数据库,该0K数据库的核素在xsdir文件中必须以 **zaid.00c** 命名。 例如,若用户使用了 **1001.71c 8016.71c 92235.71c** 这几种核素,则相应地, **xsdir** 文件中必须含有 **1001.00c 8016.00c 92235.00c** 这几种核素截面数据,且这几种核素的截面都是0K的。 注意,用户无需在输入卡中指定 **zaid.00c** ,只需要将相关核素添加到索引文件 **xsdir** 中即可。 - **TMS**\ 选项卡指定是否使用TMS(Target Motion Sampling)算法。 TMS算法可以引入温度变化对截面的反馈效应。 TMS算法需要使用0K的核数据库,并指定含核素cell的温度。 使用TMS算法会增加计算时间。 \ **TMS = 1**\ 表示使用TMS,\ **TMS = 0**\ (缺省值)表示不使用TMS。 - **TMSTally**\ 选项卡指定在Tally中是否使用TMS计算截面。 当Tally用到截面信息时,需要开启TMSTally,否则Tally结果不准确; 当Tally不需要用到截面时,关闭TMSTally不影响结果的准确性。 当\ **TMS = 1**\ 时,默认开启\ **TMSTally**\ ,但用户可以在输入卡中指定 \ **TMSTally = 0**\ 以减少计算时间。 当不使用TMS时,TMSTally关闭,也无法手动开启。 - **OTFDB**\ 选项卡指定是否使用高斯厄米特积分方法进行在线多普勒展宽。 当栅元内填充的材料的温度与栅元温度不匹配时,可以使用此方法。 当使用此方法时,建议选择300K附近的截面数据库。 使用此方法会增加计算时间。 \ **OTFDB = 1**\ 表示使用高斯厄米特积分方法进行在线多普勒展宽, \ **OTFDB = 0**\ (缺省值)表示不使用高斯厄米特积分方法进行在线多普勒展宽。 - **EDUEG**\ 选项卡指定是否将RMC_DATA/neutron_hdf5数据库中的热数数据通过 插值计算得到与ACE文件中的能量网格对应的热数截面数据。该选项默认开启,即 \ **EDUEG = 1**\ (缺省值)。 .. important:: 在一般情况下,热数数据的能量网格与ACE文件中的能量网格并不匹配,这是两个数据库在制作时使用的 NJOY程序版本以及基础评价库的不同造成的。为了避免截面插值过程中由于能量网格不匹配造成截面计算错误(通常 表现为截面无穷大或NAN),建议用户不要轻易关闭该选项。仅当用户明确自己的ACE文件中的能量网格与热数数据库 中的能量网格完全匹配时,可以考虑关闭该选项,以减少初始化过程中截面插值的计算时间。 .. _section_mat_otfdbnuc: OTFDB核素输入卡 ------------------------- 若CeAce输入卡中打开OTFDB选项默认对所有核素使用高斯厄米特积分方法进行在线多普勒展宽, 此时用户可以使用该选项卡指定对哪些核素使用高斯厄米特积分方法进行在线多普勒展宽。 .. code-block:: none OTFDBNUC …… 其中, - **OTFDBNUC**\ 为使用高斯厄米特积分方法进行在线多普勒展宽的核素输入卡。 - **zaid**\ 为核素ID。 .. _section_hdf5_mat: 材料HDF5文件输入 ----------------- 除了在文本文件中读取材料信息及CEACE信息外,RMC程序还支持从HDF5文件中读取材料参数。用户通过设置HDF5文件路径: .. code-block:: none HDF5 程序会从相应文件中读取材料及CEACE信息。 .. note:: 由于HDF5文件的用户可读性较差,从H5文件中读取材料信息,一般仅出现在大规模核热耦合计算中,读取上一 个燃耗步RMC程序自动生成的材料HDF5文件,用于加速程序计算。 一个HDF5格式的材料文件中包含以下子数据块: :material_density: 用户定义的所有材料的密度 :material_id: 用户定义的所有材料的编号 :material_nuclide_number: 用户定义的每个材料中核素的数目 :material_sabnuclide_number: 用户定义的每个材料中热化核素的数目 :material_nuclides_id: 用户定义的每个材料中所有核素的编号,如92235.30c, 54135.30c等 :material_nuclides_density: 用户定义的每个材料中所有核素的密度 :material_sabnuclides_id: 用户定义的每个材料中所欲热化核素的编号,如HinH2O.92t等 .. note:: 为了加快程序读取材料信息的速度,所有数据都存储在一个一维数组中。 除了以上基础的数据信息外,为了方便程序读取,HDF5文件中还包括两个位置索引变量: :material_nuclide_position: 用户定义的每个材料的组成核素在 ``material_nuclides_id`` 数组中的位置 :material_sabnuclide_position: 用户定义的每个热化材料的组成热化核素在 ``material_sabnuclides_id`` 数组中的位置 .. _section_mat_mgace: 多群ACE截面相关输入卡 ------------------------- 若材料输入卡中的核素使用多群ACE截面,\ *用户必须使用以下输入卡为多群截面指定相关 参数选项*\ 。 .. code-block:: none MgAce [ErgGrp = ] [DelayNeuFamily = ] [Beta = ... ... ... ... ] [Lambda = ... ] 其中, - **MgAce**\ 为多群ACE截面相关输入卡的关键词。 - **ErgGrp**\ 选项卡指定多群中子和多群光子ACE截面的群数。当处于纯中子输运模式时, 后面的光子群数可以写成0或者省略;当处于纯光子输运模式时,前面的中子群数需要写成0,不能省略 下面的几个选项一般用于时空动力学计算: - **DelayNeuFamily**\ 选项卡指定缓发中子组数 - **Beta**\ 选项卡指定各裂变材料的各组缓发中子份额, 指定第m个裂变材料的材料号, 指定对应裂变材料第n组缓发中子份额,的数目应与DelayNeuFamily的值一致。 - **Lambda**\ 选项卡指定各组中子的中子代时间, 指定第n组中子的中子代时间。 需要指出的是,多群截面数据库紧密依赖于实际物理问题。因此,公开发布的RMC程序包中 不提供多群ACE数据库,用户可以使用其它数据库处理软件生成与实际问题相关的多群ACE截 面数据库。 .. _section_mat_mtlib: 光核反应、光原反应数据库选择输入卡 --------------------------------------------- 若需要选择光核反应和光原反应截面的数据库,则可以通过此输入卡为其设定相关参数。输入卡的格式为: .. code-block:: none MTlib [Plib=] [PNlib=] 其中, - **MTlib**\ 为选择光核反应、光原反应截面数据库输入卡的关键词。 - **Plib**\ 选项卡指定光原反应截面数据库类型。**Plib = 04P**\(缺省值), 表示指定mcplib04p光原反应截面数据库。 - **PNlib**\ 选项卡指定光核反应截面数据库类型。**PNlib = 24u**\(缺省值), 表示指定endf24u光核反应截面数据库。 .. _section_mat_nubar: 调整平均裂变中子数选项卡 --------------------------------------------- 在某些情况下,需要成比例地调整平均裂变中子数,以改变系统的增殖能力。例如,在准静态动力学计算中, 初始时刻需要处于临界状态。若模型本身不是临界状态,则可以使用该选项卡将其调整到临界 (输入有效增殖因子即可)。 输入卡的格式为: .. code-block:: none nubar [factor = ] 其中, - **nubar**\ 为调整平均裂变中子数选项卡的关键词。 - **factor**\ 为调整平均裂变中子数的因子,注意该因子为除数,缺省值为1(表示不调整)。 例如,若\ **factor = 2**\ ,则输运计算所使用的平均裂变中子数将变成数据库中的平均裂变中子数的1/2。 .. _section_mat_dynamicmat: 动态材料相关输入卡 ----------------------------- 若材料输入卡中的核素使用随时间变化的动态参数,则可以通过以下输入卡为其设定相关参数选项。 .. code-block:: none DynamicMat [time =] [Matdenvalue = ] [Nucdenvalue = ] 其中, - **DynamicMat**\ 为动态材料相关输入卡的关键词。 - **mat_id**\ 为材料编号,与\ **Mat**\ 卡中的材料编号相匹配。 - **time**\ 卡和\ **Matdenvalue**\ 卡和\ **Nucdenvalue**\ 卡结合使用,分别描述时间,材料密度,该材料中各核素相对份额的变化规律,\ **time**\ 卡和\ **Matdenvalue**\ 卡中输入的值的数目相等,表示当时间超过ti时,对应参数取为vi。\ **Nucdenvalue**\ 卡中输入值的数目为\ **time**\ 卡中值数目的\ **x**\倍,\ **x**\为该材料中核素的数量。 .. _section_mat_cvmt: 连续介质相关输入卡 ----------------------------- 若材料输入卡中的材料使用连续介质,则可以通过以下输入卡为其设定相关参数选项。 .. code-block:: none cvmt [polytype = ] [dimension = ] [contitype = ] [order = ] [coeffs = ] [bound = ] 其中, - **cvmt**\ 为连续介质相关输入卡的关键词。 - **mat_id**\ 为材料编号,与\ **Mat**\ 卡中的材料编号相匹配。 - **polytype**\ 为连续变化函数的函数类型,0为勒让德多项式,1为泽尼克多项式,2为两维勒让德多项式,3为3维勒让德多项式,4为勒让德泽尼克多项式,5为幂函数(暂时只有1维)。 - **dimension**\ 为连续变化函数的维度,0为一维X方向,1为一维Y方向,2为一维Z方向,3为二维圆盘,7为三维圆柱,8为三维笛卡尔,9为幂函数。 - **contitype**\ 为连续变化函数的变化类型,0为密度连续变化,1为温度连续变化。 - **order**\ 为连续变化函数的阶数,前3个为勒让德多项式阶数,最后1个为泽尼克多项式阶数,没有则使用-1占位。 - **coeffs**\ 为连续变化函数的各阶系数数组。需要注意的是,对于勒让德和泽尼克的系数输入,是需要包含归一化系数kn的,即an*Pn即为要计算的函数点,这里的an中包含了归一化系数kn。 - **bound**\ 为连续变化函数的变化区域。这里是因为勒让德和泽尼克多项式都有粒子位置的归一化处理,因此需要输入材料区域的真实尺寸,输入的函数也应该是按照归一化后的xyz计算的。 若为直角坐标则为x_min x_max y_min y_max z_min z_max。若为圆柱空间则为x_point y_point z_min z_max r_max,x_point和y_point分别为圆心点坐标。 .. _section_mat_example: 材料模块输入示例 -------------------- 使用连续能量ACE数据库的材料模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在下面的材料模块中,首先通过\ **Mat**\ 输入卡分别定义了UO\ :sub:`2`\ 和H\ :sub:`2`\ O这两种材料。UO\ :sub:`2`\ 的质量密度为-10.196 g/cm\ :sup:`3`\ ,U235、U238和O16的原子比为0.03 : 0.97 : 2.0。H\ :sub:`2`\ O的原子密度为0.9997 bar\ :sup:`-1`\ cm\ :sup:`-1`\ ,H1和O16的原子比为2 : 1。通过\ **Sab**\ 输入卡,为H\ :sub:`2`\ O中的H1(1001.30c)指定了热化数据库(lwtr.60t)。 在\ **CeAce**\ 输入卡中,\ **pTable = 0**\ 表示不使用概率表,\ **ErgBinHash = 1**\ 表示使用哈希表加速能量查找, \ **DBRC = 0**\ 表示不使用DBRC算法, \ **TMS = 0**\ 表示不使用TMS算法, \ **OTFDB = 1**\ 表示使用高斯厄米特积分方法进行在线多普勒展宽。 .. code-block:: c MATERIAL mat 1 -10.196 92235.30c 0.03 92238.30c 0.97 8016.30c 2.0 mat 2 0.9997 1001.30c 2.0 8016.30c 1.0 Sab 2 lwtr.60t CEACE pTable = 0 ErgBinHash = 1 DBRC = 0 TMS = 0 OTFDB = 1 使用连续能量HDF5格式AIS数据库的材料模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ 在下面的材料模块中,首先通过\ **Mat**\ 输入卡分别定义了UO\ :sub:`2`\ 和H\ :sub:`2`\ O这两种材料。 UO\ :sub:`2`\ 的质量密度为-10.196g/cm\ :sup:`3`\ ,U235、U238和O16的原子比为0.03 : 0.97 : 2.0。 H\ :sub:`2`\ O的原子密度为0.9997bar\ :sup:`-1`\ cm\ :sup:`-1`\ ,H1和O16的原子比为2 : 1。 通过\ **Sab**\ 输入卡,为H\ :sub:`2`\ O中的H1(1001.30c)指定了热化数据库(h-h2o)。 所有数据库均使用来自ENDF-B8.0的HDF5格式AIS核数据库(程序会自动到数据库路径下的AISNucDatabase/ENDFB8.0查找对应的核数据文件), 该示例均使用温度均为293.6K下的核数据。 在\ **CeAce**\ 输入卡中,\ **pTable = 1**\ 表示使用概率表,\ **ErgBinHash = 1**\ 表示使用哈希表加速能量查找, \ **DBRC = 1**\ 表示使用DBRC算法, \ **TMS = 0**\ 表示不使用TMS算法, \ **OTFDB = 1**\ 表示使用高斯厄米特积分方法进行在线多普勒展宽。 .. code-block:: c MATERIAL mat 1 -10.196 U235 fraction = 0.03 endfversion = 8.0 tmp = 293.6 U238 fraction = 0.97 endfversion = 8.0 tmp = 293.6 O16 fraction = 2.0 endfversion = 8.0 tmp = 293.6 mat 2 0.9997 H1 fraction = 2.0 endfversion = 8.0 tmp = 293.6 O16 fraction = 1.0 endfversion = 8.0 tmp = 293.6 Sab 2 h-h2o endfversion = 8.0 tmp = 293.6 CEACE pTable = 1 ErgBinHash = 1 DBRC = 1 TMS = 0 OTFDB = 1 使用多群ACE数据库的材料模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c MATERIAL mat 1 -10.198 92235.50m 6.9100E-03 92238.50m 2.2062E-01 8016.50m 4.5510E-01 mat 2 -0.001 8016.50m 3.76622E-5 mat 3 -6.550 40000.50m -98.2 mat 4 -0.997 1001.50m 6.6643E-02 8016.50m 3.3334E-02 MgAce ErgGrp = 30 在上面的材料模块中,.50m为30群的多群ACE截面库。通过\ **ErgGrp**\ 选项卡,指定了 多群截面的能群数量。 使用动态材料变化的材料模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c Material mat 1 -15.0 92235.71c -5 92238.71c -10 DynamicMat 1 time= 0 200e-8 400e-8 500e-8 700e-8 900e-8 1000e-8 Matdenvalue=-15 -15 -15 -15 -15 -15 -15 Nucdenvalue=-5 -6.5 -14 -14 -6.5 -5 -5 -10 -8.5 -1 -1 -8.5 -10 -10 在上面的材料模块中,通过\ **DynamicMat**\ 选项卡,指定了动态材料随时间变化的参数。\ **time**\ 卡指定时间点,\ **Matdenvalue**\ 卡指定与时间对应材料密度,\ **Nucdenvalue**\ 卡的第一行对应于核素92235随时间的相对份额值,第二行对应于核素92238随时间的相对份额值。在时间点之间的值程序会通过插值确定,比如当需要100e-8时刻的核素92235份额值时,程序会首先通过时间确定插值的位置,然后再由该核素的对应时间参数[-5,-6.5]插值确定。 使用连续介质变化的材料模块 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. code-block:: c Material mat 1 -15.0 92235.71c -5 92238.71c -10 cvmt 1 polytype = 4 dimension = 7 contitype = 0 order = -1 -1 1 2 coeffs = 0.0 1.0 2.0 3.0 4.0 5.0 7.0 6.0 8.0 9.0 10.0 11.0 在上面的材料模块中,通过\ **cvmt**\ 选项卡,指定了连续介质变化的参数。\ **polytype**\ 卡指定连续变化函数类型为勒让德泽尼克多项式, \ **dimension**\ 卡指定空间为三维圆柱空间,\ **contitype**\ 卡指定材料密度连续变化, \ **order**\ 卡指定x和y方向没有勒让德多项式定义,z方向勒让德多项式阶数为1,泽尼克多项式阶数为2,\ **coeffs**\ 卡指定各阶系数,此时为(1+1)*(1+2+3)=12个。