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 CODE enum.

  2. Go to src/jade/config/run_config.py and extend the Library class to support the parsing of nuclear data libraries for the new transport code. Then, add that new library class to the 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 SingleRun and Input (src/jade/run/input.py) abstract classes to support the new transport code. Then, add the new classes to the SingleRunFactory. Childrens of SingleRun only needs to implement a couple of methods to get the executable command for the transport code. Childrens of 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 Input. For these benchmarks, you will need to connect this additional class directly in the _run_sub_benchmarks() method of the SphereBenchmarkRun or SphereSDDRBenchmarkRun classes.

  4. Finally, the 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 Allowed binnings. This new class can be connected with its ENUM tag in the __init__() method of the 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.