吴小飞 吴海成 赵秋娟
摘 要 endfio实现了ENDF(文档1至文档15)和PENDF格式数据的读写,并提供文档的插入、查找等基础功能。为验证程序工作的正确性和可靠性,本文以CENDL-3.1库和ENDF-B-VII.1库数据为样本,对endfio进行了测试,测试覆盖了大部分评价数据的表达方式。测试表明,该接口库能够正确读写样本中的所有数据。
【关键词】endfio ENDF 测试
ENDF(Evaluated Nuclear Data Format)是评价核数据库的标准格式,国际上众多评价核数据库均采用该格式存储评价核数据。中国核数据中心正致力于开发一套具有自主知识产权的核数据处理系统-Ruler。Ruler程序本质上是一套加工ENDF格式数据的工具,因此处理ENDF格式数据文件的输入输出是整个项目的基础。
目前,国际上应用最广的核数据加工处理程序是NJOY。NJOY程序提供了一系列处理ENDF 格式I/O的子程序,这些子程序相互正交,构成一个功能完备的工具集。NJOY提供的这套工具与ENDF格式数据的文件结构息息相关。这种做法的好处是灵活度高,用户可以根据自己的功能需求选择相应的子程序,并结合具体情况进行性能调优。该方法在PREPRO、ENDVER等程序中有着广泛的应用,但它有两个明显的缺点:第一,这套工具在减轻用户心智负担方面毫无建树,使用这套工具的用户仍然必须非常熟悉ENDF文件结构;第二,这套工具的抽象程度较低,它把底层实现的具体细节暴露无余,这意味着当ENDF格式发生变化时,用户代码不得不随之做出修改,这严重影响了程序的可扩展性。此外,NJOY提供的这套工具还决定了用户代码中对ENDF格式数据的I/O操作相对分散,这进一步降低了用户程序的可扩展性。目前,新的核数据格式GND的制订与发布已经提上日程,未来Ruler程序需要能够同时处理ENDF和GND格式的数据。如果沿用NJOY的思路,程序从ENDF格式向GND格式的迁移将十分困难。
综上,为提高Ruler程序的开发效率、可维护性和可扩展性以及实现计算模块与ENDF输入输出的相互独立,中国核数据中心开发了核评价数据接口库endfio。
1 endfio的主要特点
Endfio的基本设计思路是用“API-centric”模型取代原来(NJOY)的“file-centric”模型。它将NJOY中分散的I/O操作集中起来并封装成库,隐藏具体实现细节,只向用户开放应用编程接口(API)。这样,用户只需要基于API编程,从而彻底从繁杂的ENDF格式细节中解放出来。
Endfio库由两部分组成,数据类型和用户接口。数据类型由一系列层次分明的结构体组成,最顶层的结构是endf_file。与ENDF格式定义了核数据在磁盘文件中的存储结构类似,endf_file类型定义了核数据在内存中的存储结构,它实际上建立了磁盘与内存中数据的一一映射。新I/O系统的数据类型在设计上遵循了三个原则:一是数据变量的命名尽量保持与《ENDF格式手册》一致,这样做的好处是省掉了说明文档的书写,用户在使用这些数据类型时参阅《ENDF格式手册》即可;二是尽量提高变量名称的复用性,同一变量名在不同的(互斥)分支下可以指代不同的物理量,这一做法为用户代码提供了便利;三是动态分配内存,提高内存使用效率。
表1列出了endfio提供的五个用户接口及其功能。子程序read_endf_file和write_endf_file顾名思义,实现了(P)ENDF格式数据文件的读写。前面提到,新系统的数据类型大量使用了动态分配内存,子程序del_endf则负责回收这些内存。insert_mt和find_mt和前面三个接口不同,它们实际上分别代表一系列重载过程,用户调用这两个接口时,系统会根据传递参数的类型和数量自动选择匹配的子程序。
与NJOY处理ENDF格式I/O的做法相比,endfio的抽象程度更高,这使得用户代码与ENDF文件的繁杂结构相隔绝。当ENDF格式发生改变时,endfio会相应变化,而用户代码则只需做少量修改,甚至不做修改。此外,由于用户代码与I/O库相互独立,将用户代码从ENDF格式迁移到新数据格式(如GND)的工作将大大简化。
2 endfio的测试
整个测试流程如图1所示。利用endfio编写函数moder,该函数实现了ENDF格式数据文件进制的转换。我们从十进制文件tape20出发,先用moder转换成二进制文件tape21,再用moder将tape21重新转换成十进制文件tape22。利用文件比对工具diff比较文件tape20和tape22,如果两者内容一致,则认为endfio工作正确。
目前endfio能够读写ENDF(文档1至文档15)和PENDF格式数据。我们以CENDL-3.1库和ENDF-B-VII.1库数据为样本进行了测试。测试结果显示,经endfio两次转换后得到的文件与原始文件内容基本相同,少许差异来源于ENDF格式本身的缺陷(ENDF数据存在冗余和不一致)。
3 总结
本文介绍了评价核数据接口库endfio。该库能够正确处理ENDF(文档1至文档15)和PENDF格式文件的读写,并提供文档的插入、查找等基础功能。基于该库提供的API,用户代码处理ENDF数据时将把重心放在物理模块的功能开发,而不是处理ENDF格式细节上。为验证程序工作的正确性和可靠性,本文以CENDL-3.1库和ENDF-B-VII.1库数据为样本,对endfio进行了测试。测试表明,该库能够正确读写样本中的所有数据。
参考文献
[1]Herman M,Trkov A.ENDF-6 Formats Manual,Data formats and procedures for the Evaluated Nuclear Data File ENDF/B-VI and ENDF/B-VII[R].Upton,NY 11973-5000,USA:Brookhaven National Laboratory,2009.
[2]macfarlane R E.NJOY99.0,code system for producing pointwise and multigroup neutron and photon cross section from ENDF/B Data[R].Los Alamos,New Mexico:Los Alamos National Laboratory,2000.
[3]R E MACFARLANEF,A C KAHLER.Methods for Processing ENDF/B-VII with NJOY[J].Nuclear Data Sheets,111,12,2739(2010).
[4]D E CULLEN. PREPRO 2004—ENDF/B Pre-Processing Codes[R].IAEA-NDS-39 Rev.12,International Atomic Energy Agency 2004.
作者简介
吴小飞(1989-),男,江西省上饶市人。硕士研究生学历。粒子物理与原子核物理专业。
作者单位
中国原子能科学研究院中国核数据中心 北京市 102413