GeneralMath Class Reference

`#include <GeneralMath.h>`

## Static Public Member Functions

static void CalculateConcentration (const SEScalarMass &mass, const SEScalarVolume &volume, SEScalarMassPerVolume &concentration, Logger *logger=nullptr)
Calculates the concentration of a substance given mass and volume. concentration = mass / volume. More...

static void CalculateMass (const SEScalarVolume &volume, const SEScalarMassPerVolume &concentration, SEScalarMass &mass, Logger *logger=nullptr)
Calculates the mass of a substance given concentration and volume. mass = concentration * volume. More...

static void CalculateHenrysLawConcentration (const SESubstance &substance, const SEScalarPressure &partialPressure, SEScalarMassPerVolume &concentration, Logger *logger=nullptr)
Calculates the mass of a substance given concentration and volume. mass = concentration * volume. More...

static void CalculatePartialPressureInGas (const SEScalar0To1 &volumeFraction, const SEScalarPressure &pressure, SEScalarPressure &partialPressure, Logger *logger=nullptr)
Calculates the partial pressure of a substance in gas based on the volumeFraction * pressure. More...

static void CalculatePartialPressureInLiquid (const SESubstance &substance, const SEScalarMassPerVolume &concentration, SEScalarPressure &partialPressure, Logger *logger=nullptr)
Calculates the partial pressure of a substance in liquid using (density and solubility coefficient) and the concentration. More...

static void CalculateOsmolarity (const SEScalarAmountPerVolume &sodiumMolarity, const SEScalarAmountPerVolume &potassiumMolarity, const SEScalarAmountPerVolume &glucoseMolarity, const SEScalarAmountPerVolume &ureaMolarity, SEScalarOsmolarity &fluidOsmolarity)
[Bhagat1984CalculatedOsmolality] More...

static void CalculateOsmolality (const SEScalarAmountPerVolume &sodiumMolarity, const SEScalarAmountPerVolume &potassiumMolarity, const SEScalarAmountPerVolume &glucoseMolarity, const SEScalarAmountPerVolume &ureaMolarity, const SEScalar &specificGravity, SEScalarOsmolality &fluidOsmolality)
[Bhagat1984CalculatedOsmolality] More...

static void CalculateSpecificGravity (const SEScalarMass &mass, const SEScalarVolume &volume, SEScalar &specificGravity, Logger *logger=nullptr)

static void Combinations (std::vector< int > maxValues, std::vector< std::vector< int >> &permutations)

static double LinearInterpolator (double x1, double x2, double y1, double y2, double xPrime)
Performs linear interpolation between two points. More...

static double PercentDifference (double expected, double calculated)

static double PercentTolerance (double expected, double calculated, double epsilon=1e-20)

static double ResistanceFunction (double dbase, double dmin, double dmax, double dx)
Returns y value for the specified exponential function given a normalized x value (0.0 to 1.0). More...

static double LogisticFunction (double a, double x50, double k, double x)
A logistic function. More...

## ◆ CalculateConcentration()

 void GeneralMath::CalculateConcentration ( const SEScalarMass & mass, const SEScalarVolume & volume, SEScalarMassPerVolume & concentration, Logger * logger = `nullptr` )
static

Calculates the concentration of a substance given mass and volume. concentration = mass / volume.

## ◆ CalculateHenrysLawConcentration()

 void GeneralMath::CalculateHenrysLawConcentration ( const SESubstance & substance, const SEScalarPressure & partialPressure, SEScalarMassPerVolume & concentration, Logger * logger = `nullptr` )
static

Calculates the mass of a substance given concentration and volume. mass = concentration * volume.

## ◆ CalculateMass()

 void GeneralMath::CalculateMass ( const SEScalarVolume & volume, const SEScalarMassPerVolume & concentration, SEScalarMass & mass, Logger * logger = `nullptr` )
static

Calculates the mass of a substance given concentration and volume. mass = concentration * volume.

## ◆ CalculateOsmolality()

 void GeneralMath::CalculateOsmolality ( const SEScalarAmountPerVolume & sodiumMolarity, const SEScalarAmountPerVolume & potassiumMolarity, const SEScalarAmountPerVolume & glucoseMolarity, const SEScalarAmountPerVolume & ureaMolarity, const SEScalar & specificGravity, SEScalarOsmolality & fluidOsmolality )
static

[Bhagat1984CalculatedOsmolality]

## ◆ CalculateOsmolarity()

 void GeneralMath::CalculateOsmolarity ( const SEScalarAmountPerVolume & sodiumMolarity, const SEScalarAmountPerVolume & potassiumMolarity, const SEScalarAmountPerVolume & glucoseMolarity, const SEScalarAmountPerVolume & ureaMolarity, SEScalarOsmolarity & fluidOsmolarity )
static

[Bhagat1984CalculatedOsmolality]

## ◆ CalculatePartialPressureInGas()

 void GeneralMath::CalculatePartialPressureInGas ( const SEScalar0To1 & volumeFraction, const SEScalarPressure & pressure, SEScalarPressure & partialPressure, Logger * logger = `nullptr` )
static

Calculates the partial pressure of a substance in gas based on the volumeFraction * pressure.

## ◆ CalculatePartialPressureInLiquid()

 void GeneralMath::CalculatePartialPressureInLiquid ( const SESubstance & substance, const SEScalarMassPerVolume & concentration, SEScalarPressure & partialPressure, Logger * logger = `nullptr` )
static

Calculates the partial pressure of a substance in liquid using (density and solubility coefficient) and the concentration.

## ◆ CalculateSpecificGravity()

 void GeneralMath::CalculateSpecificGravity ( const SEScalarMass & mass, const SEScalarVolume & volume, SEScalar & specificGravity, Logger * logger = `nullptr` )
static

## ◆ Combinations()

 void GeneralMath::Combinations ( std::vector< int > maxValues, std::vector< std::vector< int >> & permutations )
static

## ◆ LinearInterpolator()

 double GeneralMath::LinearInterpolator ( double x1, double x2, double y1, double y2, double xPrime )
static

Performs linear interpolation between two points.

Parameters
 x1 value 1 on the x axis, must be smaller than x2 x2 value 2 on the x axis, must be larger than x1 y1 the y value corresponding to x1 y2 the y value corresponding to x2 xPrime the interpolation point
Returns
the y value corresponding to xPrime

Linear Interpolator finds the y value at xPrime, as long as xPrime is between x1 and x2. The slope and Y intercept of the line connecting (x1,y1) and (x2,y2) are then found so y = mx + b can be used to find yPrime by inputting xPrime.

## ◆ LogisticFunction()

 double GeneralMath::LogisticFunction ( double a, double x50, double k, double x )
static

A logistic function.

Parameters
 a asymptote x50 x-value at sigmoid midpoint k curve steepness and direction parameter x input value
Returns
y

A logistic function.

## ◆ PercentDifference()

 double GeneralMath::PercentDifference ( double expected, double calculated )
static

## ◆ PercentTolerance()

 double GeneralMath::PercentTolerance ( double expected, double calculated, double epsilon = `1e-20` )
static
Todo:
reevaluate how to handle this - it potentially causes a problem during stabilization

## ◆ ResistanceFunction()

 double GeneralMath::ResistanceFunction ( double dbase, double dmin, double dmax, double dx )
static

Returns y value for the specified exponential function given a normalized x value (0.0 to 1.0).

y = dbase ^ [(Log10(dmin/dmax) * x) + Log10(dmax)]

Parameters
 dbase base value dmin minimum dmax maximum x normalized x, 0.0 to 1.0
Returns
y

Exponential function used to model airflow resistance. Requires a base value for the function, a minimum y value (x = 0), and maximum y value (x = 1). Return the y value that maps to x.

Limitations:

• dmin > 0
• dmax > 0
• 0.0 <= dx <= 1.0

If any of the input variables fall outside the above bounds, the function returns NaN