View on GitHub

SAPPHIRE

Sapphire is a statistical nuclear reaction and decay code

Sapphire - A statistical nuclear reaction and decay code

Codacy Badge License: GPL v3 Build Status codecov

Contents

  1. General Information:
    1. Sapphire
    2. Former Contributors:
    3. License
  2. Compilation & Execution:
    1. Requirements
    2. Build
    3. Run
  3. Modules:
    1. reaction
    2. decayer
    3. random
    4. gsf
    5. nld
    6. compound
    7. old
    8. template
    9. help
  4. References:
    1. Documentation
    2. About Sapphire
    3. Using Sapphire
  5. Input file description

1. General Information

1.1. Sapphire

1.2. Former Contributors

1.3. License

Sapphire is currently published under the GNU General Public License.

2. Compilation & Execution

2.1. Requirements

Compiling Sapphire requires

Check the find_packages in cmake/Modules whether cmake is looking for these packages in the right place if cmake cannot find them.

For an automatic generation of documentation files, one needs doxygen installed on the system. If its not installed, documentation is not automatically generated.

2.2. Build

2.2.1. Automatically

A simple bash script has been written, does the steps below automatically for you. Since it uses relative paths you need to be in your Sapphire main directory and then simply execute:

bash build.sh

To delete the directories which have been created during the build process, simply run the following command in your Sapphire main directory:

bash clean.sh

2.2.2. Manually

  1. Create a build directory under the main Sapphire directory and change to that directory.
    mkdir build
    cd build
    
  2. Run CMake against the main directory, optionally specifying the desired C++ compiler.
     cmake -DCMAKE_CXX_COMPILER=icpc  -DCMAKE_C_COMPILER=icc 
    
  3. Type make install to build Sapphire. The executable is put in the build directory.
     make install
    

Be aware that Sapphire links the paths to the needed tables at compile time. While the executable can be moved, the main Sapphire directory should stay in place. If moved, the build process should be repeated.

2.3. Run

To check if the code is running, simply type

./sapphire old X+a

or

./sapphire reaction X+a

where X is the target nucleus and a is the projectile. Examples are 25Mg+a or 60Fe+n.


3. Modules

The new version of the Sapphire code is modularized to increase the maintainability and readability of the code basis. At the moment there the modules reaction, decayer, and old available. See below for a more detailed explanation.

3.1. reaction

The reaction module is responsible for the calculation of reaction cross sections and reaction rates.

For quick calculations, one can simply type

./sapphire reaction X+a

where X+a is a reaction string with X the target nucleus and a the projectile. This command starts a default calculation, i.e. all input parameters are set to default.

For a more detailed calculations, one should use the possibility to parse an input file to sapphire by typing

./sapphire reaction inputFile.ini

The file inputFile.ini will be parsed by the Boost.PropertyTree library. The gneral format and keyword descriptions can be found in INPUTFILE.md.

3.2. decayer

Not yet fully implemented.

3.3 random

This module is still in an experimental state. It can be used to create or extend level schemes via randomly drawn levels from a Poission distribution. The mean of the Poisson distributin is calculated from a level density model.

3.4 gsf

This is a small module to print values for the gamma-strength function as they are used in Sapphire. The usage is pretty simple. The user simply has to add an isotope of interest followed by the number of the e1/m1/e2 model.

./sapphire gsf 64Cu 0 0 0

3.5 nld

Similar to the gsf module, the nld module is for testing the input of the nuclear level density quickly. The user simply has to give an isotope of interest and the number of the nldmodel.

./sapphire nld 64Cu 0

3.6 compound

This submodule is to quickly calculate the transmission coefficients and decay widths for compound states. Example usage:

./sapphire compound 49Ca+n 0.001

3.7. old

This module provides the same functionallity as the original Sapphire code. Everything stays the same except the keyword old. Thus instead of running ./sapphire 60Fe+a one needs to run ./sapphire old 60Fe+a.

In future more and more of the features of the original Sapphire code will be reimplemented as modules. This part of the code can still be used but won’t be maintained in future.

3.8. template

This simple module can be used to automatically generate a template for an input file. Simply type sapphire template and the output can be easily converted into an ini-File.

3.9. help

Print the help text for the different modules.


4. References

4.1. Documentation

The documentation of the code can be found in ./docs/html/index.html.

4.2. About Sapphire

If you are using Sapphire you should cite one or more of the references below.

4.3. Using Sapphire

If you are using Sapphire for your research, please send us a reference of your work and we will list it here.