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...
 

Member Function Documentation

◆ 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
x1value 1 on the x axis, must be smaller than x2
x2value 2 on the x axis, must be larger than x1
y1the y value corresponding to x1
y2the y value corresponding to x2
xPrimethe 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
aasymptote
x50x-value at sigmoid midpoint
kcurve steepness and direction parameter
xinput 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
dbasebase value
dminminimum
dmaxmaximum
xnormalized 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