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
Improve the High-Level Introduction to ARMI in the Docs #1666
Comments
Implementation of Plugin SystemThe first important design idea to understand is ARMI it is a framework for nuclear reactor modeling. What this means, is that none of the science or engineering calculations for nuclear reactor modeling actually happen in ARMI. The point of ARMI is to tie together disparate nuclear modeling softwares that already exist. Thus, ARMI must be able to wrap external codes, and orchestrate running them at each time step we want to model. The second design idea is that at each time step, there is an ordered list of conceptual reactor modeling steps to be executed. ARMI calls these steps :py:class:
So, how do we add Interfaces to the simulation? The third major design idea is that developers can create an ARMI :py:class: Lastly, at the highest level of the design, a developer can create an ARMI :py:class: Below is a diagram from an example ARMI Application. Following this design, in the real world you would expect an ARMI Application to be made by various teams of scientists and engineers that define one Plugin and a small number of Interfaces. Then a simulation of the reactor would be carried out over some number of cycles / time nodes, where each of the Interfaces would be run in a specified order at each time node. Figure: An example ARMI Application. If this high-level design seems abstract, that is by design. ARMI is not concerned with implementing scientific codes, or enforcing nuclear modelers do things a certain way. ARMI is a tool that aims to support a wide audience of nuclear reactor modelers. Implementation of Reactor Data ModelIn the previous section, we described how an ARMI Application is put together. But that Application is only useful if it can pass information about the reactor between all the external codes that are being wrapped by each Interface. Thus, an important part of the ARMI design is that is has a robust and detailed software data model to represent the current state of the reactor. This data model can be queried and manipulated by each Interface to get data that is needed to run the external reactor modeling codes. The structure of the ARMI reactor data model is designed to be quite flexible, and heavily modifiable in code. But for the purposes of Natrium, this document will focus on pin-type reactor cores. At the largest scale, the :py:class: Figure: Structure of the ARMI reactor data model. |
Right now, ARMI technically has a high-level introduction in two places:
I also note that there are installation instructions in two places:
I don't love that. But I DO love that we are including our
README
file as the introduction to our docs:armi/doc/index.rst
Line 21 in b9f1f13
Also, I don't super love the order of our docs:
armi/doc/index.rst
Lines 11 to 15 in b9f1f13
The text was updated successfully, but these errors were encountered: