From a7f0e3a536518abca400bb14e59759f35e3a46ef Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Thu, 4 Apr 2024 13:09:44 +0200 Subject: [PATCH 1/2] Making passing of `RefSystem` via config optional. --- CHANGELOG.md | 1 + docs/readthedocs/config.md | 22 ++- docs/readthedocs/models/reference_system.md | 56 +++++-- input/samples/vn_simona/vn_simona.conf | 8 +- .../ie3/simona/config/RefSystemParser.scala | 138 +++++++++++------- .../edu/ie3/simona/config/VoltLvlParser.scala | 1 - .../simona/config/RefSystemParserSpec.scala | 69 ++++++--- 7 files changed, 199 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 33813e38c3..d9119d33d9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -46,6 +46,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 - Converting `SimonaSim` to pekko typed/terminating SimonSim when initialization fails [#210](https://github.com/ie3-institute/simona/issues/210) - Converting the `GridAgent` and the `DBFSAlgorithm` to `pekko typed` [#666](https://github.com/ie3-institute/simona/issues/666) - Validation of grid will throw exception instead of just logging errors [#463](https://github.com/ie3-institute/simona/issues/463) +- Making configuration of `RefSystem` via config optional [#769](https://github.com/ie3-institute/simona/issues/769) ### Fixed - Removed a repeated line in the documentation of vn_simona config [#658](https://github.com/ie3-institute/simona/issues/658) diff --git a/docs/readthedocs/config.md b/docs/readthedocs/config.md index f649e12c07..f964378c67 100644 --- a/docs/readthedocs/config.md +++ b/docs/readthedocs/config.md @@ -204,20 +204,28 @@ Tba: ## Grid configuration +The reference system contains a list of voltage levels. Each element includes the nominal apparent power, the nominal +voltage and the separate configuration of each voltage level. The voltage level configuration is composed of the identifier +and the nominal voltage. + +The configuration of a reference system is optional. If no configuration is provided by the user, the default +[reference system](models/reference_system) that includes all common german voltage levels is used. For those users +who need other voltage levels than the common german voltage levels or different nominal apparent powers, they can configure +their reference systems as shown below. + The reference system can be configured as follows: ``` simona.gridConfig.refSystems = [ - {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "NS", vNom = "0.4 kV"}]}, - {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MS", vNom = "20 kV"}]}, - {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HS", vNom = "110 kV"}]}, - {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "HoeS", vNom = "380 kV"}]} + {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "LV", vNom = "0.4 kV"}]}, + {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MV", vNom = "20 kV"}]}, + {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HV", vNom = "110 kV"}]}, + {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "EHV", vNom = "380 kV"}]} ] ``` -The reference system contains a list of voltage levels. Each element includes the nominal apparent power, the nominal voltage and the separate configuration of each voltage level. The voltage level configuration is composed of the identifier and the nominal voltage. - -Further typical voltage levels which can be used in the simulation and the configuration of individual reference systems are described in the documentation of [reference system](models/reference_system). +Further typical voltage levels which can be used in the simulation and the configuration of individual reference systems +are described in the documentation of [reference system](models/reference_system). ## Power flow configuration diff --git a/docs/readthedocs/models/reference_system.md b/docs/readthedocs/models/reference_system.md index 272bb0ba36..28b066bfcc 100644 --- a/docs/readthedocs/models/reference_system.md +++ b/docs/readthedocs/models/reference_system.md @@ -4,14 +4,48 @@ The reference system is built up by specifying the included voltage levels. The following table describes typical network levels and the corresponding parameterization. -## Typical voltage levels +## Default reference system + +```{eval-rst} +.. list-table:: + :widths: 33 33 33 + :header-rows: 0 + + + * - Voltage level (id) + - Nominal voltage (vNom) + - Apparent power (sNom) + + * - LV + - 0.4 kV + - 100 kVA + + * - MV + - 10 kV + - 40 MVA + + * - MV + - 20 kV + - 60 MVA + + * - MV + - 30 kV + - 150 MVA + + * - HV + - 110 kV + - 600 MVA + + * - EHV + - 220 kV + - 800 MVA + + * - EHV + - 380 kV + - 1000 MVA + +``` -| voltage level (id) | nominal voltage (vNom) | apparent power (sNom) | -|--------------------|------------------------|-----------------------| -| NS | 0.4 kV | 100 kVA | -| MS | 20 kV | 60 MVA | -| HS | 110 kV | 600 MVA | -| HoeS | 380 kV | 1000 MVA | ## Configuration of the reference system @@ -19,9 +53,9 @@ To configure the reference system, the voltage levels listed in the table above ``` simona.gridConfig.refSystems = [ - {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "NS", vNom = "0.4 kV"}]}, - {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MS", vNom = "20 kV"}]}, - {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HS", vNom = "110 kV"}]}, - {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "HoeS", vNom = "380 kV"}]} + {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "LV", vNom = "0.4 kV"}]}, + {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MV", vNom = "20 kV"}]}, + {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HV", vNom = "110 kV"}]}, + {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "EHV", vNom = "380 kV"}]} ] ``` diff --git a/input/samples/vn_simona/vn_simona.conf b/input/samples/vn_simona/vn_simona.conf index 38626c593d..401d783120 100644 --- a/input/samples/vn_simona/vn_simona.conf +++ b/input/samples/vn_simona/vn_simona.conf @@ -180,10 +180,10 @@ simona.event.listener = [] ################################################################## simona.gridConfig.refSystems = [ - {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "NS", vNom = "0.4 kV"}]}, - {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MS", vNom = "20 kV"}]}, - {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HS", vNom = "110 kV"}]}, - {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "HoeS", vNom = "380 kV"}]} + {sNom = "100 kVA", vNom = "0.4 kV", voltLvls = [{id = "LV", vNom = "0.4 kV"}]}, + {sNom = "60 MVA", vNom = "20 kV", voltLvls = [{id = "MV", vNom = "20 kV"}]}, + {sNom = "600 MVA", vNom = "110 kV", voltLvls = [{id = "HV", vNom = "110 kV"}]}, + {sNom = "1000 MVA", vNom = "380 kV", voltLvls = [{id = "EHV", vNom = "380 kV"}]} ] ################################################################## diff --git a/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala b/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala index d299dc16d7..95c7c2bfd7 100644 --- a/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala +++ b/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala @@ -6,15 +6,35 @@ package edu.ie3.simona.config -import edu.ie3.datamodel.models.voltagelevels.VoltageLevel +import edu.ie3.datamodel.models.voltagelevels.{ + GermanVoltageLevelUtils, + VoltageLevel, +} import edu.ie3.simona.exceptions.InvalidConfigParameterException import edu.ie3.simona.model.grid.RefSystem import edu.ie3.simona.util.CollectionUtils import edu.ie3.util.quantities.PowerSystemUnits +import squants.electro.{Kilovolts, Volts} +import squants.energy.{Kilowatts, Megawatts} /** Parser to parse [[RefSystem]] provided via [[SimonaConfig]] */ object RefSystemParser { + private val defaultRefSystems: Map[VoltageLevel, RefSystem] = Map( + GermanVoltageLevelUtils.LV -> RefSystem(Kilowatts(100), Volts(400)), + GermanVoltageLevelUtils.MV_10KV -> RefSystem(Megawatts(40), Kilovolts(10)), + GermanVoltageLevelUtils.MV_20KV -> RefSystem(Megawatts(60), Kilovolts(20)), + GermanVoltageLevelUtils.MV_30KV -> RefSystem(Megawatts(150), Kilovolts(30)), + GermanVoltageLevelUtils.HV -> RefSystem(Megawatts(600), Kilovolts(110)), + GermanVoltageLevelUtils.EHV_220KV -> RefSystem( + Megawatts(800), + Kilovolts(220), + ), + GermanVoltageLevelUtils.EHV_380KV -> RefSystem( + Megawatts(1000), + Kilovolts(380), + ), + ) final case class ConfigRefSystems( private val gridIdRefSystems: Map[Int, RefSystem], @@ -54,72 +74,78 @@ object RefSystemParser { configRefSystems: List[SimonaConfig.RefSystemConfig] ): ConfigRefSystems = { - // units for parsing are not initialized by default - // hence we call them manually - new PowerSystemUnits + if (configRefSystems.isEmpty) { + // if no config was provided, the default refSystems are used - val refSystems = configRefSystems.map { configRefSystem => - (configRefSystem, RefSystem(configRefSystem.sNom, configRefSystem.vNom)) - } + ConfigRefSystems(Map.empty, defaultRefSystems) + } else { + // units for parsing are not initialized by default + // hence we call them manually + new PowerSystemUnits - val gridIdRefSystems = refSystems.flatMap { - case (configRefSystem, parsedRefSystem) => - configRefSystem.gridIds - .map { - _.flatMap { gridId => - { - val allGridIds = gridId match { - case ConfigConventions.gridIdDotRange(from, to) => - from.toInt to to.toInt - case ConfigConventions.gridIdMinusRange(from, to) => - from.toInt to to.toInt - case ConfigConventions.singleGridId(singleGridId) => - Seq(singleGridId.toInt) - case unknownGridIdFormat => - throw new InvalidConfigParameterException( - s"Unknown gridId format $unknownGridIdFormat provided for refSystem $configRefSystem" - ) - } + val refSystems = configRefSystems.map { configRefSystem => + (configRefSystem, RefSystem(configRefSystem.sNom, configRefSystem.vNom)) + } - allGridIds.map(gridId => (gridId, parsedRefSystem)) + val gridIdRefSystems = refSystems.flatMap { + case (configRefSystem, parsedRefSystem) => + configRefSystem.gridIds + .map { + _.flatMap { gridId => + { + val allGridIds = gridId match { + case ConfigConventions.gridIdDotRange(from, to) => + from.toInt to to.toInt + case ConfigConventions.gridIdMinusRange(from, to) => + from.toInt to to.toInt + case ConfigConventions.singleGridId(singleGridId) => + Seq(singleGridId.toInt) + case unknownGridIdFormat => + throw new InvalidConfigParameterException( + s"Unknown gridId format $unknownGridIdFormat provided for refSystem $configRefSystem" + ) + } + + allGridIds.map(gridId => (gridId, parsedRefSystem)) + } } } - } - .getOrElse(Seq.empty[(Int, RefSystem)]) - } + .getOrElse(Seq.empty[(Int, RefSystem)]) + } - val voltLvlRefSystems = refSystems.flatMap { - case (configRefSystem, parsedRefSystem) => - configRefSystem.voltLvls - .map { - _.map { voltLvlDef => - (VoltLvlParser.from(voltLvlDef), parsedRefSystem) + val voltLvlRefSystems = refSystems.flatMap { + case (configRefSystem, parsedRefSystem) => + configRefSystem.voltLvls + .map { + _.map { voltLvlDef => + (VoltLvlParser.from(voltLvlDef), parsedRefSystem) + } } - } - .getOrElse(Seq.empty[(VoltageLevel, RefSystem)]) - } + .getOrElse(Seq.empty[(VoltageLevel, RefSystem)]) + } - // check for duplicates of gridIds and voltLevels which will be the key for the following map conversion - if ( - CollectionUtils.listHasDuplicates( - gridIdRefSystems.map { case (gridId, _) => gridId } - ) - ) - throw new InvalidConfigParameterException( - s"The provided gridIds in simona.gridConfig.refSystems contains duplicates. " + - s"Please check if there are either duplicate entries or overlapping ranges!" + // check for duplicates of gridIds and voltLevels which will be the key for the following map conversion + if ( + CollectionUtils.listHasDuplicates( + gridIdRefSystems.map { case (gridId, _) => gridId } + ) ) - if ( - CollectionUtils.listHasDuplicates( - voltLvlRefSystems.map { case (voltLvl, _) => voltLvl } - ) - ) - throw new InvalidConfigParameterException( - s"The provided voltLvls in simona.gridConfig.refSystems contains duplicates. " + - s"Please check your configuration for duplicates in voltLvl entries!" + throw new InvalidConfigParameterException( + s"The provided gridIds in simona.gridConfig.refSystems contains duplicates. " + + s"Please check if there are either duplicate entries or overlapping ranges!" + ) + if ( + CollectionUtils.listHasDuplicates( + voltLvlRefSystems.map { case (voltLvl, _) => voltLvl } + ) ) + throw new InvalidConfigParameterException( + s"The provided voltLvls in simona.gridConfig.refSystems contains duplicates. " + + s"Please check your configuration for duplicates in voltLvl entries!" + ) - ConfigRefSystems(gridIdRefSystems.toMap, voltLvlRefSystems.toMap) + ConfigRefSystems(gridIdRefSystems.toMap, voltLvlRefSystems.toMap) + } } } diff --git a/src/main/scala/edu/ie3/simona/config/VoltLvlParser.scala b/src/main/scala/edu/ie3/simona/config/VoltLvlParser.scala index 885adae81e..3e954c7e3b 100644 --- a/src/main/scala/edu/ie3/simona/config/VoltLvlParser.scala +++ b/src/main/scala/edu/ie3/simona/config/VoltLvlParser.scala @@ -12,7 +12,6 @@ import edu.ie3.datamodel.models.voltagelevels.{ GermanVoltageLevelUtils, VoltageLevel, } -import edu.ie3.simona.config.SimonaConfig.VoltLvlConfig import edu.ie3.simona.exceptions.InvalidConfigParameterException import edu.ie3.util.quantities.QuantityUtil import javax.measure.quantity.ElectricPotential diff --git a/src/test/scala/edu/ie3/simona/config/RefSystemParserSpec.scala b/src/test/scala/edu/ie3/simona/config/RefSystemParserSpec.scala index 13dfc0c5d1..e71a595b93 100644 --- a/src/test/scala/edu/ie3/simona/config/RefSystemParserSpec.scala +++ b/src/test/scala/edu/ie3/simona/config/RefSystemParserSpec.scala @@ -11,10 +11,51 @@ import edu.ie3.simona.config.SimonaConfig.{RefSystemConfig, VoltLvlConfig} import edu.ie3.simona.exceptions.InvalidConfigParameterException import edu.ie3.simona.model.grid.RefSystem import edu.ie3.simona.test.common.UnitSpec +import squants.electro.{Kilovolts, Volts} +import squants.energy.{Kilowatts, Megawatts} class RefSystemParserSpec extends UnitSpec { "A RefSystemParser" must { + // check internal gridIdRefSystems + val gridIdRefSystems = + PrivateMethod[Map[Int, RefSystem]](Symbol("gridIdRefSystems")) + + // check internal voltLvLRefSystems + val voltLvLRefSystems = + PrivateMethod[Map[String, RefSystem]](Symbol("voltLvLRefSystems")) + + "return the default ref systems if no config was provided" in { + val defaults = RefSystemParser.parse(List.empty) + + defaults invokePrivate gridIdRefSystems() shouldBe Map.empty + + defaults invokePrivate voltLvLRefSystems() shouldBe Map( + GermanVoltageLevelUtils.LV -> RefSystem(Kilowatts(100), Volts(400)), + GermanVoltageLevelUtils.MV_10KV -> RefSystem( + Megawatts(40), + Kilovolts(10), + ), + GermanVoltageLevelUtils.MV_20KV -> RefSystem( + Megawatts(60), + Kilovolts(20), + ), + GermanVoltageLevelUtils.MV_30KV -> RefSystem( + Megawatts(150), + Kilovolts(30), + ), + GermanVoltageLevelUtils.HV -> RefSystem(Megawatts(600), Kilovolts(110)), + GermanVoltageLevelUtils.EHV_220KV -> RefSystem( + Megawatts(800), + Kilovolts(220), + ), + GermanVoltageLevelUtils.EHV_380KV -> RefSystem( + Megawatts(1000), + Kilovolts(380), + ), + ) + } + "parse provided valid simona config refSystems correctly" in { val validRefSystems: List[SimonaConfig.RefSystemConfig] = List( @@ -23,7 +64,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ), new RefSystemConfig( @@ -32,8 +73,8 @@ class RefSystemParserSpec extends UnitSpec { vNom = "110 kV", voltLvls = Some( List( - VoltLvlConfig("HS", "110 kV"), - VoltLvlConfig("HoeS", "380 kV"), + VoltLvlConfig("HV", "110 kV"), + VoltLvlConfig("EHV", "380 kV"), ) ), ), @@ -51,9 +92,6 @@ class RefSystemParserSpec extends UnitSpec { val configRefSystemOne = RefSystem("100 MVA", "10 kV") val configRefSystemTwo = RefSystem("5000 MVA", "110 kV") - // check internal gridIdRefSystems - val gridIdRefSystems = - PrivateMethod[Map[Int, RefSystem]](Symbol("gridIdRefSystems")) configRefSystems invokePrivate gridIdRefSystems() shouldBe Map( 1 -> configRefSystemOne, 2 -> configRefSystemOne, @@ -74,9 +112,6 @@ class RefSystemParserSpec extends UnitSpec { 100 -> configRefSystemTwo, ) - // check internal voltLvLRefSystems - val voltLvLRefSystems = - PrivateMethod[Map[String, RefSystem]](Symbol("voltLvLRefSystems")) configRefSystems invokePrivate voltLvLRefSystems() shouldBe Map( GermanVoltageLevelUtils.MV_10KV -> configRefSystemOne, GermanVoltageLevelUtils.MV_20KV -> configRefSystemOne, @@ -95,7 +130,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ) ) @@ -114,7 +149,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ), new RefSystemConfig( @@ -122,7 +157,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ), ) @@ -141,7 +176,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ), new RefSystemConfig( @@ -149,13 +184,13 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ), ) intercept[InvalidConfigParameterException] { RefSystemParser.parse(validRefSystems) - }.getMessage shouldBe "Unknown gridId format asd provided for refSystem RefSystemConfig(Some(List(asd)),100 MVA,10 kV,Some(List(VoltLvlConfig(MS,10 kV), VoltLvlConfig(MS,20 kV))))" + }.getMessage shouldBe "Unknown gridId format asd provided for refSystem RefSystemConfig(Some(List(asd)),100 MVA,10 kV,Some(List(VoltLvlConfig(MV,10 kV), VoltLvlConfig(MV,20 kV))))" } @@ -170,7 +205,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "100 MVA", vNom = "10 kV", voltLvls = Some( - List(VoltLvlConfig("MS", "10 kV"), VoltLvlConfig("MS", "20 kV")) + List(VoltLvlConfig("MV", "10 kV"), VoltLvlConfig("MV", "20 kV")) ), ), new RefSystemConfig( @@ -178,7 +213,7 @@ class RefSystemParserSpec extends UnitSpec { sNom = "5000 MVA", vNom = "110 kV", voltLvls = Some( - List(VoltLvlConfig("HS", "110 kV"), VoltLvlConfig("HoeS", "380 kV")) + List(VoltLvlConfig("HV", "110 kV"), VoltLvlConfig("EHV", "380 kV")) ), ), ) From 6cc6ce03835bab63eee9063d24dceb1dcc4d14af Mon Sep 17 00:00:00 2001 From: staudtMarius Date: Mon, 15 Apr 2024 11:09:31 +0200 Subject: [PATCH 2/2] Small improvement. --- .../ie3/simona/config/RefSystemParser.scala | 48 ++++++++++++------- 1 file changed, 30 insertions(+), 18 deletions(-) diff --git a/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala b/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala index 95c7c2bfd7..9c2afd0c54 100644 --- a/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala +++ b/src/main/scala/edu/ie3/simona/config/RefSystemParser.scala @@ -20,22 +20,6 @@ import squants.energy.{Kilowatts, Megawatts} /** Parser to parse [[RefSystem]] provided via [[SimonaConfig]] */ object RefSystemParser { - private val defaultRefSystems: Map[VoltageLevel, RefSystem] = Map( - GermanVoltageLevelUtils.LV -> RefSystem(Kilowatts(100), Volts(400)), - GermanVoltageLevelUtils.MV_10KV -> RefSystem(Megawatts(40), Kilovolts(10)), - GermanVoltageLevelUtils.MV_20KV -> RefSystem(Megawatts(60), Kilovolts(20)), - GermanVoltageLevelUtils.MV_30KV -> RefSystem(Megawatts(150), Kilovolts(30)), - GermanVoltageLevelUtils.HV -> RefSystem(Megawatts(600), Kilovolts(110)), - GermanVoltageLevelUtils.EHV_220KV -> RefSystem( - Megawatts(800), - Kilovolts(220), - ), - GermanVoltageLevelUtils.EHV_380KV -> RefSystem( - Megawatts(1000), - Kilovolts(380), - ), - ) - final case class ConfigRefSystems( private val gridIdRefSystems: Map[Int, RefSystem], private val voltLvLRefSystems: Map[VoltageLevel, RefSystem], @@ -76,8 +60,36 @@ object RefSystemParser { if (configRefSystems.isEmpty) { // if no config was provided, the default refSystems are used - - ConfigRefSystems(Map.empty, defaultRefSystems) + ConfigRefSystems( + Map.empty, + Map( + GermanVoltageLevelUtils.LV -> RefSystem(Kilowatts(100), Volts(400)), + GermanVoltageLevelUtils.MV_10KV -> RefSystem( + Megawatts(40), + Kilovolts(10), + ), + GermanVoltageLevelUtils.MV_20KV -> RefSystem( + Megawatts(60), + Kilovolts(20), + ), + GermanVoltageLevelUtils.MV_30KV -> RefSystem( + Megawatts(150), + Kilovolts(30), + ), + GermanVoltageLevelUtils.HV -> RefSystem( + Megawatts(600), + Kilovolts(110), + ), + GermanVoltageLevelUtils.EHV_220KV -> RefSystem( + Megawatts(800), + Kilovolts(220), + ), + GermanVoltageLevelUtils.EHV_380KV -> RefSystem( + Megawatts(1000), + Kilovolts(380), + ), + ), + ) } else { // units for parsing are not initialized by default // hence we call them manually