PARAllel Tracer for Arbitrary X-ray Interaction and Scattering ⚡️
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Type Name Latest commit message Commit time
Failed to load latest commit information.


PARAllel Tracer for Arbitrary X-ray Interaction and Scattering

This is a simulation framework for X-Ray Tracing with libPMacc. The code structure is almost identical to PIConGPU ( so most of the wiki entries apply here too.

The code uses C++11 and CUDA, so you need conforming compilers.


The code can be configured and compiled as it is and will run a basic example. But you mainly want to configure it yourself. This can be done by creating or modifying *.param files. Those are located in include/simulation_defines/param. You could modify those directly but it is better to use the override mechanism provided by the project. This allows you to create a folder where you place the param-files that will be used instead of the original ones:

  • Use one of the examples in the examples folder as a starting point or create a new folder to start from scratch. Create a folder include/simulation_defines/param inside it, and copy the param-files you want to modify from the main repository.
  • Adjust the parameters to your requirements. Everything must be valid C++ but often you only need to change numbers or assignments as documented inside the files.
  • Call ./ <src_dir> <dest_dir> to configure, compile and install your configuration into <dest_dir>. This will also copy all the unchanged simulation_defines files into that folder for later reference
  • Now change into that folder (cd <dest_dir>) and execute PIConGPUs tbg tool (best to have it in your PATH) like tbg -s bash -c submit/0001gpus.cfg -t submit/bash/bash_mpirun.tpl <runOutputDir> to run it. You may also want to adjust the cfg-file to use the correct runtime parameters. Note: You can copy on of the from on of the examples into your example folder and adjust it just like the param-files.

Compile suite

There is an automated compile suite that can be used to compile one or multiple examples. Compiling all examples can help to verify that a change does not break existing code. Please refer to the help text of each individual script (-h or --help) for detailed explanations of the options

  • buildSystem/ Main script for running test cases
    Usage: buildSystem/ -e <src_dir> -o <dest_dir> [other options]
    For running all tests of all examples use for example: TBG_SUBMIT=qsub TBG_TPLFILE=submit/hypnos-hzdr/k20_profile.tpl buildSystem/ -e ./examples -o $HOME/buildTest --all
    Note: You can limit this to to compile-tests only (no runtime tests) with --compile-only. The script requires Python3 and YAML support. Some of the test-cases additionally need HDF5 and NumPy libraries.

  • Configures an example into a build directory
    Usage: ./ <src_dir> <dest_dir>
    You can use -t <num> to use pre-defined cmake flags and/or -c <flag> to define additional ones

  • Executes and also calls make install from withing the build directory
    Usage: Same as