Skip to content

Commit 006baa4

Browse files
authored
Merge pull request #606 from ie3-institute/to/#601-temperature-dependant-profile
Add temperature dependant load profile
2 parents d07118c + 99f0f8a commit 006baa4

File tree

25 files changed

+391
-247
lines changed

25 files changed

+391
-247
lines changed

CHANGELOG.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
1111
- SQL time series have a different structure than CSV counterparts [#545](https://github.com/ie3-institute/PowerSystemDataModel/issues/545)
1212
- Graph with impedance weighted edges including facilities to create it [#440](https://github.com/ie3-institute/PowerSystemDataModel/issues/440)
1313
- `TimeSeriesTypeSource` providing a source for the mapping of time series uuids to column schemes (previously provided by `TimeSeriesMappingSource`) [#515](https://github.com/ie3-institute/PowerSystemDataModel/issues/515)
14+
- `TemperatureDependantLoadProfile`s for depiction of profile behavior of night storage heating and heat pumps [#601](https://github.com/ie3-institute/PowerSystemDataModel/issues/601)
1415

1516
### Fixed
1617
- Reduced code smells [#492](https://github.com/ie3-institute/PowerSystemDataModel/issues/492)
@@ -48,6 +49,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
4849
- `"datum"` to `"time"`
4950
- Force user to provide time stamp pattern to `CouchbaseWeatherSource` to ensure harmonized querying
5051
- BREAKING: Updating PowerSystemUtils dependency to 2.0-SNAPSHOT [#595](https://github.com/ie3-institute/PowerSystemDataModel/issues/595)
52+
- BREAKING: Generified the `LoadInput` attribute `standardLoadProfile` to `loadProfile` as it should also address the newly added `TemperatureDependantLoadProfile`s [#601](https://github.com/ie3-institute/PowerSystemDataModel/issues/601)
5153

5254
## [2.1.0] - 2022-01-05
5355

docs/readthedocs/models/input/participant/load.rst

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ Attributes, Units and Remarks
2222
+---------------------+---------+--------------------------------------------------------------------------------------+
2323
| qCharacteristics | -- | :ref:`Reactive power characteristic<participant_general_q_characteristic>` to follow |
2424
+---------------------+---------+--------------------------------------------------------------------------------------+
25-
| standardLoadProfile | -- | :ref:`Standard load profile<load_slp>` as model behaviour |
25+
| loadProfile | -- | :ref:`Load profile<load_lp>` as model behaviour |
2626
+---------------------+---------+--------------------------------------------------------------------------------------+
2727
| dsm | -- | Whether the load is able to follow demand side management signals |
2828
+---------------------+---------+--------------------------------------------------------------------------------------+
@@ -38,17 +38,23 @@ Caveats
3838
Nothing - at least not known.
3939
If you found something, please contact us!
4040

41-
.. _load_slp:
41+
.. _load_lp:
4242

43-
Standard Load Profiles
43+
Load Profiles
4444
^^^^^^^^^^^^^^^^^^^^^^
45-
The :code:`StandardLoadProfile` is an interface, that forces it's implementing classes to have a :code:`String` *key*
46-
and being able to parse a :code:`String` to an :code:`StandardLoadProfile`.
47-
Its only purpose is to give note, which standard load profile has to be used by the simulation.
45+
The :code:`LoadProfile` is an interface, that forces it's implementing classes to have a :code:`String` *key*
46+
and being able to parse a :code:`String` to a :code:`LoadProfile`.
47+
Its only purpose is to give note, which load profile has to be used by the simulation.
4848
The actual profile has to be provided by the simulation itself.
49-
If no matching standard load profile is known, :code:`StandardLoadProfile#NO_STANDARD_LOAD_PROFILE` can be used.
49+
If no matching standard load profile is known, :code:`LoadProfile#NO_LOAD_PROFILE` can be used.
5050

5151
To assist the user in marking the desired load profile, the enum :code:`BdewLoadProfile` provides a collection of
5252
commonly known German standard electricity load profiles, defined by the bdew (Bundesverband der Energie- und
5353
Wasserwirtschaft; engl. Federal Association of the Energy and Water Industry). For more details see
5454
`the corresponding website (German only) <https://www.bdew.de/energie/standardlastprofile-strom/>`_.
55+
56+
Furthermore there are :code:`TemperatureDependantLoadProfiles` which can be used to note usage of load profiles for night heating storages or heat pumps for example.
57+
The profiles rely on the VDN description for interruptable loads.
58+
For more details see `here (German only) <https://www.bdew.de/media/documents/LPuVe-Praxisleitfaden.pdf/>`_.
59+
:code:`NbwTemperatureDependantLoadProfiles` provides sample temperature dependant load profiles that can be used.
60+
The `NbwTemperatureDependantLoadProfiles` consists of load profiles "ep1" for heat pumps and "ez2" for night storage heating.

src/main/java/edu/ie3/datamodel/io/factory/input/participant/LoadInputFactory.java

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
import edu.ie3.datamodel.exceptions.ParsingException;
99
import edu.ie3.datamodel.io.factory.input.NodeAssetInputEntityData;
1010
import edu.ie3.datamodel.models.OperationTime;
11-
import edu.ie3.datamodel.models.StandardLoadProfile;
1211
import edu.ie3.datamodel.models.StandardUnits;
1312
import edu.ie3.datamodel.models.input.NodeInput;
1413
import edu.ie3.datamodel.models.input.OperatorInput;
1514
import edu.ie3.datamodel.models.input.system.LoadInput;
1615
import edu.ie3.datamodel.models.input.system.characteristic.ReactivePowerCharacteristic;
16+
import edu.ie3.datamodel.models.profile.LoadProfile;
1717
import javax.measure.quantity.Energy;
1818
import javax.measure.quantity.Power;
1919
import org.slf4j.Logger;
@@ -24,7 +24,7 @@ public class LoadInputFactory
2424
extends SystemParticipantInputEntityFactory<LoadInput, NodeAssetInputEntityData> {
2525
private static final Logger logger = LoggerFactory.getLogger(LoadInputFactory.class);
2626

27-
private static final String SLP = "standardloadprofile";
27+
private static final String LOAD_PROFILE = "loadprofile";
2828
private static final String DSM = "dsm";
2929
private static final String E_CONS_ANNUAL = "econsannual";
3030
private static final String S_RATED = "srated";
@@ -36,7 +36,7 @@ public LoadInputFactory() {
3636

3737
@Override
3838
protected String[] getAdditionalFields() {
39-
return new String[] {SLP, DSM, E_CONS_ANNUAL, S_RATED, COS_PHI};
39+
return new String[] {LOAD_PROFILE, DSM, E_CONS_ANNUAL, S_RATED, COS_PHI};
4040
}
4141

4242
@Override
@@ -48,15 +48,15 @@ protected LoadInput buildModel(
4848
ReactivePowerCharacteristic qCharacteristics,
4949
OperatorInput operator,
5050
OperationTime operationTime) {
51-
StandardLoadProfile slp;
51+
LoadProfile loadProfile;
5252
try {
53-
slp = StandardLoadProfile.parse(data.getField(SLP));
53+
loadProfile = LoadProfile.parse(data.getField(LOAD_PROFILE));
5454
} catch (ParsingException e) {
5555
logger.warn(
5656
"Cannot parse the standard load profile \"{}\" of load \"{}\". Assign no load profile instead.",
57-
data.getField(SLP),
57+
data.getField(LOAD_PROFILE),
5858
id);
59-
slp = StandardLoadProfile.DefaultLoadProfiles.NO_STANDARD_LOAD_PROFILE;
59+
loadProfile = LoadProfile.DefaultLoadProfiles.NO_LOAD_PROFILE;
6060
}
6161
final boolean dsm = data.getBoolean(DSM);
6262
final ComparableQuantity<Energy> eConsAnnual =
@@ -71,7 +71,7 @@ protected LoadInput buildModel(
7171
operationTime,
7272
node,
7373
qCharacteristics,
74-
slp,
74+
loadProfile,
7575
dsm,
7676
eConsAnnual,
7777
sRated,

src/main/java/edu/ie3/datamodel/io/processor/Processor.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -9,12 +9,12 @@
99
import edu.ie3.datamodel.io.factory.input.NodeInputFactory;
1010
import edu.ie3.datamodel.io.processor.result.ResultEntityProcessor;
1111
import edu.ie3.datamodel.models.OperationTime;
12-
import edu.ie3.datamodel.models.StandardLoadProfile;
1312
import edu.ie3.datamodel.models.StandardUnits;
1413
import edu.ie3.datamodel.models.UniqueEntity;
1514
import edu.ie3.datamodel.models.input.OperatorInput;
1615
import edu.ie3.datamodel.models.input.connector.SwitchInput;
1716
import edu.ie3.datamodel.models.input.system.characteristic.CharacteristicInput;
17+
import edu.ie3.datamodel.models.profile.LoadProfile;
1818
import edu.ie3.datamodel.models.voltagelevels.VoltageLevel;
1919
import java.beans.Introspector;
2020
import java.lang.reflect.InvocationTargetException;
@@ -241,8 +241,7 @@ protected String processMethodResult(Object methodReturnObject, Method method, S
241241
processVoltageLevel((VoltageLevel) methodReturnObject, fieldName));
242242
case "Point", "LineString" -> resultStringBuilder.append(
243243
geoJsonWriter.write((Geometry) methodReturnObject));
244-
case "StandardLoadProfile" -> resultStringBuilder.append(
245-
((StandardLoadProfile) methodReturnObject).getKey());
244+
case "LoadProfile" -> resultStringBuilder.append(((LoadProfile) methodReturnObject).getKey());
246245
case "AssetTypeInput",
247246
"BmTypeInput",
248247
"ChpTypeInput",

src/main/java/edu/ie3/datamodel/models/StandardLoadProfile.java

Lines changed: 0 additions & 54 deletions
This file was deleted.

0 commit comments

Comments
 (0)