61 double casing_pressure_inHg = _pressure_node->getDoubleValue();
62 _casing_pressure_Pa = casing_pressure_inHg * SG_INHG_TO_PA;
63 double casing_temperature_C = _temperature_node->getDoubleValue();
64 double casing_temperature_K = casing_temperature_C + 273.15;
65 _casing_density_kgpm3 = _casing_pressure_Pa / (casing_temperature_K * SG_R_m2_p_s2_p_K);
66 _casing_airmass_kg = _casing_density_kgpm3 *
Vol_casing;
67 _orifice_massflow_kgps = 0.0;
73 if (_serviceable_node->getBoolValue()) {
74 const double pressure_inHg = _pressure_node->getDoubleValue() ;
75 const double pressure_Pa = pressure_inHg * SG_INHG_TO_PA;
80 if (_casing_pressure_Pa < 1e-3) {
81 if (pressure_Pa > 1e3) {
90 double orifice_mach = 0.0;
107 _casing_airmass_kg = _casing_airmass_kg - _orifice_massflow_kgps * dt;
108 double new_density_kgpm3 = _casing_airmass_kg /
Vol_casing;
109 _casing_pressure_Pa = _casing_pressure_Pa * pow(new_density_kgpm3 / _casing_density_kgpm3 , SG_gamma);
110 double casing_temperature_K = _casing_pressure_Pa / (new_density_kgpm3 * SG_R_m2_p_s2_p_K);
112 if( _casing_pressure_Pa - pressure_Pa > 0.0 ) {
118 if( fabs(_casing_pressure_Pa - pressure_Pa) < 0.01 ) {
121 orifice_mach = sqrt(fabs (2.0*SG_cp_m2_p_s2_p_K / (SG_gamma * SG_R_m2_p_s2_p_K) * ( pow(pressure_Pa / _casing_pressure_Pa ,(SG_gamma-1)/SG_gamma ) -1 ) ) );
124 _orifice_massflow_kgps = Fsign * _casing_pressure_Pa / sqrt(casing_temperature_K) * sqrt(SG_gamma/SG_R_m2_p_s2_p_K) * orifice_mach * pow(1+(SG_gamma-1)/2*orifice_mach*orifice_mach,-(SG_gamma+1)/(2*(SG_gamma-1))) *
A_orifice;
126 double vs_fpm = Fsign * sqrt( fabs( pressure_Pa - _casing_pressure_Pa ) ) *
Factor_cal;
127 double vs_kts = vs_fpm / 60 * SG_FPS_TO_KT;
128 double vs_mps = vs_fpm / 60 * SG_FEET_TO_METER;
131 ->setDoubleValue(vs_fpm);
133 ->setDoubleValue(vs_kts);
135 ->setDoubleValue(vs_mps);
137 _casing_density_kgpm3 = new_density_kgpm3;