From 39d2a080d4dd9b8ee320b3bf4df801c6ead1278d Mon Sep 17 00:00:00 2001 From: Thomas Date: Wed, 9 Nov 2022 16:36:18 +0100 Subject: [PATCH 1/5] add more quantity conversions --- .../ie3/util/quantities/QuantityUtils.scala | 28 ++++++++++++--- .../util/quantities/QuantityUtilsSpec.scala | 36 +++++++++++++++++++ 2 files changed, 59 insertions(+), 5 deletions(-) diff --git a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala index f52716c2..b6ae4d06 100644 --- a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala +++ b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala @@ -39,7 +39,9 @@ import javax.measure.quantity.{ Energy, Length, Power, - Time + Temperature, + Time, + Volume } import scala.math.BigDecimal.RoundingMode import scala.math.BigDecimal.RoundingMode.RoundingMode @@ -211,19 +213,35 @@ object QuantityUtils { def asMicroFarradPerKilometre: ComparableQuantity[SpecificCapacitance] = as(MICROFARAD_PER_KILOMETRE) - def asKiloWattHourPerKelvin: ComparableQuantity[HeatCapacity] = - as(KILOWATTHOUR_PER_KELVIN) - def asKiloWattHourPerKelvinTimesCubicMetre : ComparableQuantity[SpecificHeatCapacity] = as(KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE) - /* ==== Thermal Conductance ==== */ + /* ==== Thermal ==== */ + + def asDegreeKelvin: ComparableQuantity[Temperature] = as( + KELVIN + ) + + def asDegreeCelsius: ComparableQuantity[Temperature] = as( + CELSIUS + ) def asKiloWattPerKelvin: ComparableQuantity[ThermalConductance] = as( KILOWATT_PER_KELVIN ) + def asKiloWattHourPerKelvin: ComparableQuantity[HeatCapacity] = + as(KILOWATTHOUR_PER_KELVIN) + + /* ==== Volume ==== */ + + def asCubicMetre: ComparableQuantity[Volume] = + as(CUBIC_METRE) + + def asLitre: ComparableQuantity[Volume] = + as(LITRE) + /** Create a quantity from the double with given unit * @param unit * the unit to create the quantity with diff --git a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala index 08aea295..f8766d92 100644 --- a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala +++ b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala @@ -396,6 +396,42 @@ class QuantityUtilsSpec ) } + "convert a double to a degree kelvin quantity" in { + value.asDegreeKelvin should equalWithTolerance( + Quantities.getQuantity( + value, + KELVIN + ) + ) + } + + "convert a double to a degree celsius quantity" in { + value.asDegreeCelsius should equalWithTolerance( + Quantities.getQuantity( + value, + CELSIUS + ) + ) + } + + "convert a double to a cubic metre quantity" in { + value.asCubicMetre should equalWithTolerance( + Quantities.getQuantity( + value, + CUBIC_METRE + ) + ) + } + + "convert a double to a litre quantity" in { + value.asLitre should equalWithTolerance( + Quantities.getQuantity( + value, + LITRE + ) + ) + } + /* ==== Thermal Conductance ==== */ "convert a double to a kilowatt per kelvin quantity" in { From e07620de90c03d4f84ee73e6e39a0e88e2f0d89b Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 10 Nov 2022 15:22:28 +0100 Subject: [PATCH 2/5] address reviewers comments --- CHANGELOG.md | 2 +- .../ie3/util/quantities/QuantityUtils.scala | 2 +- .../util/quantities/QuantityUtilsSpec.scala | 34 ++++++++++--------- 3 files changed, 20 insertions(+), 18 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e53329f6..2891f340 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Added implicit classes for `loactiontec.jts` Geometries that represent geographical geometries with functionality before located in `GeoUtils` [#163](https://github.com/ie3-institute/PowerSystemUtils/issues/163) - `OsmEntity` and `OsmContainer` to provide a simple, lightweight representation of openstreetmap data - QuantityUtils previously implemented in SIMONA [#288](https://github.com/ie3-institute/PowerSystemUtils/issues/288) -- Enhanced `RichQuantityDouble` with new units and generic method [#312](https://github.com/ie3-institute/PowerSystemUtils/issues/312) +- Enhanced `RichQuantityDouble` with new units and generic method [#312](https://github.com/ie3-institute/PowerSystemUtils/issues/312), [#322](https://github.com/ie3-institute/PowerSystemUtils/issues/322) ### Changed - Refactored `GeoUtils`, moved them to the scala package and tailored them toward the `loactiontec.jts` Geometries used in the `OsmContainer` [#163](https://github.com/ie3-institute/PowerSystemUtils/issues/163) diff --git a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala index b6ae4d06..634f8be1 100644 --- a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala +++ b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala @@ -219,7 +219,7 @@ object QuantityUtils { /* ==== Thermal ==== */ - def asDegreeKelvin: ComparableQuantity[Temperature] = as( + def asKelvin: ComparableQuantity[Temperature] = as( KELVIN ) diff --git a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala index f8766d92..5844403c 100644 --- a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala +++ b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala @@ -381,12 +381,6 @@ class QuantityUtilsSpec ) } - "convert a double to a kilowatthour per kelvin quantity" in { - value.asKiloWattHourPerKelvin should equalWithTolerance( - Quantities.getQuantity(value, KILOWATTHOUR_PER_KELVIN) - ) - } - "convert a double to a kilowatthour per kelvin times cubic metre quantity" in { value.asKiloWattHourPerKelvinTimesCubicMetre should equalWithTolerance( Quantities.getQuantity( @@ -396,8 +390,10 @@ class QuantityUtilsSpec ) } - "convert a double to a degree kelvin quantity" in { - value.asDegreeKelvin should equalWithTolerance( + /* ==== Thermal ==== */ + + "convert a double to kelvin quantity" in { + value.asKelvin should equalWithTolerance( Quantities.getQuantity( value, KELVIN @@ -414,6 +410,20 @@ class QuantityUtilsSpec ) } + "convert a double to a kilowatt per kelvin quantity" in { + value.asKiloWattPerKelvin should equalWithTolerance( + Quantities.getQuantity(value, KILOWATT_PER_KELVIN) + ) + } + + "convert a double to a kilowatthour per kelvin quantity" in { + value.asKiloWattHourPerKelvin should equalWithTolerance( + Quantities.getQuantity(value, KILOWATTHOUR_PER_KELVIN) + ) + } + + /* ==== Volume ==== */ + "convert a double to a cubic metre quantity" in { value.asCubicMetre should equalWithTolerance( Quantities.getQuantity( @@ -431,14 +441,6 @@ class QuantityUtilsSpec ) ) } - - /* ==== Thermal Conductance ==== */ - - "convert a double to a kilowatt per kelvin quantity" in { - value.asKiloWattPerKelvin should equalWithTolerance( - Quantities.getQuantity(value, KILOWATT_PER_KELVIN) - ) - } } "extend the quantity functionality" should { From 7248c2545b1a56c61064f2c6f1985448537d886e Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 10 Nov 2022 16:30:00 +0100 Subject: [PATCH 3/5] move quantity conversion to correct category --- .../edu/ie3/util/quantities/QuantityUtils.scala | 8 ++++---- .../ie3/util/quantities/QuantityUtilsSpec.scala | 17 +++++++++-------- 2 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala index 634f8be1..bb10dcfe 100644 --- a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala +++ b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala @@ -213,10 +213,6 @@ object QuantityUtils { def asMicroFarradPerKilometre: ComparableQuantity[SpecificCapacitance] = as(MICROFARAD_PER_KILOMETRE) - def asKiloWattHourPerKelvinTimesCubicMetre - : ComparableQuantity[SpecificHeatCapacity] = - as(KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE) - /* ==== Thermal ==== */ def asKelvin: ComparableQuantity[Temperature] = as( @@ -234,6 +230,10 @@ object QuantityUtils { def asKiloWattHourPerKelvin: ComparableQuantity[HeatCapacity] = as(KILOWATTHOUR_PER_KELVIN) + def asKiloWattHourPerKelvinTimesCubicMetre + : ComparableQuantity[SpecificHeatCapacity] = + as(KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE) + /* ==== Volume ==== */ def asCubicMetre: ComparableQuantity[Volume] = diff --git a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala index 5844403c..9546f475 100644 --- a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala +++ b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala @@ -381,14 +381,6 @@ class QuantityUtilsSpec ) } - "convert a double to a kilowatthour per kelvin times cubic metre quantity" in { - value.asKiloWattHourPerKelvinTimesCubicMetre should equalWithTolerance( - Quantities.getQuantity( - value, - KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE - ) - ) - } /* ==== Thermal ==== */ @@ -422,6 +414,15 @@ class QuantityUtilsSpec ) } + "convert a double to a kilowatthour per kelvin times cubic metre quantity" in { + value.asKiloWattHourPerKelvinTimesCubicMetre should equalWithTolerance( + Quantities.getQuantity( + value, + KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE + ) + ) + } + /* ==== Volume ==== */ "convert a double to a cubic metre quantity" in { From d15eb1d616676f0c732e0b470f0e3a54d0871117 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 10 Nov 2022 16:30:52 +0100 Subject: [PATCH 4/5] fmt --- src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala | 3 +-- src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala | 1 - 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala index bb10dcfe..0778e824 100644 --- a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala +++ b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala @@ -230,8 +230,7 @@ object QuantityUtils { def asKiloWattHourPerKelvin: ComparableQuantity[HeatCapacity] = as(KILOWATTHOUR_PER_KELVIN) - def asKiloWattHourPerKelvinTimesCubicMetre - : ComparableQuantity[SpecificHeatCapacity] = + def asKiloWattHourPerKelvinTimesCubicMetre: ComparableQuantity[SpecificHeatCapacity] = as(KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE) /* ==== Volume ==== */ diff --git a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala index 9546f475..cd918028 100644 --- a/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala +++ b/src/test/scala/edu/ie3/util/quantities/QuantityUtilsSpec.scala @@ -381,7 +381,6 @@ class QuantityUtilsSpec ) } - /* ==== Thermal ==== */ "convert a double to kelvin quantity" in { From ced296e5469b9462ff4513ff3ff1c16c5aa27e90 Mon Sep 17 00:00:00 2001 From: Thomas Date: Thu, 10 Nov 2022 16:31:14 +0100 Subject: [PATCH 5/5] reverse fmt --- src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala index 0778e824..9144a292 100644 --- a/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala +++ b/src/main/scala/edu/ie3/util/quantities/QuantityUtils.scala @@ -230,7 +230,8 @@ object QuantityUtils { def asKiloWattHourPerKelvin: ComparableQuantity[HeatCapacity] = as(KILOWATTHOUR_PER_KELVIN) - def asKiloWattHourPerKelvinTimesCubicMetre: ComparableQuantity[SpecificHeatCapacity] = + def asKiloWattHourPerKelvinTimesCubicMetre + : ComparableQuantity[SpecificHeatCapacity] = as(KILOWATTHOUR_PER_KELVIN_TIMES_CUBICMETRE) /* ==== Volume ==== */