Add a new transport code#
The following steps are required to add a new transport code to JADE:
Go to
src/jade/helper/constants.pyand add the new code tag to the theCODEenum.Go to
src/jade/config/run_config.pyand extend theLibraryclass to support the parsing of nuclear data libraries for the new transport code. Then, add that new library class to theLibraryFactoryin order to link it with the new code tag.The next step is at
src/jade/run/benchmark.py. Here, you need to extend theSingleRunandInput(src/jade/run/input.py) abstract classes to support the new transport code. Then, add the new classes to theSingleRunFactory. Childrens ofSingleRunonly needs to implement a couple of methods to get the executable command for the transport code. Childrens ofInputneeds 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 ofInput. For these benchmarks, you will need to connect this additional class directly in the_run_sub_benchmarks()method of theSphereBenchmarkRunorSphereSDDRBenchmarkRunclasses.Finally, the
AbstractSimOutputabstract class atsrc/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 theRawProcessorclass atsrc/jade/post/raw_processor.py.
Clearly, suitable tests should also be added to ensure the correct functioning of the newly implemented classes.