From 46d5fd1f4593a1680537ed8834e5f65c8220281c Mon Sep 17 00:00:00 2001 From: Kai Brassel <mail@khbrassel.de> Date: Wed, 9 Jun 2021 17:07:10 +0200 Subject: [PATCH] Get carbon emission untis right --- README.md | 6 +++--- .../cityunits/model/UrbanSimulationUnits.java | 16 +++++++++------- .../cityunits/tests/QuantityTest.java | 10 ++++++---- 3 files changed, 18 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 84e8393..904e85d 100644 --- a/README.md +++ b/README.md @@ -79,9 +79,9 @@ Some units of special interest for urban simulation introduced with this plug-in | W/m² | [M]/[T]³ Intensity | ppm | one | dB | one -| g CO₂eq | [M] CarbonEmission -| kg CO₂eq | [M] CarbonEmission -| t CO₂eq | [M] CarbonEmission +| gCO₂eq | [M] CarbonEmission +| kgCO₂eq | [M] CarbonEmission +| tonCO₂eq | [M] CarbonEmission | € | [$] | $ | [$] diff --git a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/UrbanSimulationUnits.java b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/UrbanSimulationUnits.java index 85fd364..df6ace8 100644 --- a/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/UrbanSimulationUnits.java +++ b/de.hftstuttgart.cityunits.model/src/de/hftstuttgart/cityunits/model/UrbanSimulationUnits.java @@ -33,9 +33,10 @@ public class UrbanSimulationUnits extends AbstractSystemOfUnits { } public static final Unit<Mass> TON = addUnit(Units.KILOGRAM.multiply(1000)); - public static final Unit<CarbonEmission> GRAM_CO2_EQUIVALENT = Units.GRAM.asType(CarbonEmission.class); - public static final Unit<CarbonEmission> KILOGRAM_CO2_EQUIVALENT = Units.KILOGRAM.asType(CarbonEmission.class); - public static final Unit<CarbonEmission> TON_CO2_EQUIVALENT = TON.asType(CarbonEmission.class); + public static final Unit<CarbonEmission> KILOGRAM_CO2_EQUIVALENT = addUnit( + AlternateUnit.of(Units.KILOGRAM, "kgCO₂eq").asType(CarbonEmission.class)); + public static final Unit<CarbonEmission> GRAM_CO2_EQUIVALENT = addUnit(KILOGRAM_CO2_EQUIVALENT.divide(1000)); + public static final Unit<CarbonEmission> TON_CO2_EQUIVALENT = addUnit(KILOGRAM_CO2_EQUIVALENT.multiply(1000)); public static final Unit<Dimensionless> PARTS_PER_MILLION = addUnit(new TransformedUnit<>(AbstractUnit.ONE, MultiplyConverter.ofRational(BigInteger.ONE, BigInteger.valueOf(1000000)))); @@ -45,16 +46,17 @@ public class UrbanSimulationUnits extends AbstractSystemOfUnits { new AlternateUnit<Intensity>(Units.WATT.divide(Units.SQUARE_METRE), "W/m²")); // To model costs I added monetary units quick and dirty as SI base units. - // According to JavaDoc of AbstractUnit, monetary units should rather be implemented in an extra type hierarchy - // below ComparableUnit. + // According to JavaDoc of AbstractUnit, monetary units should rather be + // implemented in an extra type hierarchy below ComparableUnit. public final static Dimension MONEY_DIMENSION = UnitDimension.parse('M'); public final static Unit<Euro> EURO = new BaseUnit<Euro>("€", MONEY_DIMENSION); public final static Unit<Dollar> DOLLAR = new BaseUnit<Dollar>("$", MONEY_DIMENSION); static { SimpleUnitFormat.getInstance().label(TON, "t"); - SimpleUnitFormat.getInstance().label(KILOGRAM_CO2_EQUIVALENT, "kg CO₂eq"); - SimpleUnitFormat.getInstance().label(TON_CO2_EQUIVALENT, "t CO₂eq"); + SimpleUnitFormat.getInstance().label(KILOGRAM_CO2_EQUIVALENT, "kgCO₂eq"); + SimpleUnitFormat.getInstance().label(GRAM_CO2_EQUIVALENT, "gCO₂eq"); + SimpleUnitFormat.getInstance().label(TON_CO2_EQUIVALENT, "tonCO₂eq"); SimpleUnitFormat.getInstance().label(DECIBEL, "dB"); SimpleUnitFormat.getInstance().label(PARTS_PER_MILLION, "ppm"); SimpleUnitFormat.getInstance().label(EURO, "€"); diff --git a/de.hftstuttgart.cityunits.tests/src/de/hftstuttgart/cityunits/tests/QuantityTest.java b/de.hftstuttgart.cityunits.tests/src/de/hftstuttgart/cityunits/tests/QuantityTest.java index da7d802..2cc46da 100644 --- a/de.hftstuttgart.cityunits.tests/src/de/hftstuttgart/cityunits/tests/QuantityTest.java +++ b/de.hftstuttgart.cityunits.tests/src/de/hftstuttgart/cityunits/tests/QuantityTest.java @@ -18,6 +18,7 @@ import tech.units.indriya.quantity.Quantities; import tech.units.indriya.unit.Units; // Quantities.getQuantity("1.50 €"); does not compile in Maven without cast to String ??? +// mvn install won't run this tests, since tycho (?) handles tests as integration tests, thus, mvn verify is required class QuantityTest { @BeforeAll static void init() { @@ -67,12 +68,13 @@ class QuantityTest { } @Test - void testCO2eq() { - Quantity<CarbonEmission> q = Quantities.getQuantity((String) "5200.7 kg CO₂eq").asType(CarbonEmission.class); + void testCO2eq() { + Quantity<CarbonEmission> q = Quantities.getQuantity((String) "5200.7 kgCO₂eq").asType(CarbonEmission.class); + System.out.println(q); assertEquals("[M]", q.getUnit().getDimension().toString(), "Wrong dimension!"); - assertTrue(q.isEquivalentTo(Quantities.getQuantity((String) "5.2007 t CO₂eq").asType(CarbonEmission.class)), + assertTrue(q.isEquivalentTo(Quantities.getQuantity((String) "5.2007 tonCO₂eq").asType(CarbonEmission.class)), "Wrong conversion from kg of CO₂eq to ton of CO₂eq!"); - assertTrue(q.isEquivalentTo(Quantities.getQuantity((String) "5200700 g CO₂eq").asType(CarbonEmission.class)), + assertTrue(q.isEquivalentTo(Quantities.getQuantity((String) "5200700 gCO₂eq").asType(CarbonEmission.class)), "Wrong conversion from kg of CO₂eq to gram of CO₂eq!"); } -- GitLab