ENDFtk icon indicating copy to clipboard operation
ENDFtk copied to clipboard

Adding GENDF Capabilities to ENDFtk

Open nathangibson14 opened this issue 4 years ago • 2 comments

This pull request adds the ability to read a GENDF file via the syntaxTree and to do basic parsing of cross section (MFD 3) and transfer matrix (MFD 6) sections. This only supports reading GENDF files; writing is not yet implemented.

The classes of the syntaxTree are now tagged as ENDF or GENDF, and ENDF is default. This means there's no change to the existing syntax for reading ENDF files. Rather than specify the tag directly, users (and other places in the code) can use convenience aliases such as GendfTape.

Parsing is currently limited to extracting a cross section or matrix element by group, Legendre order, and dilution index. Adding capability for an array of cross sections will likely follow sooner than later.

There is plenty more to do for full GENDF support, but I believe this is enough to start using while other functionality is developed. Things to include later include:

  • Support for header data (MFD 1) and delayed neutron data (MFD 5)
  • Support for ratio quantities (MFD/MT 3/452 and various others)
  • Support for compressed fission transfer matrix format (prod/spec for lower energy groups)
  • Support for photon production
  • More convenient data structures from parsed data structures.

The test suite passes, although there are plenty of ranges-related test suite quirks on various systems/compilers. None of the quirks touch pieces of the code affected by this PR. I found issues with two tests on Snow/GCC 8.3.0 and one test on my MacBook/GCC 9.2.0. I'll put up a separate issue, but it's time to consider upgrading the ranges package for a variety of reasons.

Let me know how my biggest foray into C++ looks! :smile:

nathangibson14 avatar Jun 03 '20 18:06 nathangibson14

Stop poking me ;-)

whaeck avatar Jun 03 '20 20:06 whaeck

@whaeck Poke.

nathangibson14 avatar Jun 03 '20 20:06 nathangibson14