diff --git a/Psychrometrics_Engine/Compute/DensityWater.cs b/Psychrometrics_Engine/Compute/DensityWater.cs index 43fb3eb..5d52ff4 100644 --- a/Psychrometrics_Engine/Compute/DensityWater.cs +++ b/Psychrometrics_Engine/Compute/DensityWater.cs @@ -29,21 +29,23 @@ using BH.oM.Base.Attributes; using BH.oM.Base; using BH.Engine.Base; +using BH.Engine.Units; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates water density from temperature.")] - [Input("temperature", "temperature (C).")] - [Output("density", "Density (kg/m3).")] + [Input("temperature", "Water Temperature.", typeof(Temperature))] + [Output("density", "Density.", typeof(Density))] [PreviousVersion("6.3", "BH.Engine.Climate.Compute.DensityWater(System.Double)")] public static double DensityWater(double temperature) { - double t = temperature; + double t = Units.Convert.ToDegreeCelsius(temperature); if (t < 0 || t > 150) { - BH.Engine.Base.Compute.RecordError("Temperature must be greater than 0 and less than 150 degC."); + BH.Engine.Base.Compute.RecordError("Water temperature must be greater than 273.15 and less than 423.15 K."); return double.NaN; } else diff --git a/Psychrometrics_Engine/Compute/FromHumidityRatio.cs b/Psychrometrics_Engine/Compute/FromHumidityRatio.cs index b6f1edc..738898b 100644 --- a/Psychrometrics_Engine/Compute/FromHumidityRatio.cs +++ b/Psychrometrics_Engine/Compute/FromHumidityRatio.cs @@ -29,21 +29,23 @@ using BH.oM.Base.Attributes; using BH.oM.Base; using BH.Engine.Base; +using BH.Engine.Units; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates density, enthalpy, dew-point temperature, relative humidity, specific volume and wet-bulb temperature from dry-bulb temperature, pressure and humidity ratio.")] - [Input("dryBulbTemperature", "Dry-bulb temperature (C).")] - [Input("humidityRatio", "Humidity ratio (kg_water/kg_dryair).")] - [Input("pressure", "Air pressure (Pa), defaults to sea level air pressure (101,325 Pa).")] - [MultiOutput(0, "density", "Density (kg/m3).")] - [MultiOutput(1, "enthalpy", "Enthalpy (J/kg).")] - [MultiOutput(2, "dewPoint", "Dew-point temperature (C).")] + [Input("dryBulbTemperature", "Dry-bulb temperature.", typeof(Temperature))] + [Input("humidityRatio", "Humidity ratio (kg_water/kg_dryair).", typeof(Ratio))] + [Input("pressure", "Air pressure, defaults to sea level air pressure (101,325).", typeof(Pressure))] + [MultiOutput(0, "density", "Density.", typeof(Density))] + [MultiOutput(1, "enthalpy", "Enthalpy.", typeof(SpecificEnergy))] + [MultiOutput(2, "dewPoint", "Dew-point temperature.", typeof(Temperature))] [MultiOutput(3, "relativeHumidity", "Relative humidity (%).")] - [MultiOutput(4, "specificVolume", "Specific Volume (m3/kg).")] - [MultiOutput(5, "wetBulbTemperature", "Wet-bulb temperature (C).")] + [MultiOutput(4, "specificVolume", "Specific Volume.", typeof(VolumePerQuantity))] + [MultiOutput(5, "wetBulbTemperature", "Wet-bulb temperature.", typeof(Temperature))] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.DensityHumidityRatio(System.Double, System.Double, System.Double)")] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.EnthalpyHumidityRatio(System.Double, System.Double)")] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.DewPointHumidityRatio(System.Double, System.Double, System.Double)")] @@ -55,6 +57,8 @@ public static Output FromHumidit double humidityRatio, double pressure = 101325) { + dryBulbTemperature = BH.Engine.Units.Convert.ToDegreeCelsius(dryBulbTemperature); + double Density = DensityHumidityRatio(dryBulbTemperature, humidityRatio, pressure); double Enthalpy = EnthalpyHumidityRatio(dryBulbTemperature, humidityRatio); double DewPoint = DewPointHumidityRatio(dryBulbTemperature, humidityRatio, pressure); @@ -62,6 +66,9 @@ public static Output FromHumidit double SpecificVolume = SpecificVolumeHumidityRatio(dryBulbTemperature, humidityRatio, pressure); double WetBulbTemperature = WetBulbHumidityRatio(dryBulbTemperature, humidityRatio, pressure); + DewPoint = BH.Engine.Units.Convert.FromDegreeCelsius(DewPoint); + WetBulbTemperature = BH.Engine.Units.Convert.FromDegreeCelsius(WetBulbTemperature); + return new Output { Item1 = Density, diff --git a/Psychrometrics_Engine/Compute/FromRelativeHumidity.cs b/Psychrometrics_Engine/Compute/FromRelativeHumidity.cs index 4e28d0f..105cc45 100644 --- a/Psychrometrics_Engine/Compute/FromRelativeHumidity.cs +++ b/Psychrometrics_Engine/Compute/FromRelativeHumidity.cs @@ -29,21 +29,23 @@ using BH.oM.Base.Attributes; using BH.oM.Base; using BH.Engine.Base; +using BH.Engine.Units; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates density, enthalpy, dew-point temperature, humidity ratio, specific volume and wet-bulb temperature from dry-bulb temperature, pressure and relative humidity.")] - [Input("dryBulbTemperature", "Dry-bulb temperature (C).")] + [Input("dryBulbTemperature", "Dry-bulb temperature.", typeof(Temperature))] [Input("relativeHumidity", "Relative humidity (%).")] - [Input("pressure", "Air pressure (Pa), defaults to sea level air pressure (101,325 Pa).")] - [MultiOutput(0, "density", "Density (kg/m3).")] - [MultiOutput(1, "enthalpy", "Enthalpy (J/kg).")] - [MultiOutput(2, "dewPoint", "Dew-point temperature (C).")] - [MultiOutput(3, "humidityRatio", "Humidity ratio (kg_water/kg_dryair).")] - [MultiOutput(4, "specificVolume", "Specific Volume (m3/kg).")] - [MultiOutput(5, "wetBulbTemperature", "Wet-bulb temperature (C).")] + [Input("pressure", "Air pressure, defaults to sea level air pressure (101,325).", typeof(Pressure))] + [MultiOutput(0, "density", "Density.", typeof(Density))] + [MultiOutput(1, "enthalpy", "Enthalpy.", typeof(SpecificEnergy))] + [MultiOutput(2, "dewPoint", "Dew-point temperature.", typeof(Temperature))] + [MultiOutput(3, "humidityRatio", "Humidity ratio (kg_water/kg_dryair).", typeof(Ratio))] + [MultiOutput(4, "specificVolume", "Specific Volume.", typeof(VolumePerQuantity))] + [MultiOutput(5, "wetBulbTemperature", "Wet-bulb temperature.", typeof(Temperature))] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.DensityRelativeHumidity(System.Double, System.Double, System.Double)")] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.EnthalpyRelativeHumidity(System.Double, System.Double, System.Double)")] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.DewPointRelativeHumidity(System.Double, System.Double, System.Double)")] @@ -55,6 +57,8 @@ public static Output FromRelativ double relativeHumidity, double pressure = 101325) { + dryBulbTemperature = BH.Engine.Units.Convert.ToDegreeCelsius(dryBulbTemperature); + double Density = DensityRelativeHumidity(dryBulbTemperature, relativeHumidity, pressure); double Enthalpy = EnthalpyRelativeHumidity(dryBulbTemperature, relativeHumidity, pressure); double DewPoint = DewPointRelativeHumidity(dryBulbTemperature, relativeHumidity, pressure); @@ -62,6 +66,9 @@ public static Output FromRelativ double SpecificVolume = SpecificVolumeRelativeHumidity(dryBulbTemperature, relativeHumidity, pressure); double WetBulbTemperature = WetBulbTemperatureRelativeHumidity(dryBulbTemperature, relativeHumidity, pressure); + DewPoint = BH.Engine.Units.Convert.FromDegreeCelsius(DewPoint); + WetBulbTemperature = BH.Engine.Units.Convert.FromDegreeCelsius(WetBulbTemperature); + return new Output { Item1 = Density, diff --git a/Psychrometrics_Engine/Compute/FromWetBulbTemperature.cs b/Psychrometrics_Engine/Compute/FromWetBulbTemperature.cs index 123aff7..009e546 100644 --- a/Psychrometrics_Engine/Compute/FromWetBulbTemperature.cs +++ b/Psychrometrics_Engine/Compute/FromWetBulbTemperature.cs @@ -29,21 +29,23 @@ using BH.oM.Base.Attributes; using BH.oM.Base; using BH.Engine.Base; +using BH.Engine.Units; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates density, enthalpy, dew-point temperature, humidity ratio, relative humidity and specific volume from dry-bulb temperature, pressure and wet-bulb temperature.")] - [Input("dryBulbTemperature", "Dry-bulb temperature (C).")] - [Input("wetBulbTemperature", "Wet-bulb temperature (C).")] - [Input("pressure", "Air pressure (Pa), defaults to sea level air pressure (101,325 Pa).")] - [MultiOutput(0, "density", "Density (kg/m3).")] - [MultiOutput(1, "enthalpy", "Enthalpy (J/kg).")] - [MultiOutput(2, "dewPoint", "Dew-point temperature (C).")] - [MultiOutput(3, "humidityRatio", "Humidity ratio (kg_water/kg_dryair).")] + [Input("dryBulbTemperature", "Dry-bulb temperature.", typeof(Temperature))] + [Input("wetBulbTemperature", "Wet-bulb temperature.", typeof(Temperature))] + [Input("pressure", "Air pressure, defaults to sea level air pressure (101,325).", typeof(Pressure))] + [MultiOutput(0, "density", "Density.", typeof(Density))] + [MultiOutput(1, "enthalpy", "Enthalpy.", typeof(SpecificEnergy))] + [MultiOutput(2, "dewPoint", "Dew-point temperature.", typeof(Temperature))] + [MultiOutput(3, "humidityRatio", "Humidity ratio (kg_water/kg_dryair).", typeof(Ratio))] [MultiOutput(4, "relativeHumidity", "Relative humidity (%).")] - [MultiOutput(5, "specificVolume", "Specific Volume (m3/kg).")] + [MultiOutput(5, "specificVolume", "Specific Volume.", typeof(VolumePerQuantity))] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.DensityWetBulbTemperature(System.Double, System.Double, System.Double)")] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.EnthalpyWetBulbTemperature(System.Double, System.Double, System.Double)")] [PreviousVersion("6.3", "BH.Engine.Psychrometrics.Compute.DewPointWetBulbTemperature(System.Double, System.Double, System.Double)")] @@ -55,6 +57,9 @@ public static Output FromWetBulb double wetBulbTemperature, double pressure = 101325) { + dryBulbTemperature = BH.Engine.Units.Convert.ToDegreeCelsius(dryBulbTemperature); + wetBulbTemperature = BH.Engine.Units.Convert.ToDegreeCelsius(wetBulbTemperature); + double Density = DensityWetBulbTemperature(dryBulbTemperature, wetBulbTemperature, pressure); double Enthalpy = EnthalpyWetBulbTemperature(dryBulbTemperature, wetBulbTemperature, pressure); double DewPoint = DewPointWetBulbTemperature(dryBulbTemperature, wetBulbTemperature, pressure); @@ -62,6 +67,8 @@ public static Output FromWetBulb double RelativeHumidity = RelativeHumidityWetBulbTemperature(dryBulbTemperature, wetBulbTemperature, pressure); double SpecificVolume = SpecificVolumeWetBulbTemperature(dryBulbTemperature, wetBulbTemperature, pressure); + DewPoint = BH.Engine.Units.Convert.FromDegreeCelsius(DewPoint); + return new Output { Item1 = Density, diff --git a/Psychrometrics_Engine/Compute/PartialVapourPressure.cs b/Psychrometrics_Engine/Compute/PartialVapourPressure.cs index da1cfb3..cc23c79 100644 --- a/Psychrometrics_Engine/Compute/PartialVapourPressure.cs +++ b/Psychrometrics_Engine/Compute/PartialVapourPressure.cs @@ -27,18 +27,19 @@ using System.Threading.Tasks; using System.ComponentModel; using BH.oM.Base.Attributes; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { - [Description("Calculates saturation pressure over liquid water for the temperature range -100C to 200C.")] - [Input("dryBulbTemperature", "dry-bulb temperature (C)")] - [Output("saturationPressure", "saturation pressure (Pa)")] + [Description("Calculates saturation pressure over liquid water for the temperature range 173.15K to 473.15K.")] + [Input("dryBulbTemperature", "Dry-bulb temperature.", typeof(Temperature))] + [Output("saturationPressure", "Saturation pressure.", typeof(Pressure))] public static double PartialVapourPressure(double dryBulbTemperature) { PsychroLib.Psychrometrics psy = new PsychroLib.Psychrometrics(PsychroLib.UnitSystem.SI); - return psy.GetSatVapPres(dryBulbTemperature); + return psy.GetSatVapPres(Units.Convert.ToDegreeCelsius(dryBulbTemperature)); } } } diff --git a/Psychrometrics_Engine/Compute/PressureAtAltitude.cs b/Psychrometrics_Engine/Compute/PressureAtAltitude.cs index 38ab297..fd40a7f 100644 --- a/Psychrometrics_Engine/Compute/PressureAtAltitude.cs +++ b/Psychrometrics_Engine/Compute/PressureAtAltitude.cs @@ -27,14 +27,15 @@ using System.Threading.Tasks; using System.ComponentModel; using BH.oM.Base.Attributes; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates atmospheric pressure as a function of altitude.")] - [Input("altitude", "altitude (m)")] - [Output("atmosphericPressure", "atmospheric pressure (Pa)")] + [Input("altitude", "Altitude", typeof(Length))] + [Output("atmosphericPressure", "Atmospheric pressure.", typeof(Pressure))] public static double PressureAtAltitude(double altitude) { PsychroLib.Psychrometrics psy = new PsychroLib.Psychrometrics(PsychroLib.UnitSystem.SI); diff --git a/Psychrometrics_Engine/Compute/SaturatedVapourPressureWater.cs b/Psychrometrics_Engine/Compute/SaturatedVapourPressureWater.cs index d4fd414..66595ba 100644 --- a/Psychrometrics_Engine/Compute/SaturatedVapourPressureWater.cs +++ b/Psychrometrics_Engine/Compute/SaturatedVapourPressureWater.cs @@ -29,26 +29,27 @@ using BH.oM.Base.Attributes; using BH.oM.Base; using BH.Engine.Base; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates water SaturatedVapourPressure from temperature.")] - [Input("temperature", "temperature (degC).")] - [Output("saturatedVapourPressure", "Saturated Vapour Pressure (Pa).")] + [Input("temperature", "Water Temperature.", typeof(Temperature))] + [Output("saturatedVapourPressure", "Saturated Vapour Pressure.", typeof(Pressure))] [PreviousVersion("6.3", "BH.Engine.Climate.Compute.SaturatedVapourPressureWater(System.Double)")] public static double SaturatedVapourPressureWater(double temperature) { BH.Engine.Base.Compute.RecordWarning("This method has not been thoroughly tested. The output may be incorrect. Use at own risk."); - double t = temperature; + double t = Units.Convert.ToDegreeCelsius(temperature); if (t < 0 || t > 150) { - BH.Engine.Base.Compute.RecordError("Temperature must be greater than 0 and less than 150 degC."); + BH.Engine.Base.Compute.RecordError("Water temperature must be greater than 273.15 and less than 423.15 K."); return double.NaN; } - else if (temperature < 21) + else if (Units.Convert.ToDegreeCelsius(temperature) < 21) { return 6.10830198582769e-03 + 3.69554702125838e-04 * t + 2.4671509929139e-05 * Math.Pow(t, 2); } diff --git a/Psychrometrics_Engine/Compute/SpecificHeatCapacityWater.cs b/Psychrometrics_Engine/Compute/SpecificHeatCapacityWater.cs index 2637e57..1ed28c1 100644 --- a/Psychrometrics_Engine/Compute/SpecificHeatCapacityWater.cs +++ b/Psychrometrics_Engine/Compute/SpecificHeatCapacityWater.cs @@ -29,21 +29,23 @@ using BH.oM.Base.Attributes; using BH.oM.Base; using BH.Engine.Base; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { - [Description("Calculates Water SpecificHeatCapacity from temperature.")] - [Input("temperature", "temperature (C).")] + [Description("Calculates Water SpecificHeatCapacity from water temperature.")] + [Input("temperature", "Water Temperature.", typeof(Temperature))] [Output("specificHeatCapacity", "Specific Heat Capacity (kJ/kgK).")] [PreviousVersion("6.3", "BH.Engine.Climate.Compute.SpecificHeatCapacityWater(System.Double)")] public static double SpecificHeatCapacityWater(double temperature) { - double t = temperature; + // add temperature conversion here + double t = Units.Convert.ToDegreeCelsius(temperature); if (t < 0 || t > 150) { - BH.Engine.Base.Compute.RecordError("Temperature must be greater than 0 and less than 150 degC."); + BH.Engine.Base.Compute.RecordError("Water temperature must be greater than 273.15 K and less than 423.15 K."); return double.NaN; } else diff --git a/Psychrometrics_Engine/Compute/TemperatureAtAltitude.cs b/Psychrometrics_Engine/Compute/TemperatureAtAltitude.cs index ca6c582..10782ec 100644 --- a/Psychrometrics_Engine/Compute/TemperatureAtAltitude.cs +++ b/Psychrometrics_Engine/Compute/TemperatureAtAltitude.cs @@ -27,18 +27,20 @@ using System.Threading.Tasks; using System.ComponentModel; using BH.oM.Base.Attributes; +using BH.Engine.Units; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { - [Description("Calculates temperature as a function of altitude.")] - [Input("altitude", "altitude (m)")] - [Output("temperature", "temperature (C)")] + [Description("Calculates air temperature as a function of altitude above sea level.")] + [Input("altitude", "Altitude above sea level.", typeof(Length))] + [Output("air temperature", "Air Temperature.", typeof(Temperature))] public static double TemperatureAtAltitude(double altitude) { PsychroLib.Psychrometrics psy = new PsychroLib.Psychrometrics(PsychroLib.UnitSystem.SI); - return psy.GetStandardAtmTemperature(altitude); + return Units.Convert.FromDegreeCelsius(psy.GetStandardAtmTemperature(altitude)); } } } diff --git a/Psychrometrics_Engine/Compute/TemperatureEnthalpyHumidityRatio.cs b/Psychrometrics_Engine/Compute/TemperatureEnthalpyHumidityRatio.cs index d046f95..77e5de4 100644 --- a/Psychrometrics_Engine/Compute/TemperatureEnthalpyHumidityRatio.cs +++ b/Psychrometrics_Engine/Compute/TemperatureEnthalpyHumidityRatio.cs @@ -27,19 +27,21 @@ using System.Threading.Tasks; using System.ComponentModel; using BH.oM.Base.Attributes; +using BH.Engine.Units; +using BH.oM.Quantities.Attributes; namespace BH.Engine.Psychrometrics { public static partial class Compute { [Description("Calculates temperature as a function of enthalpy.")] - [Input("enthalpy", "enthalpy (J/kg)")] - [Input("humidityRatio", "humidity ratio (g/g)")] - [Output("temperature", "temperature (C)")] + [Input("enthalpy", "Enthalpy.", typeof(SpecificEnergy))] + [Input("humidityRatio", "Humidity ratio (kg_water/kg_dryair).", typeof(Ratio))] + [Output("temperature", "Temperature.", typeof(Temperature))] public static double TemperatureEnthalpyHumidityRatio(double enthalpy, double humidityRatio) { PsychroLib.Psychrometrics psy = new PsychroLib.Psychrometrics(PsychroLib.UnitSystem.SI); - return psy.GetTDryBulbFromEnthalpyAndHumRatio(enthalpy, humidityRatio); + return Units.Convert.FromDegreeCelsius(psy.GetTDryBulbFromEnthalpyAndHumRatio(enthalpy, humidityRatio)); } } } diff --git a/Psychrometrics_Engine/Psychrometrics_Engine.csproj b/Psychrometrics_Engine/Psychrometrics_Engine.csproj index 612dbfc..8377d47 100644 --- a/Psychrometrics_Engine/Psychrometrics_Engine.csproj +++ b/Psychrometrics_Engine/Psychrometrics_Engine.csproj @@ -1,4 +1,4 @@ - + netstandard2.0 @@ -25,6 +25,16 @@ False False + + $(ProgramData)\BHoM\Assemblies\Quantities_oM.dll + False + False + + + $(ProgramData)\BHoM\Assemblies\Units_Engine.dll + False + False + diff --git a/dependencies.txt b/dependencies.txt index 77b41ce..289f313 100644 --- a/dependencies.txt +++ b/dependencies.txt @@ -1,2 +1,3 @@ BHoM/BHoM -BHoM/BHoM_Engine \ No newline at end of file +BHoM/BHoM_Engine +BHoM/Localisation_Toolkit \ No newline at end of file