/// <summary> /// /// </summary> /// <param name="temperature"></param> /// <param name="pressure"></param> /// <returns>null if out of range</returns> public override PVTEntry GetEntryAtTemperatureAndPressure(double temperature, double pressure) { SteamEquationRegion equationRegion = FindRegion(temperature, pressure); IPVTEntryFactory fac = null; switch (equationRegion) { case SteamEquationRegion.Region1: fac = new Region1Factory(temperature, pressure); break; case SteamEquationRegion.Region2: fac = new Region2Factory(temperature, pressure, CriticalTemperature, CriticalPressure); break; case SteamEquationRegion.Region3: Range tempRange = GetTemperatureRange(pressure); fac = new Region3Factory(temperature, pressure, tempRange); break; case SteamEquationRegion.Region4: fac = new Region4Factory(temperature, pressure); break; case SteamEquationRegion.Region5: fac = new Region5Factory(temperature, pressure, CriticalTemperature, CriticalPressure); break; case SteamEquationRegion.OutOfRange: default: fac = null; break; } return(fac?.BuildThermoEntry()); }
/// <summary> /// /// </summary> /// <param name="satTemp">Must be between 273.15 and CriticalTemperature (in K)</param> /// <param name="phase"></param> /// <returns>null if out of range</returns> public override PVTEntry GetEntryAtSatTemp(double satTemp, SaturationRegion phase) { double?satPressure = GetSatPressure(satTemp); if (satPressure == null) { return(null); } IPVTEntryFactory fac = null; switch (phase) { case SaturationRegion.Liquid: fac = new Region1Factory(satTemp, satPressure.Value); break; case SaturationRegion.Vapor: fac = new Region2Factory(satTemp, satPressure.Value, CriticalTemperature, CriticalPressure); break; case SaturationRegion.Solid: default: fac = null; break; } return(fac?.BuildThermoEntry()); }