13 #ifndef PRESSURECONVERSION_H
14 #define PRESSURECONVERSION_H
16 #include <Eigen/Dense>
85 throw std::overflow_error(
"Divide by zero exception");
135 const double g{ 9.80665 };
139 const double M{ 0.0289644 };
140 const double r{ 8.31432 };
178 std::cout <<
"Medium Options:\n"
179 <<
"\tg: " <<
g <<
" m/s^2\n"
180 <<
"\tGas Options:\n"
181 <<
"\t P_sl: " <<
P_sl <<
" Pa\n"
182 <<
"\t M: " <<
M <<
" Kg*mol\n"
183 <<
"\t r: " <<
r <<
" Nm/mol*K\n"
184 <<
"\t rOverMg: " <<
rOverMg <<
" Nm s^2 / mol^2 Kg Km\n"
185 <<
"\t ln_Psl: " <<
ln_Psl <<
" log(Pa)\n"
186 <<
"\tLiquid Options:\n"
187 <<
"\t rho: " <<
rho <<
" Pa\n"
Definition: pressure_conversion.h:194
Pressure reference_
reference pressure for h=0
Definition: pressure_conversion.h:242
PressureConversion(Pressure pressure)
Detailed constructor to set also the pressure reference.
Definition: pressure_conversion.h:214
PressureConversion(Pressure pressure, MediumPressureOptions gas_options)
Detailed constructor to set the pressure reference and medium options.
void set_pressure_reference(Pressure pressure)
Setter function to set the reference pressure after construction of object.
double get_height_gas(const Pressure &pressure)
Converts the given pressure measurement to a height based.
Eigen::Matrix< double, 1, 1 > Matrix1d
Definition: pressure_conversion.h:196
double get_height_liquid(const Pressure &pressure)
Converts the given pressure measurement to a height based.
bool reference_is_set_
flag to determine if the reference_ has been set
Definition: pressure_conversion.h:244
PressureConversion()=default
Default constructor for creating a PressureConversion object.
Matrix1d get_height(Pressure pressure)
Converts the given pressure measurement to a height (distance) value.
MediumPressureOptions medium_options_
pressure medium (gas or liquid) options to use
Definition: pressure_conversion.h:243
The MediumPressureOptions struct contains all medium-related (gas, liquid, fluid, etc....
Definition: pressure_conversion.h:99
double rOverMg
(gas) = r/(M*g), for faster calculations
Definition: pressure_conversion.h:146
void set_constants()
Sets a couple of constants for faster calculations.
Definition: pressure_conversion.h:156
const double rho
(liquid) density of the medium [kg/m^3]
Definition: pressure_conversion.h:143
MediumPressureOptions(double P_sl, double M, double r, double g)
Detailted constructor for Pressure::Type::GAS constants.
Definition: pressure_conversion.h:117
double OneOverGRho
(liquid) = 1/(g*rho)
Definition: pressure_conversion.h:151
const double r
(gas) universal gas constant [Nm/mol*K]
Definition: pressure_conversion.h:140
double ln_Psl
(gas) = log(P_sl), log of the pressure at sealevel
Definition: pressure_conversion.h:147
void update_constants(Pressure p0)
Updates the constants related to the reference pressure P_0, where height = 0.
Definition: pressure_conversion.h:168
double ln_P0PslT
(gas) = (log(P_meas) - log(P_sl)) * T_meas
Definition: pressure_conversion.h:148
void PrintGasOptions()
Print a list of all gas options currently set.
Definition: pressure_conversion.h:176
MediumPressureOptions(double rho, double g)
Detailted constructor for Pressure::Type::LIQUID constants.
Definition: pressure_conversion.h:129
MediumPressureOptions()
Default constructor for MediumPressureOptions and sets all constants to default values.
Definition: pressure_conversion.h:103
const double M
(gas) molar mass of dry air [Kg/mol]
Definition: pressure_conversion.h:139
const double g
gravity constant [m/s^2]
Definition: pressure_conversion.h:135
const double P_sl
(gas) pressure at sealevel [Pascal]
Definition: pressure_conversion.h:138
The Pressure struct describes the raw pressure measurement used for conversion later.
Definition: pressure_conversion.h:25
friend std::ostream & operator<<(std::ostream &out, const Type &type)
Type type_
type of the measurement
Definition: pressure_conversion.h:66
double data_
measurement data
Definition: pressure_conversion.h:64
Pressure(double pressure, double temperature, Type type)
Detailed constructor.
Definition: pressure_conversion.h:60
Pressure()=default
Default constructor initializing values to 0, and type to Type::GAS.
friend std::ostream & operator<<(std::ostream &out, const Pressure &pressure)
Type
The Type enum determines the type of pressure measurement used for conversion.
Definition: pressure_conversion.h:30
@ GAS
pressure measruement is in gas medium, e.g., air
@ LIQUID
pressure measurement is in liquid medium, e.g., water
@ HEIGHT
pressure measurement has already been converted to height by sensor
Pressure operator+(const Pressure &pressure)
Definition: pressure_conversion.h:70
void operator/=(const double &n)
Definition: pressure_conversion.h:81
void operator+=(const Pressure &pressure)
Definition: pressure_conversion.h:75
Pressure(double pressure)
Detailed constructor with pressure value.
Definition: pressure_conversion.h:49
double temperature_K_
ambient temperature when measurement data was observed
Definition: pressure_conversion.h:65