Repository navigation
Developer notes
-
The module layout is uniform. The active module follows the structure
py_utils/,cpp_utils/,codes/,input/,output/,build/. -
Physics lives in the workbook. Parameters carry a
Symbolkey, a unit and a source citation. The code reads them. It does not hard-code them. - Outputs are immutable and stamped. Runs never overwrite one another.
- New physics is Python-first. See the order of work below.
- Develop the physics in the Python graph walker.
- Pass the conservation gate (see Verification).
- Mirror the physics in the C++ kernels.
- Calibrate.
Adding a host material is a declaration, not a change of the solver.
- Add a folder
materials/<name>/in bothpy_utils/andcpp_utils/. - Declare the populations of the material.
- Add its edge families. Each one belongs to one of the ten edge classes (see Methodology).
- Register a size-resolved rate kernel for every edge, as a precomputed array.
The solver, the preconditioner and the reductions are inherited unchanged. The EUROFER-97 declaration, py_utils/materials/eurofer97/declaration.py, is the worked example.
Issues and pull requests are welcome. A change that touches reaction kernels or stoichiometry should come with the relevant conservation check from codes/Python_Testing/, and with a note of the resulting
The API reference is generated with Doxygen from the folder doxygen/ of the repository. It is not hosted online: build it locally as described below and in the Documentation section of the README.
To build it locally (Doxygen and Graphviz are required):
cd doxygen
doxygen DoxyfileThe pages are written to doxygen/HTML/. Open doxygen/HTML/index.html in a browser.
| Path | Content |
|---|---|
doxygen/Doxyfile |
the Doxygen configuration |
doxygen/dox/mainPage.dox |
the main page |
doxygen/dox/Core/, Materials/, Solver/, IO/, Verification/
|
the pages of each module |
doxygen/dox/external/ |
the pages on SUNDIALS, the container image and the Hoffman2 cluster |
A release and its container image are published by the workflow .github/workflows/release.yml when a tag v* is pushed.
Using the code
The model
Project
Links