From 2a33252000860154d8317a157d4fd019e1b6ae66 Mon Sep 17 00:00:00 2001 From: Utkarsha-dev05 <64724637+Utkarsha-dev05@users.noreply.github.com> Date: Wed, 8 Sep 2021 10:45:26 +0200 Subject: [PATCH 1/6] config file for 1-EHVHV-mixed-all-0-no_sw --- inputData/config/EHV.conf | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 inputData/config/EHV.conf diff --git a/inputData/config/EHV.conf b/inputData/config/EHV.conf new file mode 100644 index 00000000..557d68c8 --- /dev/null +++ b/inputData/config/EHV.conf @@ -0,0 +1,26 @@ +io { + input { + csv = { + fileEncoding = "UTF-8" + fileEnding = ".csv" + separator = ";" + directoryHierarchy = false + } + } + + output { + csv = { + fileEncoding = "UTF-8" + fileEnding = ".csv" + separator = ";" + directoryHierarchy = false + } + + targetFolder = "convertedData/ratedVoltageMismatch" + compress = false + } + + simbenchCodes = [ + "1-EHVHV-mixed-all-0-no_sw" + ] +} \ No newline at end of file From bdc38245804e59f025ef455c926a97cd9487e8db Mon Sep 17 00:00:00 2001 From: Utkarsha-dev05 Date: Mon, 6 Dec 2021 09:30:09 +0100 Subject: [PATCH 2/6] Fixed lineType mismatch issue. Each lineType can now be mapped to more than one rated voltage. --- CHANGELOG.md | 6 +- inputData/config/EHV.conf | 2 +- .../ie3/simbench/convert/LineConverter.scala | 12 ++-- .../convert/types/LineTypeConverter.scala | 68 ++++--------------- .../edu/ie3/simbench/io/SimbenchReader.scala | 2 +- .../convert/types/LineTypeConverterSpec.scala | 2 +- 6 files changed, 26 insertions(+), 66 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a7f37e5..4e8f59c9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,9 +6,9 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] -## [1.0.0] - 2021-08-03 -### Added -- Basic functionality to convert SimBench data sets to [PowerSystemDataModel](https://github.com/ie3-institute/powersystemdatamodel) + +### Changed +- Line type can be mapped to more than one vRated voltage. [Unreleased]: https://github.com/ie3-institute/simbench2psdm/compare/v1.0...HEAD [1.0.0]: https://github.com/ie3-institute/simbench2psdm/releases/tag/1.0 diff --git a/inputData/config/EHV.conf b/inputData/config/EHV.conf index 557d68c8..67066967 100644 --- a/inputData/config/EHV.conf +++ b/inputData/config/EHV.conf @@ -23,4 +23,4 @@ io { simbenchCodes = [ "1-EHVHV-mixed-all-0-no_sw" ] -} \ No newline at end of file +} diff --git a/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala b/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala index 1f9cc741..fe9a7f92 100644 --- a/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala +++ b/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala @@ -12,7 +12,9 @@ import edu.ie3.datamodel.utils.GridAndGeoUtils import edu.ie3.simbench.exception.ConversionException import edu.ie3.simbench.model.datamodel.types.LineType import edu.ie3.simbench.model.datamodel.{Line, Node} -import edu.ie3.util.quantities.PowerSystemUnits.KILOMETRE +import edu.ie3.util.quantities.PowerSystemUnits.{KILOMETRE,KILOVOLT} +import javax.measure.quantity.ElectricPotential +import tech.units.indriya.ComparableQuantity import tech.units.indriya.quantity.Quantities case object LineConverter extends LazyLogging { @@ -26,16 +28,16 @@ case object LineConverter extends LazyLogging { * @return A [[Vector]] of [[LineInput]]s */ def convert( - inputs: Vector[Line[_ <: LineType]], - types: Map[LineType, LineTypeInput], - nodes: Map[Node, NodeInput] + inputs: Vector[Line[_ <: LineType]], + types: Map[(LineType,ComparableQuantity[ElectricPotential]), LineTypeInput], + nodes: Map[Node, NodeInput] ): Vector[LineInput] = inputs.flatMap { case acLine: Line.ACLine => val (nodeA, nodeB) = NodeConverter.getNodes(acLine.nodeA, acLine.nodeB, nodes) val lineType = types.getOrElse( - acLine.lineType, + (acLine.lineType,Quantities.getQuantity(acLine.nodeA.vmR,KILOVOLT)), throw ConversionException( s"Cannot find conversion result for line type ${acLine.lineType.id}" ) diff --git a/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala b/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala index fc7caf53..b080fcba 100644 --- a/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala +++ b/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala @@ -32,25 +32,15 @@ case object LineTypeConverter extends LazyLogging { * @return A [[Vector]] of [[LineTypeInput]]s */ def convert( - lines: Vector[Line[_ <: LineType]] - ): Map[LineType, LineTypeInput] = { - val ratedVoltageMapping = getRatedVoltages(lines) - val lineTypes = lines.map(line => line.lineType).distinct - - lineTypes - .map( - lineType => - lineType -> convert( - lineType, - ratedVoltageMapping.getOrElse( - lineType, - throw SimbenchDataModelException( - s"Cannot find the rated voltage vor line type ${lineType}" - ) - ) - ) - ) - .toMap + lines: Vector[Line[_ <: LineType]] + ): Map[(LineType, ComparableQuantity[ElectricPotential]), LineTypeInput] = { + assignRatedVoltages(lines).map { + case pair @ (lineType, vRated) => + pair -> convert( + lineType, + vRated + ) + }.toMap } /** @@ -91,42 +81,10 @@ case object LineTypeConverter extends LazyLogging { * @param lines [[Vector]] of [[Line]]s * @return Mapping of [[LineType]] to [[ComparableQuantity]] of type [[ElectricPotential]] */ - def getRatedVoltages( - lines: Vector[Line[_ <: LineType]] - ): Map[LineType, ComparableQuantity[ElectricPotential]] = { - val rawMapping = lines - .distinctBy(line => line.lineType) - .map(line => determineRatedVoltage(line)) - .groupMap(_._1)(_._2) - - /* Sanity check, that there is no ambiguous mapping */ - rawMapping.find { - case (_, ratedVoltages) if ratedVoltages.length > 1 => - true - case _ => - false - } match { - case Some(ambiguousEntry) => - throw SimbenchDataModelException( - s"Found ambiguous rated voltages for at least one entry: $ambiguousEntry" - ) - case None => - logger.debug( - "Great! Found only unambiguous line type to rated voltage mappings." - ) - } - - /* Mapping the line type to the rated voltage of the first entry of the Vector of each raw mapping. That nothing - * is missed is ensured by the sanity check beforehand */ - rawMapping.map { - case (lineType, lineTypeVRatedVector) => - lineType -> lineTypeVRatedVector.headOption.getOrElse( - throw SimbenchDataModelException( - s"Cannot receive rated voltage for line type '$lineType'." - ) - ) - } - } + def assignRatedVoltages( + lines: Vector[Line[_ <: LineType]] + ): Vector[(LineType, ComparableQuantity[ElectricPotential])] = + lines.map(line => determineRatedVoltage(line)).distinct /** * Maps the [[LineType]] of the specific line to it's rated voltage based on the line's nodes' rated voltages diff --git a/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala b/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala index 560578e7..e507452c 100644 --- a/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala +++ b/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala @@ -322,7 +322,7 @@ final case class SimbenchReader( read(clazz, fields) } ), - Duration("10 s") + Duration("100 s") ) .toMap } diff --git a/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala b/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala index c02ac2a4..334e5de6 100644 --- a/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala +++ b/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala @@ -85,7 +85,7 @@ class LineTypeConverterSpec extends UnitSpec with ConverterTestData { } "build line type to rated voltage mapping correctly" in { - val actual = LineTypeConverter.getRatedVoltages(lineVec) + val actual = LineTypeConverter.assignRatedVoltages(lineVec) val expected = Map( getACLineTypes("NAYY 4x150SE 0.6/1kV")._1 -> Quantities .getQuantity(0.4, KILOVOLT), From e31b0da4595987e562311288531ee1eaa3a02019 Mon Sep 17 00:00:00 2001 From: "Kittl, Chris" Date: Wed, 8 Dec 2021 09:46:07 +0100 Subject: [PATCH 3/6] Formatting --- .../edu/ie3/simbench/convert/LineConverter.scala | 13 ++++++++----- .../simbench/convert/types/LineTypeConverter.scala | 8 ++++---- 2 files changed, 12 insertions(+), 9 deletions(-) diff --git a/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala b/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala index c1d6e2a3..8df9b19d 100644 --- a/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala +++ b/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala @@ -12,7 +12,7 @@ import edu.ie3.datamodel.utils.GridAndGeoUtils import edu.ie3.simbench.exception.ConversionException import edu.ie3.simbench.model.datamodel.types.LineType import edu.ie3.simbench.model.datamodel.{Line, Node} -import edu.ie3.util.quantities.PowerSystemUnits.{KILOMETRE,KILOVOLT} +import edu.ie3.util.quantities.PowerSystemUnits.{KILOMETRE, KILOVOLT} import javax.measure.quantity.ElectricPotential import tech.units.indriya.ComparableQuantity import tech.units.indriya.quantity.Quantities @@ -30,16 +30,19 @@ case object LineConverter extends LazyLogging { * @return A [[Vector]] of [[LineInput]]s */ def convert( - inputs: Vector[Line[_ <: LineType]], - types: Map[(LineType,ComparableQuantity[ElectricPotential]), LineTypeInput], - nodes: Map[Node, NodeInput] + inputs: Vector[Line[_ <: LineType]], + types: Map[ + (LineType, ComparableQuantity[ElectricPotential]), + LineTypeInput + ], + nodes: Map[Node, NodeInput] ): Vector[LineInput] = inputs.par.flatMap { case acLine: Line.ACLine => val (nodeA, nodeB) = NodeConverter.getNodes(acLine.nodeA, acLine.nodeB, nodes) val lineType = types.getOrElse( - (acLine.lineType,Quantities.getQuantity(acLine.nodeA.vmR,KILOVOLT)), + (acLine.lineType, Quantities.getQuantity(acLine.nodeA.vmR, KILOVOLT)), throw ConversionException( s"Cannot find conversion result for line type ${acLine.lineType.id}" ) diff --git a/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala b/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala index b080fcba..9e7ba0c2 100644 --- a/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala +++ b/src/main/scala/edu/ie3/simbench/convert/types/LineTypeConverter.scala @@ -32,8 +32,8 @@ case object LineTypeConverter extends LazyLogging { * @return A [[Vector]] of [[LineTypeInput]]s */ def convert( - lines: Vector[Line[_ <: LineType]] - ): Map[(LineType, ComparableQuantity[ElectricPotential]), LineTypeInput] = { + lines: Vector[Line[_ <: LineType]] + ): Map[(LineType, ComparableQuantity[ElectricPotential]), LineTypeInput] = { assignRatedVoltages(lines).map { case pair @ (lineType, vRated) => pair -> convert( @@ -82,8 +82,8 @@ case object LineTypeConverter extends LazyLogging { * @return Mapping of [[LineType]] to [[ComparableQuantity]] of type [[ElectricPotential]] */ def assignRatedVoltages( - lines: Vector[Line[_ <: LineType]] - ): Vector[(LineType, ComparableQuantity[ElectricPotential])] = + lines: Vector[Line[_ <: LineType]] + ): Vector[(LineType, ComparableQuantity[ElectricPotential])] = lines.map(line => determineRatedVoltage(line)).distinct /** From c61e7ac54b7c8482c90a02a888b28835dd37a438 Mon Sep 17 00:00:00 2001 From: Utkarsha-dev05 Date: Fri, 10 Dec 2021 21:03:56 +0100 Subject: [PATCH 4/6] Making CHANGELOG cumulative and reversing the previously committed "Duration" in SimbenchReader. --- CHANGELOG.md | 5 +++-- src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4e8f59c9..d007c967 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,9 +4,10 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [1.0.0] - 2021-08-03 +### Added +- Basic functionality to convert SimBench data sets to [PowerSystemDataModel](https://github.com/ie3-institute/powersystemdatamodel) ## [Unreleased] - - ### Changed - Line type can be mapped to more than one vRated voltage. diff --git a/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala b/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala index e507452c..560578e7 100644 --- a/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala +++ b/src/main/scala/edu/ie3/simbench/io/SimbenchReader.scala @@ -322,7 +322,7 @@ final case class SimbenchReader( read(clazz, fields) } ), - Duration("100 s") + Duration("10 s") ) .toMap } From e7e739bd5ec9e04ede4dfa22fc666c782c69a422 Mon Sep 17 00:00:00 2001 From: Utkarsha-dev05 Date: Fri, 10 Dec 2021 21:06:15 +0100 Subject: [PATCH 5/6] Deleting EHV.conf --- inputData/config/EHV.conf | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 inputData/config/EHV.conf diff --git a/inputData/config/EHV.conf b/inputData/config/EHV.conf deleted file mode 100644 index 67066967..00000000 --- a/inputData/config/EHV.conf +++ /dev/null @@ -1,26 +0,0 @@ -io { - input { - csv = { - fileEncoding = "UTF-8" - fileEnding = ".csv" - separator = ";" - directoryHierarchy = false - } - } - - output { - csv = { - fileEncoding = "UTF-8" - fileEnding = ".csv" - separator = ";" - directoryHierarchy = false - } - - targetFolder = "convertedData/ratedVoltageMismatch" - compress = false - } - - simbenchCodes = [ - "1-EHVHV-mixed-all-0-no_sw" - ] -} From 8768218a1263742c7a0b5205ea90776c81ca82b3 Mon Sep 17 00:00:00 2001 From: Utkarsha-dev05 Date: Thu, 30 Dec 2021 08:39:53 +0100 Subject: [PATCH 6/6] Added integration test for Line Type Mismatch issue. Added requested warning comment in LineConverter. --- .../ie3/simbench/convert/LineConverter.scala | 3 + .../convert/types/LineTypeConverterSpec.scala | 38 ++++- .../ie3/test/common/ConverterTestData.scala | 147 ++++++++++++++++++ 3 files changed, 187 insertions(+), 1 deletion(-) diff --git a/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala b/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala index 8df9b19d..9163993f 100644 --- a/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala +++ b/src/main/scala/edu/ie3/simbench/convert/LineConverter.scala @@ -41,6 +41,9 @@ case object LineConverter extends LazyLogging { case acLine: Line.ACLine => val (nodeA, nodeB) = NodeConverter.getNodes(acLine.nodeA, acLine.nodeB, nodes) + /** + * This part of the code works only if no calculations are done with the voltage provided here. + */ val lineType = types.getOrElse( (acLine.lineType, Quantities.getQuantity(acLine.nodeA.vmR, KILOVOLT)), throw ConversionException( diff --git a/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala b/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala index 334e5de6..1329e6cc 100644 --- a/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala +++ b/src/test/scala/edu/ie3/simbench/convert/types/LineTypeConverterSpec.scala @@ -58,6 +58,28 @@ class LineTypeConverterSpec extends UnitSpec with ConverterTestData { 7 ) ) + val EHVlines = Vector( + ACLine( + "EHV Line 4", + getNodePair("EHV Bus 49")._1, + getNodePair("EHV Bus 59")._1, + getACLineTypes("LineType_1")._1, + BigDecimal("194.581"), + BigDecimal("100"), + "EHV 1", + 1 + ), + ACLine( + "EHV Line 273", + getNodePair("EHV Bus 1433")._1, + getNodePair("EHV Bus 1435")._1, + getACLineTypes("LineType_1")._1, + BigDecimal("43.396"), + BigDecimal("100"), + "EHV 1", + 1 + ) + ) val uuid: UUID = UUID.randomUUID() @@ -90,7 +112,7 @@ class LineTypeConverterSpec extends UnitSpec with ConverterTestData { getACLineTypes("NAYY 4x150SE 0.6/1kV")._1 -> Quantities .getQuantity(0.4, KILOVOLT), getACLineTypes("24-AL1/4-ST1A 20.0")._1 -> Quantities - .getQuantity(0.4, KILOVOLT) + .getQuantity(0.4, KILOVOLT) ) actual.toSet shouldBe expected.toSet } @@ -136,5 +158,19 @@ class LineTypeConverterSpec extends UnitSpec with ConverterTestData { ) thrown.getMessage shouldBe "DC line types are currently not supported by ie3's data model." } + + "extract the rated voltage of lines with same line type but different rated voltages correctly" in { + val actual = LineTypeConverter invokePrivate determineRatedVoltageMethod( + EHVlines(0) + ) + actual shouldBe (getACLineTypes("LineType_1")._1, Quantities + .getQuantity(380, KILOVOLT)) + val actualVal = LineTypeConverter invokePrivate determineRatedVoltageMethod( + EHVlines(1) + ) + actualVal shouldBe (getACLineTypes("LineType_1")._1, Quantities + .getQuantity(220, KILOVOLT)) + } + } } diff --git a/src/test/scala/edu/ie3/test/common/ConverterTestData.scala b/src/test/scala/edu/ie3/test/common/ConverterTestData.scala index 37caf055..f3c07024 100644 --- a/src/test/scala/edu/ie3/test/common/ConverterTestData.scala +++ b/src/test/scala/edu/ie3/test/common/ConverterTestData.scala @@ -340,6 +340,110 @@ trait ConverterTestData { LV, 2 ) + ), + "EHV Bus 49" -> ConversionPair( + Node( + "EHV Bus 49", + DoubleBusBar, + Some(BigDecimal("1.092")), + None, + BigDecimal("380"), + BigDecimal("0.9"), + BigDecimal("1.1"), + None, + None, + "EHV1", + 1 + ), + new NodeInput( + UUID.randomUUID(), + "EHV Bus 49", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited(), + Quantities.getQuantity(1.092, PU), + false, + NodeInput.DEFAULT_GEO_POSITION, + GermanVoltageLevelUtils.EHV_380KV, + 1 + ) + ), + "EHV Bus 59" -> ConversionPair( + Node( + "EHV Bus 59", + DoubleBusBar, + None, + None, + BigDecimal("380"), + BigDecimal("0.9"), + BigDecimal("1.1"), + None, + None, + "EHV1", + 1 + ), + new NodeInput( + UUID.randomUUID(), + "EHV Bus 59", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited(), + Quantities.getQuantity(0, PU), + false, + NodeInput.DEFAULT_GEO_POSITION, + GermanVoltageLevelUtils.EHV_380KV, + 1 + ) + ), + "EHV Bus 1433" -> ConversionPair( + Node( + "EHV Bus 1433", + DoubleBusBar, + Some(BigDecimal("1.068")), + None, + BigDecimal("220"), + BigDecimal("0.9"), + BigDecimal("1.1"), + None, + None, + "EHV1", + 1 + ), + new NodeInput( + UUID.randomUUID(), + "EHV Bus 1433", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited(), + Quantities.getQuantity(1.068, PU), + false, + NodeInput.DEFAULT_GEO_POSITION, + GermanVoltageLevelUtils.EHV_220KV, + 1 + ) + ), + "EHV Bus 1435" -> ConversionPair( + Node( + "EHV Bus 1435", + DoubleBusBar, + None, + None, + BigDecimal("220"), + BigDecimal("0.9"), + BigDecimal("1.1"), + None, + None, + "EHV1", + 1 + ), + new NodeInput( + UUID.randomUUID(), + "EHV Bus 1435", + OperatorInput.NO_OPERATOR_ASSIGNED, + OperationTime.notLimited(), + Quantities.getQuantity(0, PU), + false, + NodeInput.DEFAULT_GEO_POSITION, + GermanVoltageLevelUtils.EHV_220KV, + 1 + ) ) ) @@ -463,7 +567,50 @@ trait ConverterTestData { Quantities.getQuantity(652d, ELECTRIC_CURRENT_MAGNITUDE), Quantities.getQuantity(20d, RATED_VOLTAGE_MAGNITUDE) ) + ), + "LineType_1" -> ConversionPair( + ACLineType( + "LineType_1", + BigDecimal("0.08"), + BigDecimal("0.32"), + BigDecimal("361.283"), + BigDecimal("1300"), + LineStyle.OverheadLine + ), + new LineTypeInput( + UUID.randomUUID(), + "LineType_1", + Quantities + .getQuantity(361.283d, ADMITTANCE_PER_LENGTH), + Quantities.getQuantity(0d, ADMITTANCE_PER_LENGTH), + Quantities.getQuantity(0.08d, IMPEDANCE_PER_LENGTH), + Quantities.getQuantity(0.32d, IMPEDANCE_PER_LENGTH), + Quantities.getQuantity(1300d, ELECTRIC_CURRENT_MAGNITUDE), + Quantities.getQuantity(220d, RATED_VOLTAGE_MAGNITUDE) + ) + ), + "LineType_1" -> ConversionPair( + ACLineType( + "LineType_1", + BigDecimal("0.08"), + BigDecimal("0.32"), + BigDecimal("361.283"), + BigDecimal("1300"), + LineStyle.OverheadLine + ), + new LineTypeInput( + UUID.randomUUID(), + "LineType_1", + Quantities + .getQuantity(361.283d, ADMITTANCE_PER_LENGTH), + Quantities.getQuantity(0d, ADMITTANCE_PER_LENGTH), + Quantities.getQuantity(0.08d, IMPEDANCE_PER_LENGTH), + Quantities.getQuantity(0.32d, IMPEDANCE_PER_LENGTH), + Quantities.getQuantity(1300d, ELECTRIC_CURRENT_MAGNITUDE), + Quantities.getQuantity(380d, RATED_VOLTAGE_MAGNITUDE) + ) ) + ) val dcLineTypes = Map(