Skip to content

Commit 3ed1e70

Browse files
authored
Merge pull request #1252 from ie3-institute/df/#679-pThermal-storages
Introduce thermal power for thermal storages
2 parents ca6873e + 44ead93 commit 3ed1e70

File tree

19 files changed

+96
-34
lines changed

19 files changed

+96
-34
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1515
- Enhance `TimeSeriesSource` with method to retrieve the previous value before a given key [#1182](https://github.com/ie3-institute/PowerSystemDataModel/issues/1182)
1616
- Added `BdewLoadProfileTimeSeries` [#1230](https://github.com/ie3-institute/PowerSystemDataModel/issues/1230)
1717
- Added `RandomLoadProfileTimeSeries` [#1232](https://github.com/ie3-institute/PowerSystemDataModel/issues/1232)
18+
- Attribute `pThermalRated` for `ThermalStorage`s [#679](https://github.com/ie3-institute/PowerSystemDataModel/issues/679)
1819

1920
### Fixed
2021
- Removing opened `SwitchInput` during connectivity check [#1221](https://github.com/ie3-institute/PowerSystemDataModel/issues/1221)

docs/readthedocs/models/input/thermal/cylindricalstorage.md

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Cylindrical Thermal Storage
44

5-
Model of a cylindrical thermal storage using a fluent to store thermal energy.
5+
Model of a cylindrical thermal storage using a fluid to store thermal energy.
66

77
## Attributes, Units and Remarks
88

@@ -51,6 +51,10 @@ Model of a cylindrical thermal storage using a fluent to store thermal energy.
5151
* - c
5252
- kWh / (K :math:`\cdot` m³)
5353
- Specific heat capacity of the storage medium
54+
55+
* - pThermalMax
56+
- kW
57+
- Maximum permissible thermal power of the storage
5458
5559
```
5660

docs/readthedocs/models/result/participant/cylindricalstorage.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22

33
# Cylindrical Thermal Storage
44

5-
Result of a cylindrical thermal storage using a fluent to store thermal energy.
5+
Result of a cylindrical thermal storage using a fluid to store thermal energy.
66

77
## Attributes, Units and Remarks
88

docs/uml/main/input/ThermalDatamodelConcept.puml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,7 @@ package models {
118118
- inletTemp: ComparableQuantity<Temperature> [°C]
119119
- returnTemp: ComparableQuantity<Temperature> [°C]
120120
- c: ComparableQuantity<SpecificHeatCapacity> [kWh/(K*m³)]
121+
- pThermalMax: ComparableQuantity<Power> [kW]
121122
}
122123
CylindricalStorageInput --|> ThermalStorageInput
123124
}

src/main/java/edu/ie3/datamodel/io/factory/input/CylindricalStorageInputFactory.java

Lines changed: 16 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
import edu.ie3.datamodel.models.input.thermal.ThermalBusInput;
1313
import edu.ie3.util.quantities.interfaces.SpecificHeatCapacity;
1414
import java.util.UUID;
15+
import javax.measure.quantity.Power;
1516
import javax.measure.quantity.Temperature;
1617
import javax.measure.quantity.Volume;
1718
import tech.units.indriya.ComparableQuantity;
@@ -22,14 +23,15 @@ public class CylindricalStorageInputFactory
2223
private static final String INLET_TEMP = "inletTemp";
2324
private static final String RETURN_TEMP = "returnTemp";
2425
private static final String C = "c";
26+
private static final String P_THERMAL_MAX = "pThermalMax";
2527

2628
public CylindricalStorageInputFactory() {
2729
super(CylindricalStorageInput.class);
2830
}
2931

3032
@Override
3133
protected String[] getAdditionalFields() {
32-
return new String[] {STORAGE_VOLUME_LVL, INLET_TEMP, RETURN_TEMP, C};
34+
return new String[] {STORAGE_VOLUME_LVL, INLET_TEMP, RETURN_TEMP, C, P_THERMAL_MAX};
3335
}
3436

3537
@Override
@@ -48,7 +50,19 @@ protected CylindricalStorageInput buildModel(
4850
data.getQuantity(RETURN_TEMP, StandardUnits.TEMPERATURE);
4951
final ComparableQuantity<SpecificHeatCapacity> c =
5052
data.getQuantity(C, StandardUnits.SPECIFIC_HEAT_CAPACITY);
53+
final ComparableQuantity<Power> pThermalMax =
54+
data.getQuantity(P_THERMAL_MAX, StandardUnits.ACTIVE_POWER_IN);
55+
5156
return new CylindricalStorageInput(
52-
uuid, id, operator, operationTime, bus, storageVolumeLvl, inletTemp, returnTemp, c);
57+
uuid,
58+
id,
59+
operator,
60+
operationTime,
61+
bus,
62+
storageVolumeLvl,
63+
inletTemp,
64+
returnTemp,
65+
c,
66+
pThermalMax);
5367
}
5468
}

src/main/java/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInput.java

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
import edu.ie3.util.quantities.interfaces.SpecificHeatCapacity;
1212
import java.util.Objects;
1313
import java.util.UUID;
14+
import javax.measure.quantity.Power;
1415
import javax.measure.quantity.Temperature;
1516
import javax.measure.quantity.Volume;
1617
import tech.units.indriya.ComparableQuantity;
@@ -25,6 +26,8 @@ public class CylindricalStorageInput extends ThermalStorageInput {
2526
private final ComparableQuantity<Temperature> returnTemp;
2627
/** Specific heat capacity of the storage medium (typically in kWh/K*m³) */
2728
private final ComparableQuantity<SpecificHeatCapacity> c;
29+
/** Maximum permissible thermal power (typically in kW) */
30+
private final ComparableQuantity<Power> pThermalMax;
2831

2932
/**
3033
* @param uuid Unique identifier of a cylindrical storage
@@ -36,6 +39,7 @@ public class CylindricalStorageInput extends ThermalStorageInput {
3639
* @param inletTemp Temperature of the inlet
3740
* @param returnTemp Temperature of the outlet
3841
* @param c Specific heat capacity of the storage medium
42+
* @param pThermalMax Maximum thermal power of the storage
3943
*/
4044
public CylindricalStorageInput(
4145
UUID uuid,
@@ -46,12 +50,14 @@ public CylindricalStorageInput(
4650
ComparableQuantity<Volume> storageVolumeLvl,
4751
ComparableQuantity<Temperature> inletTemp,
4852
ComparableQuantity<Temperature> returnTemp,
49-
ComparableQuantity<SpecificHeatCapacity> c) {
53+
ComparableQuantity<SpecificHeatCapacity> c,
54+
ComparableQuantity<Power> pThermalMax) {
5055
super(uuid, id, operator, operationTime, bus);
5156
this.storageVolumeLvl = storageVolumeLvl.to(StandardUnits.VOLUME);
5257
this.inletTemp = inletTemp.to(StandardUnits.TEMPERATURE);
5358
this.returnTemp = returnTemp.to(StandardUnits.TEMPERATURE);
5459
this.c = c.to(StandardUnits.SPECIFIC_HEAT_CAPACITY);
60+
this.pThermalMax = pThermalMax.to(StandardUnits.ACTIVE_POWER_IN);
5561
}
5662

5763
/**
@@ -62,6 +68,7 @@ public CylindricalStorageInput(
6268
* @param inletTemp Temperature of the inlet
6369
* @param returnTemp Temperature of the outlet
6470
* @param c Specific heat capacity of the storage medium
71+
* @param pThermalMax Maximum thermal power of the storage
6572
*/
6673
public CylindricalStorageInput(
6774
UUID uuid,
@@ -70,12 +77,14 @@ public CylindricalStorageInput(
7077
ComparableQuantity<Volume> storageVolumeLvl,
7178
ComparableQuantity<Temperature> inletTemp,
7279
ComparableQuantity<Temperature> returnTemp,
73-
ComparableQuantity<SpecificHeatCapacity> c) {
80+
ComparableQuantity<SpecificHeatCapacity> c,
81+
ComparableQuantity<Power> pThermalMax) {
7482
super(uuid, id, bus);
7583
this.storageVolumeLvl = storageVolumeLvl.to(StandardUnits.VOLUME);
7684
this.inletTemp = inletTemp.to(StandardUnits.TEMPERATURE);
7785
this.returnTemp = returnTemp.to(StandardUnits.TEMPERATURE);
7886
this.c = c.to(StandardUnits.SPECIFIC_HEAT_CAPACITY);
87+
this.pThermalMax = pThermalMax.to(StandardUnits.ACTIVE_POWER_IN);
7988
}
8089

8190
public ComparableQuantity<Volume> getStorageVolumeLvl() {
@@ -94,6 +103,10 @@ public ComparableQuantity<SpecificHeatCapacity> getC() {
94103
return c;
95104
}
96105

106+
public ComparableQuantity<Power> getpThermalMax() {
107+
return pThermalMax;
108+
}
109+
97110
@Override
98111
public CylindricalStorageInputCopyBuilder copy() {
99112
return new CylindricalStorageInputCopyBuilder(this);
@@ -107,12 +120,13 @@ public boolean equals(Object o) {
107120
return storageVolumeLvl.equals(that.storageVolumeLvl)
108121
&& inletTemp.equals(that.inletTemp)
109122
&& returnTemp.equals(that.returnTemp)
110-
&& c.equals(that.c);
123+
&& c.equals(that.c)
124+
&& pThermalMax.equals(that.getpThermalMax());
111125
}
112126

113127
@Override
114128
public int hashCode() {
115-
return Objects.hash(super.hashCode(), storageVolumeLvl, inletTemp, returnTemp, c);
129+
return Objects.hash(super.hashCode(), storageVolumeLvl, inletTemp, returnTemp, c, pThermalMax);
116130
}
117131

118132
@Override
@@ -136,6 +150,8 @@ public String toString() {
136150
+ returnTemp
137151
+ ", c="
138152
+ c
153+
+ ", pThermalMax="
154+
+ pThermalMax
139155
+ '}';
140156
}
141157

@@ -151,13 +167,15 @@ public static class CylindricalStorageInputCopyBuilder
151167
private ComparableQuantity<Temperature> inletTemp;
152168
private ComparableQuantity<Temperature> returnTemp;
153169
private ComparableQuantity<SpecificHeatCapacity> c;
170+
private ComparableQuantity<Power> pThermalMax;
154171

155172
private CylindricalStorageInputCopyBuilder(CylindricalStorageInput entity) {
156173
super(entity);
157174
this.storageVolumeLvl = entity.getStorageVolumeLvl();
158175
this.inletTemp = entity.getInletTemp();
159176
this.returnTemp = entity.getReturnTemp();
160177
this.c = entity.getC();
178+
this.pThermalMax = entity.getpThermalMax();
161179
}
162180

163181
public CylindricalStorageInputCopyBuilder storageVolumeLvl(
@@ -182,9 +200,15 @@ public CylindricalStorageInputCopyBuilder c(ComparableQuantity<SpecificHeatCapac
182200
return this;
183201
}
184202

203+
public CylindricalStorageInputCopyBuilder pThermalMax(ComparableQuantity<Power> pThermalMax) {
204+
this.pThermalMax = pThermalMax;
205+
return this;
206+
}
207+
185208
@Override
186209
public CylindricalStorageInputCopyBuilder scale(Double factor) {
187210
storageVolumeLvl(storageVolumeLvl.multiply(factor));
211+
pThermalMax(pThermalMax.multiply(factor));
188212
return this;
189213
}
190214

@@ -199,7 +223,8 @@ public CylindricalStorageInput build() {
199223
storageVolumeLvl,
200224
inletTemp,
201225
returnTemp,
202-
c);
226+
c,
227+
pThermalMax);
203228
}
204229

205230
@Override

src/main/java/edu/ie3/datamodel/utils/validation/ThermalValidationUtils.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,9 @@ private static List<Try<Void, InvalidEntityException>> checkCylindricalStorage(
254254
() ->
255255
detectZeroOrNegativeQuantities(
256256
new Quantity<?>[] {
257-
cylindricalStorageInput.getStorageVolumeLvl(), cylindricalStorageInput.getC()
257+
cylindricalStorageInput.getStorageVolumeLvl(),
258+
cylindricalStorageInput.getC(),
259+
cylindricalStorageInput.getpThermalMax()
258260
},
259261
cylindricalStorageInput),
260262
InvalidEntityException.class));

src/test/groovy/edu/ie3/datamodel/io/extractor/ExtractorTest.groovy

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -134,10 +134,10 @@ class ExtractorTest extends Specification {
134134
tutd.thermalBus.operator
135135
]
136136

137-
tutd.cylindricStorageInput || [
138-
tutd.cylindricStorageInput.operator,
139-
tutd.cylindricStorageInput.thermalBus,
140-
tutd.cylindricStorageInput.thermalBus.operator
137+
tutd.cylindricalStorageInput || [
138+
tutd.cylindricalStorageInput.operator,
139+
tutd.cylindricalStorageInput.thermalBus,
140+
tutd.cylindricalStorageInput.thermalBus.operator
141141
]
142142

143143
tutd.thermalHouseInput || [

src/test/groovy/edu/ie3/datamodel/io/factory/input/CylindricalStorageInputFactoryTest.groovy

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,8 @@ class CylindricalStorageInputFactoryTest extends Specification implements Facto
3434
"storagevolumelvl" : "3",
3535
"inlettemp" : "4",
3636
"returntemp" : "5",
37-
"c" : "6"
37+
"c" : "6",
38+
"pThermalMax" : "7"
3839
]
3940
def inputClass = CylindricalStorageInput
4041
def thermalBusInput = Mock(ThermalBusInput)
@@ -55,6 +56,7 @@ class CylindricalStorageInputFactoryTest extends Specification implements Facto
5556
assert inletTemp == getQuant(parameter["inlettemp"], StandardUnits.TEMPERATURE)
5657
assert returnTemp == getQuant(parameter["returntemp"], StandardUnits.TEMPERATURE)
5758
assert c == getQuant(parameter["c"], StandardUnits.SPECIFIC_HEAT_CAPACITY)
59+
assert pThermalMax == getQuant(parameter["pThermalMax"], StandardUnits.ACTIVE_POWER_IN)
5860
}
5961
}
6062
}

src/test/groovy/edu/ie3/datamodel/io/sink/CsvFileSinkTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,7 @@ class CsvFileSinkTest extends Specification implements TimeSeriesTestData {
165165
GridTestData.transformerCtoG,
166166
GridTestData.lineGraphicCtoD,
167167
GridTestData.nodeGraphicC,
168-
ThermalUnitInputTestData.cylindricStorageInput,
168+
ThermalUnitInputTestData.cylindricalStorageInput,
169169
ThermalUnitInputTestData.thermalHouseInput,
170170
SystemParticipantTestData.evcsInput,
171171
SystemParticipantTestData.loadInput,

src/test/groovy/edu/ie3/datamodel/io/sink/SqlSinkTest.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -133,7 +133,7 @@ class SqlSinkTest extends Specification implements TestContainerHelper, TimeSeri
133133
GridTestData.transformerCtoG,
134134
GridTestData.lineGraphicCtoD,
135135
GridTestData.nodeGraphicC,
136-
ThermalUnitInputTestData.cylindricStorageInput,
136+
ThermalUnitInputTestData.cylindricalStorageInput,
137137
ThermalUnitInputTestData.thermalHouseInput,
138138
SystemParticipantTestData.evcsInput,
139139
SystemParticipantTestData.loadInput,

src/test/groovy/edu/ie3/datamodel/io/source/csv/CsvThermalSourceTest.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,7 @@ class CsvThermalSourceTest extends Specification implements CsvTestDataMeta {
6868
inletTemp == sptd.inletTemp
6969
returnTemp == sptd.returnTemp
7070
c == sptd.c
71+
pThermalMax == sptd.pThermalMax
7172
}
7273

7374
//test method when operators and thermal buses are provided as constructor parameters

src/test/groovy/edu/ie3/datamodel/models/input/thermal/CylindricalStorageInputTest.groovy

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class CylindricalStorageInputTest extends Specification {
1313

1414
def "A CylindricalStorageInput copy method should work as expected"() {
1515
given:
16-
def cylindricalStorageInput = ThermalUnitInputTestData.cylindricStorageInput
16+
def cylindricalStorageInput = ThermalUnitInputTestData.cylindricalStorageInput
1717

1818
when:
1919
def alteredUnit = cylindricalStorageInput.copy().storageVolumeLvl(ThermalUnitInputTestData.storageVolumeLvl)
@@ -38,7 +38,7 @@ class CylindricalStorageInputTest extends Specification {
3838

3939
def "Scaling a CylindricalStorageInput via builder should work as expected"() {
4040
given:
41-
def cylindricalStorageInput = ThermalUnitInputTestData.cylindricStorageInput
41+
def cylindricalStorageInput = ThermalUnitInputTestData.cylindricalStorageInput
4242

4343
when:
4444
def alteredUnit = cylindricalStorageInput.copy().scale(2d).build()
@@ -54,6 +54,7 @@ class CylindricalStorageInputTest extends Specification {
5454
assert inletTemp == cylindricalStorageInput.inletTemp
5555
assert returnTemp == cylindricalStorageInput.returnTemp
5656
assert c == cylindricalStorageInput.c
57+
assert pThermalMax == cylindricalStorageInput.pThermalMax * 2d
5758
}
5859
}
5960
}

src/test/groovy/edu/ie3/datamodel/utils/validation/ThermalValidationUtilsTest.groovy

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,15 @@ import edu.ie3.datamodel.utils.Try
1717
import edu.ie3.test.common.SystemParticipantTestData
1818
import edu.ie3.test.common.ThermalUnitInputTestData
1919
import edu.ie3.util.TimeUtil
20+
import edu.ie3.util.quantities.PowerSystemUnits
2021
import edu.ie3.util.quantities.interfaces.HeatCapacity
2122
import edu.ie3.util.quantities.interfaces.SpecificHeatCapacity
2223
import edu.ie3.util.quantities.interfaces.ThermalConductance
2324
import spock.lang.Specification
2425
import tech.units.indriya.ComparableQuantity
2526
import tech.units.indriya.quantity.Quantities
2627

28+
import javax.measure.quantity.Power
2729
import javax.measure.quantity.Temperature
2830
import javax.measure.quantity.Volume
2931

@@ -50,6 +52,7 @@ class ThermalValidationUtilsTest extends Specification {
5052
private static final ComparableQuantity<Temperature> inletTemp = Quantities.getQuantity(100, StandardUnits.TEMPERATURE)
5153
private static final ComparableQuantity<Temperature> returnTemp = Quantities.getQuantity(80, StandardUnits.TEMPERATURE)
5254
private static final ComparableQuantity<SpecificHeatCapacity> c = Quantities.getQuantity(1.05, StandardUnits.SPECIFIC_HEAT_CAPACITY)
55+
private static final ComparableQuantity<Power> pThermalMax = Quantities.getQuantity(10.2, StandardUnits.ACTIVE_POWER_IN)
5356

5457
// Thermal House
5558

@@ -88,7 +91,7 @@ class ThermalValidationUtilsTest extends Specification {
8891

8992
def "Smoke Test: Correct thermal cylindrical storage throws no exception"() {
9093
given:
91-
def cylindricalStorageInput = ThermalUnitInputTestData.cylindricStorageInput
94+
def cylindricalStorageInput = ThermalUnitInputTestData.cylindricalStorageInput
9295

9396
when:
9497
ValidationUtils.check(cylindricalStorageInput)
@@ -108,17 +111,18 @@ class ThermalValidationUtilsTest extends Specification {
108111
ex.message == expectedException.message
109112

110113
where:
111-
invalidCylindricalStorage || expectedSize || expectedException
112-
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, storageVolumeLvl, Quantities.getQuantity(100, StandardUnits.TEMPERATURE), Quantities.getQuantity(200, StandardUnits.TEMPERATURE), c) || 1 || new InvalidEntityException("Inlet temperature of the cylindrical storage cannot be lower or equal than outlet temperature", invalidCylindricalStorage)
113-
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, storageVolumeLvl, Quantities.getQuantity(100, StandardUnits.TEMPERATURE), Quantities.getQuantity(100, StandardUnits.TEMPERATURE), c) || 1 || new InvalidEntityException("Inlet temperature of the cylindrical storage cannot be lower or equal than outlet temperature", invalidCylindricalStorage)
114-
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, Quantities.getQuantity(-100, StandardUnits.VOLUME), inletTemp, returnTemp, Quantities.getQuantity(-1.05, StandardUnits.SPECIFIC_HEAT_CAPACITY)) || 1 || new InvalidEntityException("The following quantities have to be positive: -100 ㎥, -1.05 kWh/K*m³", invalidCylindricalStorage)
114+
invalidCylindricalStorage || expectedSize || expectedException
115+
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, storageVolumeLvl, Quantities.getQuantity(100, StandardUnits.TEMPERATURE), Quantities.getQuantity(200, StandardUnits.TEMPERATURE), c, pThermalMax) || 1 || new InvalidEntityException("Inlet temperature of the cylindrical storage cannot be lower or equal than outlet temperature", invalidCylindricalStorage)
116+
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, storageVolumeLvl, Quantities.getQuantity(100, StandardUnits.TEMPERATURE), Quantities.getQuantity(100, StandardUnits.TEMPERATURE), c, pThermalMax) || 1 || new InvalidEntityException("Inlet temperature of the cylindrical storage cannot be lower or equal than outlet temperature", invalidCylindricalStorage)
117+
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, Quantities.getQuantity(-100, StandardUnits.VOLUME), inletTemp, returnTemp, Quantities.getQuantity(-1.05, StandardUnits.SPECIFIC_HEAT_CAPACITY), pThermalMax) || 1 || new InvalidEntityException("The following quantities have to be positive: -100 ㎥, -1.05 kWh/K*m³", invalidCylindricalStorage)
118+
new CylindricalStorageInput(thermalUnitUuid, id, operator, operationTime, SystemParticipantTestData.thermalBus, Quantities.getQuantity(-100, StandardUnits.VOLUME), inletTemp, returnTemp, Quantities.getQuantity(-1.05, StandardUnits.SPECIFIC_HEAT_CAPACITY), Quantities.getQuantity(-20, PowerSystemUnits.KILOWATT)) || 1 || new InvalidEntityException("The following quantities have to be positive: -100 ㎥, -1.05 kWh/K*m³, -20 kW", invalidCylindricalStorage)
115119
}
116120

117121
def "ThermalUnitValidationUtils.check() works for complete ThermalGrid as well"() {
118122
when:
119123
def thermalBus = ThermalUnitInputTestData.thermalBus
120124
def cylindricalStorageInput = [
121-
ThermalUnitInputTestData.cylindricStorageInput
125+
ThermalUnitInputTestData.cylindricalStorageInput
122126
]
123127

124128

0 commit comments

Comments
 (0)