mctools / ncrystal

NCrystal : a library for thermal neutron transport in crystals and other materials
https://mctools.github.io/ncrystal/
Other
38 stars 17 forks source link

Write ENDF format #129

Open dddijulio opened 1 year ago

dddijulio commented 1 year ago

Add feature to output ENDF format.

marquezj commented 1 year ago

From the discussion in the school, it might be useful to use FUDGE to generate data. FUDGE provides an API to write nuclear data in the Generalized Nuclear Data format, and tools to export to ENDF-6. This is the definition of the format, although it was recently updated to version 2.0.

gpanobre commented 1 year ago

There were significant changes from GNDS-1.9 to GNDS-2.0. I strongly encourage to go straight to the 2.0 version. The documentation and definitions are in a NEA document that is currently in press. As soon as it's out I can post here. In the meantime, if you want to have a sneak peek, please contact me and I can share it privately.

tkittel commented 1 year ago

Just for my information, how large is the number of people using ENDF6 versus GNDS currently?

xxcai1 commented 1 year ago

I'm looking at the documentation for v1.9. In addition to generating ENDF files, it has a MonteCarlo_cdf style type. Anyone is using it directly in a transport code for fast neutrons?

marquezj commented 1 year ago

@tkittel : as far as I know: ENDF-6 is the current established format, and GNDS is being proposed. GNDS has the advantage of including new physics (ENDF-6 is quite limited).

If we want to go directly to ENDF-6 now, an alternative package is ENDFtk. Pyne and openmc.data read but do not write ENDF-6 files.

tkittel commented 1 year ago

Thanks @marquezj that is what I thought. So I imagine if we are providing the "ncmat2x" feature as a short-term service to an existing community not able to directly use NCrystal, it makes most sense if x==ENDF6. Of course, if it is easy to support GNDS as well, I don't have any problem with also supporting that.

In any case, I'll be happy to help with the "get data out of ncrystal" part, and will be 100% relying on volunteers for the "to x" part :-)

marquezj commented 1 year ago

Yes, we have all the information there already. Most of it explicitly, and then NCrystal.vdos.analyseVDOS() gives the Teff. We also have the algorithm from NJOY+NCrystal to decide what we put in the ENDF-6 file (how to separate the components, how to fit the constrains of the format). So the only missing piece is a reliable converter.

tkittel commented 1 year ago

Slightly off-topic, but @marquezj there is even a method directly on the dyninfo object, so you don't have to worry about transferring the correct parameters to NCrystal.vdos.analyseVDOS():

image

marquezj commented 1 year ago

Great, that is handy!

gpanobre commented 1 year ago

Hi Thomas and all,

Just complementing a bit Ignacio's comment: Yes, ENDF-6 is the established format and if you want to reach a broader range of users you can't avoid generating ENDF-6 formatted files. Just keep in mind that, for the uninitiated, the ENDF-6 format can be quite daunting. So you will have to decide what makes more sense to you, understanding the ENDF-6 format so you can directly output in that format, or starting with a more modern format, GNDS, and use things like FUDGE to do one-to-one translations to ENDF. ENDF-6 is still supported and will still be fully supported for quite a while, but the next release of ENDF/B, version VIII.1, will be officially released in both ENDF-6 and GNDS, and more and more evaluation and processing codes are building now interfaces to operate directly in GNDS. For more detailed questions feel free to reach out to Caleb Mattoon (LLNL) and Dave Brown (BNL)

gpanobre commented 1 year ago

Xiao Xiao, I know the Livermore folks use MCGIDI and GIDI+ as event generators and they "speak" ENDF-6 and GNDS. You should probably contact Caleb Mattoon and Bret Beck (LLNL) on that.