Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Deriving nuclear data from source data #1

Open
jakehader opened this issue Jun 20, 2022 · 3 comments
Open

Deriving nuclear data from source data #1

jakehader opened this issue Jun 20, 2022 · 3 comments

Comments

@jakehader
Copy link

jakehader commented Jun 20, 2022

Hi @JASory, I have been doing some research to find a package that could meet our needs on terrapower/armi#460 as a general nuclide library that can be imported across different languages, mainly Python at this time. I am learning Rust and came across this package and thought that it might be nice to collaborate!

After looking through your codebase, I am curious if we could work on the following functionalities:

  • Derive nuclide data from a given decay library, like ENSDF (https://www.nndc.bnl.gov/ensdfarchivals/). A python package called nudel (https://github.com/op3/nudel) can read ENSDF data already, but there would need to be some transcription to a database structure (possibly hdf5?) to use this within the program. I see that right now all the data is set / hard coded in library files, but it might be nice to have a database that can be updated from new evaluations.
  • Add functionalities to traverse the decay chain for the purposes of plotting the chart of nuclides as well as derive complete or truncated decay/depletion chains for the purposes of supporting generalized nuclear analyses.
  • Adding unit testing to the nuclear data library so that users can be confident that the implementation is well tested and verified.

I'd love to set up some discussions if you are interested and see if there is a way that we could develop requirements, documentation, and further testing! Please let me know 🙂

@jakehader
Copy link
Author

Also, I'd like to know if you are stuck on using the GPL license rather than a MIT license for the open source software. Many folks who use our reactor modeling framework develop proprietary code and we are of course concerned with stipulations in licensing space for requiring the release / open sourcing of code that uses a library like this.

@JASory
Copy link
Owner

JASory commented Jun 23, 2022

I can easily implement the majority of ARMI's proposed specification that doesn't already exist in this library.

The only difficulty would be establishing a structure that reads from files. There are several approaches to this.

  1. Use the existing Nuclide/Isomer structure and pass an argument into methods that direct which file to read. E.g u235.am_from_file("u235.dat").unwrap()
  2. Rewrite Nuclide to pull all this data upon creation into the structure. I'm fairly strongly biased against this approach as I designed the Nuclide structure to hold as little data as possible (only one 64-bit word) and point to data as needed that can be cloned in-place. (Which is also why I weirdly have a different structure for Isomers, since they require more data and complexity)
  3. Create a new structure "ATOM" that works like no. 2, and refers to the default hardcoded data that Nuclide has if the user has no valid files.

@jakehader
Copy link
Author

Hi @JASory - I appreciate your response! I am learning Rust, so I wanted to use this as an opportunity to start to contribute to a project that we could also get some good use from. I'll digest your comments and try to propose some next steps where I could help/work with you on.

Thanks for checking out the proposed specification on the ARMI repository. We will tidy that up and make sure our requirements and proposed test cases are clearly defined too.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants