GridFire 0.6.0 General Purpose Nuclear Network

Loading...
Searching...
No Matches
Classes | Functions
gridfire::utils Namespace Reference

## Classes
class | Column
class | ColumnBase

## Functions
std::string | formatNuclearTimescaleLogString (const DynamicEngine &engine, const fourdst::composition::Composition &composition, double T9, double rho)
| Formats a map of nuclear species timescales into a human-readable string.
std::string | format_table (const std::string &tableName, const std::vector< std::unique_ptr< ColumnBase > > &columns)

## Function Documentation

## ◆ format_table()

std::string gridfire::utils::format_table | ( | const std::string & | tableName,
|  | const std::vector< std::unique_ptr< ColumnBase > > & | columns )
| inline

## ◆ formatNuclearTimescaleLogString()

std::string gridfire::utils::formatNuclearTimescaleLogString | ( | const DynamicEngine & | engine,
|  | const fourdst::composition::Composition & | composition,
|  | double | T9,
|  | double | rho )

Formats a map of nuclear species timescales into a human-readable string.

This function takes a reaction network engine and the current plasma conditions to calculate the characteristic timescales for each species. It then formats this information into a neatly aligned ASCII table, which is suitable for logging or printing to the console.

Parameters

  engine | A constant reference to a `DynamicEngine` object, used to calculate the species timescales.
  Y | A vector of the molar abundances (mol/g) for each species.
  T9 | The temperature in units of 10^9 K.
  rho | The plasma density in g/cm^3.

Returns
  A std::string containing the formatted table of species and their timescales.

Pre-conditions

- The `engine` must be in a valid state.
- The size of the `Y` vector must be consistent with the number of species expected by the `engine`.

Algorithm

1. Calls the `getSpeciesTimescales` method on the provided `engine` to get the timescale for each species under the given conditions.
2. Determines the maximum length of the species names to dynamically set the width of the "Species" column for proper alignment.
3. Uses a `std::ostringstream` to build the output string.
4. Constructs a header for the table with titles "Species" and "Timescale (s)".
5. Iterates through the map of timescales, adding a row to the table for each species.
6. Timescales are formatted in scientific notation with 3 digits of precision.
7. Special handling is included to print "inf" for infinite timescales.
8. The final string, including header and footer lines, is returned.

Usage

// Assume 'my_engine' is a valid DynamicEngine object and Y, T9, rho are initialized.
std::string log_output = gridfire::utils::formatNuclearTimescaleLogString(my_engine, Y, T9, rho);
std::cout << log_output;
// Example Output:
// == Timescales (s) ==
// Species Timescale (s)
// ==========================
// h1 1.234e+05
// he4 inf
// c12 8.765e-02
// ==========================
gridfire::utils::formatNuclearTimescaleLogString
std::string formatNuclearTimescaleLogString(const DynamicEngine &engine, const fourdst::composition::Composition &composition, double T9, double rho)
Formats a map of nuclear species timescales into a human-readable string.
Definition logging.cpp:12