/** If the fluid type is mole-based, it does not do anything. Otherwise, * it converts the mole fraction to the required input. */ double IncompressibleFluid::inputFromMole (double T, double x){ if (this->xid==IFRAC_PURE) { return _HUGE; } else if (this->xid==IFRAC_MOLE) { return x; } else { throw NotImplementedError("Mole composition conversion has not been implemented."); switch (mole2input.type) { case IncompressibleData::INCOMPRESSIBLE_POLYNOMIAL: return poly.evaluate(mole2input.coeffs, T, x, 0, 0, 0.0, 0.0); // TODO: make sure Tbase and xbase are defined in the correct way break; case IncompressibleData::INCOMPRESSIBLE_EXPONENTIAL: return baseExponential(mole2input, x, 0.0); break; case IncompressibleData::INCOMPRESSIBLE_LOGEXPONENTIAL: return baseLogexponential(mole2input, x, 0.0); break; case IncompressibleData::INCOMPRESSIBLE_EXPPOLYNOMIAL: return exp(poly.evaluate(mole2input.coeffs, T, x, 0, 0, 0.0, 0.0)); // TODO: make sure Tbase and xbase are defined in the correct way break; case IncompressibleData::INCOMPRESSIBLE_POLYOFFSET: return basePolyOffset(mole2input, T, x); break; case IncompressibleData::INCOMPRESSIBLE_NOT_SET: throw ValueError(format("%s (%d): The function type is not specified (\"[%d]\"), are you sure the coefficients have been set?",__FILE__,__LINE__,mole2input.type)); break; default: throw ValueError(format("%s (%d): Your function type \"[%d]\" is unknown.",__FILE__,__LINE__,mole2input.type)); break; } return _HUGE; } }
/// Density as a function of temperature, pressure and composition. double IncompressibleFluid::rho (double T, double p, double x){ switch (density.type) { case IncompressibleData::INCOMPRESSIBLE_POLYNOMIAL: return poly.evaluate(density.coeffs, T, x, 0, 0, Tbase, xbase); case IncompressibleData::INCOMPRESSIBLE_EXPONENTIAL: return baseExponential(density, T, 0.0); case IncompressibleData::INCOMPRESSIBLE_LOGEXPONENTIAL: return baseLogexponential(density, T, 0.0); case IncompressibleData::INCOMPRESSIBLE_EXPPOLYNOMIAL: return exp(poly.evaluate(density.coeffs, T, x, 0, 0, Tbase, xbase)); case IncompressibleData::INCOMPRESSIBLE_POLYOFFSET: return basePolyOffset(density, T, x); case IncompressibleData::INCOMPRESSIBLE_NOT_SET: throw ValueError(format("%s (%d): The function type is not specified (\"[%d]\"), are you sure the coefficients have been set?",__FILE__,__LINE__,density.type)); default: throw ValueError(format("%s (%d): Your function type \"[%d]\" is unknown.",__FILE__,__LINE__,density.type)); } }