在使用DAGMC进行输运计算的时候,其几何文件中,已经通过trelis定义了材料名称和密度,但并没有定义这些材料的具体组成成分。在进行计算之前,需要制作相应的材料数据库,把材料数据写入到h5文件中,再跟几何文件整合起来。这样,DAGMC就知道这个栅元的材料成分了。
针对不同的问题规模,可以采用不同的形式来制作材料库。比如简单的问题,只需要几种不复杂的材料时,我们可以直接在python脚本内编辑材料成分,然后写入材料库。对于涉及材料比较多的问题,可以通过提前准备材料数据库文件(即将各种材料以一定格式提前保存在电脑中,再通过python脚本读取材料文件格式化的制作材料数据库)。或者直接提前准备包含自己会用到的h5材料数据库。
简单数据库制作
对于几何简单,涉及材料较少(少于5个材料)的计算任务,直接在python脚本中调用pyne的材料库写就行了。
定义材料时,我们需要制定材料的以下信息:
- 名称:和trelis中group name对应的字符串
- 密度:材料密度
- 核素组成:材料的具体成分
我们可以用多种方式来定义材料的组成成分,详细说明可以参考官方文档。比如下面三种常用方式:
- 通过核素的核子密度比例(atom fraction),可以不归一化
- 通过核素的质量份额(mass fraction),可以不归一化
- 通过元素的质量份额,然后expand元素
比如下面的文件定义了Water,BoronCarbide和Steel三种材料并将材料写入到材料库example_material_lib.h5中。
1 | #!/usr/bin/python |
此例子中,定义Water时用材料的核素个数比例来定义的材料。在定义BoronCarbide时使用材料的元素比例来定义。在定义Steel时使用的材料的元素质量份额来定义。
格式化数据库制作
对于涉及材料比较多,材料成分比较复杂的模型,直接用python脚本来定义每种材料就会非常麻烦了,而且不利于材料的更新,维护与阅读。
对于原本是使用其他蒙特卡罗软件的人,可能已经为其使用的软件准备了一套材料数据库,要是让他们再为其他软件单独准备一套数据库,工作量又大,又容易出错。这时使用脚本将其他格式的材料转换为pyne的材料定义方式是更好的选择。
因此,格式化数据库制作的过程,就是指将原本以其他媒介(如excel, 文本文件,hdf5文件等)以其他格式(如成分表格,MCNP格式等)存放的材料信息转化为pyne识别的,可以用于DAGMC计算的材料数据库的过程。
万变不离其宗,不论是什么媒介什么格式的方式,都是通过读取材料的名称,密度和材料组成成分进而根据pyne的格式来定义材料数据库。