DualReal SinglePhaseFluidProperties::v_from_p_T(const DualReal & p, const DualReal & T) const { Real rawv = 0; Real rawp = p.value(); Real rawT = T.value(); Real dvdp = 0; Real dvdT = 0; v_from_p_T(rawp, rawT, rawv, dvdp, dvdT); DualReal result = rawv; for (size_t i = 0; i < p.derivatives().size(); i++) result.derivatives()[i] = p.derivatives()[i] * dvdp + T.derivatives()[i] * dvdT; return result; }
DualReal SinglePhaseFluidProperties::T_from_p_h(const DualReal & p, const DualReal & h) const { Real T = 0.0; Real pressure = p.value(); Real enthalpy = h.value(); Real dT_dp = 0.0; Real dT_dh = 0.0; T_from_p_h(pressure, enthalpy, T, dT_dp, dT_dh); DualReal result = T; for (size_t i = 0; i < p.derivatives().size(); ++i) result.derivatives()[i] = p.derivatives()[i] * dT_dp + h.derivatives()[i] * dT_dh; return result; }
DualReal SinglePhaseFluidProperties::e_from_p_T(const DualReal & p, const DualReal & T) const { Real e = 0.0; Real pressure = p.value(); Real temperature = T.value(); Real de_dp = 0.0; Real de_dT = 0.0; e_from_p_T(pressure, temperature, e, de_dp, de_dT); DualReal result = e; for (size_t i = 0; i < p.derivatives().size(); ++i) result.derivatives()[i] = p.derivatives()[i] * de_dp + T.derivatives()[i] * de_dT; return result; }
DualReal SinglePhaseFluidProperties::vaporTemperature(const DualReal & p) const { Real T = 0.0; Real pressure = p.value(); Real dTdp = 0.0; vaporTemperature(pressure, T, dTdp); DualReal result = T; for (std::size_t i = 0; i < p.derivatives().size(); ++i) result.derivatives()[i] = p.derivatives()[i] * dTdp; return result; }
DualReal SinglePhaseFluidProperties::vaporPressure(const DualReal & T) const { Real p = 0.0; Real temperature = T.value(); Real dpdT = 0.0; vaporPressure(temperature, p, dpdT); DualReal result = p; for (std::size_t i = 0; i < T.derivatives().size(); ++i) result.derivatives()[i] = T.derivatives()[i] * dpdT; return result; }