openmc-dev / openmc

OpenMC Monte Carlo Code
https://docs.openmc.org
Other
767 stars 493 forks source link

HDF5 library for continuous-energy transport data #599

Closed paulromano closed 8 years ago

paulromano commented 8 years ago

While we're on a mass issue-creation spree this morning, I thought I might as well add one more -- creation of an HDF5 library for continuous-energy data. As everyone knows, we currently rely on ACE-format data for continuous-energy neutron transport. There are a few downsides to ACE:

  1. The format is old, opaque, and not easily extensible
  2. We have no control over the format
  3. It's only produced by a code (NJOY) that is export-controlled
  4. The documentation on the format is also export-controlled (MCNP manual volume III)

I'd like for us to switch to an HDF5-based format to address most of these issues. I see this happening gradually. First, we can create a format that pretty much contains the same data that ACE does and can be easily produced from ACE data. That will address points 1, 2, and 4 above. It won't truly address 3 since you'd still need to convert ACE->HDF5, but it opens up the possibility of having our own processing infrastructure in the long-term or even leveraging another code (e.g. Fudge).

In terms of implementing this, I am actually quite far down the path already; those interested can take a look at the pyapi-data branch on my repository. I'm going to try to break it down into smaller chunks that can be pull request-ed separately though:

The first two I already have partially implemented, and now I'm working on the final piece. I'm hoping that #560 will be able to leverage the work here and add multipole data to the HDF5 library.

paulromano commented 8 years ago

One question we'll need to make a decision on -- how we want to identify nuclides/materials. Right now, our cross_sections.xml file gives each ACE table the following attributes: name, alias, metastable, zaid. There really ought to be a single canonical name and attibutes A, Z, and metastable. I would propose that for nuclides we use the current GND form: SymA_mN. So the first metastable state of Americium-242 would be Am242_m1. Elements are identified as Sym0, e.g., C0 would be elemental Carbon. GND is obviously a work-in-progress, but it seems that adopting this scheme would future-proof ourselves a bit and get us away from the ACE mess.

Identifying compounds is a separate question. The current GND form is c_String_Describing_Material., so water might be c_H_in_H2O. It's not the prettiest thing ever, but I'm not sure what would be better.

I welcome other suggestions and criticisms.

nelsonag commented 8 years ago

I agree with the naming scheme @paulromano. It seems to me that we should follow GND as much as possible, much like how ACE followed ENDF as much as possible (not that I was there for those discussions, but it seems to be the case)

paulromano commented 8 years ago

Closed with the merging of #684