JASory / Iridium

Atomic Physics Library
https://rust-cas.org
MIT License
18 stars 5 forks source link

Deriving nuclear data from source data #1

Open jakehader opened 2 years ago

jakehader commented 2 years ago

Hi @JASory, I have been doing some research to find a package that could meet our needs on https://github.com/terrapower/armi/discussions/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:

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 commented 2 years ago

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 commented 2 years ago

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 commented 1 year ago

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.