Examples

The example directory of singularity-eos contains several examples of using the code. You can build the examples by setting -DSINGULARITY_BUILD_EXAMPLES=ON at CMake configuration time. For example:

# from singularity-eos repo
mkdir -p builddir && cd builddir
cmake .. -DSINGULARITY_BUILD_EXAMPLES=ON ..
make -j

The available examples are listed below.

Get Sound Speed and Pressure

The examples/get_sound_speed_press.cpp file implements a call go singularity-eos that computes pressure and sound speed from density and energy for an ideal gas equation of state. It demonstrates how to make this call both through individual calls to pressure and bulk modulus, as well as by calling the in-one FillEos API. The former looks something like this:

// Loop through the cells and use the two function calls
for (int i = 0; i < Ncells; ++i) {
  double sie = robust::ratio(uu[i], rho[i]); // convert to specific internal energy
  P[i] = eos.PressureFromDensityInternalEnergy(rho[i], sie, lambda.data());
  double bmod = eos.BulkModulusFromDensityInternalEnergy(rho[i], sie, lambda.data());
  cs[i] = std::sqrt(robust::ratio(bmod, rho[i]));
}

The exact same code is implemented via the python bindings in get_sound_speed_press.py.

Get SESAME State

If you build with both SpinerEOS and EOSPAC backends for tabulated data, you can compare tabulated interpolations by calling the get_sesame_state executable built via the get_sesame_state.cpp example file. You can call it as

get_sesame_state matid sp5_file_name rho T sie

for some SESAME material index matid and some tabulated spiner file sp5_file_name, and a density, temperature and specific internal energy to evaluate at.

The example demonstrates how to call the pressure, energy, and thermodynamic derivatives of a table at that point in phase space.

Plugins

The example directory also contains an example plugin that can be included via the plugin infrastructure, as described in our customization section.