Skip to content

Latest commit

 

History

History
31 lines (28 loc) · 2.2 KB

File metadata and controls

31 lines (28 loc) · 2.2 KB

Add a new transport code

The following steps are required to add a new transport code to JADE:

  1. Go to src/jade/helper/constants.py and add the new code tag to the the :class:`CODE` enum.
  2. Go to src/jade/config/run_config.py and extend the :class:`Library` class to support the parsing of nuclear data libraries for the new transport code. Then, add that new library class to the :class:`LibraryFactory` in order to link it with the new code tag.
  3. The next step is at src/jade/run/benchmark.py. Here, you need to extend the :class:`SingleRun` and :class:`Input` (src/jade/run/input.py) abstract classes to support the new transport code. Then, add the new classes to the :class:`SingleRunFactory`. Childrens of :class:`SingleRun` only needs to implement a couple of methods to get the executable command for the transport code. Childrens of :class:`Input` needs to implement methods that allow to read an input, modify the number of NPS to be run, translate the input to use a specific nuclear data library and write the input back. This will introduce the necessary logic to generate and execute all JADE supported benchmarks with the exception of the Sphere and SphereSDDR benchmarks. These benchmarks are the only ones that require an ad hoc children of :class:`Input`. For these benchmarks, you will need to connect this additional class directly in the _run_sub_benchmarks() method of the :class:`SphereBenchmarkRun` or :class:`SphereSDDRBenchmarkRun` classes.
  4. Finally, the :class:`AbstractSimOutput` abstract class at src/jade/post/sim_output.py) needs to be extended. This class is responsible for parsing the output files of the transport code simulation and store the results of each single tally in a separate DataFrame of which the columns name are standardized. The list of accepted column names can be found at :ref:`allowed_binnings`. This new class can be connected with its ENUM tag in the __init__() method of the :class:`RawProcessor` class at src/jade/post/raw_processor.py.

Clearly, suitable tests should also be added to ensure the correct functioning of the newly implemented classes.