.. _section_conti_surf: 接续面源 ==================== RMC支持接续面源计算文件输出功能。接续面源计算,用于将粒子径迹记录在面上, 供屏蔽计算使用。额外信息由模块BinaryOut定义。 接续面源文件输出模块输入卡 --------------------------------------------- .. code-block:: none Binaryout WrtSurfSrc Write= SYMM= PARTYPE = Surf = CeL= WCylces= Wssa= 其中, - **Write**\ 指定是否输出接续计算文件,1表示输出,0表示不输出,默认值为0。 - **Cel**\ 仅适用于临界计算。记录临界计算中,在指定栅元中产生的源粒子。 - **Symm**\ 指定粒子径迹记录的方式。0代表对称记录,即Surf中定义的面仅能为球面, 且只能定义1个,这种情况很少见,用户需要确定是否可以使用。1代表记录方式按Surf中介绍记录。 2代表记录穿过Surf中定义面的径迹,无论径迹方向如何。默认值是1。 - **Partype**\ 指定记录的径迹类型,0代表中子,1代表光子。默认包含计算中所使用的所有种类径迹。 - **Surf**\ 是指定需要被记录的面,将在下面详细介绍。 其输入格式具体为Ids1(Idc1 Idc2 Idc3) Ids2,如:Surf=-1(2 -3) 3。 其中Ids代表的是需要记录面的序号,可正可负。正负号代表粒子径迹穿过面的方向与面的法向夹角余弦值为正或为负。 括号内代表栅元序号,可正可负。“+”(可缺省)代表进入该栅元,“-”代表离开该栅元。 例如Surf=-1(2 -3) 3,表示记录穿过面1,且与1面正法线方向夹角为负数,进入栅元2或者离开栅元3的径迹, 或者沿与面3正法线方向夹角为正的径迹。如果Symm为2,则记录穿过面1且进入栅元2或者离开栅元3,或者穿过面3的径迹。 - **Wcycles**\ 是指接续计算中需要记录的活跃代数,如果不定义则默认记录全部活跃代数。 - **MCNP5_Wssa**\=1是指将RMC输出的接续面源文件转换为MCNP5-1.20和MCNP5-1.51格式的面源文件,**MCNP5_Wssa**\ 默认值为0, 并且0的时候不进行转换。**MCNP6_Wssa**\=1是指将RMC输出的接续面源文件转换为MCNP6.1.1格式的面源文件,**MCNP6_Wssa**\ 默认值为0, 并且0的时候不进行转换。该功能需要使用RMC的python框架进行计算,新建一个test文件夹,同时将RMC的python框架中的runner.py复制过来, 同时新建一个文件夹 workspace,将输入卡、RMC的可执行文件、xsdir,然后调用文件夹外的runner.py,运行命令为python3 runner.py workspace/inp --mpi mpi核数。输出的MCNP格式的面源文件在archive文件夹中,会分别根据判断输出MCNP5与MCNP6格式的面源文件, 输出的MCNP6格式的面源文件名称为rssa_mcnp6.1.1,输出的MCNP5格式的面源文件有两个,分别为rssa_mcnp5-1.20和rssa_mcnp5-1.51。 接续面源文件使用模块输入卡 --------------------------------------------- .. code-block:: none SurfSrcRead OldSurf=< S1 S2 S3……Sn > NewSurf = < S11 S21 S31…Sm1…Smn > Cell= Partype= Coli= Wtm= Axis= Extent= Posace= Tr= ssr= 其中, - **OldSurf**\ 通过指定原来计算中的面,来表示使用穿过这些面的粒子径迹。 缺省表示使用原来计算中所有的面 - **NewSurf**\ 指定原来的面在新的计算中所对应的面。其中一个面可以对应多个面即 该输入卡中的面的个数,必须是\ **OldSurf**\ 卡中的面个数的整数倍。当缺省时,默认使用 \ **oldsurf**\ 中的面;如果一个面对应多个面,必须在TR中定义对应的关系,两个面大小应当相同。 - **Cell**\ 通过指定原来计算中的栅元,来表示使用这些栅元中的径迹。 - **Partype**\ 指定使用的径迹粒子类型,0代表中子,1代表光子。默认包含接续 面源文件中包含的径迹类型。 - **Coli**\ 是指定使用的径迹的碰撞类型,-1表示仅选择没有经历碰撞的径迹,0表示任意径迹都记录, 1表示仅记录经历碰撞的径迹。缺省值为0; - **Wtm**\ 指定选择的径迹的权重所乘以的倍数。 - **Axis,Extent,Posace**\ 仅能在输出接续计算文件相应计算\ **SYMM**\ =0情况下使用。 \ **Axis**\ 代表定义的轴向,\ **Extent**\ 对指定沿轴向的粒子的偏倚操作,具体在\ **Distribution**\ 卡中定义; 其都有两种定义形式: 1. \ **Axis**\ =u v w; 2. \ **Axis**\ = D+正整数,表示\ **Axis**\ 由\ **Distribution**\ 卡中ID为该正整数的分布来描述。 \ **Posace**\ 选择与\ **Axis**\ 对应轴向指定余弦内的粒子。 - **Tr**\ 指定面面对应关系。当输入为正时,表示相应的对应关系,即空间变换关系。 如果是D+正整数,则表示相应的偏倚操作:其定义为D+正整数时,正整数的值表示对应的\ **Distribution**\ 卡中定义的用户索引号, 其仅支持离散值的分布,而后会根据相应的\ **Distribution**\ 卡内Type=1内的离散值 定义来进行相应的偏移操作。 - 当接续面源固定源计算中使用的粒子数大于接续面源文件中的粒子历史数,则会重复抽样直到粒子数等于固定源计算中使用的粒子数;反之,则不会重复抽样。 - **ssr**\ 指定是否读入MCNP格式的面源文件,等于1时表示读入的是MCNP格式的面源文件,目前可以读MCNP6.1.1、MCNP5-1.20和MCNP5-1.51格式的 面源文件;默认为0,表示读入的RMC格式的面源文件。同时,该功能需要使用RMC的python框架进行计算,新建一个test文件夹(用户可自己命名该文件夹), 同时将RMC的python框架中的runner.py复制到新建的test文件夹下,同时新建一个文件夹workspace(同理,用户可自己命名该文件夹, 默认为workspace),将输入卡、RMC的可执行文件、xsdir以及MCNP输出面源文件wssa(如果不是wssa,重命名wssa)复制到workspace文件夹下,然后调用 文件夹外的runner.py即可正常运行,在Linux服务器上运行命令为python3 runner.py,如果要在超算上计算,计算命令参考 :ref:`section_run_exe` 中的python调用RMC运行部分即可。 - 如果用户在开启了ssr选项时,不希望将RMC的python框架复制到该计算文件夹时,可使用pyinstaller将runner.py打包为一个可执行文件,然后也可使用 该可执行文件进行计算,计算命令不变,在Linux服务器上命令为./runner workspace/inp --mpi mpi核数(将python3 runner.py替换为 ./runner),如果要在超算上计算,计算命令将python3 runner.py替换为./runner即可。 - 目前RMC除了可支持使用本身输出的面源文件,还可支持使用MCNP格式的面源文件,该模块具体在外源模块中定义,具体参见 :ref:`section_external_source` 中的源描述模块输入卡进行计算即可。当使用RMC程序输出的面源文件WSurfSrc,需将WSurfSrc重命名为SurfSrc 文件;当使用MCNP格式的面源文件时,需要打开SurfSrcRead选项卡中的ssr选项。 接续面源模块示例 ----------------------- - 接续面源文件输出示例 .. code-block:: c BinaryOut SurfSrcWrt surf = 1(-2 3) cel =2 symm=0 Partype = 0 1 该示例为接续面源输出模块,表示记录穿过面1,且与1面正法线方向夹角为正数,离开栅元2或者进入栅元3的径迹, 同时会记录临界计算中在栅元2中产生的 源粒子,径迹记录方式为对称记录,记录的粒子径迹类型为中子和光子。 - 接续面源文件使用示例 .. code-block:: c SurfSrcRead OldSurf=1 2 NewSurf = 1 2 Cell= 3 Partype=0 Coli=1 Wtm=1.0 该示例使用原来面序号为12的面上的中子径迹,和栅元3中的中子径迹。权重乘子为1,且为碰撞后径迹。 .. code-block:: c SurfSrcRead OldSurf=3 4 NewSurf = 3 4 Partype=0 1 Coli=1 Wtm=1.0 ssr=1 该示例使用原来面序号为3和4的面上的中子和光子径迹,权重乘子为1,使用MCNP格式的面源文件进行接续计算。