@enervance/insight-cim-model 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1425) hide show
  1. package/.nycrc +28 -0
  2. package/README.md +25 -0
  3. package/dist/config/lew-sincal/lew-sincal-load.config.d.ts +1 -0
  4. package/dist/config/lew-sincal/lew-sincal-load.config.js +46 -0
  5. package/dist/config/lew-sincal/lew-sincal-load.config.js.map +1 -0
  6. package/dist/config/power-system-datamodel/psdm-load.config.d.ts +1 -0
  7. package/dist/config/power-system-datamodel/psdm-load.config.js +43 -0
  8. package/dist/config/power-system-datamodel/psdm-load.config.js.map +1 -0
  9. package/dist/config/westnetz-integral7/integral7-load.config.d.ts +1 -0
  10. package/dist/config/westnetz-integral7/integral7-load.config.js +44 -0
  11. package/dist/config/westnetz-integral7/integral7-load.config.js.map +1 -0
  12. package/dist/config/westnetz-neplan/callbacks/cb-connectivitynode.d.ts +10 -0
  13. package/dist/config/westnetz-neplan/callbacks/cb-connectivitynode.js +153 -0
  14. package/dist/config/westnetz-neplan/callbacks/cb-connectivitynode.js.map +1 -0
  15. package/dist/config/westnetz-neplan/callbacks/cb-psr.d.ts +6 -0
  16. package/dist/config/westnetz-neplan/callbacks/cb-psr.js +26 -0
  17. package/dist/config/westnetz-neplan/callbacks/cb-psr.js.map +1 -0
  18. package/dist/config/westnetz-neplan/callbacks/cb-wnenergyconsumer.d.ts +6 -0
  19. package/dist/config/westnetz-neplan/callbacks/cb-wnenergyconsumer.js +60 -0
  20. package/dist/config/westnetz-neplan/callbacks/cb-wnenergyconsumer.js.map +1 -0
  21. package/dist/config/westnetz-neplan/neplan-load.config.d.ts +1 -0
  22. package/dist/config/westnetz-neplan/neplan-load.config.js +51 -0
  23. package/dist/config/westnetz-neplan/neplan-load.config.js.map +1 -0
  24. package/dist/config/westnetz-neplan/property-handler-westenergy.config.d.ts +47 -0
  25. package/dist/config/westnetz-neplan/property-handler-westenergy.config.js +54 -0
  26. package/dist/config/westnetz-neplan/property-handler-westenergy.config.js.map +1 -0
  27. package/dist/constants/cim-class-definition.d.ts +1 -0
  28. package/dist/constants/cim-class-definition.js +120 -0
  29. package/dist/constants/cim-class-definition.js.map +1 -0
  30. package/dist/constants/cim-class-names.d.ts +72 -0
  31. package/dist/constants/cim-class-names.js +77 -0
  32. package/dist/constants/cim-class-names.js.map +1 -0
  33. package/dist/constants/cim-constants.d.ts +5 -0
  34. package/dist/constants/cim-constants.js +10 -0
  35. package/dist/constants/cim-constants.js.map +1 -0
  36. package/dist/constants/init-data/ASSET_HEALTH_EVENTS.d.ts +1 -0
  37. package/dist/constants/init-data/ASSET_HEALTH_EVENTS.js +49 -0
  38. package/dist/constants/init-data/ASSET_HEALTH_EVENTS.js.map +1 -0
  39. package/dist/constants/init-data/ASSSET_OWNER.d.ts +1 -0
  40. package/dist/constants/init-data/ASSSET_OWNER.js +15 -0
  41. package/dist/constants/init-data/ASSSET_OWNER.js.map +1 -0
  42. package/dist/constants/init-data/JENA_SPARQL.d.ts +11 -0
  43. package/dist/constants/init-data/JENA_SPARQL.js +328 -0
  44. package/dist/constants/init-data/JENA_SPARQL.js.map +1 -0
  45. package/dist/constants/init-data/PSR_TYPES.d.ts +1 -0
  46. package/dist/constants/init-data/PSR_TYPES.js +78 -0
  47. package/dist/constants/init-data/PSR_TYPES.js.map +1 -0
  48. package/dist/constants/rdf-xml.d.ts +39 -0
  49. package/dist/constants/rdf-xml.js +44 -0
  50. package/dist/constants/rdf-xml.js.map +1 -0
  51. package/dist/converter/PSDM/ConverterPowerSystemDataModel.d.ts +18 -0
  52. package/dist/converter/PSDM/ConverterPowerSystemDataModel.js +380 -0
  53. package/dist/converter/PSDM/ConverterPowerSystemDataModel.js.map +1 -0
  54. package/dist/converter/PSDM/model/FixedFeedIn.d.ts +11 -0
  55. package/dist/converter/PSDM/model/FixedFeedIn.js +3 -0
  56. package/dist/converter/PSDM/model/FixedFeedIn.js.map +1 -0
  57. package/dist/converter/PSDM/model/Line.d.ts +15 -0
  58. package/dist/converter/PSDM/model/Line.js +3 -0
  59. package/dist/converter/PSDM/model/Line.js.map +1 -0
  60. package/dist/converter/PSDM/model/LineType.d.ts +10 -0
  61. package/dist/converter/PSDM/model/LineType.js +3 -0
  62. package/dist/converter/PSDM/model/LineType.js.map +1 -0
  63. package/dist/converter/PSDM/model/Load.d.ts +14 -0
  64. package/dist/converter/PSDM/model/Load.js +3 -0
  65. package/dist/converter/PSDM/model/Load.js.map +1 -0
  66. package/dist/converter/PSDM/model/Node.d.ts +14 -0
  67. package/dist/converter/PSDM/model/Node.js +3 -0
  68. package/dist/converter/PSDM/model/Node.js.map +1 -0
  69. package/dist/converter/PSDM/model/TimeSeriesMapping.d.ts +5 -0
  70. package/dist/converter/PSDM/model/TimeSeriesMapping.js +3 -0
  71. package/dist/converter/PSDM/model/TimeSeriesMapping.js.map +1 -0
  72. package/dist/converter/PSDM/model/Transformer.d.ts +13 -0
  73. package/dist/converter/PSDM/model/Transformer.js +3 -0
  74. package/dist/converter/PSDM/model/Transformer.js.map +1 -0
  75. package/dist/converter/PSDM/model/TransformerType.d.ts +17 -0
  76. package/dist/converter/PSDM/model/TransformerType.js +3 -0
  77. package/dist/converter/PSDM/model/TransformerType.js.map +1 -0
  78. package/dist/converter/PSDM/model/geo/Crs.d.ts +4 -0
  79. package/dist/converter/PSDM/model/geo/Crs.js +3 -0
  80. package/dist/converter/PSDM/model/geo/Crs.js.map +1 -0
  81. package/dist/converter/PSDM/model/geo/GeoPosition.d.ts +6 -0
  82. package/dist/converter/PSDM/model/geo/GeoPosition.js +3 -0
  83. package/dist/converter/PSDM/model/geo/GeoPosition.js.map +1 -0
  84. package/dist/converter/integral7/ConverterIntegral7.d.ts +106 -0
  85. package/dist/converter/integral7/ConverterIntegral7.js +2275 -0
  86. package/dist/converter/integral7/ConverterIntegral7.js.map +1 -0
  87. package/dist/converter/integral7/config/db-config.d.ts +11 -0
  88. package/dist/converter/integral7/config/db-config.js +3 -0
  89. package/dist/converter/integral7/config/db-config.js.map +1 -0
  90. package/dist/converter/integral7/config/generation-unit-fuel-types.d.ts +50 -0
  91. package/dist/converter/integral7/config/generation-unit-fuel-types.js +54 -0
  92. package/dist/converter/integral7/config/generation-unit-fuel-types.js.map +1 -0
  93. package/dist/converter/integral7/config/integral-prefix.d.ts +20 -0
  94. package/dist/converter/integral7/config/integral-prefix.js +24 -0
  95. package/dist/converter/integral7/config/integral-prefix.js.map +1 -0
  96. package/dist/converter/integral7/model/integral/BaseClass.d.ts +13 -0
  97. package/dist/converter/integral7/model/integral/BaseClass.js +19 -0
  98. package/dist/converter/integral7/model/integral/BaseClass.js.map +1 -0
  99. package/dist/converter/integral7/model/integral/BaseClassNsg.d.ts +11 -0
  100. package/dist/converter/integral7/model/integral/BaseClassNsg.js +15 -0
  101. package/dist/converter/integral7/model/integral/BaseClassNsg.js.map +1 -0
  102. package/dist/converter/integral7/model/integral/KnotenSo.d.ts +14 -0
  103. package/dist/converter/integral7/model/integral/KnotenSo.js +29 -0
  104. package/dist/converter/integral7/model/integral/KnotenSo.js.map +1 -0
  105. package/dist/converter/integral7/model/integral/KnotenSoNsg.d.ts +11 -0
  106. package/dist/converter/integral7/model/integral/KnotenSoNsg.js +13 -0
  107. package/dist/converter/integral7/model/integral/KnotenSoNsg.js.map +1 -0
  108. package/dist/converter/integral7/model/integral/Leitung.d.ts +14 -0
  109. package/dist/converter/integral7/model/integral/Leitung.js +64 -0
  110. package/dist/converter/integral7/model/integral/Leitung.js.map +1 -0
  111. package/dist/converter/integral7/model/integral/LeitungNsg.d.ts +14 -0
  112. package/dist/converter/integral7/model/integral/LeitungNsg.js +28 -0
  113. package/dist/converter/integral7/model/integral/LeitungNsg.js.map +1 -0
  114. package/dist/converter/integral7/model/integral/Point.d.ts +6 -0
  115. package/dist/converter/integral7/model/integral/Point.js +14 -0
  116. package/dist/converter/integral7/model/integral/Point.js.map +1 -0
  117. package/dist/converter/integral7/model/integral/Schaltanlage.d.ts +21 -0
  118. package/dist/converter/integral7/model/integral/Schaltanlage.js +147 -0
  119. package/dist/converter/integral7/model/integral/Schaltanlage.js.map +1 -0
  120. package/dist/converter/integral7/model/integral/SchaltanlageNSG.d.ts +14 -0
  121. package/dist/converter/integral7/model/integral/SchaltanlageNSG.js +15 -0
  122. package/dist/converter/integral7/model/integral/SchaltanlageNSG.js.map +1 -0
  123. package/dist/converter/integral7/model/integral/Schaltanlagenabschnitt.d.ts +16 -0
  124. package/dist/converter/integral7/model/integral/Schaltanlagenabschnitt.js +30 -0
  125. package/dist/converter/integral7/model/integral/Schaltanlagenabschnitt.js.map +1 -0
  126. package/dist/converter/integral7/model/integral/SchaltanlagenabschnittNsg.d.ts +13 -0
  127. package/dist/converter/integral7/model/integral/SchaltanlagenabschnittNsg.js +15 -0
  128. package/dist/converter/integral7/model/integral/SchaltanlagenabschnittNsg.js.map +1 -0
  129. package/dist/converter/integral7/model/integral/Schaltfeld.d.ts +20 -0
  130. package/dist/converter/integral7/model/integral/Schaltfeld.js +100 -0
  131. package/dist/converter/integral7/model/integral/Schaltfeld.js.map +1 -0
  132. package/dist/converter/integral7/model/integral/SchaltfeldNsg.d.ts +17 -0
  133. package/dist/converter/integral7/model/integral/SchaltfeldNsg.js +16 -0
  134. package/dist/converter/integral7/model/integral/SchaltfeldNsg.js.map +1 -0
  135. package/dist/converter/integral7/model/integral/Standort.d.ts +24 -0
  136. package/dist/converter/integral7/model/integral/Standort.js +34 -0
  137. package/dist/converter/integral7/model/integral/Standort.js.map +1 -0
  138. package/dist/converter/integral7/model/integral/StandortNsg.d.ts +10 -0
  139. package/dist/converter/integral7/model/integral/StandortNsg.js +13 -0
  140. package/dist/converter/integral7/model/integral/StandortNsg.js.map +1 -0
  141. package/dist/converter/integral7/model/integral/Trafo2w.d.ts +15 -0
  142. package/dist/converter/integral7/model/integral/Trafo2w.js +11 -0
  143. package/dist/converter/integral7/model/integral/Trafo2w.js.map +1 -0
  144. package/dist/converter/integral7/model/integral/Trafo2wNsg.d.ts +2 -0
  145. package/dist/converter/integral7/model/integral/Trafo2wNsg.js +7 -0
  146. package/dist/converter/integral7/model/integral/Trafo2wNsg.js.map +1 -0
  147. package/dist/converter/integral7/model/interfaces.d.ts +352 -0
  148. package/dist/converter/integral7/model/interfaces.js +3 -0
  149. package/dist/converter/integral7/model/interfaces.js.map +1 -0
  150. package/dist/converter/integral7/sql/integral.sql.d.ts +124 -0
  151. package/dist/converter/integral7/sql/integral.sql.js +285 -0
  152. package/dist/converter/integral7/sql/integral.sql.js.map +1 -0
  153. package/dist/converter/integral7/utils-schema.d.ts +6 -0
  154. package/dist/converter/integral7/utils-schema.js +43 -0
  155. package/dist/converter/integral7/utils-schema.js.map +1 -0
  156. package/dist/converter/integral7/utils-trafo3w.d.ts +13 -0
  157. package/dist/converter/integral7/utils-trafo3w.js +236 -0
  158. package/dist/converter/integral7/utils-trafo3w.js.map +1 -0
  159. package/dist/converter/integral7/utils.d.ts +38 -0
  160. package/dist/converter/integral7/utils.js +577 -0
  161. package/dist/converter/integral7/utils.js.map +1 -0
  162. package/dist/etl-neplan/etl-neplan-contingency-analysis.d.ts +8 -0
  163. package/dist/etl-neplan/etl-neplan-contingency-analysis.js +113 -0
  164. package/dist/etl-neplan/etl-neplan-contingency-analysis.js.map +1 -0
  165. package/dist/etl-neplan/etl-neplan-feederline.d.ts +6 -0
  166. package/dist/etl-neplan/etl-neplan-feederline.js +91 -0
  167. package/dist/etl-neplan/etl-neplan-feederline.js.map +1 -0
  168. package/dist/etl-neplan/etl-neplan.d.ts +9 -0
  169. package/dist/etl-neplan/etl-neplan.js +222 -0
  170. package/dist/etl-neplan/etl-neplan.js.map +1 -0
  171. package/dist/index.d.ts +170 -0
  172. package/dist/index.js +349 -0
  173. package/dist/index.js.map +1 -0
  174. package/dist/interfaces/model/assets/IAsset.d.ts +3 -0
  175. package/dist/interfaces/model/assets/IAsset.js +3 -0
  176. package/dist/interfaces/model/assets/IAsset.js.map +1 -0
  177. package/dist/interfaces/model/assets/IAssetContainer.d.ts +3 -0
  178. package/dist/interfaces/model/assets/IAssetContainer.js +3 -0
  179. package/dist/interfaces/model/assets/IAssetContainer.js.map +1 -0
  180. package/dist/interfaces/model/assets/IFacility.d.ts +3 -0
  181. package/dist/interfaces/model/assets/IFacility.js +3 -0
  182. package/dist/interfaces/model/assets/IFacility.js.map +1 -0
  183. package/dist/interfaces/model/common/IDocument.d.ts +3 -0
  184. package/dist/interfaces/model/common/IDocument.js +3 -0
  185. package/dist/interfaces/model/common/IDocument.js.map +1 -0
  186. package/dist/interfaces/model/core/IACDCTerminal.d.ts +5 -0
  187. package/dist/interfaces/model/core/IACDCTerminal.js +3 -0
  188. package/dist/interfaces/model/core/IACDCTerminal.js.map +1 -0
  189. package/dist/interfaces/model/core/IBaseVoltage.d.ts +6 -0
  190. package/dist/interfaces/model/core/IBaseVoltage.js +3 -0
  191. package/dist/interfaces/model/core/IBaseVoltage.js.map +1 -0
  192. package/dist/interfaces/model/core/IConductingEquipment.d.ts +8 -0
  193. package/dist/interfaces/model/core/IConductingEquipment.js +3 -0
  194. package/dist/interfaces/model/core/IConductingEquipment.js.map +1 -0
  195. package/dist/interfaces/model/core/IConnectivityNode.d.ts +17 -0
  196. package/dist/interfaces/model/core/IConnectivityNode.js +3 -0
  197. package/dist/interfaces/model/core/IConnectivityNode.js.map +1 -0
  198. package/dist/interfaces/model/core/IConnectivityNodeContainer.d.ts +9 -0
  199. package/dist/interfaces/model/core/IConnectivityNodeContainer.js +3 -0
  200. package/dist/interfaces/model/core/IConnectivityNodeContainer.js.map +1 -0
  201. package/dist/interfaces/model/core/IEquipment.d.ts +3 -0
  202. package/dist/interfaces/model/core/IEquipment.js +3 -0
  203. package/dist/interfaces/model/core/IEquipment.js.map +1 -0
  204. package/dist/interfaces/model/core/IEquipmentContainer.d.ts +9 -0
  205. package/dist/interfaces/model/core/IEquipmentContainer.js +3 -0
  206. package/dist/interfaces/model/core/IEquipmentContainer.js.map +1 -0
  207. package/dist/interfaces/model/core/IFeeder.d.ts +11 -0
  208. package/dist/interfaces/model/core/IFeeder.js +3 -0
  209. package/dist/interfaces/model/core/IFeeder.js.map +1 -0
  210. package/dist/interfaces/model/core/IIdentifiedObject.d.ts +52 -0
  211. package/dist/interfaces/model/core/IIdentifiedObject.js +3 -0
  212. package/dist/interfaces/model/core/IIdentifiedObject.js.map +1 -0
  213. package/dist/interfaces/model/core/IPowerSystemResource.d.ts +3 -0
  214. package/dist/interfaces/model/core/IPowerSystemResource.js +3 -0
  215. package/dist/interfaces/model/core/IPowerSystemResource.js.map +1 -0
  216. package/dist/interfaces/model/core/ISubstation.d.ts +6 -0
  217. package/dist/interfaces/model/core/ISubstation.js +3 -0
  218. package/dist/interfaces/model/core/ISubstation.js.map +1 -0
  219. package/dist/interfaces/model/core/ITerminal.d.ts +29 -0
  220. package/dist/interfaces/model/core/ITerminal.js +3 -0
  221. package/dist/interfaces/model/core/ITerminal.js.map +1 -0
  222. package/dist/interfaces/model/core/IVoltageLevel.d.ts +13 -0
  223. package/dist/interfaces/model/core/IVoltageLevel.js +3 -0
  224. package/dist/interfaces/model/core/IVoltageLevel.js.map +1 -0
  225. package/dist/interfaces/model/diagram/IDiagram.d.ts +15 -0
  226. package/dist/interfaces/model/diagram/IDiagram.js +3 -0
  227. package/dist/interfaces/model/diagram/IDiagram.js.map +1 -0
  228. package/dist/interfaces/model/diagram/IDiagramObject.d.ts +19 -0
  229. package/dist/interfaces/model/diagram/IDiagramObject.js +3 -0
  230. package/dist/interfaces/model/diagram/IDiagramObject.js.map +1 -0
  231. package/dist/interfaces/model/diagram/IDiagramObjectPoint.d.ts +11 -0
  232. package/dist/interfaces/model/diagram/IDiagramObjectPoint.js +3 -0
  233. package/dist/interfaces/model/diagram/IDiagramObjectPoint.js.map +1 -0
  234. package/dist/interfaces/model/domain/IActivePower.d.ts +3 -0
  235. package/dist/interfaces/model/domain/IActivePower.js +3 -0
  236. package/dist/interfaces/model/domain/IActivePower.js.map +1 -0
  237. package/dist/interfaces/model/domain/IAngleDegrees.d.ts +3 -0
  238. package/dist/interfaces/model/domain/IAngleDegrees.js +3 -0
  239. package/dist/interfaces/model/domain/IAngleDegrees.js.map +1 -0
  240. package/dist/interfaces/model/domain/IApparentPower.d.ts +3 -0
  241. package/dist/interfaces/model/domain/IApparentPower.js +3 -0
  242. package/dist/interfaces/model/domain/IApparentPower.js.map +1 -0
  243. package/dist/interfaces/model/domain/ICurrentFlow.d.ts +3 -0
  244. package/dist/interfaces/model/domain/ICurrentFlow.js +3 -0
  245. package/dist/interfaces/model/domain/ICurrentFlow.js.map +1 -0
  246. package/dist/interfaces/model/domain/IDataType.d.ts +7 -0
  247. package/dist/interfaces/model/domain/IDataType.js +3 -0
  248. package/dist/interfaces/model/domain/IDataType.js.map +1 -0
  249. package/dist/interfaces/model/domain/IReactivePower.d.ts +3 -0
  250. package/dist/interfaces/model/domain/IReactivePower.js +3 -0
  251. package/dist/interfaces/model/domain/IReactivePower.js.map +1 -0
  252. package/dist/interfaces/model/domain/IVoltage.d.ts +3 -0
  253. package/dist/interfaces/model/domain/IVoltage.js +3 -0
  254. package/dist/interfaces/model/domain/IVoltage.js.map +1 -0
  255. package/dist/interfaces/model/domain/UnitMultiplier.d.ts +13 -0
  256. package/dist/interfaces/model/domain/UnitMultiplier.js +18 -0
  257. package/dist/interfaces/model/domain/UnitMultiplier.js.map +1 -0
  258. package/dist/interfaces/model/domain/UnitSymbol.d.ts +30 -0
  259. package/dist/interfaces/model/domain/UnitSymbol.js +35 -0
  260. package/dist/interfaces/model/domain/UnitSymbol.js.map +1 -0
  261. package/dist/interfaces/model/enums/EnumShapeInfo.d.ts +5 -0
  262. package/dist/interfaces/model/enums/EnumShapeInfo.js +10 -0
  263. package/dist/interfaces/model/enums/EnumShapeInfo.js.map +1 -0
  264. package/dist/interfaces/model/faults/IFault.d.ts +8 -0
  265. package/dist/interfaces/model/faults/IFault.js +3 -0
  266. package/dist/interfaces/model/faults/IFault.js.map +1 -0
  267. package/dist/interfaces/model/model/IModel.d.ts +86 -0
  268. package/dist/interfaces/model/model/IModel.js +3 -0
  269. package/dist/interfaces/model/model/IModel.js.map +1 -0
  270. package/dist/interfaces/model/operations/IOutage.d.ts +11 -0
  271. package/dist/interfaces/model/operations/IOutage.js +3 -0
  272. package/dist/interfaces/model/operations/IOutage.js.map +1 -0
  273. package/dist/interfaces/model/operations/ISwitchingAction.d.ts +6 -0
  274. package/dist/interfaces/model/operations/ISwitchingAction.js +3 -0
  275. package/dist/interfaces/model/operations/ISwitchingAction.js.map +1 -0
  276. package/dist/interfaces/model/operations/ISwitchingPlan.d.ts +11 -0
  277. package/dist/interfaces/model/operations/ISwitchingPlan.js +3 -0
  278. package/dist/interfaces/model/operations/ISwitchingPlan.js.map +1 -0
  279. package/dist/interfaces/model/statevariables/ISvPowerFlow.d.ts +6 -0
  280. package/dist/interfaces/model/statevariables/ISvPowerFlow.js +3 -0
  281. package/dist/interfaces/model/statevariables/ISvPowerFlow.js.map +1 -0
  282. package/dist/interfaces/model/statevariables/ISvVoltage.d.ts +14 -0
  283. package/dist/interfaces/model/statevariables/ISvVoltage.js +3 -0
  284. package/dist/interfaces/model/statevariables/ISvVoltage.js.map +1 -0
  285. package/dist/interfaces/model/topology/ITopologicalIsland.d.ts +10 -0
  286. package/dist/interfaces/model/topology/ITopologicalIsland.js +3 -0
  287. package/dist/interfaces/model/topology/ITopologicalIsland.js.map +1 -0
  288. package/dist/interfaces/model/topology/ITopologicalNode.d.ts +23 -0
  289. package/dist/interfaces/model/topology/ITopologicalNode.js +3 -0
  290. package/dist/interfaces/model/topology/ITopologicalNode.js.map +1 -0
  291. package/dist/interfaces/model/wires/IACLineSegment.d.ts +3 -0
  292. package/dist/interfaces/model/wires/IACLineSegment.js +3 -0
  293. package/dist/interfaces/model/wires/IACLineSegment.js.map +1 -0
  294. package/dist/interfaces/model/wires/IBusbarSection.d.ts +3 -0
  295. package/dist/interfaces/model/wires/IBusbarSection.js +3 -0
  296. package/dist/interfaces/model/wires/IBusbarSection.js.map +1 -0
  297. package/dist/interfaces/model/wires/ICompositeSwitch.d.ts +3 -0
  298. package/dist/interfaces/model/wires/ICompositeSwitch.js +3 -0
  299. package/dist/interfaces/model/wires/ICompositeSwitch.js.map +1 -0
  300. package/dist/interfaces/model/wires/IConductor.d.ts +5 -0
  301. package/dist/interfaces/model/wires/IConductor.js +3 -0
  302. package/dist/interfaces/model/wires/IConductor.js.map +1 -0
  303. package/dist/interfaces/model/wires/IConnector.d.ts +3 -0
  304. package/dist/interfaces/model/wires/IConnector.js +3 -0
  305. package/dist/interfaces/model/wires/IConnector.js.map +1 -0
  306. package/dist/interfaces/model/wires/IDisconnector.d.ts +3 -0
  307. package/dist/interfaces/model/wires/IDisconnector.js +3 -0
  308. package/dist/interfaces/model/wires/IDisconnector.js.map +1 -0
  309. package/dist/interfaces/model/wires/IEnergyConsumer.d.ts +6 -0
  310. package/dist/interfaces/model/wires/IEnergyConsumer.js +3 -0
  311. package/dist/interfaces/model/wires/IEnergyConsumer.js.map +1 -0
  312. package/dist/interfaces/model/wires/IEnergySource.d.ts +15 -0
  313. package/dist/interfaces/model/wires/IEnergySource.js +3 -0
  314. package/dist/interfaces/model/wires/IEnergySource.js.map +1 -0
  315. package/dist/interfaces/model/wires/IExternalNetworkInjection.d.ts +33 -0
  316. package/dist/interfaces/model/wires/IExternalNetworkInjection.js +3 -0
  317. package/dist/interfaces/model/wires/IExternalNetworkInjection.js.map +1 -0
  318. package/dist/interfaces/model/wires/ILoadBreakSwitch.d.ts +3 -0
  319. package/dist/interfaces/model/wires/ILoadBreakSwitch.js +3 -0
  320. package/dist/interfaces/model/wires/ILoadBreakSwitch.js.map +1 -0
  321. package/dist/interfaces/model/wires/IPowerTransformer.d.ts +6 -0
  322. package/dist/interfaces/model/wires/IPowerTransformer.js +3 -0
  323. package/dist/interfaces/model/wires/IPowerTransformer.js.map +1 -0
  324. package/dist/interfaces/model/wires/IPowerTransformerEnd.d.ts +8 -0
  325. package/dist/interfaces/model/wires/IPowerTransformerEnd.js +3 -0
  326. package/dist/interfaces/model/wires/IPowerTransformerEnd.js.map +1 -0
  327. package/dist/interfaces/model/wires/IProtectedSwitch.d.ts +3 -0
  328. package/dist/interfaces/model/wires/IProtectedSwitch.js +3 -0
  329. package/dist/interfaces/model/wires/IProtectedSwitch.js.map +1 -0
  330. package/dist/interfaces/model/wires/IRegulatingCondEq.d.ts +3 -0
  331. package/dist/interfaces/model/wires/IRegulatingCondEq.js +3 -0
  332. package/dist/interfaces/model/wires/IRegulatingCondEq.js.map +1 -0
  333. package/dist/interfaces/model/wires/ISwitch.d.ts +9 -0
  334. package/dist/interfaces/model/wires/ISwitch.js +3 -0
  335. package/dist/interfaces/model/wires/ISwitch.js.map +1 -0
  336. package/dist/interfaces/model/wires/ITransformerEnd.d.ts +13 -0
  337. package/dist/interfaces/model/wires/ITransformerEnd.js +3 -0
  338. package/dist/interfaces/model/wires/ITransformerEnd.js.map +1 -0
  339. package/dist/interfaces/observable/IObservable.d.ts +6 -0
  340. package/dist/interfaces/observable/IObservable.js +3 -0
  341. package/dist/interfaces/observable/IObservable.js.map +1 -0
  342. package/dist/interfaces/observable/IObserver.d.ts +3 -0
  343. package/dist/interfaces/observable/IObserver.js +3 -0
  344. package/dist/interfaces/observable/IObserver.js.map +1 -0
  345. package/dist/interfaces/persistence-interfaces.d.ts +10 -0
  346. package/dist/interfaces/persistence-interfaces.js +3 -0
  347. package/dist/interfaces/persistence-interfaces.js.map +1 -0
  348. package/dist/interfaces/schema-settings/ShapeInfos.d.ts +24 -0
  349. package/dist/interfaces/schema-settings/ShapeInfos.js +13 -0
  350. package/dist/interfaces/schema-settings/ShapeInfos.js.map +1 -0
  351. package/dist/model/assetinfo/AssetInfo.d.ts +6 -0
  352. package/dist/model/assetinfo/AssetInfo.js +13 -0
  353. package/dist/model/assetinfo/AssetInfo.js.map +1 -0
  354. package/dist/model/assetinfo/CableInfo.d.ts +4 -0
  355. package/dist/model/assetinfo/CableInfo.js +11 -0
  356. package/dist/model/assetinfo/CableInfo.js.map +1 -0
  357. package/dist/model/assetinfo/OverheadWireInfo.d.ts +4 -0
  358. package/dist/model/assetinfo/OverheadWireInfo.js +11 -0
  359. package/dist/model/assetinfo/OverheadWireInfo.js.map +1 -0
  360. package/dist/model/assetinfo/PowerTransformer2WInfo.d.ts +6 -0
  361. package/dist/model/assetinfo/PowerTransformer2WInfo.js +11 -0
  362. package/dist/model/assetinfo/PowerTransformer2WInfo.js.map +1 -0
  363. package/dist/model/assetinfo/PowerTransformer3WInfo.d.ts +10 -0
  364. package/dist/model/assetinfo/PowerTransformer3WInfo.js +11 -0
  365. package/dist/model/assetinfo/PowerTransformer3WInfo.js.map +1 -0
  366. package/dist/model/assetinfo/PowerTransformerInfo.d.ts +8 -0
  367. package/dist/model/assetinfo/PowerTransformerInfo.js +12 -0
  368. package/dist/model/assetinfo/PowerTransformerInfo.js.map +1 -0
  369. package/dist/model/assetinfo/TapChangerInfo.d.ts +22 -0
  370. package/dist/model/assetinfo/TapChangerInfo.js +11 -0
  371. package/dist/model/assetinfo/TapChangerInfo.js.map +1 -0
  372. package/dist/model/assetinfo/TransformerEndInfo.d.ts +23 -0
  373. package/dist/model/assetinfo/TransformerEndInfo.js +11 -0
  374. package/dist/model/assetinfo/TransformerEndInfo.js.map +1 -0
  375. package/dist/model/assetinfo/WireInfo.d.ts +14 -0
  376. package/dist/model/assetinfo/WireInfo.js +11 -0
  377. package/dist/model/assetinfo/WireInfo.js.map +1 -0
  378. package/dist/model/assets/AggregateScore.d.ts +4 -0
  379. package/dist/model/assets/AggregateScore.js +11 -0
  380. package/dist/model/assets/AggregateScore.js.map +1 -0
  381. package/dist/model/assets/AnalyticScore.d.ts +12 -0
  382. package/dist/model/assets/AnalyticScore.js +34 -0
  383. package/dist/model/assets/AnalyticScore.js.map +1 -0
  384. package/dist/model/assets/Asset.d.ts +38 -0
  385. package/dist/model/assets/Asset.js +109 -0
  386. package/dist/model/assets/Asset.js.map +1 -0
  387. package/dist/model/assets/AssetContainer.d.ts +5 -0
  388. package/dist/model/assets/AssetContainer.js +12 -0
  389. package/dist/model/assets/AssetContainer.js.map +1 -0
  390. package/dist/model/assets/AssetDeployment.d.ts +22 -0
  391. package/dist/model/assets/AssetDeployment.js +94 -0
  392. package/dist/model/assets/AssetDeployment.js.map +1 -0
  393. package/dist/model/assets/AssetHealthEvent.d.ts +12 -0
  394. package/dist/model/assets/AssetHealthEvent.js +65 -0
  395. package/dist/model/assets/AssetHealthEvent.js.map +1 -0
  396. package/dist/model/assets/AssetOrganisationRole.d.ts +12 -0
  397. package/dist/model/assets/AssetOrganisationRole.js +43 -0
  398. package/dist/model/assets/AssetOrganisationRole.js.map +1 -0
  399. package/dist/model/assets/AssetOwner.d.ts +8 -0
  400. package/dist/model/assets/AssetOwner.js +48 -0
  401. package/dist/model/assets/AssetOwner.js.map +1 -0
  402. package/dist/model/assets/DeploymentDate.d.ts +9 -0
  403. package/dist/model/assets/DeploymentDate.js +13 -0
  404. package/dist/model/assets/DeploymentDate.js.map +1 -0
  405. package/dist/model/assets/DeploymentStateKind.d.ts +7 -0
  406. package/dist/model/assets/DeploymentStateKind.js +12 -0
  407. package/dist/model/assets/DeploymentStateKind.js.map +1 -0
  408. package/dist/model/assets/Facility.d.ts +16 -0
  409. package/dist/model/assets/Facility.js +91 -0
  410. package/dist/model/assets/Facility.js.map +1 -0
  411. package/dist/model/assets/FacilityKind.d.ts +9 -0
  412. package/dist/model/assets/FacilityKind.js +14 -0
  413. package/dist/model/assets/FacilityKind.js.map +1 -0
  414. package/dist/model/assets/HealthScore.d.ts +9 -0
  415. package/dist/model/assets/HealthScore.js +55 -0
  416. package/dist/model/assets/HealthScore.js.map +1 -0
  417. package/dist/model/assets/LifecycleDate.d.ts +10 -0
  418. package/dist/model/assets/LifecycleDate.js +12 -0
  419. package/dist/model/assets/LifecycleDate.js.map +1 -0
  420. package/dist/model/assets/RiskScore.d.ts +4 -0
  421. package/dist/model/assets/RiskScore.js +11 -0
  422. package/dist/model/assets/RiskScore.js.map +1 -0
  423. package/dist/model/assets/TransformerApplicationKind.d.ts +6 -0
  424. package/dist/model/assets/TransformerApplicationKind.js +11 -0
  425. package/dist/model/assets/TransformerApplicationKind.js.map +1 -0
  426. package/dist/model/common/ActivityRecord.d.ts +18 -0
  427. package/dist/model/common/ActivityRecord.js +52 -0
  428. package/dist/model/common/ActivityRecord.js.map +1 -0
  429. package/dist/model/common/CoordinateSystem.d.ts +15 -0
  430. package/dist/model/common/CoordinateSystem.js +75 -0
  431. package/dist/model/common/CoordinateSystem.js.map +1 -0
  432. package/dist/model/common/Document.d.ts +4 -0
  433. package/dist/model/common/Document.js +11 -0
  434. package/dist/model/common/Document.js.map +1 -0
  435. package/dist/model/common/Location.d.ts +25 -0
  436. package/dist/model/common/Location.js +154 -0
  437. package/dist/model/common/Location.js.map +1 -0
  438. package/dist/model/common/OrganisationRole.d.ts +4 -0
  439. package/dist/model/common/OrganisationRole.js +11 -0
  440. package/dist/model/common/OrganisationRole.js.map +1 -0
  441. package/dist/model/common/PositionPoint.d.ts +19 -0
  442. package/dist/model/common/PositionPoint.js +111 -0
  443. package/dist/model/common/PositionPoint.js.map +1 -0
  444. package/dist/model/common/Status.d.ts +7 -0
  445. package/dist/model/common/Status.js +10 -0
  446. package/dist/model/common/Status.js.map +1 -0
  447. package/dist/model/core/ACDCTerminal.d.ts +14 -0
  448. package/dist/model/core/ACDCTerminal.js +54 -0
  449. package/dist/model/core/ACDCTerminal.js.map +1 -0
  450. package/dist/model/core/BaseVoltage.d.ts +22 -0
  451. package/dist/model/core/BaseVoltage.js +109 -0
  452. package/dist/model/core/BaseVoltage.js.map +1 -0
  453. package/dist/model/core/Bay.d.ts +27 -0
  454. package/dist/model/core/Bay.js +153 -0
  455. package/dist/model/core/Bay.js.map +1 -0
  456. package/dist/model/core/ConductingEquipment.d.ts +37 -0
  457. package/dist/model/core/ConductingEquipment.js +132 -0
  458. package/dist/model/core/ConductingEquipment.js.map +1 -0
  459. package/dist/model/core/ConnectivityNode.d.ts +42 -0
  460. package/dist/model/core/ConnectivityNode.js +317 -0
  461. package/dist/model/core/ConnectivityNode.js.map +1 -0
  462. package/dist/model/core/ConnectivityNodeContainer.d.ts +11 -0
  463. package/dist/model/core/ConnectivityNodeContainer.js +19 -0
  464. package/dist/model/core/ConnectivityNodeContainer.js.map +1 -0
  465. package/dist/model/core/Curve.d.ts +12 -0
  466. package/dist/model/core/Curve.js +34 -0
  467. package/dist/model/core/Curve.js.map +1 -0
  468. package/dist/model/core/CurveData.d.ts +15 -0
  469. package/dist/model/core/CurveData.js +58 -0
  470. package/dist/model/core/CurveData.js.map +1 -0
  471. package/dist/model/core/CurveStyle.d.ts +4 -0
  472. package/dist/model/core/CurveStyle.js +9 -0
  473. package/dist/model/core/CurveStyle.js.map +1 -0
  474. package/dist/model/core/Equipment.d.ts +30 -0
  475. package/dist/model/core/Equipment.js +148 -0
  476. package/dist/model/core/Equipment.js.map +1 -0
  477. package/dist/model/core/EquipmentContainer.d.ts +13 -0
  478. package/dist/model/core/EquipmentContainer.js +31 -0
  479. package/dist/model/core/EquipmentContainer.js.map +1 -0
  480. package/dist/model/core/Feeder.d.ts +31 -0
  481. package/dist/model/core/Feeder.js +143 -0
  482. package/dist/model/core/Feeder.js.map +1 -0
  483. package/dist/model/core/GeographicalRegion.d.ts +9 -0
  484. package/dist/model/core/GeographicalRegion.js +30 -0
  485. package/dist/model/core/GeographicalRegion.js.map +1 -0
  486. package/dist/model/core/IdentifiedObject.d.ts +70 -0
  487. package/dist/model/core/IdentifiedObject.js +225 -0
  488. package/dist/model/core/IdentifiedObject.js.map +1 -0
  489. package/dist/model/core/PSRType.d.ts +22 -0
  490. package/dist/model/core/PSRType.js +116 -0
  491. package/dist/model/core/PSRType.js.map +1 -0
  492. package/dist/model/core/PhaseCode.d.ts +23 -0
  493. package/dist/model/core/PhaseCode.js +28 -0
  494. package/dist/model/core/PhaseCode.js.map +1 -0
  495. package/dist/model/core/PowerSystemResource.d.ts +26 -0
  496. package/dist/model/core/PowerSystemResource.js +81 -0
  497. package/dist/model/core/PowerSystemResource.js.map +1 -0
  498. package/dist/model/core/SubGeographicalRegion.d.ts +15 -0
  499. package/dist/model/core/SubGeographicalRegion.js +49 -0
  500. package/dist/model/core/SubGeographicalRegion.js.map +1 -0
  501. package/dist/model/core/Substation.d.ts +34 -0
  502. package/dist/model/core/Substation.js +233 -0
  503. package/dist/model/core/Substation.js.map +1 -0
  504. package/dist/model/core/Terminal.d.ts +68 -0
  505. package/dist/model/core/Terminal.js +307 -0
  506. package/dist/model/core/Terminal.js.map +1 -0
  507. package/dist/model/core/VoltageLevel.d.ts +34 -0
  508. package/dist/model/core/VoltageLevel.js +162 -0
  509. package/dist/model/core/VoltageLevel.js.map +1 -0
  510. package/dist/model/diagram/Diagram.d.ts +29 -0
  511. package/dist/model/diagram/Diagram.js +105 -0
  512. package/dist/model/diagram/Diagram.js.map +1 -0
  513. package/dist/model/diagram/DiagramObject.d.ts +43 -0
  514. package/dist/model/diagram/DiagramObject.js +275 -0
  515. package/dist/model/diagram/DiagramObject.js.map +1 -0
  516. package/dist/model/diagram/DiagramObjectPoint.d.ts +33 -0
  517. package/dist/model/diagram/DiagramObjectPoint.js +169 -0
  518. package/dist/model/diagram/DiagramObjectPoint.js.map +1 -0
  519. package/dist/model/diagram/DiagramStyle.d.ts +9 -0
  520. package/dist/model/diagram/DiagramStyle.js +29 -0
  521. package/dist/model/diagram/DiagramStyle.js.map +1 -0
  522. package/dist/model/diagram/OrientationKind.d.ts +4 -0
  523. package/dist/model/diagram/OrientationKind.js +9 -0
  524. package/dist/model/diagram/OrientationKind.js.map +1 -0
  525. package/dist/model/domain/ActivePower.d.ts +8 -0
  526. package/dist/model/domain/ActivePower.js +12 -0
  527. package/dist/model/domain/ActivePower.js.map +1 -0
  528. package/dist/model/domain/AngleDegrees.d.ts +8 -0
  529. package/dist/model/domain/AngleDegrees.js +12 -0
  530. package/dist/model/domain/AngleDegrees.js.map +1 -0
  531. package/dist/model/domain/ApparentPower.d.ts +8 -0
  532. package/dist/model/domain/ApparentPower.js +12 -0
  533. package/dist/model/domain/ApparentPower.js.map +1 -0
  534. package/dist/model/domain/Capacitance.d.ts +8 -0
  535. package/dist/model/domain/Capacitance.js +12 -0
  536. package/dist/model/domain/Capacitance.js.map +1 -0
  537. package/dist/model/domain/CapacitancePerLength.d.ts +8 -0
  538. package/dist/model/domain/CapacitancePerLength.js +12 -0
  539. package/dist/model/domain/CapacitancePerLength.js.map +1 -0
  540. package/dist/model/domain/ConductancePerLength.d.ts +8 -0
  541. package/dist/model/domain/ConductancePerLength.js +12 -0
  542. package/dist/model/domain/ConductancePerLength.js.map +1 -0
  543. package/dist/model/domain/CurrentFlow.d.ts +8 -0
  544. package/dist/model/domain/CurrentFlow.js +12 -0
  545. package/dist/model/domain/CurrentFlow.js.map +1 -0
  546. package/dist/model/domain/Reactance.d.ts +8 -0
  547. package/dist/model/domain/Reactance.js +12 -0
  548. package/dist/model/domain/Reactance.js.map +1 -0
  549. package/dist/model/domain/ReactancePerLength.d.ts +8 -0
  550. package/dist/model/domain/ReactancePerLength.js +12 -0
  551. package/dist/model/domain/ReactancePerLength.js.map +1 -0
  552. package/dist/model/domain/ReactivePower.d.ts +8 -0
  553. package/dist/model/domain/ReactivePower.js +12 -0
  554. package/dist/model/domain/ReactivePower.js.map +1 -0
  555. package/dist/model/domain/Resistance.d.ts +8 -0
  556. package/dist/model/domain/Resistance.js +12 -0
  557. package/dist/model/domain/Resistance.js.map +1 -0
  558. package/dist/model/domain/ResistancePerLength.d.ts +8 -0
  559. package/dist/model/domain/ResistancePerLength.js +12 -0
  560. package/dist/model/domain/ResistancePerLength.js.map +1 -0
  561. package/dist/model/domain/UnitMultiplier.d.ts +13 -0
  562. package/dist/model/domain/UnitMultiplier.js +18 -0
  563. package/dist/model/domain/UnitMultiplier.js.map +1 -0
  564. package/dist/model/domain/UnitSymbol.d.ts +30 -0
  565. package/dist/model/domain/UnitSymbol.js +35 -0
  566. package/dist/model/domain/UnitSymbol.js.map +1 -0
  567. package/dist/model/domain/Voltage.d.ts +8 -0
  568. package/dist/model/domain/Voltage.js +12 -0
  569. package/dist/model/domain/Voltage.js.map +1 -0
  570. package/dist/model/equivalents/EquivalentBranch.d.ts +34 -0
  571. package/dist/model/equivalents/EquivalentBranch.js +161 -0
  572. package/dist/model/equivalents/EquivalentBranch.js.map +1 -0
  573. package/dist/model/equivalents/EquivalentEquipment.d.ts +4 -0
  574. package/dist/model/equivalents/EquivalentEquipment.js +11 -0
  575. package/dist/model/equivalents/EquivalentEquipment.js.map +1 -0
  576. package/dist/model/extensions/amprion/core/AMPRIONBay.d.ts +16 -0
  577. package/dist/model/extensions/amprion/core/AMPRIONBay.js +92 -0
  578. package/dist/model/extensions/amprion/core/AMPRIONBay.js.map +1 -0
  579. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.d.ts +11 -0
  580. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js +43 -0
  581. package/dist/model/extensions/amprion/core/AMPRIONConnectivityNode.js.map +1 -0
  582. package/dist/model/extensions/enervance/assets/EVImportanceScore.d.ts +9 -0
  583. package/dist/model/extensions/enervance/assets/EVImportanceScore.js +55 -0
  584. package/dist/model/extensions/enervance/assets/EVImportanceScore.js.map +1 -0
  585. package/dist/model/extensions/enervance/core/EVTerminal.d.ts +11 -0
  586. package/dist/model/extensions/enervance/core/EVTerminal.js +59 -0
  587. package/dist/model/extensions/enervance/core/EVTerminal.js.map +1 -0
  588. package/dist/model/extensions/enervance/operations/EVTerminalAction.d.ts +23 -0
  589. package/dist/model/extensions/enervance/operations/EVTerminalAction.js +112 -0
  590. package/dist/model/extensions/enervance/operations/EVTerminalAction.js.map +1 -0
  591. package/dist/model/extensions/neplan-westnetz/assets/WNFacility.d.ts +17 -0
  592. package/dist/model/extensions/neplan-westnetz/assets/WNFacility.js +108 -0
  593. package/dist/model/extensions/neplan-westnetz/assets/WNFacility.js.map +1 -0
  594. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.d.ts +33 -0
  595. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js +279 -0
  596. package/dist/model/extensions/neplan-westnetz/core/WNConnectivityNode.js.map +1 -0
  597. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.d.ts +19 -0
  598. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js +92 -0
  599. package/dist/model/extensions/neplan-westnetz/core/WNFeeder.js.map +1 -0
  600. package/dist/model/extensions/neplan-westnetz/faults/WNFaultConnectivityNode.d.ts +20 -0
  601. package/dist/model/extensions/neplan-westnetz/faults/WNFaultConnectivityNode.js +95 -0
  602. package/dist/model/extensions/neplan-westnetz/faults/WNFaultConnectivityNode.js.map +1 -0
  603. package/dist/model/extensions/neplan-westnetz/operations/WNOutage.d.ts +18 -0
  604. package/dist/model/extensions/neplan-westnetz/operations/WNOutage.js +97 -0
  605. package/dist/model/extensions/neplan-westnetz/operations/WNOutage.js.map +1 -0
  606. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.d.ts +36 -0
  607. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js +319 -0
  608. package/dist/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.js.map +1 -0
  609. package/dist/model/faults/EquipmentFault.d.ts +4 -0
  610. package/dist/model/faults/EquipmentFault.js +11 -0
  611. package/dist/model/faults/EquipmentFault.js.map +1 -0
  612. package/dist/model/faults/Fault.d.ts +13 -0
  613. package/dist/model/faults/Fault.js +31 -0
  614. package/dist/model/faults/Fault.js.map +1 -0
  615. package/dist/model/faults/LineFault.d.ts +4 -0
  616. package/dist/model/faults/LineFault.js +11 -0
  617. package/dist/model/faults/LineFault.js.map +1 -0
  618. package/dist/model/generation/FossilFuel.d.ts +12 -0
  619. package/dist/model/generation/FossilFuel.js +46 -0
  620. package/dist/model/generation/FossilFuel.js.map +1 -0
  621. package/dist/model/generation/FuelType.d.ts +8 -0
  622. package/dist/model/generation/FuelType.js +13 -0
  623. package/dist/model/generation/FuelType.js.map +1 -0
  624. package/dist/model/generation/GeneratingUnit.d.ts +32 -0
  625. package/dist/model/generation/GeneratingUnit.js +112 -0
  626. package/dist/model/generation/GeneratingUnit.js.map +1 -0
  627. package/dist/model/generation/GeneratorControlSource.d.ts +6 -0
  628. package/dist/model/generation/GeneratorControlSource.js +11 -0
  629. package/dist/model/generation/GeneratorControlSource.js.map +1 -0
  630. package/dist/model/generation/HydroEnergyConversionKind.d.ts +4 -0
  631. package/dist/model/generation/HydroEnergyConversionKind.js +9 -0
  632. package/dist/model/generation/HydroEnergyConversionKind.js.map +1 -0
  633. package/dist/model/generation/HydroGeneratingUnit.d.ts +8 -0
  634. package/dist/model/generation/HydroGeneratingUnit.js +11 -0
  635. package/dist/model/generation/HydroGeneratingUnit.js.map +1 -0
  636. package/dist/model/generation/HydroPlantStorageKind.d.ts +5 -0
  637. package/dist/model/generation/HydroPlantStorageKind.js +10 -0
  638. package/dist/model/generation/HydroPlantStorageKind.js.map +1 -0
  639. package/dist/model/generation/HydroPowerPlant.d.ts +8 -0
  640. package/dist/model/generation/HydroPowerPlant.js +13 -0
  641. package/dist/model/generation/HydroPowerPlant.js.map +1 -0
  642. package/dist/model/generation/HydroPump.d.ts +8 -0
  643. package/dist/model/generation/HydroPump.js +11 -0
  644. package/dist/model/generation/HydroPump.js.map +1 -0
  645. package/dist/model/generation/NuclearGeneratingUnit.d.ts +4 -0
  646. package/dist/model/generation/NuclearGeneratingUnit.js +11 -0
  647. package/dist/model/generation/NuclearGeneratingUnit.js.map +1 -0
  648. package/dist/model/generation/SolarGeneratingUnit.d.ts +4 -0
  649. package/dist/model/generation/SolarGeneratingUnit.js +11 -0
  650. package/dist/model/generation/SolarGeneratingUnit.js.map +1 -0
  651. package/dist/model/generation/ThermalGeneratingUnit.d.ts +11 -0
  652. package/dist/model/generation/ThermalGeneratingUnit.js +36 -0
  653. package/dist/model/generation/ThermalGeneratingUnit.js.map +1 -0
  654. package/dist/model/generation/WindGenUnitKind.d.ts +4 -0
  655. package/dist/model/generation/WindGenUnitKind.js +9 -0
  656. package/dist/model/generation/WindGenUnitKind.js.map +1 -0
  657. package/dist/model/generation/WindGeneratingUnit.d.ts +6 -0
  658. package/dist/model/generation/WindGeneratingUnit.js +11 -0
  659. package/dist/model/generation/WindGeneratingUnit.js.map +1 -0
  660. package/dist/model/loadmodel/ConformLoad.d.ts +8 -0
  661. package/dist/model/loadmodel/ConformLoad.js +30 -0
  662. package/dist/model/loadmodel/ConformLoad.js.map +1 -0
  663. package/dist/model/model/Model.d.ts +293 -0
  664. package/dist/model/model/Model.js +792 -0
  665. package/dist/model/model/Model.js.map +1 -0
  666. package/dist/model/operationallimits/CurrentLimit.d.ts +17 -0
  667. package/dist/model/operationallimits/CurrentLimit.js +79 -0
  668. package/dist/model/operationallimits/CurrentLimit.js.map +1 -0
  669. package/dist/model/operationallimits/ENTSOEOperationalLimitType.d.ts +5 -0
  670. package/dist/model/operationallimits/ENTSOEOperationalLimitType.js +10 -0
  671. package/dist/model/operationallimits/ENTSOEOperationalLimitType.js.map +1 -0
  672. package/dist/model/operationallimits/LimitTypeKind.d.ts +9 -0
  673. package/dist/model/operationallimits/LimitTypeKind.js +14 -0
  674. package/dist/model/operationallimits/LimitTypeKind.js.map +1 -0
  675. package/dist/model/operationallimits/OperationalLimit.d.ts +15 -0
  676. package/dist/model/operationallimits/OperationalLimit.js +62 -0
  677. package/dist/model/operationallimits/OperationalLimit.js.map +1 -0
  678. package/dist/model/operationallimits/OperationalLimitDirectionKind.d.ts +5 -0
  679. package/dist/model/operationallimits/OperationalLimitDirectionKind.js +10 -0
  680. package/dist/model/operationallimits/OperationalLimitDirectionKind.js.map +1 -0
  681. package/dist/model/operationallimits/OperationalLimitSet.d.ts +23 -0
  682. package/dist/model/operationallimits/OperationalLimitSet.js +104 -0
  683. package/dist/model/operationallimits/OperationalLimitSet.js.map +1 -0
  684. package/dist/model/operationallimits/OperationalLimitType.d.ts +20 -0
  685. package/dist/model/operationallimits/OperationalLimitType.js +74 -0
  686. package/dist/model/operationallimits/OperationalLimitType.js.map +1 -0
  687. package/dist/model/operations/Outage.d.ts +18 -0
  688. package/dist/model/operations/Outage.js +48 -0
  689. package/dist/model/operations/Outage.js.map +1 -0
  690. package/dist/model/operations/SwitchAction.d.ts +6 -0
  691. package/dist/model/operations/SwitchAction.js +11 -0
  692. package/dist/model/operations/SwitchAction.js.map +1 -0
  693. package/dist/model/operations/SwitchActionKind.d.ts +6 -0
  694. package/dist/model/operations/SwitchActionKind.js +11 -0
  695. package/dist/model/operations/SwitchActionKind.js.map +1 -0
  696. package/dist/model/operations/SwitchingAction.d.ts +14 -0
  697. package/dist/model/operations/SwitchingAction.js +32 -0
  698. package/dist/model/operations/SwitchingAction.js.map +1 -0
  699. package/dist/model/operations/SwitchingPlan.d.ts +26 -0
  700. package/dist/model/operations/SwitchingPlan.js +102 -0
  701. package/dist/model/operations/SwitchingPlan.js.map +1 -0
  702. package/dist/model/operations/UnplannedOutage.d.ts +4 -0
  703. package/dist/model/operations/UnplannedOutage.js +11 -0
  704. package/dist/model/operations/UnplannedOutage.js.map +1 -0
  705. package/dist/model/statevariables/StateVariable.d.ts +9 -0
  706. package/dist/model/statevariables/StateVariable.js +23 -0
  707. package/dist/model/statevariables/StateVariable.js.map +1 -0
  708. package/dist/model/statevariables/SvPowerFlow.d.ts +17 -0
  709. package/dist/model/statevariables/SvPowerFlow.js +60 -0
  710. package/dist/model/statevariables/SvPowerFlow.js.map +1 -0
  711. package/dist/model/statevariables/SvStatus.d.ts +12 -0
  712. package/dist/model/statevariables/SvStatus.js +45 -0
  713. package/dist/model/statevariables/SvStatus.js.map +1 -0
  714. package/dist/model/statevariables/SvTapStep.d.ts +12 -0
  715. package/dist/model/statevariables/SvTapStep.js +46 -0
  716. package/dist/model/statevariables/SvTapStep.js.map +1 -0
  717. package/dist/model/statevariables/SvVoltage.d.ts +16 -0
  718. package/dist/model/statevariables/SvVoltage.js +60 -0
  719. package/dist/model/statevariables/SvVoltage.js.map +1 -0
  720. package/dist/model/topology/TopologicalIsland.d.ts +13 -0
  721. package/dist/model/topology/TopologicalIsland.js +50 -0
  722. package/dist/model/topology/TopologicalIsland.js.map +1 -0
  723. package/dist/model/topology/TopologicalNode.d.ts +40 -0
  724. package/dist/model/topology/TopologicalNode.js +152 -0
  725. package/dist/model/topology/TopologicalNode.js.map +1 -0
  726. package/dist/model/wires/ACLineSegment.d.ts +33 -0
  727. package/dist/model/wires/ACLineSegment.js +206 -0
  728. package/dist/model/wires/ACLineSegment.js.map +1 -0
  729. package/dist/model/wires/AsynchronousMachine.d.ts +19 -0
  730. package/dist/model/wires/AsynchronousMachine.js +42 -0
  731. package/dist/model/wires/AsynchronousMachine.js.map +1 -0
  732. package/dist/model/wires/AsynchronousMachineKind.d.ts +4 -0
  733. package/dist/model/wires/AsynchronousMachineKind.js +9 -0
  734. package/dist/model/wires/AsynchronousMachineKind.js.map +1 -0
  735. package/dist/model/wires/Breaker.d.ts +12 -0
  736. package/dist/model/wires/Breaker.js +76 -0
  737. package/dist/model/wires/Breaker.js.map +1 -0
  738. package/dist/model/wires/BusbarSection.d.ts +12 -0
  739. package/dist/model/wires/BusbarSection.js +64 -0
  740. package/dist/model/wires/BusbarSection.js.map +1 -0
  741. package/dist/model/wires/Clamp.d.ts +6 -0
  742. package/dist/model/wires/Clamp.js +35 -0
  743. package/dist/model/wires/Clamp.js.map +1 -0
  744. package/dist/model/wires/CompositeSwitch.d.ts +5 -0
  745. package/dist/model/wires/CompositeSwitch.js +12 -0
  746. package/dist/model/wires/CompositeSwitch.js.map +1 -0
  747. package/dist/model/wires/Conductor.d.ts +13 -0
  748. package/dist/model/wires/Conductor.js +45 -0
  749. package/dist/model/wires/Conductor.js.map +1 -0
  750. package/dist/model/wires/Connector.d.ts +5 -0
  751. package/dist/model/wires/Connector.js +17 -0
  752. package/dist/model/wires/Connector.js.map +1 -0
  753. package/dist/model/wires/Cut.d.ts +4 -0
  754. package/dist/model/wires/Cut.js +11 -0
  755. package/dist/model/wires/Cut.js.map +1 -0
  756. package/dist/model/wires/Disconnector.d.ts +18 -0
  757. package/dist/model/wires/Disconnector.js +106 -0
  758. package/dist/model/wires/Disconnector.js.map +1 -0
  759. package/dist/model/wires/EarthFaultCompensator.d.ts +7 -0
  760. package/dist/model/wires/EarthFaultCompensator.js +19 -0
  761. package/dist/model/wires/EarthFaultCompensator.js.map +1 -0
  762. package/dist/model/wires/EnergyConsumer.d.ts +37 -0
  763. package/dist/model/wires/EnergyConsumer.js +189 -0
  764. package/dist/model/wires/EnergyConsumer.js.map +1 -0
  765. package/dist/model/wires/EnergySource.d.ts +41 -0
  766. package/dist/model/wires/EnergySource.js +198 -0
  767. package/dist/model/wires/EnergySource.js.map +1 -0
  768. package/dist/model/wires/ExternalNetworkInjection.d.ts +46 -0
  769. package/dist/model/wires/ExternalNetworkInjection.js +195 -0
  770. package/dist/model/wires/ExternalNetworkInjection.js.map +1 -0
  771. package/dist/model/wires/Ground.d.ts +8 -0
  772. package/dist/model/wires/Ground.js +38 -0
  773. package/dist/model/wires/Ground.js.map +1 -0
  774. package/dist/model/wires/GroundDisconnector.d.ts +8 -0
  775. package/dist/model/wires/GroundDisconnector.js +38 -0
  776. package/dist/model/wires/GroundDisconnector.js.map +1 -0
  777. package/dist/model/wires/Jumper.d.ts +4 -0
  778. package/dist/model/wires/Jumper.js +11 -0
  779. package/dist/model/wires/Jumper.js.map +1 -0
  780. package/dist/model/wires/Junction.d.ts +10 -0
  781. package/dist/model/wires/Junction.js +51 -0
  782. package/dist/model/wires/Junction.js.map +1 -0
  783. package/dist/model/wires/Line.d.ts +20 -0
  784. package/dist/model/wires/Line.js +101 -0
  785. package/dist/model/wires/Line.js.map +1 -0
  786. package/dist/model/wires/LoadBreakSwitch.d.ts +16 -0
  787. package/dist/model/wires/LoadBreakSwitch.js +93 -0
  788. package/dist/model/wires/LoadBreakSwitch.js.map +1 -0
  789. package/dist/model/wires/PetersenCoil.d.ts +19 -0
  790. package/dist/model/wires/PetersenCoil.js +71 -0
  791. package/dist/model/wires/PetersenCoil.js.map +1 -0
  792. package/dist/model/wires/PetersenCoilModeKind.d.ts +5 -0
  793. package/dist/model/wires/PetersenCoilModeKind.js +10 -0
  794. package/dist/model/wires/PetersenCoilModeKind.js.map +1 -0
  795. package/dist/model/wires/Plant.d.ts +5 -0
  796. package/dist/model/wires/Plant.js +12 -0
  797. package/dist/model/wires/Plant.js.map +1 -0
  798. package/dist/model/wires/PowerTransformer.d.ts +30 -0
  799. package/dist/model/wires/PowerTransformer.js +170 -0
  800. package/dist/model/wires/PowerTransformer.js.map +1 -0
  801. package/dist/model/wires/PowerTransformerEnd.d.ts +33 -0
  802. package/dist/model/wires/PowerTransformerEnd.js +147 -0
  803. package/dist/model/wires/PowerTransformerEnd.js.map +1 -0
  804. package/dist/model/wires/ProtectedSwitch.d.ts +4 -0
  805. package/dist/model/wires/ProtectedSwitch.js +11 -0
  806. package/dist/model/wires/ProtectedSwitch.js.map +1 -0
  807. package/dist/model/wires/RatioTapChanger.d.ts +15 -0
  808. package/dist/model/wires/RatioTapChanger.js +64 -0
  809. package/dist/model/wires/RatioTapChanger.js.map +1 -0
  810. package/dist/model/wires/RatioTapChangerTable.d.ts +10 -0
  811. package/dist/model/wires/RatioTapChangerTable.js +30 -0
  812. package/dist/model/wires/RatioTapChangerTable.js.map +1 -0
  813. package/dist/model/wires/RatioTapChangerTablePoint.d.ts +11 -0
  814. package/dist/model/wires/RatioTapChangerTablePoint.js +42 -0
  815. package/dist/model/wires/RatioTapChangerTablePoint.js.map +1 -0
  816. package/dist/model/wires/ReactiveCapabilityCurve.d.ts +10 -0
  817. package/dist/model/wires/ReactiveCapabilityCurve.js +31 -0
  818. package/dist/model/wires/ReactiveCapabilityCurve.js.map +1 -0
  819. package/dist/model/wires/Recloser.d.ts +6 -0
  820. package/dist/model/wires/Recloser.js +35 -0
  821. package/dist/model/wires/Recloser.js.map +1 -0
  822. package/dist/model/wires/RegulatingCondEq.d.ts +15 -0
  823. package/dist/model/wires/RegulatingCondEq.js +55 -0
  824. package/dist/model/wires/RegulatingCondEq.js.map +1 -0
  825. package/dist/model/wires/RegulatingControl.d.ts +32 -0
  826. package/dist/model/wires/RegulatingControl.js +139 -0
  827. package/dist/model/wires/RegulatingControl.js.map +1 -0
  828. package/dist/model/wires/RegulatingControlModeKind.d.ts +10 -0
  829. package/dist/model/wires/RegulatingControlModeKind.js +15 -0
  830. package/dist/model/wires/RegulatingControlModeKind.js.map +1 -0
  831. package/dist/model/wires/RotatingMachine.d.ts +27 -0
  832. package/dist/model/wires/RotatingMachine.js +112 -0
  833. package/dist/model/wires/RotatingMachine.js.map +1 -0
  834. package/dist/model/wires/SeriesCompensator.d.ts +7 -0
  835. package/dist/model/wires/SeriesCompensator.js +41 -0
  836. package/dist/model/wires/SeriesCompensator.js.map +1 -0
  837. package/dist/model/wires/ShortCircuitRotorKind.d.ts +6 -0
  838. package/dist/model/wires/ShortCircuitRotorKind.js +11 -0
  839. package/dist/model/wires/ShortCircuitRotorKind.js.map +1 -0
  840. package/dist/model/wires/Switch.d.ts +33 -0
  841. package/dist/model/wires/Switch.js +166 -0
  842. package/dist/model/wires/Switch.js.map +1 -0
  843. package/dist/model/wires/SynchronousMachine.d.ts +50 -0
  844. package/dist/model/wires/SynchronousMachine.js +193 -0
  845. package/dist/model/wires/SynchronousMachine.js.map +1 -0
  846. package/dist/model/wires/SynchronousMachineKind.d.ts +9 -0
  847. package/dist/model/wires/SynchronousMachineKind.js +14 -0
  848. package/dist/model/wires/SynchronousMachineKind.js.map +1 -0
  849. package/dist/model/wires/SynchronousMachineOperatingMode.d.ts +5 -0
  850. package/dist/model/wires/SynchronousMachineOperatingMode.js +10 -0
  851. package/dist/model/wires/SynchronousMachineOperatingMode.js.map +1 -0
  852. package/dist/model/wires/TapChanger.d.ts +19 -0
  853. package/dist/model/wires/TapChanger.js +41 -0
  854. package/dist/model/wires/TapChanger.js.map +1 -0
  855. package/dist/model/wires/TapChangerControl.d.ts +9 -0
  856. package/dist/model/wires/TapChangerControl.js +28 -0
  857. package/dist/model/wires/TapChangerControl.js.map +1 -0
  858. package/dist/model/wires/TapChangerTablePoint.d.ts +12 -0
  859. package/dist/model/wires/TapChangerTablePoint.js +34 -0
  860. package/dist/model/wires/TapChangerTablePoint.js.map +1 -0
  861. package/dist/model/wires/TransformerControlMode.d.ts +4 -0
  862. package/dist/model/wires/TransformerControlMode.js +9 -0
  863. package/dist/model/wires/TransformerControlMode.js.map +1 -0
  864. package/dist/model/wires/TransformerEnd.d.ts +31 -0
  865. package/dist/model/wires/TransformerEnd.js +108 -0
  866. package/dist/model/wires/TransformerEnd.js.map +1 -0
  867. package/dist/model/wires/WindingConnection.d.ts +9 -0
  868. package/dist/model/wires/WindingConnection.js +14 -0
  869. package/dist/model/wires/WindingConnection.js.map +1 -0
  870. package/dist/package.json +16 -0
  871. package/dist/util/datatype-converter.d.ts +3 -0
  872. package/dist/util/datatype-converter.js +49 -0
  873. package/dist/util/datatype-converter.js.map +1 -0
  874. package/dist/util/sparql/sparql-building-block.d.ts +15 -0
  875. package/dist/util/sparql/sparql-building-block.js +31 -0
  876. package/dist/util/sparql/sparql-building-block.js.map +1 -0
  877. package/dist/util/sparql/sparql-utils.d.ts +3 -0
  878. package/dist/util/sparql/sparql-utils.js +28 -0
  879. package/dist/util/sparql/sparql-utils.js.map +1 -0
  880. package/dist/util/util-create.d.ts +11 -0
  881. package/dist/util/util-create.js +113 -0
  882. package/dist/util/util-create.js.map +1 -0
  883. package/dist/util/util-search.d.ts +8 -0
  884. package/dist/util/util-search.js +41 -0
  885. package/dist/util/util-search.js.map +1 -0
  886. package/dist/util/util-topology.d.ts +14 -0
  887. package/dist/util/util-topology.js +144 -0
  888. package/dist/util/util-topology.js.map +1 -0
  889. package/dist/util/utils.d.ts +25 -0
  890. package/dist/util/utils.js +221 -0
  891. package/dist/util/utils.js.map +1 -0
  892. package/dist/util/xml/utils.parser.d.ts +3 -0
  893. package/dist/util/xml/utils.parser.js +32 -0
  894. package/dist/util/xml/utils.parser.js.map +1 -0
  895. package/dist/util/xml/xml.parser.d.ts +16 -0
  896. package/dist/util/xml/xml.parser.js +98 -0
  897. package/dist/util/xml/xml.parser.js.map +1 -0
  898. package/dist/util/xml/xml.serializer.d.ts +12 -0
  899. package/dist/util/xml/xml.serializer.js +135 -0
  900. package/dist/util/xml/xml.serializer.js.map +1 -0
  901. package/jasmine/jasmine_all.json +13 -0
  902. package/jasmine/jasmine_fuseki_interface.json +13 -0
  903. package/jasmine/jasmine_fuseki_psdm.json +13 -0
  904. package/jasmine/jasmine_integral_7.json +13 -0
  905. package/jasmine/jasmine_psdm.json +13 -0
  906. package/package.json +73 -0
  907. package/src/config/lew-sincal/lew-sincal-load.config.ts +58 -0
  908. package/src/config/power-system-datamodel/psdm-load.config.ts +57 -0
  909. package/src/config/westnetz-integral7/integral7-load.config.ts +53 -0
  910. package/src/config/westnetz-neplan/callbacks/cb-connectivitynode.ts +159 -0
  911. package/src/config/westnetz-neplan/callbacks/cb-psr.ts +30 -0
  912. package/src/config/westnetz-neplan/callbacks/cb-wnenergyconsumer.ts +70 -0
  913. package/src/config/westnetz-neplan/neplan-load.config.ts +130 -0
  914. package/src/config/westnetz-neplan/property-handler-westenergy.config.ts +52 -0
  915. package/src/constants/cim-class-definition.ts +149 -0
  916. package/src/constants/cim-class-names.ts +108 -0
  917. package/src/constants/cim-constants.ts +5 -0
  918. package/src/constants/init-data/ASSET_HEALTH_EVENTS.ts +45 -0
  919. package/src/constants/init-data/ASSSET_OWNER.ts +11 -0
  920. package/src/constants/init-data/JENA_SPARQL.ts +328 -0
  921. package/src/constants/init-data/PSR_TYPES.ts +75 -0
  922. package/src/constants/init-data/xml/AssetHealtEvent.xml +45 -0
  923. package/src/constants/init-data/xml/AssetOwner.xml +11 -0
  924. package/src/constants/init-data/xml/PsrType.xml +80 -0
  925. package/src/constants/rdf-xml.ts +52 -0
  926. package/src/converter/PSDM/ConverterPowerSystemDataModel.ts +546 -0
  927. package/src/converter/PSDM/model/FixedFeedIn.ts +28 -0
  928. package/src/converter/PSDM/model/Line.ts +39 -0
  929. package/src/converter/PSDM/model/LineType.ts +29 -0
  930. package/src/converter/PSDM/model/Load.ts +38 -0
  931. package/src/converter/PSDM/model/Node.ts +16 -0
  932. package/src/converter/PSDM/model/TimeSeriesMapping.ts +13 -0
  933. package/src/converter/PSDM/model/Transformer.ts +34 -0
  934. package/src/converter/PSDM/model/TransformerType.ts +49 -0
  935. package/src/converter/PSDM/model/geo/Crs.ts +4 -0
  936. package/src/converter/PSDM/model/geo/GeoPosition.ts +7 -0
  937. package/src/converter/integral7/ConverterIntegral7.ts +3508 -0
  938. package/src/converter/integral7/config/db-config.ts +12 -0
  939. package/src/converter/integral7/config/generation-unit-fuel-types.ts +51 -0
  940. package/src/converter/integral7/config/integral-prefix.ts +20 -0
  941. package/src/converter/integral7/model/integral/BaseClass.ts +28 -0
  942. package/src/converter/integral7/model/integral/BaseClassNsg.ts +21 -0
  943. package/src/converter/integral7/model/integral/KnotenSo.ts +41 -0
  944. package/src/converter/integral7/model/integral/KnotenSoNsg.ts +24 -0
  945. package/src/converter/integral7/model/integral/Leitung.ts +73 -0
  946. package/src/converter/integral7/model/integral/LeitungNsg.ts +46 -0
  947. package/src/converter/integral7/model/integral/Point.ts +14 -0
  948. package/src/converter/integral7/model/integral/Schaltanlage.ts +151 -0
  949. package/src/converter/integral7/model/integral/SchaltanlageNSG.ts +30 -0
  950. package/src/converter/integral7/model/integral/Schaltanlagenabschnitt.ts +44 -0
  951. package/src/converter/integral7/model/integral/SchaltanlagenabschnittNsg.ts +27 -0
  952. package/src/converter/integral7/model/integral/Schaltfeld.ts +116 -0
  953. package/src/converter/integral7/model/integral/SchaltfeldNsg.ts +35 -0
  954. package/src/converter/integral7/model/integral/Standort.ts +53 -0
  955. package/src/converter/integral7/model/integral/StandortNsg.ts +24 -0
  956. package/src/converter/integral7/model/integral/Trafo2w.ts +22 -0
  957. package/src/converter/integral7/model/integral/Trafo2wNsg.ts +13 -0
  958. package/src/converter/integral7/model/interfaces.ts +443 -0
  959. package/src/converter/integral7/sql/integral.sql.ts +319 -0
  960. package/src/converter/integral7/utils-schema.ts +50 -0
  961. package/src/converter/integral7/utils-trafo3w.ts +321 -0
  962. package/src/converter/integral7/utils.ts +653 -0
  963. package/src/etl-neplan/etl-neplan-contingency-analysis.ts +170 -0
  964. package/src/etl-neplan/etl-neplan-feederline.ts +138 -0
  965. package/src/etl-neplan/etl-neplan.ts +343 -0
  966. package/src/index.ts +291 -0
  967. package/src/interfaces/model/assets/IAsset.ts +5 -0
  968. package/src/interfaces/model/assets/IAssetContainer.ts +5 -0
  969. package/src/interfaces/model/assets/IFacility.ts +5 -0
  970. package/src/interfaces/model/common/IDocument.ts +5 -0
  971. package/src/interfaces/model/core/IACDCTerminal.ts +8 -0
  972. package/src/interfaces/model/core/IBaseVoltage.ts +7 -0
  973. package/src/interfaces/model/core/IConductingEquipment.ts +16 -0
  974. package/src/interfaces/model/core/IConnectivityNode.ts +27 -0
  975. package/src/interfaces/model/core/IConnectivityNodeContainer.ts +11 -0
  976. package/src/interfaces/model/core/IEquipment.ts +11 -0
  977. package/src/interfaces/model/core/IEquipmentContainer.ts +12 -0
  978. package/src/interfaces/model/core/IFeeder.ts +21 -0
  979. package/src/interfaces/model/core/IIdentifiedObject.ts +108 -0
  980. package/src/interfaces/model/core/IPowerSystemResource.ts +3 -0
  981. package/src/interfaces/model/core/ISubstation.ts +8 -0
  982. package/src/interfaces/model/core/ITerminal.ts +57 -0
  983. package/src/interfaces/model/core/IVoltageLevel.ts +14 -0
  984. package/src/interfaces/model/diagram/IDiagram.ts +21 -0
  985. package/src/interfaces/model/diagram/IDiagramObject.ts +21 -0
  986. package/src/interfaces/model/diagram/IDiagramObjectPoint.ts +16 -0
  987. package/src/interfaces/model/domain/IActivePower.ts +3 -0
  988. package/src/interfaces/model/domain/IAngleDegrees.ts +3 -0
  989. package/src/interfaces/model/domain/IApparentPower.ts +3 -0
  990. package/src/interfaces/model/domain/ICurrentFlow.ts +3 -0
  991. package/src/interfaces/model/domain/IDataType.ts +9 -0
  992. package/src/interfaces/model/domain/IReactivePower.ts +3 -0
  993. package/src/interfaces/model/domain/IVoltage.ts +3 -0
  994. package/src/interfaces/model/domain/UnitMultiplier.ts +13 -0
  995. package/src/interfaces/model/domain/UnitSymbol.ts +30 -0
  996. package/src/interfaces/model/enums/EnumShapeInfo.ts +5 -0
  997. package/src/interfaces/model/faults/IFault.ts +11 -0
  998. package/src/interfaces/model/model/IModel.ts +91 -0
  999. package/src/interfaces/model/operations/IOutage.ts +23 -0
  1000. package/src/interfaces/model/operations/ISwitchingAction.ts +9 -0
  1001. package/src/interfaces/model/operations/ISwitchingPlan.ts +26 -0
  1002. package/src/interfaces/model/statevariables/ISvPowerFlow.ts +20 -0
  1003. package/src/interfaces/model/statevariables/ISvVoltage.ts +16 -0
  1004. package/src/interfaces/model/topology/ITopologicalIsland.ts +11 -0
  1005. package/src/interfaces/model/topology/ITopologicalNode.ts +24 -0
  1006. package/src/interfaces/model/wires/IACLineSegment.ts +4 -0
  1007. package/src/interfaces/model/wires/IBusbarSection.ts +4 -0
  1008. package/src/interfaces/model/wires/ICompositeSwitch.ts +6 -0
  1009. package/src/interfaces/model/wires/IConductor.ts +6 -0
  1010. package/src/interfaces/model/wires/IConnector.ts +5 -0
  1011. package/src/interfaces/model/wires/IDisconnector.ts +4 -0
  1012. package/src/interfaces/model/wires/IEnergyConsumer.ts +7 -0
  1013. package/src/interfaces/model/wires/IEnergySource.ts +20 -0
  1014. package/src/interfaces/model/wires/IExternalNetworkInjection.ts +34 -0
  1015. package/src/interfaces/model/wires/ILoadBreakSwitch.ts +4 -0
  1016. package/src/interfaces/model/wires/IPowerTransformer.ts +7 -0
  1017. package/src/interfaces/model/wires/IPowerTransformerEnd.ts +10 -0
  1018. package/src/interfaces/model/wires/IProtectedSwitch.ts +4 -0
  1019. package/src/interfaces/model/wires/IRegulatingCondEq.ts +4 -0
  1020. package/src/interfaces/model/wires/ISwitch.ts +11 -0
  1021. package/src/interfaces/model/wires/ITransformerEnd.ts +14 -0
  1022. package/src/interfaces/observable/IObservable.ts +6 -0
  1023. package/src/interfaces/observable/IObserver.ts +3 -0
  1024. package/src/interfaces/persistence-interfaces.ts +12 -0
  1025. package/src/interfaces/schema-settings/ShapeInfos.ts +28 -0
  1026. package/src/model/assetinfo/AssetInfo.ts +13 -0
  1027. package/src/model/assetinfo/CableInfo.ts +8 -0
  1028. package/src/model/assetinfo/OverheadWireInfo.ts +8 -0
  1029. package/src/model/assetinfo/PowerTransformer2WInfo.ts +13 -0
  1030. package/src/model/assetinfo/PowerTransformer3WInfo.ts +18 -0
  1031. package/src/model/assetinfo/PowerTransformerInfo.ts +14 -0
  1032. package/src/model/assetinfo/TapChangerInfo.ts +60 -0
  1033. package/src/model/assetinfo/TransformerEndInfo.ts +38 -0
  1034. package/src/model/assetinfo/WireInfo.ts +22 -0
  1035. package/src/model/assets/AggregateScore.ts +9 -0
  1036. package/src/model/assets/AnalyticScore.ts +41 -0
  1037. package/src/model/assets/Asset.ts +164 -0
  1038. package/src/model/assets/AssetContainer.ts +11 -0
  1039. package/src/model/assets/AssetDeployment.ts +122 -0
  1040. package/src/model/assets/AssetHealthEvent.ts +73 -0
  1041. package/src/model/assets/AssetOrganisationRole.ts +51 -0
  1042. package/src/model/assets/AssetOwner.ts +54 -0
  1043. package/src/model/assets/DeploymentDate.ts +20 -0
  1044. package/src/model/assets/DeploymentStateKind.ts +7 -0
  1045. package/src/model/assets/Facility.ts +107 -0
  1046. package/src/model/assets/FacilityKind.ts +9 -0
  1047. package/src/model/assets/HealthScore.ts +59 -0
  1048. package/src/model/assets/LifecycleDate.ts +17 -0
  1049. package/src/model/assets/RiskScore.ts +7 -0
  1050. package/src/model/assets/TransformerApplicationKind.ts +6 -0
  1051. package/src/model/common/ActivityRecord.ts +93 -0
  1052. package/src/model/common/CoordinateSystem.ts +81 -0
  1053. package/src/model/common/Document.ts +9 -0
  1054. package/src/model/common/Location.ts +237 -0
  1055. package/src/model/common/OrganisationRole.ts +7 -0
  1056. package/src/model/common/PositionPoint.ts +121 -0
  1057. package/src/model/common/Status.ts +11 -0
  1058. package/src/model/core/ACDCTerminal.ts +63 -0
  1059. package/src/model/core/BaseVoltage.ts +129 -0
  1060. package/src/model/core/Bay.ts +178 -0
  1061. package/src/model/core/ConductingEquipment.ts +182 -0
  1062. package/src/model/core/ConnectivityNode.ts +417 -0
  1063. package/src/model/core/ConnectivityNodeContainer.ts +26 -0
  1064. package/src/model/core/Curve.ts +55 -0
  1065. package/src/model/core/CurveData.ts +74 -0
  1066. package/src/model/core/CurveStyle.ts +4 -0
  1067. package/src/model/core/Equipment.ts +184 -0
  1068. package/src/model/core/EquipmentContainer.ts +40 -0
  1069. package/src/model/core/Feeder.ts +186 -0
  1070. package/src/model/core/GeographicalRegion.ts +34 -0
  1071. package/src/model/core/IdentifiedObject.ts +393 -0
  1072. package/src/model/core/PSRType.ts +167 -0
  1073. package/src/model/core/PhaseCode.ts +23 -0
  1074. package/src/model/core/PowerSystemResource.ts +113 -0
  1075. package/src/model/core/SubGeographicalRegion.ts +58 -0
  1076. package/src/model/core/Substation.ts +284 -0
  1077. package/src/model/core/Terminal.ts +413 -0
  1078. package/src/model/core/VoltageLevel.ts +193 -0
  1079. package/src/model/diagram/Diagram.ts +136 -0
  1080. package/src/model/diagram/DiagramObject.ts +338 -0
  1081. package/src/model/diagram/DiagramObjectPoint.ts +196 -0
  1082. package/src/model/diagram/DiagramStyle.ts +32 -0
  1083. package/src/model/diagram/OrientationKind.ts +4 -0
  1084. package/src/model/domain/ActivePower.ts +14 -0
  1085. package/src/model/domain/AngleDegrees.ts +14 -0
  1086. package/src/model/domain/ApparentPower.ts +14 -0
  1087. package/src/model/domain/Capacitance.ts +15 -0
  1088. package/src/model/domain/CapacitancePerLength.ts +15 -0
  1089. package/src/model/domain/ConductancePerLength.ts +14 -0
  1090. package/src/model/domain/CurrentFlow.ts +14 -0
  1091. package/src/model/domain/Reactance.ts +15 -0
  1092. package/src/model/domain/ReactancePerLength.ts +14 -0
  1093. package/src/model/domain/ReactivePower.ts +14 -0
  1094. package/src/model/domain/Resistance.ts +14 -0
  1095. package/src/model/domain/ResistancePerLength.ts +14 -0
  1096. package/src/model/domain/UnitMultiplier.ts +13 -0
  1097. package/src/model/domain/UnitSymbol.ts +30 -0
  1098. package/src/model/domain/Voltage.ts +14 -0
  1099. package/src/model/equivalents/EquivalentBranch.ts +203 -0
  1100. package/src/model/equivalents/EquivalentEquipment.ts +8 -0
  1101. package/src/model/extensions/amprion/core/AMPRIONBay.ts +106 -0
  1102. package/src/model/extensions/amprion/core/AMPRIONConnectivityNode.ts +51 -0
  1103. package/src/model/extensions/enervance/assets/EVImportanceScore.ts +58 -0
  1104. package/src/model/extensions/enervance/core/EVTerminal.ts +63 -0
  1105. package/src/model/extensions/enervance/operations/EVTerminalAction.ts +148 -0
  1106. package/src/model/extensions/neplan-westnetz/assets/WNFacility.ts +122 -0
  1107. package/src/model/extensions/neplan-westnetz/core/WNConnectivityNode.ts +344 -0
  1108. package/src/model/extensions/neplan-westnetz/core/WNFeeder.ts +115 -0
  1109. package/src/model/extensions/neplan-westnetz/faults/WNFaultConnectivityNode.ts +113 -0
  1110. package/src/model/extensions/neplan-westnetz/operations/WNOutage.ts +111 -0
  1111. package/src/model/extensions/neplan-westnetz/wires/WNEnergyConsumer.ts +451 -0
  1112. package/src/model/faults/EquipmentFault.ts +9 -0
  1113. package/src/model/faults/Fault.ts +41 -0
  1114. package/src/model/faults/LineFault.ts +10 -0
  1115. package/src/model/generation/FossilFuel.ts +53 -0
  1116. package/src/model/generation/FuelType.ts +8 -0
  1117. package/src/model/generation/GeneratingUnit.ts +157 -0
  1118. package/src/model/generation/GeneratorControlSource.ts +6 -0
  1119. package/src/model/generation/HydroEnergyConversionKind.ts +4 -0
  1120. package/src/model/generation/HydroGeneratingUnit.ts +14 -0
  1121. package/src/model/generation/HydroPlantStorageKind.ts +5 -0
  1122. package/src/model/generation/HydroPowerPlant.ts +13 -0
  1123. package/src/model/generation/HydroPump.ts +13 -0
  1124. package/src/model/generation/NuclearGeneratingUnit.ts +8 -0
  1125. package/src/model/generation/SolarGeneratingUnit.ts +8 -0
  1126. package/src/model/generation/ThermalGeneratingUnit.ts +42 -0
  1127. package/src/model/generation/WindGenUnitKind.ts +4 -0
  1128. package/src/model/generation/WindGeneratingUnit.ts +11 -0
  1129. package/src/model/loadmodel/ConformLoad.ts +34 -0
  1130. package/src/model/model/Model.ts +1129 -0
  1131. package/src/model/operationallimits/CurrentLimit.ts +92 -0
  1132. package/src/model/operationallimits/ENTSOEOperationalLimitType.ts +5 -0
  1133. package/src/model/operationallimits/LimitTypeKind.ts +9 -0
  1134. package/src/model/operationallimits/OperationalLimit.ts +68 -0
  1135. package/src/model/operationallimits/OperationalLimitDirectionKind.ts +5 -0
  1136. package/src/model/operationallimits/OperationalLimitSet.ts +124 -0
  1137. package/src/model/operationallimits/OperationalLimitType.ts +94 -0
  1138. package/src/model/operations/Outage.ts +68 -0
  1139. package/src/model/operations/SwitchAction.ts +12 -0
  1140. package/src/model/operations/SwitchActionKind.ts +6 -0
  1141. package/src/model/operations/SwitchingAction.ts +43 -0
  1142. package/src/model/operations/SwitchingPlan.ts +141 -0
  1143. package/src/model/operations/UnplannedOutage.ts +9 -0
  1144. package/src/model/statevariables/StateVariable.ts +28 -0
  1145. package/src/model/statevariables/SvPowerFlow.ts +75 -0
  1146. package/src/model/statevariables/SvStatus.ts +51 -0
  1147. package/src/model/statevariables/SvTapStep.ts +54 -0
  1148. package/src/model/statevariables/SvVoltage.ts +74 -0
  1149. package/src/model/topology/TopologicalIsland.ts +57 -0
  1150. package/src/model/topology/TopologicalNode.ts +203 -0
  1151. package/src/model/wires/ACLineSegment.ts +293 -0
  1152. package/src/model/wires/AsynchronousMachine.ts +56 -0
  1153. package/src/model/wires/AsynchronousMachineKind.ts +5 -0
  1154. package/src/model/wires/Breaker.ts +82 -0
  1155. package/src/model/wires/BusbarSection.ts +70 -0
  1156. package/src/model/wires/Clamp.ts +33 -0
  1157. package/src/model/wires/CompositeSwitch.ts +13 -0
  1158. package/src/model/wires/Conductor.ts +55 -0
  1159. package/src/model/wires/Connector.ts +16 -0
  1160. package/src/model/wires/Cut.ts +7 -0
  1161. package/src/model/wires/Disconnector.ts +120 -0
  1162. package/src/model/wires/EarthFaultCompensator.ts +20 -0
  1163. package/src/model/wires/EnergyConsumer.ts +255 -0
  1164. package/src/model/wires/EnergySource.ts +303 -0
  1165. package/src/model/wires/ExternalNetworkInjection.ts +276 -0
  1166. package/src/model/wires/Ground.ts +40 -0
  1167. package/src/model/wires/GroundDisconnector.ts +39 -0
  1168. package/src/model/wires/Jumper.ts +8 -0
  1169. package/src/model/wires/Junction.ts +57 -0
  1170. package/src/model/wires/Line.ts +117 -0
  1171. package/src/model/wires/LoadBreakSwitch.ts +107 -0
  1172. package/src/model/wires/PetersenCoil.ts +90 -0
  1173. package/src/model/wires/PetersenCoilModeKind.ts +5 -0
  1174. package/src/model/wires/Plant.ts +12 -0
  1175. package/src/model/wires/PowerTransformer.ts +231 -0
  1176. package/src/model/wires/PowerTransformerEnd.ts +168 -0
  1177. package/src/model/wires/ProtectedSwitch.ts +9 -0
  1178. package/src/model/wires/RatioTapChanger.ts +96 -0
  1179. package/src/model/wires/RatioTapChangerTable.ts +35 -0
  1180. package/src/model/wires/RatioTapChangerTablePoint.ts +45 -0
  1181. package/src/model/wires/ReactiveCapabilityCurve.ts +35 -0
  1182. package/src/model/wires/Recloser.ts +32 -0
  1183. package/src/model/wires/RegulatingCondEq.ts +67 -0
  1184. package/src/model/wires/RegulatingControl.ts +217 -0
  1185. package/src/model/wires/RegulatingControlModeKind.ts +11 -0
  1186. package/src/model/wires/RotatingMachine.ts +172 -0
  1187. package/src/model/wires/SeriesCompensator.ts +40 -0
  1188. package/src/model/wires/ShortCircuitRotorKind.ts +6 -0
  1189. package/src/model/wires/Switch.ts +223 -0
  1190. package/src/model/wires/SynchronousMachine.ts +267 -0
  1191. package/src/model/wires/SynchronousMachineKind.ts +9 -0
  1192. package/src/model/wires/SynchronousMachineOperatingMode.ts +5 -0
  1193. package/src/model/wires/TapChanger.ts +55 -0
  1194. package/src/model/wires/TapChangerControl.ts +32 -0
  1195. package/src/model/wires/TapChangerTablePoint.ts +41 -0
  1196. package/src/model/wires/TransformerControlMode.ts +4 -0
  1197. package/src/model/wires/TransformerEnd.ts +143 -0
  1198. package/src/model/wires/WindingConnection.ts +9 -0
  1199. package/src/package.json +16 -0
  1200. package/src/util/datatype-converter.ts +48 -0
  1201. package/src/util/sparql/sparql-building-block.ts +43 -0
  1202. package/src/util/sparql/sparql-utils.ts +150 -0
  1203. package/src/util/util-create.ts +146 -0
  1204. package/src/util/util-search.ts +40 -0
  1205. package/src/util/util-topology.ts +164 -0
  1206. package/src/util/utils.ts +255 -0
  1207. package/src/util/xml/utils.parser.ts +29 -0
  1208. package/src/util/xml/xml.parser.ts +107 -0
  1209. package/src/util/xml/xml.serializer.ts +245 -0
  1210. package/test/apache-jena-fuseki-interface/apache-jena-fuseki-neplan.tests.spec.ts +864 -0
  1211. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/LICENSE +617 -0
  1212. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/NOTICE +216 -0
  1213. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/README +62 -0
  1214. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-delete +725 -0
  1215. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-get +725 -0
  1216. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-head +725 -0
  1217. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-post +725 -0
  1218. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-put +725 -0
  1219. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-query +725 -0
  1220. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-update +725 -0
  1221. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/s-update-form +725 -0
  1222. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/bin/soh +725 -0
  1223. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki +512 -0
  1224. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki-backup +34 -0
  1225. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki-server +95 -0
  1226. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki-server.bat +28 -0
  1227. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki-server.jar +0 -0
  1228. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki.service +59 -0
  1229. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/fuseki.war +0 -0
  1230. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/config.ttl +30 -0
  1231. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/configuration/test.ttl +50 -0
  1232. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/shiro.ini +38 -0
  1233. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/GOSP.dat +0 -0
  1234. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/GOSP.idn +0 -0
  1235. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/GPOS.dat +0 -0
  1236. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/GPOS.idn +0 -0
  1237. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/GSPO.dat +0 -0
  1238. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/GSPO.idn +0 -0
  1239. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/OSP.dat +0 -0
  1240. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/OSP.idn +0 -0
  1241. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/OSPG.dat +0 -0
  1242. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/OSPG.idn +0 -0
  1243. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/POS.dat +0 -0
  1244. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/POS.idn +0 -0
  1245. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/POSG.dat +0 -0
  1246. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/POSG.idn +0 -0
  1247. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/SPO.dat +0 -0
  1248. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/SPO.idn +0 -0
  1249. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/SPOG.dat +0 -0
  1250. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/SPOG.idn +0 -0
  1251. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/journal.jrnl +0 -0
  1252. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/node2id.dat +0 -0
  1253. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/node2id.idn +0 -0
  1254. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/nodes.dat +0 -0
  1255. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/prefix2id.dat +0 -0
  1256. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/prefix2id.idn +0 -0
  1257. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/prefixIdx.dat +0 -0
  1258. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/prefixIdx.idn +0 -0
  1259. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/prefixes.dat +0 -0
  1260. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/tdb.cfg +32 -0
  1261. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/tdb.lock +1 -0
  1262. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-mem +27 -0
  1263. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-service +23 -0
  1264. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-tdb +31 -0
  1265. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-tdb-dir +30 -0
  1266. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-tdb-mem +30 -0
  1267. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-tdb2 +31 -0
  1268. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-tdb2-dir +30 -0
  1269. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/templates/config-tdb2-mem +30 -0
  1270. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/WEB-INF/web.xml +332 -0
  1271. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/admin-logs.html +73 -0
  1272. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/bootstrap-select.min.css +7 -0
  1273. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/bootstrap-theme.css.map +1 -0
  1274. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/bootstrap-theme.min.css +7 -0
  1275. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/bootstrap.css.map +1 -0
  1276. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/bootstrap.min.css +7 -0
  1277. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/codemirror.css +301 -0
  1278. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/codemirror.min.css +1 -0
  1279. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/font-awesome.min.css +4 -0
  1280. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/fui.css +191 -0
  1281. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/jquery.dataTables.css +220 -0
  1282. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/jquery.fileupload-noscript.css +22 -0
  1283. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/jquery.fileupload-ui-noscript.css +17 -0
  1284. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/jquery.fileupload-ui.css +57 -0
  1285. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/jquery.fileupload.css +36 -0
  1286. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/pivot.min.css +1 -0
  1287. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/qonsole.css +172 -0
  1288. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/yasqe.min.css +1 -0
  1289. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/css/yasr.min.css +1 -0
  1290. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/dataset.html +247 -0
  1291. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/documentation.html +83 -0
  1292. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/FontAwesome.otf +0 -0
  1293. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/fontawesome-webfont.eot +0 -0
  1294. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/fontawesome-webfont.svg +504 -0
  1295. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/fontawesome-webfont.ttf +0 -0
  1296. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/fontawesome-webfont.woff +0 -0
  1297. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/glyphicons-halflings-regular.eot +0 -0
  1298. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/glyphicons-halflings-regular.svg +229 -0
  1299. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/glyphicons-halflings-regular.ttf +0 -0
  1300. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/fonts/glyphicons-halflings-regular.woff +0 -0
  1301. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/back_disabled.png +0 -0
  1302. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/back_enabled.png +0 -0
  1303. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/back_enabled_hover.png +0 -0
  1304. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/favicon.ico +0 -0
  1305. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/forward_disabled.png +0 -0
  1306. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/forward_enabled.png +0 -0
  1307. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/forward_enabled_hover.png +0 -0
  1308. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/jena-logo-notext-small.png +0 -0
  1309. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/sort_asc.png +0 -0
  1310. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/sort_asc_disabled.png +0 -0
  1311. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/sort_both.png +0 -0
  1312. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/sort_desc.png +0 -0
  1313. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/sort_desc_disabled.png +0 -0
  1314. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/images/wait30.gif +0 -0
  1315. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/index.html +101 -0
  1316. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/controllers/dataset-controller.js +69 -0
  1317. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/controllers/index-controller.js +50 -0
  1318. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/controllers/manage-controller.js +39 -0
  1319. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/controllers/query-controller.js +72 -0
  1320. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/controllers/upload-controller.js +42 -0
  1321. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/controllers/validation-controller.js +38 -0
  1322. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/fui.js +33 -0
  1323. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/main.dataset.js +31 -0
  1324. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/main.index.js +24 -0
  1325. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/main.manage.js +27 -0
  1326. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/main.validation.js +24 -0
  1327. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/models/dataset-stats.js +102 -0
  1328. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/models/dataset.js +262 -0
  1329. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/models/fuseki-server.js +180 -0
  1330. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/models/task.js +105 -0
  1331. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/models/validation-options.js +85 -0
  1332. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/qonsole-config.js +27 -0
  1333. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/services/ping-service.js +54 -0
  1334. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/services/validation-service.js +98 -0
  1335. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-edit.tpl +58 -0
  1336. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-info.tpl +40 -0
  1337. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-management.tpl +62 -0
  1338. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-selection-list.tpl +22 -0
  1339. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-selector.tpl +15 -0
  1340. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-simple-create.tpl +85 -0
  1341. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/dataset-stats.tpl +14 -0
  1342. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/file-upload.tpl +46 -0
  1343. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/templates/uploadable-file.tpl +23 -0
  1344. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/util/page-utils.js +33 -0
  1345. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-edit.js +205 -0
  1346. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-info.js +76 -0
  1347. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-management.js +173 -0
  1348. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-selection-list.js +58 -0
  1349. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-selector.js +84 -0
  1350. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-simple-create.js +102 -0
  1351. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/dataset-stats.js +41 -0
  1352. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/datasets-dropdown-list.js +43 -0
  1353. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/file-upload.js +225 -0
  1354. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/tabbed-view-manager.js +63 -0
  1355. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/uploadable-file.js +39 -0
  1356. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/app/views/validation-options.js +54 -0
  1357. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/common-config.js +94 -0
  1358. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/addon/fold/brace-fold.js +105 -0
  1359. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/addon/fold/comment-fold.js +57 -0
  1360. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/addon/fold/foldcode.js +145 -0
  1361. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/addon/fold/foldgutter.js +134 -0
  1362. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/addon/fold/xml-fold.js +181 -0
  1363. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/backbone-min.js +2 -0
  1364. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/backbone.js +1581 -0
  1365. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/backbone.marionette.js +2385 -0
  1366. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/bootstrap-select.min.js +8 -0
  1367. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/bootstrap.min.js +6 -0
  1368. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/html5shiv.js +8 -0
  1369. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery-1.10.2.js +9789 -0
  1370. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery-1.10.2.min.js +6 -0
  1371. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery-ui.min.js +7 -0
  1372. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.dataTables.min.js +157 -0
  1373. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.fileupload.js +1426 -0
  1374. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.fileupload.local.js +1428 -0
  1375. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.form.js +1278 -0
  1376. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.iframe-transport.js +214 -0
  1377. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.ui.widget.js +530 -0
  1378. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/jquery.xdomainrequest.js +90 -0
  1379. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/lib/codemirror.js +7638 -0
  1380. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/mode/javascript/javascript.js +683 -0
  1381. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/mode/sparql/sparql.js +160 -0
  1382. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/mode/turtle/turtle.js +160 -0
  1383. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/mode/xml/xml.js +384 -0
  1384. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/pivot.js +1363 -0
  1385. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/pivot.min.js +2 -0
  1386. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/pivot.min.js.map +1 -0
  1387. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/plugins/text.js +386 -0
  1388. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/qonsole.js +577 -0
  1389. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/refresh.sh +21 -0
  1390. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/require.js +2076 -0
  1391. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/require.min.js +36 -0
  1392. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/respond.min.js +6 -0
  1393. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/sprintf-0.7-beta1.js +183 -0
  1394. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/underscore.js +1276 -0
  1395. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/yasqe.min.js +9 -0
  1396. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/yasqe.min.js.map +1 -0
  1397. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/yasr.min.js +8 -0
  1398. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/js/lib/yasr.min.js.map +1 -0
  1399. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/manage.html +110 -0
  1400. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/services.html +76 -0
  1401. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/test/test-fuseki-config.ttl +27 -0
  1402. package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/webapp/validate.html +147 -0
  1403. package/test/apache-jena-fuseki-interface/data/json/PersistData.json +111 -0
  1404. package/test/apache-jena-fuseki-interface/data/xml/AssetHealthEvent.xml +45 -0
  1405. package/test/apache-jena-fuseki-interface/data/xml/AssetOwner.xml +11 -0
  1406. package/test/apache-jena-fuseki-interface/data/xml/Outages.xml +69 -0
  1407. package/test/apache-jena-fuseki-interface/data/xml/PsrType.xml +80 -0
  1408. package/test/apache-jena-fuseki-interface/data/xml/neplan-eslohe/Eslohe_Rootnet_Area_1_EQ_V1.xml +15755 -0
  1409. package/test/apache-jena-fuseki-interface/data/xml/neplan-eslohe/Eslohe_Rootnet_Area_1_EQ_V1_feeder_ext.xml +54 -0
  1410. package/test/apache-jena-fuseki-interface/data/xml/neplan-eslohe/Eslohe_Rootnet_Area_1_SSH_V1.xml +2796 -0
  1411. package/test/apache-jena-fuseki-interface/data/xml-rdf-data.xml +84 -0
  1412. package/test/cim-xml-rdf-parser/cim-xml-rdf-parser.tests.spec.ts +23 -0
  1413. package/test/cim-xml-rdf-parser/data/rdfxml_serialisation.xml +192 -0
  1414. package/test/integral7-converter/integral7-converter.tests.spec.ts +185 -0
  1415. package/test/power-system-data-model-converter/data/fixed_feed_in_input.csv +72 -0
  1416. package/test/power-system-data-model-converter/data/line_input.csv +1910 -0
  1417. package/test/power-system-data-model-converter/data/line_type_input.csv +5 -0
  1418. package/test/power-system-data-model-converter/data/load_input.csv +1829 -0
  1419. package/test/power-system-data-model-converter/data/node_input.csv +2835 -0
  1420. package/test/power-system-data-model-converter/data/time_series_mapping.csv +878 -0
  1421. package/test/power-system-data-model-converter/data/transformer_2_w_input.csv +1047 -0
  1422. package/test/power-system-data-model-converter/data/transformer_2_w_type_input.csv +5 -0
  1423. package/test/power-system-data-model-converter/power-system-data-model-converter.tests.spec.ts +310 -0
  1424. package/tsconfig.json +24 -0
  1425. package/webpack.config.js +24 -0
@@ -0,0 +1,3508 @@
1
+ import {
2
+ ACLineSegment,
3
+ ApparentPower, BaseVoltage,
4
+ Bay,
5
+ Breaker,
6
+ BusbarSection,
7
+ CableInfo,
8
+ CapacitancePerLength,
9
+ ConnectivityNode,
10
+ createBaseVoltageIfNotExists,
11
+ createConnection,
12
+ createGeoregion,
13
+ createSvStatus,
14
+ CurrentFlow,
15
+ CurrentLimit,
16
+ CurveData,
17
+ CurveStyle,
18
+ Diagram,
19
+ DIAGRAM_LAYOUT_TYPES,
20
+ DiagramObject,
21
+ DiagramObjectPoint,
22
+ Disconnector,
23
+ EnergyConsumer,
24
+ EnergySource,
25
+ EquipmentContainer,
26
+ generateUUID,
27
+ GeneratingUnit,
28
+ GeneratorControlSource,
29
+ GeographicalRegion,
30
+ getUUID,
31
+ IConnectivityNode,
32
+ IdentifiedObject,
33
+ IIdentifiedObject,
34
+ Junction,
35
+ LimitTypeKind,
36
+ Line,
37
+ Model,
38
+ NuclearGeneratingUnit,
39
+ OperationalLimitDirectionKind,
40
+ OperationalLimitSet,
41
+ OperationalLimitType,
42
+ OrientationKind,
43
+ OverheadWireInfo,
44
+ PhaseCode,
45
+ PowerTransformer,
46
+ PowerTransformer2WInfo,
47
+ PowerTransformer3WInfo,
48
+ PowerTransformerEnd,
49
+ RDF_XML,
50
+ ReactancePerLength,
51
+ ReactiveCapabilityCurve,
52
+ RegulatingControl,
53
+ RegulatingControlModeKind,
54
+ ResistancePerLength,
55
+ SolarGeneratingUnit,
56
+ SubGeographicalRegion,
57
+ Substation,
58
+ SynchronousMachine,
59
+ SynchronousMachineKind,
60
+ Terminal,
61
+ ThermalGeneratingUnit,
62
+ TransformerEndInfo,
63
+ UnitMultiplier,
64
+ UnitSymbol,
65
+ Voltage,
66
+ VoltageLevel,
67
+ WindGeneratingUnit,
68
+ WindGenUnitKind,
69
+ WireInfo
70
+ } from '../..';
71
+ import * as mysql from 'mysql';
72
+ import {
73
+ Abzweig,
74
+ Anlage,
75
+ AnlagenAbschnitt,
76
+ Belastung,
77
+ Einspeisung,
78
+ Generator,
79
+ Georegion,
80
+ KnotenKf,
81
+ KnotenLk,
82
+ Laengskupplung,
83
+ Leistungsschalter,
84
+ LeitungStk,
85
+ Netzvarianten,
86
+ NsgKnotenSo,
87
+ NsgSA,
88
+ NsgSAAB,
89
+ NsgSchaltfeld,
90
+ NsgStandort,
91
+ Querkupplung,
92
+ Schaltfeld,
93
+ SchaltfeldKnoten,
94
+ Schlaufe,
95
+ Ssab,
96
+ Standort,
97
+ StarrerKnoten,
98
+ Stk,
99
+ StkTyp,
100
+ Subgeoregion,
101
+ Trafo2w,
102
+ Trafo3w,
103
+ Trafo3wWicklung,
104
+ Trenner3p
105
+ } from './model/interfaces';
106
+ import {
107
+ createIfNotExitsGeoregionByName,
108
+ createIfNotExitsPSRType,
109
+ createIfNotExitsSubGeoregionByName,
110
+ writeElementAttribute,
111
+ } from '../../util/utils';
112
+ import {
113
+ BELASTUNG_PRAEFIX,
114
+ EINSPEISUNG_PRAEFIX,
115
+ GENERATOR_PRAEFIX,
116
+ KNOTEN_STANDORT_PRAEFIX,
117
+ LEITUNG_PRAEFIX,
118
+ MITTIGER_PUNKT,
119
+ SAMMELSCHIENENABSCHNITT_PRAEFIX,
120
+ SCHALTFELD_PRAEFIX,
121
+ STANDORT_PRAEFIX,
122
+ TRAFO2WPRAEFIX_PRAEFIX,
123
+ TRAFO3WPRAEFIX_PRAEFIX
124
+ } from './config/integral-prefix';
125
+ import {
126
+ calculateB,
127
+ calculateG,
128
+ calculateR,
129
+ calculateX,
130
+ convertToBooleanI7,
131
+ createTapChanger,
132
+ createTempDirPath,
133
+ createWriteStreamPromise,
134
+ determineEquipmentContainer,
135
+ generateFuelType,
136
+ getActiveReactivePower,
137
+ getDescription,
138
+ getLine,
139
+ getLineByAttribute,
140
+ getName,
141
+ getNumber,
142
+ getPkrTrafo,
143
+ getPSRType,
144
+ getSchaltgruppe,
145
+ getSchaltgruppeAngleClock,
146
+ getSrTrafo,
147
+ getTerminalUn,
148
+ getTrafoIleer,
149
+ getTrafoPleer,
150
+ getUkrTrafo,
151
+ getUrTrafo,
152
+ putUUIDtoI7Ids,
153
+ ueberpruefeZeichenkette,
154
+ writeZipFile
155
+ } from './utils';
156
+ import { calculateImpedanzenTrafo3W } from './utils-trafo3w';
157
+ import { FUEL_TYPE_CONFIG } from './config/generation-unit-fuel-types';
158
+ import { getNetzQuery, I7Objects, Integral7TableNames } from './sql/integral.sql';
159
+ import { MySQL, Status } from './config/db-config';
160
+ import path from "path";
161
+ import fs from "fs";
162
+
163
+ import XMLWriter from 'xml-writer';
164
+ import JSZip from 'jszip';
165
+ import { StandortImpl } from './model/integral/Standort';
166
+ import { SchaltanlageImpl } from './model/integral/Schaltanlage';
167
+ import { SchaltanlagenabschnittImpl } from './model/integral/Schaltanlagenabschnitt';
168
+ import { StandortNsgImpl } from './model/integral/StandortNsg';
169
+ import { SchaltanlageNsgImpl } from './model/integral/SchaltanlageNSG';
170
+ import { SchaltanlagenabschnittNsg } from './model/integral/SchaltanlagenabschnittNsg';
171
+ import { Point } from './model/integral/Point';
172
+ import { createDiagramObjectPoints, getDiagramObjectBelonginToDiagram, isConnectedTo } from './utils-schema';
173
+ import { SchaltfeldImpl } from './model/integral/Schaltfeld';
174
+ import { SchaltfeldNsgImpl } from './model/integral/SchaltfeldNsg';
175
+ import { KnotenSoImpl } from './model/integral/KnotenSo';
176
+ import { KnotenSoNsg } from './model/integral/KnotenSoNsg';
177
+ import { LeitungImpl } from './model/integral/Leitung';
178
+ import { TapChangerInfo } from '../../model/assetinfo/TapChangerInfo';
179
+ import { AMPRIONBay } from '../../model/extensions/amprion/core/AMPRIONBay';
180
+ import { AMPRIONConnectivityNode } from '../../model/extensions/amprion/core/AMPRIONConnectivityNode';
181
+
182
+ export class ConverterIntegral7 {
183
+ mysqlConnection: mysql.Connection;
184
+ cimModel: Model;
185
+
186
+ /** Das Array hält die verfügbaren Tabellennamen in der Projektdatenbank.
187
+ * Integral 7 legt die Tabellen keine leeren Tabellen an.
188
+ * Das heißt: wenn es keine Typinformation für Kabel gepflegt sind, dann existiert keine Tabelle in der Datenbank*/
189
+ availableTableNames: string[];
190
+
191
+ /** Speichert die Zuordnung der Integral7 ID zu CIM UUID */
192
+ private readonly integralID2UUID = new Map<number, string>();
193
+ /** Speichert die Zuordnung der CIM UUID zu Integral7 ID */
194
+ private readonly UUID2IntegralID = new Map<string, number[]>();
195
+
196
+
197
+ standortAnzahl: number;
198
+ leitungsAnzahl: number;
199
+ trafo2WAnzahl: number;
200
+ trafo3WAnzahl: number;
201
+ /** Begrenzt die Anzahl der abgefragten Daten aus der DB
202
+ * Limit wird anhand der Stationenanzahl berechent
203
+ * default Wert: x */
204
+ limit: number = 100;
205
+
206
+
207
+ /** Integral 7 Datenmodell für die Schemakonvertierung */
208
+ integralStandorte = new Map<number, StandortImpl>();
209
+ integralSchaltanlagen = new Map<number, SchaltanlageImpl>();
210
+ integralSchaltanlagenAbschnitte = new Map<number, SchaltanlagenabschnittImpl>();
211
+ integralSchaltfelder = new Map<number, SchaltfeldImpl>();
212
+
213
+ integralKnotenSo = new Map<number, KnotenSoImpl>();
214
+
215
+ integralNsgStandort: Map<number, StandortNsgImpl> = new Map();
216
+ integralNsgSchaltanlage: Map<number, SchaltanlageNsgImpl> = new Map();
217
+ integralNsgSchaltanlagenabschnitt: Map<number, SchaltanlagenabschnittNsg> = new Map();
218
+ integralNsgSchaltfelder = new Map<number, SchaltfeldNsgImpl>();
219
+
220
+ integralNsgKnotenSo = new Map<number, KnotenSoNsg>();
221
+
222
+ integralLeitungen: Map<number, LeitungImpl> = new Map();
223
+
224
+ /** Integral 7 IDs for blockweise Verarbeitung SQLs */
225
+ schaltfeldIDs = [];
226
+ querkupplungIDs = [];
227
+ laengskupplungIDs = [];
228
+ knotenSoIDs = [];
229
+ knotenSfIDs = [];
230
+ leitungsIDs = [];
231
+ trafo2WIDs = [];
232
+
233
+ /** CIM Objekte, die zur Laufzeit im Speicher bleiben.
234
+ * Sie werden zur Erstellung der Topologie verwendet. */
235
+ /** Schlaufen werden als Terminals mit Schaltzustand abgebildet. */
236
+ memoryObjects: Map<number, IdentifiedObject> = new Map();
237
+ /** IDs von Leitungsachnlussknoten
238
+ * Die IDs werden zur Bestimmung der im Speicher zu haltenden Objekte (ConnectivityNodes, Terminals) herangezogen. */
239
+ leitungAnschlussKnotenIDs = new Set();
240
+
241
+ /** Für Leitungen sind nicht immer Spannungen gepflegt.
242
+ * Diese Map speichert die Zuordnung von Knoten (CN) zu der jeweiligen Spannung
243
+ * Key -> CN UUID -> Basevoltage */
244
+ knotenSpannung = new Map<string, BaseVoltage>();
245
+
246
+ constructor() {
247
+ this.cimModel = new Model();
248
+ this.availableTableNames = [];
249
+ }
250
+
251
+ async init(mySqlConfig: MySQL): Promise<Status> {
252
+
253
+ return new Promise(async (resolve, reject) => {
254
+ try {
255
+ this.initDbConnection(mySqlConfig);
256
+ this.openConnection();
257
+ await this.getAvailableTableNames(mySqlConfig.database);
258
+ this.standortAnzahl = await this.queryObjectCount(Integral7TableNames.STANDORT);
259
+ this.leitungsAnzahl = await this.queryObjectCount(Integral7TableNames.LEITUNG);
260
+ this.trafo2WAnzahl = await this.queryObjectCount(Integral7TableNames.TRAFO2W);
261
+ this.trafo3WAnzahl = await this.queryObjectCount(Integral7TableNames.TRAFO3W);
262
+ await this.queryAnschlussIDs();
263
+ resolve({status: 'successful', message: 'ok'});
264
+ } catch (e) {
265
+ reject({status: 'error', message: e.toString()});
266
+ }
267
+ });
268
+ }
269
+
270
+ async start(): Promise<Status> {
271
+
272
+ return new Promise(async (resolve, reject) => {
273
+ try {
274
+
275
+ const tempDirPath = await createTempDirPath() as string;
276
+
277
+ /** EQ Profile */
278
+ const filePathEQ = path.join(tempDirPath, 'eq.xml');
279
+ const writeStreamEQ = fs.createWriteStream(filePathEQ);
280
+ const xmlWriterEQ = new XMLWriter(true, (string, encoding) => {
281
+ writeStreamEQ.write(string, encoding);
282
+ });
283
+ this.writeHeaderStart(xmlWriterEQ);
284
+ const modelEQUUID = generateUUID();
285
+ const profiles = [RDF_XML.EQ_CORE_PROFILE_URI, RDF_XML.EQ_SC_PROFILE_URI, RDF_XML.EQ_OPER_PROFILE_URI];
286
+ this.cimModel.toCIMXML(xmlWriterEQ, modelEQUUID, profiles, undefined, RDF_XML.AMP_MAS);
287
+
288
+ /** DL Profile */
289
+ const filePathDL = path.join(tempDirPath, 'dl.xml');
290
+ const writeStreamDL = fs.createWriteStream(filePathDL);
291
+ const xmlWriterDL = new XMLWriter(true, (string, encoding) => {
292
+ writeStreamDL.write(string, encoding);
293
+ });
294
+ this.writeHeaderStart(xmlWriterDL);
295
+ const modelDLUUID = generateUUID();
296
+ const profilesDl = [RDF_XML.DL_OPER_PROFILE_URI];
297
+ this.cimModel.toCIMXML(xmlWriterDL, modelDLUUID, profilesDl, [modelEQUUID], RDF_XML.AMP_MAS);
298
+
299
+ /** SSH Profile */
300
+ const filePathSSH = path.join(tempDirPath, 'ssh.xml');
301
+ const writeStreamSSH = fs.createWriteStream(filePathSSH);
302
+ const xmlWriterSSH = new XMLWriter(true, (string, encoding) => {
303
+ writeStreamSSH.write(string, encoding);
304
+ });
305
+ this.writeHeaderStart(xmlWriterSSH);
306
+ const modelSSHUUID = generateUUID();
307
+ const profilesSSH = [RDF_XML.SSH_OPER_PROFILE_URI];
308
+ this.cimModel.toCIMXML(xmlWriterSSH, modelSSHUUID, profilesSSH, [modelEQUUID], RDF_XML.AMP_MAS);
309
+
310
+ /** SV Profile */
311
+ const filePathSV = path.join(tempDirPath, 'sv.xml');
312
+ const writeStreamSV = fs.createWriteStream(filePathSV);
313
+ const xmlWriterSV = new XMLWriter(true, (string, encoding) => {
314
+ writeStreamSV.write(string, encoding);
315
+ });
316
+ this.writeHeaderStart(xmlWriterSV);
317
+ const modelSVUUID = generateUUID();
318
+ const profilesSV = [RDF_XML.SV_OPER_PROFILE_URI];
319
+ this.cimModel.toCIMXML(xmlWriterSV, modelSVUUID, profilesSV, [modelEQUUID, modelSSHUUID], RDF_XML.AMP_MAS);
320
+
321
+
322
+ /** Amprion I7 Profile */
323
+ const filePathAmpI7 = path.join(tempDirPath, 'AMP_I7.xml');
324
+ const writeStreamAmpI7 = fs.createWriteStream(filePathAmpI7);
325
+ const xmlWriterAmpI7 = new XMLWriter(true, (string, encoding) => {
326
+ writeStreamAmpI7.write(string, encoding);
327
+ });
328
+ this.writeHeaderStart(xmlWriterAmpI7, RDF_XML.AMP_I7_PROFILE_URI);
329
+ const modelAmpI7UUID = generateUUID();
330
+ const profilesAmpI7UUID = [RDF_XML.AMP_I7_PROFILE_URI];
331
+ this.cimModel.toCIMXML(xmlWriterAmpI7, modelAmpI7UUID, profilesAmpI7UUID, [modelEQUUID], RDF_XML.AMP_MAS);
332
+
333
+
334
+ /**------------------------------------------------------------------------------*/
335
+ const restCount = this.standortAnzahl < this.limit ? this.standortAnzahl : (this.standortAnzahl % this.limit);
336
+ const intervalCount = (this.standortAnzahl - restCount) / this.limit;
337
+ const numberOfIntervals = restCount > 0 ? intervalCount + 1 : intervalCount;
338
+ /** Frage die IDs von Leitungsabschnitten*/
339
+
340
+ await this.convertGeoRegionen();
341
+ await this.convertSubGeoRegionen();
342
+ await this.convertStromkreise();
343
+ await this.convertBetriebsmitteltypenLeitung();
344
+ await this.convertBetriebsmitteltypenTrafo();
345
+
346
+ await this.convertNetzvarianten();
347
+
348
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.geographicalRegions, RDF_XML.PROFILE_EQ);
349
+
350
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.subgeographicalRegions, RDF_XML.PROFILE_EQ);
351
+
352
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.lines, RDF_XML.PROFILE_EQ);
353
+
354
+ this.objectToCIMXML(xmlWriterDL, this.cimModel.diagrams, RDF_XML.PROFILE_DL);
355
+ this.objectArrayToCIMXML(xmlWriterDL, this.cimModel.diagramStyles, RDF_XML.PROFILE_DL);
356
+
357
+
358
+ for (let i = 0; i < numberOfIntervals; i++) {
359
+ const offset = i * this.limit;
360
+ const currentLimit = (i + 1 === numberOfIntervals && restCount > 0) ? restCount : this.limit;
361
+
362
+ /** Start EQUIPMENT CONTAINER */
363
+
364
+ /** Standort -> Substation */
365
+ //console.log(`Standorte currentLimit = ${currentLimit} offset = ${offset}`);
366
+ await this.convertStandorte(currentLimit, offset);
367
+ const standortIDs = [...this.integralStandorte.keys()];
368
+
369
+ // if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} convertStandorte offset = ${offset}`);
370
+
371
+ /** Schaltanlagen -> VoltageLevels */
372
+ //console.log(`Schaltanlagen currentLimit = ${currentLimit} offset = ${offset}`);
373
+ await this.covertSchaltanlagen(standortIDs);
374
+ const schaltanlagenIDs = [...this.integralSchaltanlagen.keys()];
375
+
376
+ //if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} covertSchaltanlagen offset = ${offset}`);
377
+
378
+ /** Schaltanlagenabschnitte -> Mappen auf bereits erstelltes VoltageLevel-Objekt (Schaltanlage) */
379
+ //console.log(`SAAB currentLimit = ${currentLimit} offset = ${offset}`);
380
+ if (schaltanlagenIDs.length > 0) {
381
+ await this.convertSchaltanlagenAbschnitte(schaltanlagenIDs);
382
+ }
383
+ const schaltanlagenAbschnittIDs = [...this.integralSchaltanlagenAbschnitte.keys()];
384
+
385
+ // if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} convertSchaltanlagenAbschnitte offset = ${offset}`);
386
+ /** Schaltfelder -> Bay */
387
+ //console.log(`Bay currentLimit = ${currentLimit} offset = ${offset}`);
388
+ if (schaltanlagenAbschnittIDs.length > 0) {
389
+ await this.convertSchaltfelder(schaltanlagenAbschnittIDs);
390
+ }
391
+ this.schaltfeldIDs = [...this.integralSchaltfelder.keys()];
392
+ //if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} convertSchaltfelder offset = ${offset}`);
393
+
394
+ /** Querkupplungen -> Bay */
395
+ //console.log(`QK currentLimit = ${currentLimit} offset = ${offset}`);
396
+ if (schaltanlagenAbschnittIDs.length > 0) {
397
+ await this.convertQuerkupplungen(schaltanlagenAbschnittIDs);
398
+ }
399
+ //if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} Querkupplungen offset = ${offset}`);
400
+
401
+ /** Laegskupplungen -> Bay */
402
+ //console.log(`LK currentLimit = ${currentLimit} offset = ${offset}`);
403
+ if (schaltanlagenIDs.length > 0) {
404
+ await this.convertLaegskupplungen(schaltanlagenIDs);
405
+ }
406
+ //if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} Laegskupplungen offset = ${offset}`);
407
+ /** Stromkreise s.o.*/
408
+ /** Ende EQUIPMENT CONTAINER */
409
+
410
+
411
+ /** START Integral 7 Knoten */
412
+ /** Abzweigpunkte KnotenSo -> */
413
+ //console.log(`KnotenSo currentLimit = ${currentLimit} offset = ${offset}`);
414
+ await this.convertKnotenSo(standortIDs);
415
+ const knotenSoIDs = [...this.integralKnotenSo.keys()];
416
+ //if (offset >=0) console.log(`9082->${this.integralID2UUID.get(9082)} convertKnotenSo offset = ${offset}`);
417
+ /** KnotenSf */
418
+ //console.log(`KnotenSf currentLimit = ${currentLimit} offset = ${offset}`);
419
+ if (this.schaltfeldIDs.length > 0) {
420
+ await this.convertKnotenSf(this.schaltfeldIDs);
421
+ }
422
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} KnotenSf offset = ${offset}`);
423
+ /** Querkupplungen Knoten */
424
+ //console.log(`Kf currentLimit = ${currentLimit} offset = ${offset}`);
425
+ if (this.querkupplungIDs.length > 0) {
426
+ await this.convertKnotenKf(this.querkupplungIDs);
427
+ }
428
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} Querkupplungen Knoten offset = ${offset}`);
429
+ /** Laegskupplungen Knoten */
430
+ //console.log(`Lk currentLimit = ${currentLimit} offset = ${offset}`);
431
+ if (this.laengskupplungIDs.length > 0) {
432
+ await this.convertKnotenLk(this.laengskupplungIDs);
433
+ }
434
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} Laegskupplungen Knoten offset = ${offset}`);
435
+ /** Schlaufen */
436
+ //console.log(`Schlaufe currentLimit = ${currentLimit} offset = ${offset}`);
437
+ if (knotenSoIDs.length > 0) {
438
+ await this.convertSchlaufen(knotenSoIDs);
439
+ }
440
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} Schlaufen offset = ${offset}`);
441
+ /** Ende Integral 7 Knoten */
442
+
443
+
444
+ /** START CONDUCTING EQUIPMENT */
445
+
446
+ /** Sammelschienenabschnitte -> BusbarSections */
447
+ //console.log(`SSAB currentLimit = ${currentLimit} offset = ${offset}`);
448
+ if (schaltanlagenAbschnittIDs.length > 0) {
449
+ await this.convertSammelschienenAbschnitte(schaltanlagenAbschnittIDs);
450
+ }
451
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} Sammelschienenabschnitte offset = ${offset}`);
452
+ /** Belastungen -> EnergyConsumer */
453
+ //console.log(`Last currentLimit = ${currentLimit} offset = ${offset}`);
454
+ if (knotenSoIDs.length > 0 || this.knotenSfIDs.length > 0) {
455
+ await this.convertBelastungen([...knotenSoIDs, ...this.knotenSfIDs]);
456
+ }
457
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} convertBelastungen offset = ${offset}`);
458
+
459
+ /** Einspeisungen -> EnergySources */
460
+ //console.log(`EEG currentLimit = ${currentLimit} offset = ${offset}`);
461
+ if (knotenSoIDs.length > 0 || this.knotenSfIDs.length > 0) {
462
+ await this.convertEinspeisungen([...knotenSoIDs, ...this.knotenSfIDs]);
463
+ }
464
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} Einspeisungen offset = ${offset}`);
465
+
466
+ /** Generatoren -> SynchronousMachine */
467
+ //console.log(`Gen currentLimit = ${currentLimit} offset = ${offset}`);
468
+ if (knotenSoIDs.length > 0 || this.knotenSfIDs.length > 0) {
469
+ await this.convertGeneratoren([...knotenSoIDs, ...this.knotenSfIDs]);
470
+ }
471
+ // if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} Generatoren offset = ${offset}`);
472
+
473
+ /** starre Anschluesse als Junction. Sammelschienen müssen zuertst konvertiert werden*/
474
+ //console.log(`Starr currentLimit = ${currentLimit} offset = ${offset}`);
475
+ const containerStarreVerbindungen = [...this.schaltfeldIDs, ...this.querkupplungIDs, ...this.laengskupplungIDs];
476
+ if (containerStarreVerbindungen.length > 0) {
477
+ await this.convertStarreVerbindungen(containerStarreVerbindungen);
478
+ }
479
+ // if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} containerStarreVerbindungen offset = ${offset}`);
480
+
481
+ //console.log(`Trennschalter 3f`);
482
+ if (containerStarreVerbindungen.length > 0) {
483
+ await this.convertTrenner3f(containerStarreVerbindungen);
484
+ }
485
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} convertTrenner3f offset = ${offset}`);
486
+
487
+ //console.log(`Trennschalter Fi 3f`);
488
+ if (containerStarreVerbindungen.length > 0) {
489
+ await this.convertTrennerFi3f(containerStarreVerbindungen);
490
+ }
491
+ //if (offset === 4800 || offset === 4900) console.log(`9082->${this.integralID2UUID.get(9082)} convertTrennerFi3f offset = ${offset}`);
492
+
493
+ //console.log(`Leistungsschalter`);
494
+ if (containerStarreVerbindungen.length > 0) {
495
+ await this.convertLeistungsschalter(containerStarreVerbindungen);
496
+ }
497
+ //if (offset === 1800 || offset === 1900) console.log(`32716->${this.integralID2UUID.get(32716)} convertLeistungsschalter offset = ${offset}`);
498
+
499
+ // await this.convertTrafo3W(standortIDs);
500
+ /** Ende CONDUCTING EQUIPMENT */
501
+
502
+ /** Schema konvertieren */
503
+ //console.log(`Schema currentLimit = ${currentLimit} offset = ${offset}`);
504
+ await this.convertSchemaStandorte(standortIDs);
505
+ //if (offset === 1800 || offset === 1900) console.log(`32716->${this.integralID2UUID.get(32716)} convertSchemaStandorte offset = ${offset}`);
506
+ if (knotenSoIDs.length > 0) {
507
+ await this.convertSchemaKnotenSo(knotenSoIDs);
508
+ }
509
+ //if (offset > 0) console.log(`32716->${this.integralID2UUID.get(32716)} convertSchemaKnotenSo offset = ${offset}`);
510
+
511
+ if (schaltanlagenIDs.length > 0) {
512
+ await this.convertSchemaSchaltanlage(schaltanlagenIDs);
513
+ }
514
+ // if (offset > 0) console.log(`32716->${this.integralID2UUID.get(32716)} convertSchemaSchaltanlage offset = ${offset}`);
515
+
516
+ if (schaltanlagenAbschnittIDs.length > 0) {
517
+ await this.convertSchemaSchaltanlagenAbschnitte(schaltanlagenAbschnittIDs);
518
+ }
519
+ // if (offset > 0) console.log(`32716->${this.integralID2UUID.get(32716)} convertSchemaSchaltanlagenAbschnitte offset = ${offset}`);
520
+
521
+ await this.convertSchemaSammelschienenAbschnitte();
522
+ // if (offset > 0) console.log(`32716->${this.integralID2UUID.get(32716)} convertSchemaSammelschienenAbschnitte offset = ${offset}`);
523
+
524
+ if (this.schaltfeldIDs.length > 0) {
525
+ await this.convertSchemaSchaltfelder(this.schaltfeldIDs);
526
+ }
527
+ // if (offset > 0) console.log(`32716->${this.integralID2UUID.get(32716)} convertSchemaSchaltfelder offset = ${offset}`);
528
+
529
+ /** Export EQ */
530
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.substations, RDF_XML.PROFILE_EQ);
531
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.voltageLevels, RDF_XML.PROFILE_EQ);
532
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.bays, RDF_XML.PROFILE_EQ);
533
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.busbarSections, RDF_XML.PROFILE_EQ);
534
+
535
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.powerTransformer, RDF_XML.PROFILE_EQ);
536
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.junctions, RDF_XML.PROFILE_EQ);
537
+
538
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.energyConsumers, RDF_XML.PROFILE_EQ);
539
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.energySources, RDF_XML.PROFILE_EQ);
540
+
541
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.disconnectors, RDF_XML.PROFILE_EQ);
542
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.breakers, RDF_XML.PROFILE_EQ);
543
+
544
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.synchronousMachine, RDF_XML.PROFILE_EQ);
545
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.generatingUnit, RDF_XML.PROFILE_EQ);
546
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.thermalGeneratingUnit, RDF_XML.PROFILE_EQ);
547
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.nuclearGeneratingUnit, RDF_XML.PROFILE_EQ);
548
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.hydroGeneratingUnit, RDF_XML.PROFILE_EQ);
549
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.windGeneratingUnit, RDF_XML.PROFILE_EQ);
550
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.solarGeneratingUnit, RDF_XML.PROFILE_EQ);
551
+
552
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.regulatingControl, RDF_XML.PROFILE_EQ);
553
+ this.objectArrayToCIMXML(xmlWriterEQ, this.cimModel.fossilFuel, RDF_XML.PROFILE_EQ);
554
+
555
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.reactiveCapabilityCurve, RDF_XML.PROFILE_EQ);
556
+ this.objectArrayToCIMXML(xmlWriterEQ, this.cimModel.curveData, RDF_XML.PROFILE_EQ);
557
+
558
+
559
+ // this.objectToCIMXML(xmlWriterEQ, this.cimModel.operationalLimitTypes, RDF_XML.PROFILE_EQ);
560
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.operationalLimitSets, RDF_XML.PROFILE_EQ);
561
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.currentLimits, RDF_XML.PROFILE_EQ);
562
+
563
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.connectivityNodes, RDF_XML.PROFILE_EQ);
564
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.terminals, RDF_XML.PROFILE_EQ);
565
+
566
+
567
+ /** Export DL */
568
+ this.objectToCIMXML(xmlWriterDL, this.cimModel.diagramObjects, RDF_XML.PROFILE_DL);
569
+
570
+ /** Export SV */
571
+ this.objectToCIMXML(xmlWriterSSH, this.cimModel.energyConsumers, RDF_XML.PROFILE_SSH);
572
+ // this.objectToCIMXML(xmlWriterSSH, this.cimModel.energyConsumers, RDF_XML.PROFILE_SSH);
573
+ this.objectToCIMXML(xmlWriterSSH, this.cimModel.energySources, RDF_XML.PROFILE_SSH);
574
+ this.objectToCIMXML(xmlWriterSSH, this.cimModel.terminals, RDF_XML.PROFILE_SSH);
575
+
576
+ this.objectToCIMXML(xmlWriterSSH, this.cimModel.disconnectors, RDF_XML.PROFILE_SSH);
577
+ this.objectToCIMXML(xmlWriterSSH, this.cimModel.breakers, RDF_XML.PROFILE_SSH);
578
+
579
+ this.objectArrayToCIMXML(xmlWriterSV, this.cimModel.svStatus, RDF_XML.PROFILE_SV);
580
+ this.objectArrayToCIMXML(xmlWriterSV, this.cimModel.svTapSteps, RDF_XML.PROFILE_SV);
581
+
582
+ /** Export AMP I7 */
583
+ this.objectToCIMXML(xmlWriterAmpI7, this.cimModel.bays, RDF_XML.PROFILE_AMPI7);
584
+ this.objectToCIMXML(xmlWriterAmpI7, this.cimModel.connectivityNodes, RDF_XML.PROFILE_AMPI7);
585
+
586
+ this.cimModel.substations.clear();
587
+ this.cimModel.voltageLevels.clear();
588
+ this.cimModel.bays.clear();
589
+ this.cimModel.busbarSections.clear();
590
+
591
+ this.cimModel.disconnectors.clear();
592
+ this.cimModel.breakers.clear();
593
+
594
+ this.cimModel.energyConsumers.clear();
595
+ this.cimModel.energySources.clear();
596
+
597
+ this.cimModel.synchronousMachine.clear();
598
+ this.cimModel.generatingUnit.clear();
599
+ this.cimModel.thermalGeneratingUnit.clear();
600
+ this.cimModel.nuclearGeneratingUnit.clear();
601
+ this.cimModel.hydroGeneratingUnit.clear();
602
+ this.cimModel.windGeneratingUnit.clear();
603
+ this.cimModel.solarGeneratingUnit.clear();
604
+
605
+ this.cimModel.regulatingControl.clear();
606
+ this.cimModel.reactiveCapabilityCurve.clear();
607
+
608
+ this.cimModel.junctions.clear();
609
+
610
+ this.cimModel.curveData.length = 0;
611
+ this.cimModel.fossilFuel.length = 0;
612
+
613
+
614
+ this.cimModel.connectivityNodes.clear();
615
+ this.cimModel.terminals.clear();
616
+ this.cimModel.diagramObjects.clear();
617
+ this.cimModel.objects.clear();
618
+
619
+
620
+ this.cimModel.svStatus.length = 0;
621
+ this.cimModel.svTapSteps.length = 0;
622
+
623
+
624
+ this.querkupplungIDs.length = 0;
625
+ this.laengskupplungIDs.length = 0;
626
+ this.knotenSoIDs.length = 0;
627
+ this.knotenSfIDs.length = 0;
628
+ this.knotenSfIDs.length = 0;
629
+
630
+ /** Integral 7 Modell leeren*/
631
+ this.integralStandorte.clear();
632
+ this.integralSchaltanlagen.clear();
633
+ this.integralSchaltanlagenAbschnitte.clear();
634
+ this.integralSchaltfelder.clear();
635
+ this.integralKnotenSo.clear();
636
+
637
+ this.integralNsgStandort.clear();
638
+ this.integralNsgSchaltanlage.clear();
639
+ this.integralNsgSchaltanlagenabschnitt.clear();
640
+ this.integralNsgSchaltfelder.clear();
641
+ this.integralNsgKnotenSo.clear();
642
+ console.log(`Offset ${offset} done`);
643
+ }
644
+
645
+ /** Leitungen werden aufgrund besonderer Struktur separat implementiert. */
646
+ const restCountLeitung = this.leitungsAnzahl < this.limit ? this.leitungsAnzahl : (this.leitungsAnzahl % this.limit);
647
+ const intervalCountLeitung = (this.leitungsAnzahl - restCountLeitung) / this.limit;
648
+ const numberOfIntervalsLeitung = restCountLeitung > 0 ? intervalCountLeitung + 1 : intervalCountLeitung;
649
+ console.log('Convert ACLineSegments ' + this.leitungsAnzahl + ' restCountLeitung ' +restCountLeitung );
650
+
651
+ for (let i = 0; i < numberOfIntervalsLeitung; i++) {
652
+ const offset = i * this.limit;
653
+ const currentLimit = (i + 1 === numberOfIntervalsLeitung && restCountLeitung > 0) ? restCountLeitung : this.limit;
654
+
655
+ /** Stromkreisabschnitte */
656
+
657
+ await this.convertLeitungen(currentLimit, offset);
658
+ this.leitungsIDs = [...this.integralLeitungen.keys()];
659
+
660
+ if (this.leitungsIDs.length > 0)
661
+ await this.determineLeitungsTypen(this.leitungsIDs);
662
+
663
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.acLineSegments, RDF_XML.PROFILE_EQ);
664
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.terminals, RDF_XML.PROFILE_EQ);
665
+
666
+ this.objectToCIMXML(xmlWriterSV, this.cimModel.terminals, RDF_XML.PROFILE_SSH);
667
+
668
+ /** Collections leeren */
669
+ this.cimModel.acLineSegments.clear();
670
+ this.cimModel.connectivityNodes.clear();
671
+ this.cimModel.terminals.clear();
672
+ this.cimModel.diagramObjects.clear();
673
+
674
+
675
+ this.cimModel.objects.clear();
676
+ this.integralLeitungen.clear();
677
+ this.leitungsIDs.length = 0;
678
+ }
679
+
680
+ /** Transformatoren 2W */
681
+ const restCountTrafo2W = this.trafo2WAnzahl < this.limit ? this.trafo2WAnzahl : (this.trafo2WAnzahl % this.limit);
682
+ const intervalCountTrafo2W = (this.trafo2WAnzahl - restCountTrafo2W) / this.limit;
683
+ const numberOfIntervalsTrafo2W = restCountTrafo2W > 0 ? intervalCountTrafo2W + 1 : intervalCountTrafo2W;
684
+ console.log('Convert Transformers');
685
+ for (let i = 0; i < numberOfIntervalsTrafo2W; i++) {
686
+ const offset = i * this.limit;
687
+ const currentLimit = (i + 1 === numberOfIntervalsTrafo2W && restCountTrafo2W > 0) ? restCountTrafo2W : this.limit;
688
+
689
+ await this.convertTrafo2W(currentLimit, offset);
690
+
691
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.powerTransformer, RDF_XML.PROFILE_EQ);
692
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.terminals, RDF_XML.PROFILE_EQ);
693
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.tapChangerControls, RDF_XML.PROFILE_EQ);
694
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.ratioTapChangers, RDF_XML.PROFILE_EQ);
695
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.ratioTapChangerTables, RDF_XML.PROFILE_EQ);
696
+
697
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.operationalLimitSets, RDF_XML.PROFILE_EQ);
698
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.currentLimits, RDF_XML.PROFILE_EQ);
699
+
700
+ this.objectToCIMXML(xmlWriterSV, this.cimModel.terminals, RDF_XML.PROFILE_SSH);
701
+
702
+ /** Collections leeren */
703
+ this.cimModel.powerTransformer.clear();
704
+
705
+ this.cimModel.currentLimits.clear();
706
+ this.cimModel.operationalLimitSets.clear();
707
+ // this.cimModel.operationalLimitTypes.clear()
708
+
709
+ this.cimModel.tapChangerControls.clear();
710
+ this.cimModel.ratioTapChangers.clear();
711
+
712
+ for (const table of this.cimModel.ratioTapChangerTables.values()) {
713
+ table.ratioTapChangerTablePoints = [];
714
+ }
715
+ this.cimModel.ratioTapChangerTables.clear();
716
+ this.cimModel.svTapSteps.length = 0;
717
+ this.cimModel.terminals.clear();
718
+
719
+ this.cimModel.objects.clear();
720
+
721
+ //
722
+
723
+ }
724
+
725
+
726
+ const restCountTrafo3W = this.trafo2WAnzahl < this.limit ? this.trafo3WAnzahl : (this.trafo3WAnzahl % this.limit);
727
+ const intervalCountTrafo3W = (this.trafo3WAnzahl - restCountTrafo3W) / this.limit;
728
+ const numberOfIntervalsTrafo3W = restCountTrafo3W > 0 ? intervalCountTrafo3W + 1 : intervalCountTrafo3W;
729
+ console.log('Convert Transformers3W');
730
+ for (let i = 0; i < numberOfIntervalsTrafo3W; i++) {
731
+ const offset = i * this.limit;
732
+ const currentLimit = (i + 1 === numberOfIntervalsTrafo3W && restCountTrafo3W > 0) ? restCountTrafo3W : this.limit;
733
+
734
+ await this.convertTrafo3W(currentLimit, offset);
735
+
736
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.powerTransformer, RDF_XML.PROFILE_EQ);
737
+ this.cimModel.powerTransformer.clear();
738
+
739
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.currentLimits, RDF_XML.PROFILE_EQ);
740
+ this.cimModel.currentLimits.clear();
741
+
742
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.terminals, RDF_XML.PROFILE_EQ);
743
+ this.cimModel.terminals.clear();
744
+
745
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.tapChangerControls, RDF_XML.PROFILE_EQ);
746
+ this.cimModel.tapChangerControls.clear();
747
+
748
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.ratioTapChangers, RDF_XML.PROFILE_EQ);
749
+ this.cimModel.ratioTapChangers.clear();
750
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.ratioTapChangerTables, RDF_XML.PROFILE_EQ);
751
+
752
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.operationalLimitSets, RDF_XML.PROFILE_EQ);
753
+
754
+
755
+ this.objectToCIMXML(xmlWriterSV, this.cimModel.terminals, RDF_XML.PROFILE_SSH);
756
+
757
+ /** Collections leeren */
758
+
759
+ this.cimModel.operationalLimitSets.clear();
760
+ // this.cimModel.operationalLimitTypes.clear()
761
+
762
+
763
+ for (const table of this.cimModel.ratioTapChangerTables.values()) {
764
+ table.ratioTapChangerTablePoints = [];
765
+ }
766
+ this.cimModel.ratioTapChangerTables.clear();
767
+ this.cimModel.svTapSteps.length = 0;
768
+
769
+
770
+ this.cimModel.objects.clear();
771
+ }
772
+
773
+ const memoryTerminals = new Map();
774
+ for (const value of this.memoryObjects.values()) {
775
+ if (value instanceof Terminal) {
776
+ const terminal = value as Terminal;
777
+ if(terminal.conductingEquipment || terminal.conductingEquipmentUUID) {
778
+ memoryTerminals.set(value.mrid, value);
779
+ }
780
+ }
781
+ }
782
+ /** EQ */
783
+ // this.objectToCIMXML(xmlWriterEQ, this.cimModel.connectivityNodes, RDF_XML.PROFILE_EQ);
784
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.operationalLimitTypes, RDF_XML.PROFILE_EQ);
785
+ this.objectToCIMXML(xmlWriterEQ, this.cimModel.baseVoltages, RDF_XML.PROFILE_EQ);
786
+ this.objectToCIMXML(xmlWriterEQ, memoryTerminals, RDF_XML.PROFILE_EQ);
787
+ this.objectToCIMXML(xmlWriterSSH, memoryTerminals, RDF_XML.PROFILE_SSH);
788
+
789
+ this.objectToCIMXML(xmlWriterAmpI7, this.cimModel.psrTypes, RDF_XML.PROFILE_AMPI7);
790
+
791
+ /* this.objectToCIMXML(xmlWriterEQ, memoryTerminals, RDF_XML.PROFILE_EQ);
792
+ /!** SV *!/
793
+ this.objectToCIMXML(xmlWriterSSH, memoryTerminals, RDF_XML.PROFILE_SSH); // Schaltzustände*/
794
+
795
+ this.cimModel.operationalLimitTypes.clear();
796
+ this.cimModel.baseVoltages.clear();
797
+ memoryTerminals.clear();
798
+
799
+ this.writeHeaderEnd(xmlWriterEQ);
800
+ writeStreamEQ.end();
801
+ writeStreamEQ.close();
802
+
803
+ /** DL */
804
+ this.writeHeaderEnd(xmlWriterDL);
805
+ writeStreamDL.end();
806
+ writeStreamDL.close();
807
+
808
+ /** SSH */
809
+ this.writeHeaderEnd(xmlWriterSSH);
810
+ writeStreamSSH.end();
811
+ writeStreamSSH.close();
812
+
813
+ /** SV */
814
+ this.writeHeaderEnd(xmlWriterSV);
815
+ writeStreamSV.end();
816
+ writeStreamSV.close();
817
+
818
+ /** Amprion I7 */
819
+ this.writeHeaderEnd(xmlWriterAmpI7);
820
+ writeStreamAmpI7.end();
821
+ writeStreamAmpI7.close();
822
+
823
+ await Promise.all([
824
+ createWriteStreamPromise(writeStreamEQ),
825
+ createWriteStreamPromise(writeStreamDL),
826
+ createWriteStreamPromise(writeStreamSSH),
827
+ createWriteStreamPromise(writeStreamSV),
828
+ createWriteStreamPromise(writeStreamAmpI7),
829
+ ]);
830
+
831
+ const zip = new JSZip();
832
+ const filePathZip = path.join(tempDirPath, 'cgmes.zip');
833
+ const readStreamEq = fs.createReadStream(filePathEQ);
834
+ zip.file('EQ.xml', readStreamEq);
835
+
836
+ const readStreamDl = fs.createReadStream(filePathDL);
837
+ zip.file('DL.xml', readStreamDl);
838
+
839
+ const readStreamSSH = fs.createReadStream(filePathSSH);
840
+ zip.file('SSH.xml', readStreamSSH);
841
+
842
+ const readStreamSV = fs.createReadStream(filePathSV);
843
+ zip.file('SV.xml', readStreamSV);
844
+
845
+ const readStreamAmpI7 = fs.createReadStream(filePathAmpI7);
846
+ zip.file('AMP_I7.xml', readStreamAmpI7);
847
+
848
+ await writeZipFile(zip, filePathZip);
849
+
850
+ resolve({status: 'successful', message: 'ok'});
851
+
852
+ console.log('path ' + tempDirPath);
853
+ } catch (e) {
854
+ console.log(e);
855
+ reject({status: 'error', message: e.toString()});
856
+ }
857
+ });
858
+ }
859
+
860
+ async end(): Promise<Status> {
861
+ return new Promise(async (resolve, reject) => {
862
+ try {
863
+ this.closeConnection();
864
+ this.cimModel.purgeData();
865
+ resolve({status: 'successful', message: 'ok'});
866
+ } catch (e) {
867
+ reject({status: 'error', message: e.toString()});
868
+ }
869
+ });
870
+ }
871
+
872
+ /** Fragt die verfügbaren Tabellennamen. */
873
+ private async getAvailableTableNames(database: string) {
874
+ try {
875
+ const results = await this.queryFunctionWrapper(`SHOW TABLES FROM ${database}`);
876
+ for (const table of results) {
877
+ this.availableTableNames.push(table[`Tables_in_${database}`]);
878
+ }
879
+ } catch (e) {
880
+ console.error("ERROR:" + e);
881
+ }
882
+ }
883
+
884
+ private async queryObjectCount(tableName: string): Promise<number> {
885
+ return new Promise((resolve, reject) => {
886
+
887
+ this.queryFunctionWrapper(`SELECT COUNT(id) FROM ${tableName}`).then(results => {
888
+ try {
889
+ for (const result of results) {
890
+ return resolve(Number(result[`COUNT(id)`]));
891
+ }
892
+ } catch (e) {
893
+ return reject(0);
894
+ }
895
+ });
896
+ });
897
+ }
898
+
899
+ /** Topologie von Leitungen und Trafos */
900
+ private async queryAnschlussIDs() {
901
+ try {
902
+ let results = await this.queryFunctionWrapper(`SELECT DISTINCT aknoten, eknoten FROM ${Integral7TableNames[I7Objects.LEITUNG]}`);
903
+ for (const result of results) {
904
+ this.leitungAnschlussKnotenIDs.add(result[`aknoten`]);
905
+ this.leitungAnschlussKnotenIDs.add(result[`eknoten`]);
906
+ }
907
+ results = await this.queryFunctionWrapper(`SELECT DISTINCT aknoten, eknoten FROM ${Integral7TableNames[I7Objects.TRAFO2W]}`);
908
+ for (const result of results) {
909
+ this.leitungAnschlussKnotenIDs.add(result[`aknoten`]);
910
+ this.leitungAnschlussKnotenIDs.add(result[`eknoten`]);
911
+ }
912
+ results = await this.queryFunctionWrapper(`SELECT DISTINCT aknoten, eknoten FROM ${Integral7TableNames[I7Objects.TRAFO3_WICKLUNG]}`);
913
+ for (const result of results) {
914
+ this.leitungAnschlussKnotenIDs.add(result[`aknoten`]);
915
+ this.leitungAnschlussKnotenIDs.add(result[`eknoten`]);
916
+ }
917
+ } catch (e) {
918
+ console.error("ERROR:" + e);
919
+ }
920
+ }
921
+
922
+ async convertGeoRegionen() {
923
+ if (this.isTableAvailable(Integral7TableNames.REGION)) {
924
+ const result: Georegion[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.REGION, 0, 0, []));
925
+
926
+ for (const i7Data of result) {
927
+ const region = new GeographicalRegion(getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
928
+ this.cimModel.addGeographicalRegion(region);
929
+ this.integralID2UUID.set(i7Data.id, region.mrid);
930
+ }
931
+ } else {
932
+ console.log(`Tabelle ${Integral7TableNames.REGION} ist nicht vorhanden.`);
933
+ console.log(`Erstelle Standard Region ENTSO-E.`);
934
+ createGeoregion(generateUUID(), 'ENTSO-E', 'default', 'Default GeographicalRegion', this.cimModel);
935
+ }
936
+ }
937
+
938
+ async convertSubGeoRegionen() {
939
+ if (this.isTableAvailable(Integral7TableNames.SUBREGION)) {
940
+
941
+ const result: Subgeoregion[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.SUBREGION, 0, 0, []));
942
+
943
+ for (const i7Data of result) {
944
+ const subregion = new SubGeographicalRegion(getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
945
+
946
+ let region = this.cimModel.getGeographicalRegion(this.integralID2UUID.get(i7Data.georegion));
947
+ if (!region) {
948
+ region = createIfNotExitsGeoregionByName(this.cimModel, 'ENTSO-E');
949
+ }
950
+ subregion.region = region;
951
+ region.addSubGeographicalRegion(subregion);
952
+
953
+ this.cimModel.addSubGeographicalRegion(subregion);
954
+ this.integralID2UUID.set(i7Data.id, subregion.mrid);
955
+ }
956
+ } else {
957
+ console.log(`Tabelle ${Integral7TableNames.SUBREGION} ist nicht vorhanden.`);
958
+ console.log(`Erstelle Standard Subregion Deutschland.`);
959
+ const region = createIfNotExitsGeoregionByName(this.cimModel, 'ENTSO-E');
960
+ createIfNotExitsSubGeoregionByName(this.cimModel, 'Detschland', region);
961
+ }
962
+ }
963
+
964
+ async convertStandorte(limit: number, offset: number) {
965
+ if (this.isTableAvailable(Integral7TableNames.STANDORT)) {
966
+ const result: Standort[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.STANDORT, limit, offset, []));
967
+
968
+ for (const i7Data of result) {
969
+
970
+ const i7Schluessel = STANDORT_PRAEFIX +
971
+ ueberpruefeZeichenkette(i7Data.ukz) +
972
+ MITTIGER_PUNKT +
973
+ ueberpruefeZeichenkette(i7Data.bezeichner);
974
+ const substation = new Substation(getUUID(i7Data.guid), getName(i7Data), i7Data.id + '', i7Schluessel);
975
+
976
+ let subregion = this.cimModel.getSubGeographicalRegion(this.integralID2UUID.get(i7Data.subgeoregion));
977
+ if (!subregion) {
978
+ const region = createIfNotExitsGeoregionByName(this.cimModel, 'ENTSO-E');
979
+ subregion = createIfNotExitsSubGeoregionByName(this.cimModel, 'Deutschland', region);
980
+ }
981
+
982
+ substation.subGeographicalRegion = subregion;
983
+ // subregion.addSubstation(substation);
984
+
985
+ this.cimModel.addSubstation(substation);
986
+ this.integralID2UUID.set(i7Data.id, substation.mrid);
987
+ putUUIDtoI7Ids(substation.mrid, i7Data.id, this.UUID2IntegralID);
988
+
989
+ /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
990
+ const standort = new StandortImpl(i7Data);
991
+ this.integralStandorte.set(i7Data.id, standort);
992
+ }
993
+ } else {
994
+ console.log(`Tabelle ${Integral7TableNames.STANDORT} ist nicht vorhanden.`);
995
+ }
996
+ }
997
+
998
+ async convertKnotenSo(standortIDs: number[]) {
999
+ if (this.isTableAvailable(Integral7TableNames.KNOTEN_SO)) {
1000
+ const result: Abzweig[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.KNOTEN_SO, 0, 0, standortIDs));
1001
+ for (const i7Data of result) {
1002
+
1003
+ const object = new KnotenSoImpl(i7Data);
1004
+ this.integralKnotenSo.set(i7Data.id, object);
1005
+ object.standort = this.integralStandorte.get(object.standortid);
1006
+
1007
+ const vl = new VoltageLevel(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname);
1008
+ const connectivityNode = new AMPRIONConnectivityNode(generateUUID(), 'Abzweig', 'knotenso');
1009
+
1010
+ connectivityNode.connectivityNodeContainer = vl;
1011
+ connectivityNode.nodeNumber = i7Data.id_psse_cape;
1012
+
1013
+ vl.addConnectivityNode(connectivityNode);
1014
+
1015
+ const baseVoltage = createBaseVoltageIfNotExists(this.cimModel, i7Data.un);
1016
+ vl.baseVoltage = baseVoltage;
1017
+
1018
+ const substation = this.cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
1019
+ if (substation) {
1020
+ vl.substation = substation;
1021
+ substation.addVoltageLevel(vl);
1022
+
1023
+ const i7Schluessel = substation.description +
1024
+ KNOTEN_STANDORT_PRAEFIX +
1025
+ i7Data.un +
1026
+ MITTIGER_PUNKT +
1027
+ ueberpruefeZeichenkette(i7Data.bezeichner);
1028
+ vl.description = i7Schluessel;
1029
+ connectivityNode.description = i7Schluessel;
1030
+ } else {
1031
+ console.log(`KnotenSo ${i7Data.id} ${vl.mrid} besitzt keine Substation.`);
1032
+ }
1033
+
1034
+ //PSRType
1035
+ const psrType = getPSRType(this.cimModel, 'Abzweigmast');
1036
+ vl.psrTypeUUID = psrType?.mrid;
1037
+ // psrType.addPowerSystemResource(vl);
1038
+
1039
+ this.integralID2UUID.set(i7Data.id, connectivityNode.mrid);
1040
+ this.knotenSoIDs.push(i7Data.id);
1041
+ this.cimModel.addVoltageLevel(vl);
1042
+ this.cimModel.addConnectivityNode(connectivityNode);
1043
+ //Spannung speichern
1044
+ this.knotenSpannung.set(connectivityNode.mrid, baseVoltage);
1045
+ this.checkMemoryObject(i7Data.id, connectivityNode);
1046
+ }
1047
+ } else {
1048
+ console.log(`Tabelle ${Integral7TableNames.KNOTEN_SO} ist nicht vorhanden.`);
1049
+ }
1050
+ }
1051
+
1052
+ async covertSchaltanlagen(standortIDs: number[]) {
1053
+ if (this.isTableAvailable(Integral7TableNames.SCHALTANLAGE)) {
1054
+ const result: Anlage[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.SCHALTANLAGE, 0, 0, standortIDs));
1055
+ // this.tableName2tableData.set(Integral7TableNames.SCHALTANLAGE, result);
1056
+ for (const i7Data of result) {
1057
+ const vl = new VoltageLevel(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname);
1058
+ const baseVoltage = createBaseVoltageIfNotExists(this.cimModel, i7Data.un);
1059
+ vl.baseVoltageUUID = baseVoltage.mrid;
1060
+
1061
+ this.cimModel.addVoltageLevel(vl);
1062
+ this.integralID2UUID.set(i7Data.id, vl.mrid);
1063
+ putUUIDtoI7Ids(vl.mrid, i7Data.id, this.UUID2IntegralID);
1064
+
1065
+ const substation = this.cimModel.getSubstation(this.integralID2UUID.get(i7Data.standort));
1066
+ if (substation) {
1067
+ vl.substationUUID = substation.mrid;
1068
+ // substation.addVoltageLevel(vl);
1069
+
1070
+ const i7Schluessel = substation.description +
1071
+ KNOTEN_STANDORT_PRAEFIX +
1072
+ i7Data.un +
1073
+ MITTIGER_PUNKT +
1074
+ ueberpruefeZeichenkette(i7Data.bezeichner);
1075
+ vl.description = i7Schluessel;
1076
+
1077
+ /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1078
+ const schaltanlage = new SchaltanlageImpl(i7Data);
1079
+ schaltanlage.addStandort(this.integralStandorte.get(schaltanlage.standortid));
1080
+ this.integralSchaltanlagen.set(i7Data.id, schaltanlage);
1081
+
1082
+ } else {
1083
+ console.log(`VoltageLevel ${i7Data.id} ${vl.mrid} besitzt keine Umspannanlage.`);
1084
+ }
1085
+ }
1086
+ } else {
1087
+ console.log(`Tabelle ${Integral7TableNames.SCHALTANLAGE} ist nicht vorhanden.`);
1088
+ }
1089
+ }
1090
+
1091
+ async convertSchaltanlagenAbschnitte(schaltanlagenIDs: number[]) {
1092
+ if (this.isTableAvailable(Integral7TableNames.SCHALTANLAGENABSCHNITT)) {
1093
+ const result: AnlagenAbschnitt[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.SCHALTANLAGENABSCHNITT, 0, 0, schaltanlagenIDs));
1094
+ for (const i7Data of result) {
1095
+ const voltageLevel = this.cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
1096
+ this.integralID2UUID.set(i7Data.id, voltageLevel.mrid);
1097
+ putUUIDtoI7Ids(voltageLevel.mrid, i7Data.id, this.UUID2IntegralID);
1098
+
1099
+ // this.schaltanlagenAbschnitteIDs.push(i7Data.id);
1100
+
1101
+ /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1102
+ const schaltanlagenabschnitt = new SchaltanlagenabschnittImpl(i7Data);
1103
+ schaltanlagenabschnitt.addSchaltanlage(this.integralSchaltanlagen.get(schaltanlagenabschnitt.schaltanlageid));
1104
+ this.integralSchaltanlagenAbschnitte.set(i7Data.id, schaltanlagenabschnitt);
1105
+ }
1106
+ } else {
1107
+ console.log(`Tabelle ${Integral7TableNames.SCHALTANLAGENABSCHNITT} ist nicht vorhanden.`);
1108
+ }
1109
+ }
1110
+
1111
+ async convertSammelschienenAbschnitte(schaltanlagenAbschnittIDs: number[]) {
1112
+ if (this.isTableAvailable(Integral7TableNames.SAMMELSCHIENE)) {
1113
+ const result: Ssab[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.SAMMELSCHIENE, 0, 0, schaltanlagenAbschnittIDs));
1114
+ for (const i7Data of result) {
1115
+
1116
+ const busbarSection = new BusbarSection(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname);
1117
+ const connectivityNode = new AMPRIONConnectivityNode(generateUUID(), 'ssab cn',);
1118
+ createConnection(this.cimModel, busbarSection, connectivityNode, PhaseCode.ABC, 1);
1119
+ const voltageLevel = this.cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
1120
+
1121
+ connectivityNode.nodeNumber = i7Data.id_psse_cape;
1122
+ if (voltageLevel) {
1123
+ busbarSection.equipmentContainerUUID = voltageLevel.mrid;
1124
+ // voltageLevel.addEquipment(busbarSection);
1125
+ connectivityNode.connectivityNodeContainerUUID = voltageLevel.mrid;
1126
+ // voltageLevel.addConnectivityNode(connectivityNode);
1127
+ // umin
1128
+ voltageLevel.highVoltageLimit = i7Data.umax;
1129
+ voltageLevel.lowVoltageLimit = i7Data.umin;
1130
+
1131
+ const i7Schluessel = voltageLevel.description +
1132
+ SAMMELSCHIENENABSCHNITT_PRAEFIX +
1133
+ ueberpruefeZeichenkette(i7Data.bezeichner);
1134
+ busbarSection.description = i7Schluessel;
1135
+ connectivityNode.description = i7Schluessel;
1136
+ } else {
1137
+ console.log('Sammelschiene ' + i7Data.id + ' besitzt keine Schaltanlage.');
1138
+ }
1139
+
1140
+ this.integralID2UUID.set(i7Data.id, connectivityNode.mrid);
1141
+ putUUIDtoI7Ids(busbarSection.mrid, i7Data.id, this.UUID2IntegralID);
1142
+
1143
+ this.cimModel.addConnectivityNode(connectivityNode);
1144
+ this.cimModel.addBusbarSection(busbarSection);
1145
+
1146
+ /** Integral 7 Modell erstellen zur Berechnung der Netzschema */
1147
+ if (this.integralSchaltanlagenAbschnitte.has(i7Data.saabschnitt)) {
1148
+ this.integralSchaltanlagenAbschnitte.get(i7Data.saabschnitt).ssab.push(i7Data);
1149
+ }
1150
+ }
1151
+ } else {
1152
+ console.log(`Tabelle ${Integral7TableNames.SAMMELSCHIENE} ist nicht vorhanden.`);
1153
+ }
1154
+ }
1155
+
1156
+ async convertSchaltfelder(schaltanlagenAbschnittIDs: number[]) {
1157
+ if (this.isTableAvailable(Integral7TableNames.SCHALTFELD)) {
1158
+ const result: Schaltfeld[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.SCHALTFELD, 0, 0, schaltanlagenAbschnittIDs));
1159
+ // this.tableName2tableData.set(Integral7TableNames.SCHALTFELD, result);
1160
+ for (const i7Data of result) {
1161
+ const bay = new AMPRIONBay(getUUID(i7Data.guid), getName(i7Data));
1162
+
1163
+ bay.number = i7Data.feldnummer;
1164
+ bay.locationID = i7Data.ips_folder_id;
1165
+
1166
+ const sfImpl = new SchaltfeldImpl(i7Data);
1167
+ this.integralSchaltfelder.set(i7Data.id, sfImpl);
1168
+
1169
+ if (this.integralSchaltanlagenAbschnitte.has(sfImpl.saabschnittid)) {
1170
+ sfImpl.saabschnitt = this.integralSchaltanlagenAbschnitte.get(sfImpl.saabschnittid);
1171
+ sfImpl.saabschnitt.schaltfelder.push(sfImpl);
1172
+ } else {
1173
+ console.log(`Schaltfeld ${i7Data.id} besitzt keine Anlage.`);
1174
+ }
1175
+
1176
+ const voltageLevel = this.cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
1177
+ if (voltageLevel) {
1178
+ bay.voltageLevelUUID = voltageLevel.mrid;
1179
+ // voltageLevel.addBay(bay);
1180
+
1181
+ const i7Schluessel = voltageLevel.description +
1182
+ SCHALTFELD_PRAEFIX +
1183
+ ueberpruefeZeichenkette(i7Data.bezeichner);
1184
+ bay.description = i7Schluessel;
1185
+ } else {
1186
+ console.log(`Schaltfeld ${i7Data.id} besitzt keine Anlage.`);
1187
+ }
1188
+ this.cimModel.addBay(bay);
1189
+ this.integralID2UUID.set(i7Data.id, bay.mrid);
1190
+ }
1191
+ } else {
1192
+ console.log(`Tabelle ${Integral7TableNames.SCHALTFELD} ist nicht vorhanden.`);
1193
+ }
1194
+ }
1195
+
1196
+ async convertQuerkupplungen(schaltanlagenAbschnittIDs: number[]) {
1197
+ if (this.isTableAvailable(Integral7TableNames.QUERKUPPLUNG)) {
1198
+ const result: Querkupplung[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.QUERKUPPLUNG, 0, 0, schaltanlagenAbschnittIDs));
1199
+ // this.tableName2tableData.set(Integral7TableNames.QUERKUPPLUNG, result);
1200
+ for (const i7Data of result) {
1201
+ const bay = new AMPRIONBay(getUUID(i7Data.guid), getName(i7Data), 'Querkupplung');
1202
+
1203
+ bay.number = i7Data.feldnummer;
1204
+ bay.locationID = i7Data.ips_folder_id;
1205
+
1206
+ const voltageLevel = this.cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.saabschnitt));
1207
+ if (voltageLevel) {
1208
+ bay.voltageLevelUUID = voltageLevel.mrid;
1209
+ // voltageLevel.addBay(bay);
1210
+
1211
+ const i7Schluessel = voltageLevel.description +
1212
+ '/QK-' +
1213
+ ueberpruefeZeichenkette(i7Data.bezeichner);
1214
+ bay.description = i7Schluessel;
1215
+ } else {
1216
+ console.log(`Querkupplung ${i7Data.id} besitzt keine Anlage.`);
1217
+ }
1218
+ this.querkupplungIDs.push(i7Data.id);
1219
+ this.cimModel.addBay(bay);
1220
+ this.integralID2UUID.set(i7Data.id, bay.mrid);
1221
+ }
1222
+ } else {
1223
+ console.log(`Tabelle ${Integral7TableNames.QUERKUPPLUNG} ist nicht vorhanden.`);
1224
+ }
1225
+ }
1226
+
1227
+ async convertLaegskupplungen(schaltanlagenIDs: number[]) {
1228
+ if (this.isTableAvailable(Integral7TableNames.LAENGSKUPPLUNG)) {
1229
+ const result: Laengskupplung[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.LAENGSKUPPLUNG, 0, 0, schaltanlagenIDs));
1230
+
1231
+ for (const i7Data of result) {
1232
+
1233
+ const bay = new AMPRIONBay(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname, 'Laengskupplung');
1234
+ const voltageLevel = this.cimModel.getVoltageLevel(this.integralID2UUID.get(i7Data.schaltanlage));
1235
+
1236
+ bay.number = i7Data.feldnummer;
1237
+ bay.locationID = i7Data.ips_folder_id;
1238
+
1239
+ if (voltageLevel) {
1240
+ bay.voltageLevelUUID = voltageLevel.mrid;
1241
+ // voltageLevel.addBay(bay);
1242
+
1243
+ const i7Schluessel = voltageLevel.description +
1244
+ '/LK-' +
1245
+ ueberpruefeZeichenkette(i7Data.bezeichner);
1246
+ bay.description = i7Schluessel;
1247
+ } else {
1248
+ console.log(`Laengskupplung ${i7Data.id} besitzt keine Anlage.`);
1249
+ }
1250
+ this.laengskupplungIDs.push(i7Data.id);
1251
+ this.integralID2UUID.set(i7Data.id, bay.mrid);
1252
+ this.cimModel.addBay(bay);
1253
+ }
1254
+ } else {
1255
+ console.log(`Tabelle ${Integral7TableNames.LAENGSKUPPLUNG} ist nicht vorhanden.`);
1256
+ }
1257
+ }
1258
+
1259
+ async convertBelastungen(knotenSfIDs: number[]) {
1260
+ if (this.isTableAvailable(Integral7TableNames.BELASTUNG)) {
1261
+ const result: Belastung[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.BELASTUNG, 0, 0, knotenSfIDs));
1262
+ for (const i7Data of result) {
1263
+ const energyConsumer = new EnergyConsumer(getUUID(i7Data.guid), getName(i7Data));
1264
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
1265
+ const powerData = getActiveReactivePower(i7Data);
1266
+
1267
+ createSvStatus(this.cimModel, inBetrieb, energyConsumer);
1268
+
1269
+ energyConsumer.p = powerData[0] ? powerData[0] : 0;
1270
+ energyConsumer.q = powerData[1] ? powerData[1] : 0;
1271
+ energyConsumer.pFixed = energyConsumer.p;
1272
+ energyConsumer.qFixed = energyConsumer.q;
1273
+
1274
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
1275
+
1276
+ if (connectivityNode) {
1277
+ createConnection(this.cimModel, energyConsumer, connectivityNode, PhaseCode.ABC);
1278
+
1279
+ const equipmentContainer = determineEquipmentContainer('VoltageLevel', this.cimModel, this.cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()) as EquipmentContainer);
1280
+ if (equipmentContainer) {
1281
+ // equipmentContainer.addEquipment(energyConsumer);
1282
+ energyConsumer.equipmentContainerUUID = equipmentContainer.mrid;
1283
+
1284
+ const i7Schluesel = getDescription(equipmentContainer.getSubstation()) +
1285
+ BELASTUNG_PRAEFIX + i7Data.bezeichner;
1286
+ energyConsumer.description = i7Schluesel;
1287
+ } else {
1288
+ console.log(`EnergyConsumer ${i7Data.id} besitzt keinen EquipmentContainer.`);
1289
+ }
1290
+
1291
+ } else {
1292
+ console.log(`EnergyConsumer ${i7Data.id} besitzt keinen ConnectivityNode.`);
1293
+ }
1294
+
1295
+ this.cimModel.addEnergyConsumer(energyConsumer);
1296
+ this.integralID2UUID.set(i7Data.id, energyConsumer.mrid);
1297
+ }
1298
+ } else {
1299
+ console.log(`Tabelle ${Integral7TableNames.BELASTUNG} ist nicht vorhanden.`);
1300
+ }
1301
+ }
1302
+
1303
+ async convertEinspeisungen(knotenSfIDs: number[]) {
1304
+ if (this.isTableAvailable(Integral7TableNames.EINSPEISUNG)) {
1305
+ const result: Einspeisung[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.EINSPEISUNG, 0, 0, knotenSfIDs));
1306
+ for (const i7Data of result) {
1307
+ const energySource = new EnergySource(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname);
1308
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
1309
+
1310
+ const prio = i7Data.einspprio;
1311
+ const usoll = i7Data.usoll;
1312
+
1313
+ createSvStatus(this.cimModel, inBetrieb, energySource);
1314
+ // TODO Eispeisungen mit Spannungsregelung als ExternalNetworkInjection?
1315
+ const spannungsgeregelt = convertToBooleanI7(i7Data.spannungsgeregelt);
1316
+
1317
+ const powerData = getActiveReactivePower(i7Data);
1318
+ energySource.activePower = powerData[0];
1319
+ energySource.reactivePower = powerData[1];
1320
+
1321
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
1322
+
1323
+ if (connectivityNode) {
1324
+ createConnection(this.cimModel, energySource, connectivityNode, PhaseCode.ABC);
1325
+
1326
+ const equipmentContainer = determineEquipmentContainer('VoltageLevel', this.cimModel, this.cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()) as EquipmentContainer);
1327
+ if (equipmentContainer) {
1328
+ // equipmentContainer.addEquipment(energySource);
1329
+ energySource.equipmentContainerUUID = equipmentContainer.mrid;
1330
+
1331
+ const i7Schluesel = /*getDescription(this.cimModel.getObject(equipmentContainerUUID)?.getSubstation()) +*/
1332
+ EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
1333
+ energySource.description = i7Schluesel;
1334
+
1335
+ } else {
1336
+ console.log(`EnergySource ${i7Data.id} besitzt keinen EquipmentContainer.`);
1337
+ }
1338
+ } else {
1339
+ console.log(`EnergySource ${i7Data.id} besitzt keinen ConnectivityNode.`);
1340
+ }
1341
+
1342
+ // ToDo PSRType
1343
+
1344
+ this.cimModel.addEnergySource(energySource);
1345
+ this.integralID2UUID.set(i7Data.id, energySource.mrid);
1346
+ }
1347
+ } else {
1348
+ console.log(`Tabelle ${Integral7TableNames.EINSPEISUNG} ist nicht vorhanden.`);
1349
+ }
1350
+ }
1351
+
1352
+ async convertGeneratoren(knotenSfIDs: number[]) {
1353
+ // Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
1354
+ if (this.isTableAvailable(Integral7TableNames.GENERATOR)) {
1355
+ const result: Generator[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.GENERATOR, 0, 0, knotenSfIDs))
1356
+ for (const i7Data of result) {
1357
+ const synchronousMachine = new SynchronousMachine(getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
1358
+
1359
+ const s = getActiveReactivePower(i7Data);
1360
+ const s0 = getNumber(i7Data.sr);
1361
+ synchronousMachine.ratedS = s0 === 0 ? s[0] : s0;
1362
+ synchronousMachine.ratedU = i7Data.ur;
1363
+
1364
+ synchronousMachine.type = SynchronousMachineKind.generator;
1365
+ synchronousMachine.referencePriority = i7Data.einspprio;
1366
+
1367
+ const maxQ = getNumber(i7Data.q_max);
1368
+ synchronousMachine.maxQ = maxQ !== 0 ? maxQ : getNumber(i7Data.qmax_von_pmax);
1369
+ const minQ = getNumber(i7Data.q_min);
1370
+ synchronousMachine.minQ = minQ !== 0 ? minQ : getNumber(i7Data.qmin_von_pmin);
1371
+
1372
+ const reactiveCapabilityCurve = new ReactiveCapabilityCurve(generateUUID(), 'CurveData');
1373
+ reactiveCapabilityCurve.curveStyle = CurveStyle.straightLineYValues;
1374
+ reactiveCapabilityCurve.xUnit = UnitSymbol.W;
1375
+ reactiveCapabilityCurve.y1Unit = UnitSymbol.VAr;
1376
+ reactiveCapabilityCurve.y2Unit = UnitSymbol.VAr;
1377
+
1378
+ const curveData1 = new CurveData(generateUUID());
1379
+ curveData1.curve = reactiveCapabilityCurve;
1380
+ curveData1.xvalue = i7Data.p_min; //pMin
1381
+ curveData1.y1value = i7Data.qmin_von_pmin;//qMin pMin
1382
+ curveData1.y2value = i7Data.qmax_von_pmin;//qMay pMin
1383
+ this.cimModel.addCurveData(curveData1);
1384
+
1385
+ const curveData2 = new CurveData(generateUUID());
1386
+ curveData2.curve = reactiveCapabilityCurve;
1387
+ curveData2.xvalue = i7Data.p_max; //pMin
1388
+ curveData2.y1value = i7Data.qmin_von_pmax//qMin pMin
1389
+ curveData2.y2value = i7Data.qmax_von_pmax;//qMay pMin
1390
+ this.cimModel.addCurveData(curveData2);
1391
+
1392
+ this.cimModel.addReactiveCapabilityCurve(reactiveCapabilityCurve);
1393
+ synchronousMachine.initialReactiveCapabilityCurveUUID = reactiveCapabilityCurve.mrid;
1394
+
1395
+
1396
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
1397
+ createSvStatus(this.cimModel, inBetrieb, synchronousMachine);
1398
+
1399
+
1400
+ synchronousMachine.ratedPowerFactor = i7Data.cosphir ? i7Data.cosphir : 0;
1401
+ synchronousMachine.qPercent = i7Data.cos_phi ? (1 - i7Data.cosphir) : 0;
1402
+
1403
+ synchronousMachine.earthing = false;
1404
+ synchronousMachine.r = 0;
1405
+ synchronousMachine.r0 = 0;
1406
+ synchronousMachine.r2 = 0;
1407
+ synchronousMachine.x0 = 0;
1408
+ synchronousMachine.x2 = 0;
1409
+ synchronousMachine.satDirectSubtransX = i7Data.xd2s ? i7Data.xd2s : 0;
1410
+
1411
+ // synchronousMachine.earthingStarPointR
1412
+ // synchronousMachine.earthingStarPointX
1413
+ // ynchronousMachine.ikk: number;
1414
+ // synchronousMachine.mu: number;
1415
+
1416
+ // synchronousMachine.satDirectSyncX: number;
1417
+ // synchronousMachine.satDirectTransX: number;
1418
+ // synchronousMachine.shortCircuitRotorType: ShortCircuitRotorKind;
1419
+ // synchronousMachine.voltageRegulationRange: number;
1420
+
1421
+ // RegulatingControl
1422
+ const regulatingControl = new RegulatingControl(generateUUID(), `RegulatingControl_${synchronousMachine.name}`);
1423
+ switch (i7Data.spannungsgeregelt) {
1424
+ case 1: {
1425
+ regulatingControl.mode = RegulatingControlModeKind.voltage;
1426
+ }
1427
+ default: {
1428
+ regulatingControl.mode = RegulatingControlModeKind.voltage;
1429
+ }
1430
+ }
1431
+ synchronousMachine.regulatingControlUUID = regulatingControl.mrid;
1432
+ // regulatingControl.addRegulatingCondEq(synchronousMachine);
1433
+
1434
+
1435
+ // GeneratingUnit
1436
+ const generatingUnitConfig = FUEL_TYPE_CONFIG[i7Data.nameprimaertyp];
1437
+
1438
+ /** Wenn ein Config für den Primärenergietyp vorhanden*/
1439
+ let generatingUnit;
1440
+
1441
+ if (generatingUnitConfig) {
1442
+ switch (generatingUnitConfig.class) {
1443
+ case 'ThermalGeneratingUnit': {
1444
+ generatingUnit = new ThermalGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1445
+ if (generatingUnitConfig.fuelType) {
1446
+ generateFuelType(i7Data.nameprimaertyp, generatingUnitConfig.fuelType, generatingUnit, this.cimModel);
1447
+ }
1448
+ break;
1449
+ }
1450
+ case 'SolarGeneratingUnit': {
1451
+ generatingUnit = new SolarGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1452
+ break;
1453
+ }
1454
+ case 'WindGeneratingUnit': {
1455
+ generatingUnit = new WindGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
1456
+ switch (generatingUnitConfig.fuelType) {
1457
+ case 'onshore':
1458
+ generatingUnit.windGenUnitType = WindGenUnitKind.onshore;
1459
+ break;
1460
+ case 'offshore':
1461
+ generatingUnit.windGenUnitType = WindGenUnitKind.offshore;
1462
+ break;
1463
+ }
1464
+ break;
1465
+ }
1466
+ case 'NuclearGeneratingUnit': {
1467
+ generatingUnit = new NuclearGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
1468
+ break;
1469
+ }
1470
+ }
1471
+ }
1472
+ if (!generatingUnit) {
1473
+ generatingUnit = new GeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
1474
+ }
1475
+
1476
+ generatingUnit.maxOperatingP = getNumber(i7Data.p_max);
1477
+ generatingUnit.minOperatingP = getNumber(i7Data.p_min);
1478
+
1479
+ generatingUnit.maxOperatingQ = getNumber(i7Data.q_max);
1480
+ generatingUnit.minOperatingQ = getNumber(i7Data.q_min);
1481
+
1482
+ generatingUnit.initialP = getNumber(i7Data.p0);
1483
+ generatingUnit.nominalP = getNumber(generatingUnit.maxOperatingP);
1484
+
1485
+ generatingUnit.genControlSource = GeneratorControlSource.unavailable;
1486
+
1487
+
1488
+ generatingUnit.addRotatingMachine(synchronousMachine);
1489
+ synchronousMachine.generatingUnitUUID = generatingUnit.mrid;
1490
+
1491
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
1492
+
1493
+ if (connectivityNode) {
1494
+ const terminal = createConnection(this.cimModel, synchronousMachine, connectivityNode, PhaseCode.ABC);
1495
+ regulatingControl.terminalUUID = terminal.mrid;
1496
+ const equipmentContainerEquip = determineEquipmentContainer('VoltageLevel', this.cimModel, this.cimModel.getObject(connectivityNode.getConnectivityNodeContainerUUID()) as EquipmentContainer);
1497
+ if (equipmentContainerEquip) {
1498
+ // equipmentContainer.addEquipment(synchronousMachine);
1499
+ synchronousMachine.equipmentContainerUUID = equipmentContainerEquip.mrid;
1500
+
1501
+ // equipmentContainer.addEquipment(generatingUnit);
1502
+ const i7Schluesel = /*getDescription(equipmentContainer.getSubstation()) +*/
1503
+ GENERATOR_PRAEFIX + i7Data.bezeichner;
1504
+ synchronousMachine.description = i7Schluesel;
1505
+
1506
+ // GeneratingUnits EquipContainer is Substation
1507
+
1508
+
1509
+ const vlEqipContainer = (equipmentContainerEquip as VoltageLevel);
1510
+ const equipmentContainergenUnitUUID = vlEqipContainer?.getSubstationUUID();
1511
+ if (equipmentContainergenUnitUUID) {
1512
+ generatingUnit.equipmentContainerUUID = equipmentContainergenUnitUUID;
1513
+ } else {
1514
+ console.log(`GeneratingUnit ${i7Data.id} besitzt keinen EquipmentContainer/Substation.`);
1515
+ }
1516
+ } else {
1517
+ console.log(`SynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
1518
+ console.log(`SynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
1519
+ }
1520
+ } else {
1521
+ console.log(`SynchronousMachine ${i7Data.id} besitzt keinen ConnectivityNode.`);
1522
+ }
1523
+
1524
+ this.cimModel.addRegulatingControl(regulatingControl);
1525
+ this.cimModel.addGeneratingUnit(generatingUnit);
1526
+ this.cimModel.addSynchronousMachine(synchronousMachine);
1527
+ this.integralID2UUID.set(i7Data.id, synchronousMachine.mrid);
1528
+
1529
+ }
1530
+ }
1531
+ }
1532
+
1533
+ async convertKnotenSf(schaltfeldIDs: number[]) {
1534
+ if (this.isTableAvailable(Integral7TableNames.KNOTEN_SF)) {
1535
+ const result: SchaltfeldKnoten[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.KNOTEN_SF, 0, 0, schaltfeldIDs));
1536
+
1537
+ for (const i7Data of result) {
1538
+ const connectivityNode = new ConnectivityNode(getUUID(i7Data.guid), 'knotensf cn', 'knotensf');
1539
+ const bay = this.cimModel.getBay(this.integralID2UUID.get(i7Data.schaltfeld))
1540
+ if (bay) {
1541
+ connectivityNode.connectivityNodeContainerUUID = bay.mrid;
1542
+ // bay.addConnectivityNode(connectivityNode);
1543
+ } else {
1544
+ console.log(`KnotenSf ${i7Data.id} besitzt kein Schaltfeld.`);
1545
+ }
1546
+ this.knotenSfIDs.push(i7Data.id);
1547
+ this.cimModel.addConnectivityNode(connectivityNode);
1548
+ this.integralID2UUID.set(i7Data.id, connectivityNode.mrid);
1549
+ this.knotenSpannung.set(connectivityNode.mrid, connectivityNode.getBaseVoltage());
1550
+ this.checkMemoryObject(i7Data.id, connectivityNode);
1551
+ }
1552
+ } else {
1553
+ console.log(`Tabelle ${Integral7TableNames.KNOTEN_SF} ist nicht vorhanden.`);
1554
+ }
1555
+ }
1556
+
1557
+ async convertKnotenKf(querkupplungIDs: number[]) {
1558
+ if (this.isTableAvailable(Integral7TableNames.KNOTEN_KF)) {
1559
+ const result: KnotenKf[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.KNOTEN_KF, 0, 0, querkupplungIDs));
1560
+ for (const i7Data of result) {
1561
+ const connectivityNode = new ConnectivityNode(getUUID(i7Data.guid), 'knotenkf cn', 'knotenkf');
1562
+
1563
+ const bay = this.cimModel.getBay(this.integralID2UUID.get(i7Data.kpfeld))
1564
+ if (bay) {
1565
+ connectivityNode.connectivityNodeContainerUUID = bay.mrid;
1566
+ // bay.addConnectivityNode(connectivityNode);
1567
+ } else {
1568
+ console.log(`KnotenKf ${i7Data.id} besitzt kein Schaltfeld.`);
1569
+ }
1570
+ this.integralID2UUID.set(i7Data.id, connectivityNode.mrid);
1571
+ this.cimModel.addConnectivityNode(connectivityNode);
1572
+ }
1573
+ } else {
1574
+ console.log(`Tabelle ${Integral7TableNames.KNOTEN_KF} ist nicht vorhanden.`);
1575
+ }
1576
+ }
1577
+
1578
+ async convertKnotenLk(laengskupplungIDs: number[]) {
1579
+ if (this.isTableAvailable(Integral7TableNames.KNOTEN_LK)) {
1580
+ const result: KnotenLk[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.KNOTEN_LK, 0, 0, laengskupplungIDs));
1581
+ for (const i7Data of result) {
1582
+ const connectivityNode = new ConnectivityNode(generateUUID(), getName(i7Data), 'KnotenLk',);
1583
+
1584
+ const bay = this.cimModel.getBay(this.integralID2UUID.get(i7Data.lkupplung));
1585
+ if (bay) {
1586
+ connectivityNode.connectivityNodeContainerUUID = bay.mrid;
1587
+ // bay.addConnectivityNode(connectivityNode);
1588
+ } else {
1589
+ console.log(`KnotenLk ${i7Data.id} besitzt kein Schaltfeld.`);
1590
+ }
1591
+ this.integralID2UUID.set(i7Data.id, connectivityNode.mrid);
1592
+ this.cimModel.addConnectivityNode(connectivityNode);
1593
+ }
1594
+ } else {
1595
+ console.log(`Tabelle ${Integral7TableNames.KNOTEN_LK} ist nicht vorhanden.`);
1596
+ }
1597
+ }
1598
+
1599
+ /** Netzschlaufen werden als ein Terminal abgebildet
1600
+ * Schaltzustand wird über Property 'connected' abgebildet. */
1601
+ async convertSchlaufen(knotenSoIDs: number[]) {
1602
+ //Schlaufen
1603
+ if (this.isTableAvailable(Integral7TableNames.SCHLAUFE)) {
1604
+ const result: Schlaufe[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.SCHLAUFE, 0, 0, knotenSoIDs));
1605
+ for (const i7Data of result) {
1606
+
1607
+ const terminal = new Terminal(generateUUID(), 'T_Schlaufe', String(i7Data.id));
1608
+ terminal.connected = convertToBooleanI7(i7Data.schaltzustand);
1609
+ terminal.phases = PhaseCode.ABC;
1610
+ /* Schlaufenterminals werden nicht im Modell,
1611
+ sondern in der Map memoryObjects gespeichert.
1612
+ Serialisierung erfolgt erst nach Konvertierung aller leitenden Elementen!
1613
+ Der Grund: Die 'ConductingEquipment'-Assoziation muss bei jedem Terminal gesetzt sein!
1614
+ this.cimModel.addTerminal(terminal);*/
1615
+
1616
+ this.integralID2UUID.set(i7Data.id, terminal.mrid);
1617
+ this.integralID2UUID.set(i7Data.knotenzw, terminal.mrid);
1618
+
1619
+ this.memoryObjects.set(i7Data.id, terminal);
1620
+ this.memoryObjects.set(i7Data.knotenzw, terminal);
1621
+ const eknotenUUID = this.integralID2UUID.get(i7Data.eknoten);
1622
+ // const connectivityNode = this.cimModel.getConnectivityNode(eknotenUUID) as IConnectivityNode;
1623
+ if (eknotenUUID) {
1624
+ // connectivityNode.addTerminal(terminal);
1625
+ terminal.connectivityNodeUUID = eknotenUUID;
1626
+ const connectivityNode = this.cimModel.getConnectivityNode(eknotenUUID);
1627
+ this.knotenSpannung.set(connectivityNode?.mrid, connectivityNode?.getBaseVoltage());
1628
+ } else {
1629
+ console.log(`Schlaufe ${i7Data.id} besitzt kein KnotenSO).`);
1630
+ }
1631
+ }
1632
+ } else {
1633
+ console.log(`Tabelle ${Integral7TableNames.SCHLAUFE} ist nicht vorhanden.`)
1634
+ }
1635
+ }
1636
+
1637
+ async convertSchemaStandorte(standortIDs: number[]) {
1638
+ if (this.isTableAvailable(Integral7TableNames.NSG_STANDORT)) {
1639
+ const result: NsgStandort[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_STANDORT, 0, 0, standortIDs));
1640
+ for (const i7Data of result) {
1641
+ const standortNsgImpl = new StandortNsgImpl(i7Data);
1642
+ this.integralNsgStandort.set(i7Data.id, standortNsgImpl);
1643
+
1644
+ if (this.integralStandorte.has(standortNsgImpl.standortid)) {
1645
+ standortNsgImpl.standort = this.integralStandorte.get(standortNsgImpl.standortid);
1646
+ standortNsgImpl.standort.standortNsg = standortNsgImpl;
1647
+ } else {
1648
+ console.log(`standortNsg/DiagramObject ${standortNsgImpl.id} hat keine Standort-Instanz.`);
1649
+ }
1650
+ }
1651
+ } else {
1652
+ console.log(`Tabelle ${Integral7TableNames.NSG_STANDORT} ist nicht vorhanden.`);
1653
+ }
1654
+ }
1655
+
1656
+ async convertSchemaKnotenSo(knotenSoIDs: number[]) {
1657
+ if (this.isTableAvailable(Integral7TableNames.NSG_KNOTEN_SO)) {
1658
+ const result: NsgKnotenSo[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_KNOTEN_SO, 0, 0, knotenSoIDs));
1659
+ //const result: NsgStandort[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_STANDORT, 0, 0, standortIDs));
1660
+ for (const i7Data of result) {
1661
+
1662
+ const knotenSoNsgImpl = new KnotenSoNsg(i7Data);
1663
+ this.integralNsgKnotenSo.set(i7Data.id, knotenSoNsgImpl);
1664
+
1665
+ if (this.integralKnotenSo.has(knotenSoNsgImpl.knotensoid)) {
1666
+ knotenSoNsgImpl.knotenso = this.integralKnotenSo.get(knotenSoNsgImpl.knotensoid);
1667
+ knotenSoNsgImpl.knotenso.knotenSoNsg = knotenSoNsgImpl;
1668
+ }
1669
+
1670
+ const diagramObject = new DiagramObject(getUUID(i7Data.guid), 'Abzweig', String(i7Data.variantennr));
1671
+ this.cimModel.addDiagramObject(diagramObject);
1672
+
1673
+ const nsgStandortData = this.integralNsgStandort.get(i7Data.nsgso);
1674
+
1675
+ if (nsgStandortData) {
1676
+
1677
+ const diagramObjectPoint = new DiagramObjectPoint(nsgStandortData.xrel + i7Data.xrel, nsgStandortData.yrel + i7Data.yrel);
1678
+
1679
+ diagramObjectPoint.mrid = generateUUID();
1680
+ diagramObjectPoint.diagramObject = diagramObject;
1681
+ diagramObject.addDiagramObjectPoint(diagramObjectPoint);
1682
+
1683
+ const cnUUID = this.integralID2UUID.get(i7Data.knotenso);
1684
+
1685
+ const cn = this.cimModel.getObject(cnUUID);
1686
+ if (cn) {
1687
+ // cn.addDiagramObject(diagramObject);
1688
+ diagramObject.identifiedObjectUUID = cn.mrid;
1689
+ } else {
1690
+ console.log(`KnotenSo/DiagramObject ${diagramObject.mrid} hat kein PSR-Objekt.`);
1691
+ }
1692
+ const diagramUUID = this.integralID2UUID.get(i7Data.variantennr);
1693
+ const diagram = this.cimModel.getDiagram(diagramUUID);
1694
+ if (diagram) {
1695
+ // diagram.addDiagramObject(diagramObject);
1696
+ diagramObject.diagramUUID = diagram.mrid;
1697
+ } else {
1698
+ //console.log(`Abzweig/DiagramObject ${diagramObject.mrid} mit der VariantenNr ${i7Data.variantennr} hat kein Diagram-Objekt.`);
1699
+ }
1700
+ //this.integralID2UUID.set(+(i7Data.id + '' + i7Data.variantennr), diagramObject.mrid);
1701
+ } else {
1702
+ //console.log(`NSG KnotenSo hat keinen NsgStandort.`);
1703
+ }
1704
+ }
1705
+ } else {
1706
+ console.log(`Tabelle ${Integral7TableNames.NSG_KNOTEN_SO} ist nicht vorhanden.`);
1707
+ }
1708
+ }
1709
+
1710
+ async convertSchemaSchaltanlage(saIDs: number[]) {
1711
+ if (this.isTableAvailable(Integral7TableNames.NSG_SCHALTANLAGE)) {
1712
+ const result: NsgSA[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_SCHALTANLAGE, 0, 0, saIDs));
1713
+ // const result: NsgSA[] = await getConnectionTypeOrm(this.dbConnectionName).query(NSG_SCHALTANLAGE_SQL_QUERY);
1714
+ for (const i7Data of result) {
1715
+
1716
+ const saNsgImpl = new SchaltanlageNsgImpl(i7Data);
1717
+ this.integralNsgSchaltanlage.set(i7Data.id, saNsgImpl);
1718
+
1719
+ //Netzschaltanlage
1720
+ if (this.integralSchaltanlagen.has(saNsgImpl.schaltanlageid)) {
1721
+ saNsgImpl.schaltanlage = this.integralSchaltanlagen.get(saNsgImpl.schaltanlageid);
1722
+ saNsgImpl.schaltanlage.schaltanlageNsg = saNsgImpl;
1723
+ } else {
1724
+ console.log(`SchaltanlageNSG ${i7Data.id} hat keine PSR Instanz.`);
1725
+ }
1726
+ //Standort
1727
+ if (this.integralNsgStandort.has(saNsgImpl.nsgsoid)) {
1728
+ saNsgImpl.nsgso = this.integralNsgStandort.get(saNsgImpl.nsgsoid);
1729
+ saNsgImpl.nsgso.schaltanlagenNsg.push(saNsgImpl);
1730
+ } else {
1731
+ console.log(`SchaltanlageNSG ${i7Data.id} hat keine standortNsg Instanz.`);
1732
+ }
1733
+ }
1734
+ } else {
1735
+ console.log(`Tabelle ${Integral7TableNames.NSG_KNOTEN_SO} ist nicht vorhanden.`);
1736
+ }
1737
+ }
1738
+
1739
+ async convertSchemaSchaltanlagenAbschnitte(schaltanlagenabschnittIDs: number[]) {
1740
+ if (this.isTableAvailable(Integral7TableNames.NSG_SCHALTANLAGENABSCHNITT)) {
1741
+ const result: NsgSAAB[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_SCHALTANLAGENABSCHNITT, 0, 0, schaltanlagenabschnittIDs));
1742
+ for (const i7Data of result) {
1743
+ const saabNsgImpl = new SchaltanlagenabschnittNsg(i7Data);
1744
+ this.integralNsgSchaltanlagenabschnitt.set(i7Data.id, saabNsgImpl);
1745
+
1746
+ if (this.integralSchaltanlagenAbschnitte.has(saabNsgImpl.saabschnittid)) {
1747
+ saabNsgImpl.saabschnitt = this.integralSchaltanlagenAbschnitte.get(saabNsgImpl.saabschnittid);
1748
+ saabNsgImpl.saabschnitt.schaltanlagenabschnittNsg = saabNsgImpl;
1749
+ } else {
1750
+ console.log(`NSG Schaltanlagenabschnitt hat keinen PSR-Abschnitt`);
1751
+ }
1752
+ // Scaltanlage
1753
+ if (saabNsgImpl.saabschnitt && saabNsgImpl.saabschnitt.schaltanlage) {
1754
+ if (saabNsgImpl.saabschnitt.schaltanlage.schaltanlageNsg) {
1755
+ saabNsgImpl.saabschnitt.schaltanlage.schaltanlageNsg.saabNsg.push(saabNsgImpl);
1756
+ saabNsgImpl.nsgsa = saabNsgImpl.saabschnitt.schaltanlage.schaltanlageNsg;
1757
+ }
1758
+ }
1759
+ }
1760
+ } else {
1761
+ console.log(`Tabelle ${Integral7TableNames.NSG_KNOTEN_SO} ist nicht vorhanden.`);
1762
+ }
1763
+ }
1764
+
1765
+ async convertSchemaSammelschienenAbschnitte() {
1766
+ for (const sa of this.integralSchaltanlagen.values()) {
1767
+ const totalSlots = sa.getTotalSlots();
1768
+ // const delta = sa.getDelta();
1769
+ if (sa.schaltanlageNsg) {
1770
+ const saAusrichtung = sa.schaltanlageNsg.ausrichtung;
1771
+ for (const saab of sa.saab) {
1772
+ for (const ssab of saab.ssab) {
1773
+ const cnUUID = this.integralID2UUID.get(ssab.id);
1774
+ const connectivityNode = this.cimModel.getConnectivityNode(cnUUID) as IConnectivityNode;
1775
+
1776
+ const standortPoint = sa.standort.getPoint();
1777
+ const saPoint = sa.getPoint();
1778
+ const ssabPoint = standortPoint.translate(saPoint.x, saPoint.y);
1779
+
1780
+ const offset = saab.schaltanlagenabschnittNsg.nslots;
1781
+ const laenge = saab.schaltanlagenabschnittNsg.laenge;
1782
+ const delta = sa.getDelta(saab);
1783
+ const hoehe = saab.ssab.length * 8;
1784
+
1785
+ const diagramObject = new DiagramObject(getUUID(''), 'SSAB Diagram', String(sa.schaltanlageNsg.variantennr));
1786
+ const points: Point[] = [];
1787
+
1788
+ if (saAusrichtung === 0) { // oben/waagerecht
1789
+ // points.push(new Pi);
1790
+ points.push(new Point(ssabPoint.x - 8 + (offset * 16), ssabPoint.y + 4 - hoehe + ssab.pos * 8 + delta));
1791
+ points.push(new Point(ssabPoint.x - 8 + (offset * 16) + (laenge * 16), ssabPoint.y + 4 - hoehe + ssab.pos * 8 + delta));
1792
+
1793
+ } else if (saAusrichtung === 1) { // rechts/senkrecht
1794
+ points.push(new Point(ssabPoint.x + 4 - hoehe + ssab.pos * 8 + delta, ssabPoint.y - 8 + (offset * 16)));
1795
+ points.push(new Point(ssabPoint.x + 4 - hoehe + ssab.pos * 8 + delta, ssabPoint.y - 8 + (offset * 16) + (laenge * 16)));
1796
+
1797
+ } else if (saAusrichtung === 2) { // unten/waagerecht
1798
+ points.push(new Point(ssabPoint.x - 8 + (offset * 16), ssabPoint.y + 4 - hoehe + ssab.pos * 8 + delta));
1799
+ points.push(new Point(ssabPoint.x - 8 + (offset * 16) + (laenge * 16), ssabPoint.y + 4 - hoehe + ssab.pos * 8 + delta));
1800
+ } else if (saAusrichtung === 3) { // links/senkrecht
1801
+ points.push(new Point(ssabPoint.x + 4 - hoehe + ssab.pos * 8 + delta, ssabPoint.y - 8 + (totalSlots * 16) - (offset * 16)));
1802
+ points.push(new Point(ssabPoint.x + 4 - hoehe + ssab.pos * 8 + delta, ssabPoint.y - 8 + (totalSlots * 16) - (offset * 16 + laenge * 16)));
1803
+ }
1804
+
1805
+ createDiagramObjectPoints(diagramObject, points);
1806
+
1807
+ // connectivityNode.addDiagramObject(diagramObject);
1808
+ diagramObject.identifiedObjectUUID = connectivityNode.mrid;
1809
+ this.cimModel.addDiagramObject(diagramObject);
1810
+
1811
+ const diagramUUID = this.integralID2UUID.get(sa.schaltanlageNsg.variantennr);
1812
+ const diagram = this.cimModel.getDiagram(diagramUUID);
1813
+ if (diagram) {
1814
+ // diagram.addDiagramObject(diagramObject);
1815
+ diagramObject.diagramUUID = diagram.mrid;
1816
+ } else {
1817
+ //console.log(`SSAB/DiagramObject ${diagramObject.mrid} mit der VariantenNr ${sa.schaltanlageNsg.variantennr} hat kein Diagram-Objekt.`);
1818
+ }
1819
+ }
1820
+ }
1821
+ }
1822
+ }
1823
+ }
1824
+
1825
+ async convertSchemaSchaltfelder(schaltfeldIDs: number[]) {
1826
+ if (this.isTableAvailable(Integral7TableNames.NSG_SCHALTFELD)) {
1827
+ const result: NsgSchaltfeld[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_SCHALTFELD, 0, 0, schaltfeldIDs));
1828
+ //const result: NsgSAAB[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NSG_SCHALTANLAGENABSCHNITT, 0, 0, schaltanlagenabschnittIDs));
1829
+ for (const i7Data of result) {
1830
+
1831
+ const sfNSG = new SchaltfeldNsgImpl(i7Data);
1832
+ sfNSG.schaltfeld = this.integralSchaltfelder.get(sfNSG.schaltfeldid);
1833
+ if (sfNSG.schaltfeld) {
1834
+ sfNSG.schaltfeld.schaltfeldNsg = sfNSG;
1835
+ }
1836
+
1837
+ sfNSG.nsgsaa = this.integralNsgSchaltanlagenabschnitt.get(sfNSG.nsgsaaid);
1838
+
1839
+ this.integralNsgSchaltfelder.set(i7Data.id, sfNSG);
1840
+
1841
+ const sf = sfNSG.schaltfeld;
1842
+ if (sf) {
1843
+ const standort = sf.getStandort();
1844
+ const sa = sf.getSA();
1845
+ const saab = sf.getSAAB();
1846
+
1847
+ if (standort && sa && saab) {
1848
+ const pointSt = standort.getPoint();
1849
+ const pointSaRel = sa.getPoint();
1850
+ const pointSa = pointSt.translate(pointSaRel.x, pointSaRel.y);
1851
+
1852
+ const slotOffset = saab.getSlotOffset();
1853
+
1854
+ const saAusrichtung = sa.schaltanlageNsg.ausrichtung;
1855
+ const deltaAusrichtung = sfNSG.deltaausrichtung;
1856
+ const slotnummer = sfNSG.slotnummer;
1857
+
1858
+ const d = 4; //versatz in Pixeln auf Sammelschiene d=0 -> 4 Pixel länger d=1 ->3 / d=2 -> 2
1859
+
1860
+ const deltaSSAB = sa.getDelta(saab); // ssab.length * 8 - 16
1861
+ const posSSAB = sfNSG.schaltfeld.getPosSSAB(saAusrichtung, deltaAusrichtung);
1862
+
1863
+
1864
+ let pointLinksOben, pointRechtsUnten;
1865
+ if (saAusrichtung === 0) { // oben/waagerecht
1866
+ const pointSf = pointSa.translate(16 * (slotnummer + slotOffset) - 16, 0);
1867
+ if (deltaAusrichtung === 1) {
1868
+ pointSf.y = pointSf.y + 65 + deltaSSAB; // punkt links unten
1869
+ pointRechtsUnten = pointSf.translate(32, 0);
1870
+ pointLinksOben = pointSf.translate(0, -sfNSG.hoehe /*+ 8 * posSSAB + d*/);
1871
+ } else {
1872
+ pointSf.y = pointSf.y - sfNSG.hoehe + deltaSSAB; // punkt rechts oben
1873
+ pointLinksOben = pointSf.translate(0, 0);
1874
+ pointRechtsUnten = pointSf.translate(32, sfNSG.hoehe /*- 8 * posSSAB - d*/);
1875
+ }
1876
+ } else if (saAusrichtung === 1) { // rechts/senkrecht
1877
+
1878
+ } else if (saAusrichtung === 2) { // unten/waagerecht
1879
+
1880
+ } else if (saAusrichtung === 3) { // links/senkrecht
1881
+
1882
+ }
1883
+
1884
+ //
1885
+ if (pointLinksOben && pointRechtsUnten) {
1886
+
1887
+ const points: Point[] = [];
1888
+
1889
+ points.push(new Point(pointLinksOben.x, pointLinksOben.y)); // links oben
1890
+ points.push(new Point(pointRechtsUnten.x, pointLinksOben.y)); // rechts oben
1891
+ points.push(new Point(pointRechtsUnten.x, pointRechtsUnten.y)); // rechts unten
1892
+ points.push(new Point(pointLinksOben.x, pointRechtsUnten.y)); // links unten
1893
+ points.push(new Point(pointLinksOben.x, pointLinksOben.y));
1894
+
1895
+ points.push(new Point(pointLinksOben.x + 16, pointLinksOben.y));
1896
+ points.push(new Point(pointLinksOben.x + 16, pointRechtsUnten.y));
1897
+
1898
+ const diagramObject = new DiagramObject(getUUID(''), 'Schaltfeld',
1899
+ String(sa.schaltanlageNsg.variantennr));
1900
+
1901
+ const bayUUID = this.integralID2UUID.get(sf.id);
1902
+ const bay = this.cimModel.getBay(bayUUID);
1903
+ if (bay) {
1904
+ createDiagramObjectPoints(diagramObject, points);
1905
+ // bay.addDiagramObject(diagramObject);
1906
+ diagramObject.identifiedObjectUUID = bay.mrid;
1907
+
1908
+ const diagramUUID = this.integralID2UUID.get(sa.schaltanlageNsg.variantennr);
1909
+ const diagram = this.cimModel.getDiagram(diagramUUID);
1910
+ if (diagram) {
1911
+ // diagram.addDiagramObject(diagramObject);
1912
+ diagramObject.diagramUUID = diagram.mrid;
1913
+
1914
+ // this.convertSchemaBayElements(bay, diagram, saAusrichtung, deltaAusrichtung);
1915
+ } else {
1916
+ // console.log(`Schaltfeld/DiagramObject ${diagramObject.mrid} mit der VariantenNr ${sa.schaltanlageNsg.variantennr} hat kein Diagram-Objekt.`);
1917
+ }
1918
+ } else {
1919
+ console.log(`DiagramObject Schaltfeld ${diagramObject.mrid} mit der VariantenNr ${sa.schaltanlageNsg.variantennr} hat kein CIM Schaltfeld ${sf.id} ${bayUUID}.`);
1920
+ }
1921
+ }
1922
+ }
1923
+ }
1924
+ /* const diagramObject = new DiagramObject(getUUID(i7Data.guid), 'Schaltfeld', String(i7Data.variantennr));
1925
+ this.cimModel.addDiagramObject(diagramObject);*/
1926
+
1927
+
1928
+ }
1929
+ } else {
1930
+ console.log(`Tabelle ${Integral7TableNames.NSG_KNOTEN_SO} ist nicht vorhanden.`);
1931
+ }
1932
+ }
1933
+
1934
+
1935
+ async convertStarreVerbindungen(containerIDs: number[]) {
1936
+
1937
+ if (this.isTableAvailable(Integral7TableNames.KNOTEN_STARR)) {
1938
+ const result: StarrerKnoten[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.KNOTEN_STARR, 0, 0, containerIDs));
1939
+ for (const i7Data of result) {
1940
+ const junction = new Junction(getUUID(i7Data.guid), i7Data.bezeichner, 'JNCT', 'starre Verbindung');
1941
+ const schaltzustand = convertToBooleanI7(i7Data.schaltzustand);
1942
+
1943
+ const equipmentContainer = determineEquipmentContainer( 'VoltageLevel', this.cimModel, this.cimModel.getObject(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer);
1944
+
1945
+ const cnStart = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
1946
+ const cnZiel = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
1947
+ if (equipmentContainer) {
1948
+ // equipmentContainer.addEquipment(junction);
1949
+ junction.equipmentContainerUUID = equipmentContainer.mrid;
1950
+ } else {
1951
+ console.log(`Starre verbindung ${i7Data.id} besitzt keinen EquipmentContainer.`);
1952
+ }
1953
+ if (cnStart) {
1954
+ const terminal = createConnection(this.cimModel, junction, cnStart, PhaseCode.ABC, 1);
1955
+ if (schaltzustand === false) {
1956
+ terminal.connected = schaltzustand;
1957
+ }
1958
+ } else {
1959
+ console.log(`Starre verbindung ${i7Data.id} besitzt keinen Anfangsknoten.`);
1960
+ }
1961
+ if (cnZiel) {
1962
+ const terminal = createConnection(this.cimModel, junction, cnZiel, PhaseCode.ABC, 2);
1963
+ if (schaltzustand === false) {
1964
+ terminal.connected = schaltzustand;
1965
+ }
1966
+ } else {
1967
+ console.log(`Starre verbindung ${i7Data.id} besitzt keinen Zielknoten.`);
1968
+ }
1969
+
1970
+ const baseVoltage = getTerminalUn(this.cimModel, junction);
1971
+ if (baseVoltage) {
1972
+ junction.baseVoltageUUID = baseVoltage.mrid;
1973
+ }
1974
+
1975
+ this.integralID2UUID.set(i7Data.id, junction.mrid);
1976
+ this.cimModel.addJunction(junction);
1977
+ }
1978
+
1979
+ } else {
1980
+ console.log(`Tabelle ${Integral7TableNames.KNOTEN_STARR} ist nicht vorhanden.`)
1981
+ }
1982
+
1983
+ }
1984
+
1985
+
1986
+ /**
1987
+ * @param lineAttribute Attribut zur Bestimmung der Stromkreise */
1988
+
1989
+ /* async convertErsatzLaengszweige() {
1990
+ if (this.isTableAvailable(Integral7TableNames.ERSATZLAENGSZWEIG)) {
1991
+
1992
+ const result: LeitungErsatzLaengszweig[] = await this.queryFunctionWrapper(ERSATZLAENGSZWEIG_SQL_QUERY);
1993
+ for (const i7Data of result) {
1994
+
1995
+ // Topologie
1996
+ /!* Anfang
1997
+ * 3 moegliche Anschluesse
1998
+ * KontenSo -> Anschluesspunkt
1999
+ * KnotenSf -> Schaltfeldpunkt
2000
+ * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt *!/
2001
+
2002
+ const i7Schluessel = ERSATZLAENGSZWEIG_PRAEFIX +
2003
+ ueberpruefeZeichenkette(i7Data.ukz) +
2004
+ MITTIGER_PUNKT +
2005
+ ueberpruefeZeichenkette(i7Data.kurzname) +
2006
+ MITTIGER_PUNKT +
2007
+ ueberpruefeZeichenkette(i7Data.bezeichner) +
2008
+ MITTIGER_PUNKT +
2009
+ ueberpruefeZeichenkette(i7Data.stkabname);
2010
+
2011
+ const equivalentBranch = new EquivalentBranch(generateUUID(), getName(i7Data), i7Data.stkabname, i7Schluessel);
2012
+
2013
+ // TODO alles überprüfen
2014
+ equivalentBranch.negativeR12 = i7Data.r12_lfl;
2015
+ equivalentBranch.negativeR21 = i7Data.r21_lfl;
2016
+ equivalentBranch.negativeX12 = i7Data.x12_lfl;
2017
+ equivalentBranch.negativeX21 = i7Data.x21_lfl;
2018
+
2019
+ equivalentBranch.positiveR12 = i7Data.r12_lfl;
2020
+ equivalentBranch.positiveR21 = i7Data.r21_lfl;
2021
+ equivalentBranch.positiveX12 = i7Data.x12_lfl;
2022
+ equivalentBranch.positiveX21 = i7Data.x21_lfl;
2023
+
2024
+ // equivalentBranch.r = i7Data.r;
2025
+ equivalentBranch.r21 = i7Data.r12_lfl;
2026
+ // equivalentBranch.x = ;
2027
+ equivalentBranch.x21 = i7Data.x21_lfl;
2028
+ equivalentBranch.zeroR12 = i7Data.r12_ks;
2029
+ equivalentBranch.zeroR21 = i7Data.r12_ks;
2030
+ equivalentBranch.zeroX12 = i7Data.x12_ks;
2031
+ equivalentBranch.zeroX21 = i7Data.x12_ks;
2032
+
2033
+ const baseVoltageUr1 = createBaseVoltageIfNotExists(this.cimModel, i7Data.ur1);
2034
+ const baseVoltageUr2 = createBaseVoltageIfNotExists(this.cimModel, i7Data.ur2);
2035
+ if (baseVoltageUr1) {
2036
+ equivalentBranch.baseVoltage = baseVoltageUr1;
2037
+ } else if (baseVoltageUr2) {
2038
+ equivalentBranch.baseVoltage = baseVoltageUr2;
2039
+ } else {
2040
+ console.log(`Ersatzlaengszweig ${i7Data.id} ${equivalentBranch.mrid} besitzt keine Spannungsebenenangabe.`);
2041
+ }
2042
+ this.cimModel.addEquivalentBranch(equivalentBranch);
2043
+ this.integralID2UUID.set(i7Data.id, equivalentBranch.mrid);
2044
+
2045
+ // Topologie
2046
+ /!* Anfang
2047
+ * 3 moegliche Anschluesse
2048
+ * KontenSo -> Anschluesspunkt
2049
+ * KnotenSf -> Schaltfeldpunkt
2050
+ * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt *!/
2051
+ const startUUID = this.integralID2UUID.get(i7Data.aknoten);
2052
+ const targetUUID = this.integralID2UUID.get(i7Data.eknoten);
2053
+
2054
+ const start = this.cimModel.getObject(startUUID);
2055
+ if(start) {
2056
+ createConnection(this.cimModel, equivalentBranch, start, PhaseCode.ABC, 1);
2057
+ } else {
2058
+ console.log(`Ersatzlaengszweig ${i7Data.id} ${equivalentBranch.mrid} besitzt keinen Anfangsknoten.`);
2059
+ }
2060
+ const target = this.cimModel.getObject(targetUUID);
2061
+ if(target) {
2062
+ createConnection(this.cimModel, equivalentBranch, target, PhaseCode.ABC, 2);
2063
+ } else {
2064
+ console.log(`Ersatzlaengszweig ${i7Data.id} ${equivalentBranch.mrid} besitzt keinen Zielknoten.`);
2065
+ }
2066
+ }
2067
+
2068
+ } else {
2069
+ console.log(`Tabelle ${Integral7TableNames.ERSATZLAENGSZWEIG} ist nicht vorhanden.`);
2070
+ }
2071
+ }*/
2072
+
2073
+ /**
2074
+ * @param lineAttribute Attributsname zum Bestimmen der Stronkreise*/
2075
+ async convertStromkreise() {
2076
+ if (this.isTableAvailable(Integral7TableNames.LEITUNG)) {
2077
+ const result: LeitungStk[] = await this.queryFunctionWrapper(`SELECT DISTINCT kurzname, bezeichner FROM ${Integral7TableNames[I7Objects.LEITUNG]}`);
2078
+ for (const i7Data of result) {
2079
+
2080
+ let line = getLineByAttribute(this.cimModel, 'name', i7Data.bezeichner);
2081
+ if (!line) {
2082
+ line = new Line(generateUUID());
2083
+ line.name = i7Data.bezeichner ? i7Data.bezeichner : 'Stromkreis_' + i7Data.kurzname;
2084
+ line.shortName = i7Data.kurzname;
2085
+ const region = createIfNotExitsGeoregionByName(this.cimModel, 'ENTSO-E');
2086
+ const subregion = createIfNotExitsSubGeoregionByName(this.cimModel, 'Deutschland', region);
2087
+ line.regionUUID = subregion.mrid;
2088
+
2089
+ const i7Schluessel = LEITUNG_PRAEFIX +
2090
+ ueberpruefeZeichenkette(i7Data.ukz) +
2091
+ MITTIGER_PUNKT +
2092
+ ueberpruefeZeichenkette(i7Data.kurzname) +
2093
+ MITTIGER_PUNKT +
2094
+ ueberpruefeZeichenkette(i7Data.bezeichner);
2095
+ line.description = i7Schluessel;
2096
+
2097
+ this.cimModel.addLine(line);
2098
+ }
2099
+ }
2100
+ } else {
2101
+ console.log(`Tabelle ${Integral7TableNames.LEITUNG} ist nicht vorhanden.`);
2102
+ }
2103
+ }
2104
+
2105
+ async convertBetriebsmitteltypenLeitung() {
2106
+ // Freileitungstypen
2107
+ if (this.isTableAvailable(Integral7TableNames.TYP_FREILEITUNG)) {
2108
+ const result: StkTyp[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TYP_FREILEITUNG, 0, 0, []));
2109
+ for (const i7Data of result) {
2110
+ const typ = new OverheadWireInfo(generateUUID(), i7Data.name);
2111
+ this.setWireInfoProperties(typ, i7Data);
2112
+ this.cimModel.addOverheadWireInfo(typ);
2113
+ }
2114
+ } else {
2115
+ console.log(`Tabelle ${Integral7TableNames.TYP_FREILEITUNG} ist nicht vorhanden.`);
2116
+ }
2117
+
2118
+ // Kabelstypen
2119
+ if (this.isTableAvailable(Integral7TableNames.TYP_KABEL)) {
2120
+ const result: StkTyp[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TYP_KABEL, 0, 0, []));
2121
+ for (const i7Data of result) {
2122
+ const typ = new CableInfo(generateUUID(), i7Data.name);
2123
+ this.setWireInfoProperties(typ, i7Data);
2124
+ this.cimModel.addCableInfo(typ);
2125
+ }
2126
+ } else {
2127
+ console.log(`Tabelle ${Integral7TableNames.TYP_KABEL} ist nicht vorhanden.`);
2128
+ }
2129
+ }
2130
+
2131
+ async convertLeitungen(limit: number, offset: number) {
2132
+ if (this.isTableAvailable(Integral7TableNames.LEITUNG)) {
2133
+ const result: LeitungStk[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.LEITUNG, limit, offset, []));
2134
+ for (const i7Data of result) {
2135
+ const leitung = new LeitungImpl(i7Data);
2136
+ this.integralLeitungen.set(i7Data.id, leitung);
2137
+
2138
+ const i7Schluessel = LEITUNG_PRAEFIX +
2139
+ ueberpruefeZeichenkette(i7Data.ukz) +
2140
+ MITTIGER_PUNKT +
2141
+ ueberpruefeZeichenkette(i7Data.kurzname) +
2142
+ MITTIGER_PUNKT +
2143
+ ueberpruefeZeichenkette(i7Data.bezeichner) +
2144
+ MITTIGER_PUNKT +
2145
+ ueberpruefeZeichenkette(i7Data.stkabname);
2146
+
2147
+ const acLineSegment = new ACLineSegment(getUUID(i7Data.guid), i7Data.bezeichner, i7Data.stkabname, i7Schluessel);
2148
+
2149
+ this.cimModel.addACLineSegment(acLineSegment);
2150
+ this.integralID2UUID.set(i7Data.id, acLineSegment.mrid);
2151
+
2152
+ const line = getLine(this.cimModel, i7Data.bezeichner, i7Data.kurzname);
2153
+ if (line) {
2154
+ acLineSegment.equipmentContainerUUID = line.mrid;
2155
+ // line.addEquipment(acLineSegment);
2156
+ } else {
2157
+ console.log(`Leitung ${i7Data.id} besitzt keinen Stromkreis.`);
2158
+ }
2159
+
2160
+ // Topologie
2161
+ /* Anfang
2162
+ * 3 moegliche Anschluesse
2163
+ * KontenSo -> Anschluesspunkt
2164
+ * KnotenSf -> Schaltfeldpunkt
2165
+ * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt */
2166
+ /*
2167
+ const startUUID = this.integralID2UUID.get(i7Data.aknoten);
2168
+ const targetUUID = this.integralID2UUID.get(i7Data.eknoten);
2169
+ */
2170
+
2171
+ const start = this.memoryObjects.get(i7Data.aknoten);
2172
+ // console.log(`${i7Schluessel} start ${start?.constructor.name}`);
2173
+ if (start) {
2174
+ const terminal = createConnection(this.cimModel, acLineSegment, start, PhaseCode.ABC, 1);
2175
+ const baseVoltage = this.knotenSpannung.get(terminal.connectivityNodeUUID);
2176
+ acLineSegment.baseVoltage = baseVoltage;
2177
+
2178
+ } else {
2179
+ console.log(`Leitung ${i7Data.id} ${acLineSegment.mrid} besitzt keinen Anfangsknoten. ${i7Data.aknoten} ${this.integralID2UUID.get(i7Data.aknoten)}`);
2180
+ }
2181
+ const target = this.memoryObjects.get(i7Data.eknoten);
2182
+ //console.log(`${i7Schluessel} target ${target?.constructor.name}`);
2183
+ if (target) {
2184
+ const terminal = createConnection(this.cimModel, acLineSegment, target, PhaseCode.ABC, 2);
2185
+ const baseVoltage = this.knotenSpannung.get(terminal.connectivityNodeUUID);
2186
+ acLineSegment.baseVoltage = baseVoltage;
2187
+ } else {
2188
+ console.log(`Leitung ${i7Data.id} ${acLineSegment.mrid} besitzt keinen Zielknoten.`);
2189
+ }
2190
+ }
2191
+
2192
+ } else {
2193
+ console.log(`Tabelle ${Integral7TableNames.LEITUNG} ist nicht vorhanden.`);
2194
+ }
2195
+ }
2196
+
2197
+ async determineLeitungsTypen(leitungsIDs: number[]) {
2198
+ // Freileitungen
2199
+ if (this.isTableAvailable(Integral7TableNames.FREILEITUNG)) {
2200
+ const result: Stk[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.FREILEITUNG, 0, 0, leitungsIDs));
2201
+ for (const i7Data of result) {
2202
+ const acLineSegment = this.cimModel.getACLineSegment(this.integralID2UUID.get(i7Data.leitung));
2203
+ if (acLineSegment) {
2204
+ this.setACLineSegmentProperties(acLineSegment, i7Data, 'OverheadLine');
2205
+ } else {
2206
+ console.log(`Freileitung ${i7Data.id} besitzt kein Leitungsobjekt.`);
2207
+ }
2208
+ }
2209
+ } else {
2210
+ console.log(`Tabelle ${Integral7TableNames.TYP_FREILEITUNG} ist nicht vorhanden.`);
2211
+ }
2212
+
2213
+ // Kabel
2214
+ if (this.isTableAvailable(Integral7TableNames.KABEL)) {
2215
+ const result: Stk[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.KABEL, 0, 0, leitungsIDs));
2216
+ for (const i7Data of result) {
2217
+ const acLineSegment = this.cimModel.getACLineSegment(this.integralID2UUID.get(i7Data.leitung));
2218
+ if (acLineSegment) {
2219
+ this.setACLineSegmentProperties(acLineSegment, i7Data, 'Cable');
2220
+ } else {
2221
+ console.log(`Kabel ${i7Data.id} besitzt kein Leitungsobjekt.`);
2222
+ }
2223
+ }
2224
+ } else {
2225
+ console.log(`Tabelle ${Integral7TableNames.TYP_FREILEITUNG} ist nicht vorhanden.`);
2226
+ }
2227
+ }
2228
+
2229
+ async convertBetriebsmitteltypenTrafo() {
2230
+ // Trafo2WTypen
2231
+ if (this.isTableAvailable(Integral7TableNames.TYP_TRAFO2W)) {
2232
+ const result: Trafo2w[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TYP_TRAFO2W, 0, 0, []));
2233
+ for (const i7Data of result) {
2234
+ const typTrafo = new PowerTransformer2WInfo(generateUUID(), i7Data.name);
2235
+
2236
+ typTrafo.ukr = i7Data.ukr;
2237
+ typTrafo.pkr = i7Data.pkr;
2238
+ typTrafo.pLeer = i7Data.p_leer;
2239
+ typTrafo.iLeer = i7Data.i_leer;
2240
+
2241
+ const typWicklung1 = new TransformerEndInfo(generateUUID());
2242
+ typWicklung1.ratedS = new ApparentPower(i7Data.sr, UnitMultiplier.m, UnitSymbol.VA);
2243
+ this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
2244
+ typWicklung1.powerTransformerInfo = typTrafo;
2245
+ typTrafo.transformerEndInfo.push(typWicklung1);
2246
+
2247
+ const typWicklung2 = new TransformerEndInfo(generateUUID());
2248
+ typWicklung2.ratedS = new ApparentPower(i7Data.sr, UnitMultiplier.m, UnitSymbol.VA);
2249
+ // ratedS not needed
2250
+ this.setTransformerEndInfoProperties(typWicklung2, i7Data, 2);
2251
+ typWicklung2.powerTransformerInfo = typTrafo;
2252
+ typTrafo.transformerEndInfo.push(typWicklung2);
2253
+ // const aktstufe = `aktstufe_s${endNumber}`;
2254
+ // const regelung = `regelung_s${endNumber}`;
2255
+ // wicklung.connectionKind
2256
+ this.cimModel.addPowerTransformer2WInfo(typTrafo);
2257
+ }
2258
+ } else {
2259
+ console.log(`Tabelle ${Integral7TableNames.TYP_TRAFO2W} ist nicht vorhanden.`);
2260
+ }
2261
+
2262
+ // Trafo3WTypen
2263
+ if (this.isTableAvailable(Integral7TableNames.TYP_TRAFO3W)) {
2264
+ const result: Trafo3w[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TYP_TRAFO3W, 0, 0, []));
2265
+ for (const i7Data of result) {
2266
+ const typTrafo = new PowerTransformer3WInfo(generateUUID(), i7Data.name);
2267
+
2268
+ typTrafo.pLeer = i7Data.p_leer;
2269
+ typTrafo.iLeer = i7Data.i_leer;
2270
+
2271
+ typTrafo.ukr12 = i7Data.ukr12;
2272
+ typTrafo.ukr13 = i7Data.ukr13;
2273
+ typTrafo.ukr23 = i7Data.ukr23;
2274
+
2275
+ typTrafo.pkr12 = i7Data.pkr12;
2276
+ typTrafo.pkr13 = i7Data.pkr13;
2277
+ typTrafo.pkr23 = i7Data.pkr23;
2278
+
2279
+ const typWicklung1 = new TransformerEndInfo(generateUUID());
2280
+ typWicklung1.ratedS = new ApparentPower(i7Data.sr1, UnitMultiplier.m, UnitSymbol.VA);
2281
+ this.setTransformerEndInfoProperties(typWicklung1, i7Data, 1);
2282
+ typWicklung1.powerTransformerInfo = typTrafo;
2283
+ typTrafo.transformerEndInfo.push(typWicklung1);
2284
+
2285
+ const typWicklung2 = new TransformerEndInfo(generateUUID());
2286
+ typWicklung2.ratedS = new ApparentPower(i7Data.sr2, UnitMultiplier.m, UnitSymbol.VA);
2287
+ this.setTransformerEndInfoProperties(typWicklung2, i7Data, 2);
2288
+ typWicklung2.powerTransformerInfo = typTrafo;
2289
+ typTrafo.transformerEndInfo.push(typWicklung2);
2290
+
2291
+ const typWicklung3 = new TransformerEndInfo(generateUUID());
2292
+ typWicklung3.ratedS = new ApparentPower(i7Data.sr3, UnitMultiplier.m, UnitSymbol.VA);
2293
+ this.setTransformerEndInfoProperties(typWicklung3, i7Data, 3);
2294
+ typWicklung3.powerTransformerInfo = typTrafo;
2295
+ typTrafo.transformerEndInfo.push(typWicklung3);
2296
+
2297
+ // const aktstufe = `aktstufe_s${endNumber}`;
2298
+ // const regelung = `regelung_s${endNumber}`;
2299
+ // wicklung.connectionKind
2300
+
2301
+ this.cimModel.addPowerTransformer3WInfo(typTrafo);
2302
+ }
2303
+ } else {
2304
+ console.log(`Tabelle ${Integral7TableNames.TYP_TRAFO3W} ist nicht vorhanden.`);
2305
+ }
2306
+ }
2307
+
2308
+ /* async convertTrafo2W(standortIDs: number[]) {
2309
+ if (this.isTableAvailable(Integral7TableNames.TRAFO2W)) {
2310
+ const result: Trafo2w[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TRAFO2W, 0, 0, standortIDs));*/
2311
+ async convertTrafo2W(limit: number, offset: number) {
2312
+ if (this.isTableAvailable(Integral7TableNames.TRAFO2W)) {
2313
+ const result: Trafo2w[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TRAFO2W, limit, offset, []));
2314
+ for (const i7Data of result) {
2315
+ const powerTransformer = new PowerTransformer(getUUID(i7Data.guid), getName(i7Data), i7Data.id + '', i7Data.bezeichner);
2316
+ const powerTransformerInfo = this.cimModel.getPowerTransformer2WInfoByName(i7Data.nametyp);
2317
+
2318
+ // Topologie
2319
+ /* Anfang
2320
+ * 3 moegliche Anschluesse
2321
+ * KontenSo -> Anschluesspunkt
2322
+ * KnotenSf -> Schaltfeldpunkt
2323
+ * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt */
2324
+ /* const startUUID = this.integralID2UUID.get(i7Data.aknoten);
2325
+ const targetUUID = this.integralID2UUID.get(i7Data.eknoten);*/
2326
+
2327
+ // const start = this.cimModel.getObject(startUUID);
2328
+ const start = this.memoryObjects.get(i7Data.aknoten);
2329
+ let startTerminal;
2330
+ if (start) {
2331
+ startTerminal = createConnection(this.cimModel, powerTransformer, start, PhaseCode.ABC, 1);
2332
+ } else {
2333
+ console.log(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
2334
+ }
2335
+ // const target = this.cimModel.getObject(targetUUID);
2336
+ const target = this.memoryObjects.get(i7Data.eknoten);
2337
+ let targetTerminal;
2338
+ if (target) {
2339
+ targetTerminal = createConnection(this.cimModel, powerTransformer, target, PhaseCode.ABC, 2);
2340
+ } else {
2341
+ console.log(`PowerTransformer2W ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Zielknoten.`);
2342
+ }
2343
+ const schaltgruppe = i7Data.schaltgr;
2344
+
2345
+ // Wicklungen
2346
+ const powerTransformerEnd1 = new PowerTransformerEnd(getUUID(i7Data.guid_w1), `W1_${powerTransformer.name}`);
2347
+ powerTransformerEnd1.endNumber = 1;
2348
+ powerTransformerEnd1.connectionKind = getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber);
2349
+ powerTransformerEnd1.phaseAngleClock = getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber);
2350
+ const pkr = getPkrTrafo(i7Data, powerTransformerInfo, '');
2351
+ const ukr = getUkrTrafo(i7Data, powerTransformerInfo, '') / 100; // prozente umrechnen
2352
+
2353
+ const sr = getSrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber, false);
2354
+ const ur = getUrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd1.endNumber);
2355
+ // I rated
2356
+ const ir1 = (sr * Math.pow(10, 6) / ur * 1000) / Math.sqrt(3);
2357
+
2358
+ // Berechnung
2359
+ powerTransformerEnd1.r = calculateR(ur, pkr, sr);
2360
+ powerTransformerEnd1.x = calculateX(ur, ukr, sr, powerTransformerEnd1.r);
2361
+ powerTransformerEnd1.g = calculateG(ur, 0);
2362
+ powerTransformerEnd1.b = calculateB(ur, sr, 0, 0);
2363
+ powerTransformerEnd1.ratedU = ur;
2364
+ powerTransformerEnd1.ratedS = sr;
2365
+
2366
+ // Spannungsebene
2367
+ if (powerTransformerEnd1.ratedU) {
2368
+ let baseVoltage = this.cimModel.getBaseVoltage(powerTransformerEnd1.ratedU);
2369
+ if (!baseVoltage) {
2370
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, powerTransformerEnd1.ratedU);
2371
+ }
2372
+ powerTransformerEnd1.baseVoltageUUID = baseVoltage.mrid;
2373
+ } else {
2374
+ console.log(`Wicklung2W ${i7Data.id} ${powerTransformerEnd1.endNumber} ${powerTransformerEnd1.mrid} besitzt keine Spannungsangabe.`);
2375
+ }
2376
+
2377
+ // Terminal
2378
+ const terminal = startTerminal
2379
+ if (terminal) {
2380
+ powerTransformerEnd1.terminalUUID = terminal.mrid;
2381
+ this.setConductingEquipmentCurrentLimit('W1 ' + powerTransformer.name, terminal.mrid, ir1);
2382
+ } else {
2383
+ console.log(`Wicklung2W ${i7Data.id} ${powerTransformerEnd1.endNumber} ${powerTransformerEnd1.mrid} besitzt keine Terminalinstanz.`);
2384
+ // console.log(`StartTerminal created ` + (startTerminal !== undefined));
2385
+ }
2386
+
2387
+ powerTransformerEnd1.powerTransformerUUID = powerTransformer.mrid;
2388
+ powerTransformer.addPowerTransformerEnd(powerTransformerEnd1);
2389
+
2390
+ // Stufenschalter 1
2391
+ createTapChanger(i7Data, powerTransformerEnd1, this.cimModel, powerTransformerEnd1.ratedU);
2392
+
2393
+ // Wicklung 2
2394
+ const powerTransformerEnd2 = new PowerTransformerEnd(getUUID(i7Data.guid_w2), `W2_${powerTransformer.name}`);
2395
+ powerTransformerEnd2.endNumber = 2;
2396
+ powerTransformerEnd2.connectionKind = getSchaltgruppe(schaltgruppe, powerTransformerEnd2.endNumber);
2397
+ powerTransformerEnd2.phaseAngleClock = getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd2.endNumber);
2398
+
2399
+ const sr2 = getSrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber, false);
2400
+ const ur2 = getUrTrafo(i7Data, powerTransformerInfo, powerTransformerEnd2.endNumber);
2401
+ // Berechnung
2402
+ powerTransformerEnd2.r = 0;
2403
+ powerTransformerEnd2.x = 0;
2404
+ powerTransformerEnd2.ratedS = sr2;
2405
+ powerTransformerEnd2.ratedU = ur2;
2406
+
2407
+ // I rated
2408
+ const ir2 = (sr * Math.pow(10, 6) / ur * 1000) / Math.sqrt(3);
2409
+
2410
+ // Spannungsebene
2411
+ if (powerTransformerEnd2.ratedU) {
2412
+ let baseVoltage = this.cimModel.getBaseVoltage(powerTransformerEnd2.ratedU);
2413
+ if (!baseVoltage) {
2414
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, powerTransformerEnd2.ratedU);
2415
+ }
2416
+ powerTransformerEnd2.baseVoltageUUID = baseVoltage.mrid;
2417
+ // powerTransformerEnd2.baseVoltage = baseVoltage;
2418
+ } else {
2419
+ console.log(`Wicklung ${i7Data.id} ${powerTransformerEnd2.endNumber} ${powerTransformerEnd2.mrid} besitzt keine Spannungsangabe.`);
2420
+ }
2421
+
2422
+ // Terminal2
2423
+ const terminal2 = targetTerminal;
2424
+ if (terminal2) {
2425
+ powerTransformerEnd2.terminalUUID = terminal2.mrid;
2426
+ this.setConductingEquipmentCurrentLimit('W2 ' + powerTransformer.name, terminal.mrid, ir2);
2427
+ } else {
2428
+ console.log(`Wicklung2W ${i7Data.id} ${powerTransformerEnd2.endNumber} ${powerTransformerEnd2.mrid} besitzt keine Terminalinstanz.`);
2429
+ console.log(`TargetTerminal created ` + (targetTerminal === undefined));
2430
+ }
2431
+
2432
+ powerTransformerEnd2.powerTransformerUUID = powerTransformer.mrid;
2433
+ powerTransformer.addPowerTransformerEnd(powerTransformerEnd2);
2434
+
2435
+ // Stufenschalter 2
2436
+ createTapChanger(i7Data, powerTransformerEnd2, this.cimModel, powerTransformerEnd2.ratedU);
2437
+
2438
+ // Umspannanlage
2439
+ const substationUUID = this.integralID2UUID.get(i7Data.standort);
2440
+ if (substationUUID) {
2441
+ powerTransformer.equipmentContainerUUID = substationUUID;
2442
+
2443
+ const i7Schluessel = /*substation.description*/ +
2444
+ TRAFO2WPRAEFIX_PRAEFIX +
2445
+ i7Data.bezeichner;
2446
+ powerTransformer.description = i7Schluessel;
2447
+
2448
+ } else {
2449
+ console.log(`Trafo2W ${i7Data.id} besitzt keine Umspannanlage.`);
2450
+ }
2451
+ this.cimModel.addPowerTransformer(powerTransformer);
2452
+ this.integralID2UUID.set(i7Data.id, powerTransformer.mrid);
2453
+ }
2454
+ } else {
2455
+ console.log(`Tabelle ${Integral7TableNames.TRAFO2W} ist nicht vorhanden.`);
2456
+ }
2457
+ }
2458
+
2459
+ async convertTrafo3W(limit: number, offset: number) {
2460
+ if (this.isTableAvailable(Integral7TableNames.TRAFO3W)) {
2461
+ const result: Trafo3w[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TRAFO3W, limit, offset, []));
2462
+
2463
+ const trafoIDs = result.map(obj => obj['id']);
2464
+
2465
+ const trafoWicklungen = new Map<number, Trafo3wWicklung>();
2466
+ if (this.isTableAvailable(Integral7TableNames.TRAFO3_WICKLUNG) && trafoIDs.length) {
2467
+ const wicklungenResult: Trafo3wWicklung[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TRAFO3_WICKLUNG, 0, 0, trafoIDs));
2468
+ for (const wicklung of wicklungenResult) {
2469
+ trafoWicklungen.set(wicklung.id, wicklung);
2470
+ }
2471
+ } else {
2472
+ console.log(`Tabelle ${Integral7TableNames.TRAFO3_WICKLUNG} ist nicht vorhanden.`);
2473
+ }
2474
+
2475
+ for (const i7Data of result) {
2476
+ const powerTransformer = new PowerTransformer(getUUID(i7Data.guid), getName(i7Data), i7Data.id + '', i7Data.bezeichner);
2477
+
2478
+ const powerTransformerInfo = this.cimModel.getPowerTransformer3WInfoByName(i7Data.nametyp);
2479
+
2480
+ const schaltgruppe = i7Data.schaltgr;
2481
+ // Impedanzen
2482
+ // Topologie
2483
+ /* Anfang
2484
+ * 3 moegliche Anschluesse
2485
+ * KontenSo -> Anschluesspunkt
2486
+ * KnotenSf -> Schaltfeldpunkt
2487
+ * KnotenZw -> Netzschlaufe -> KnotenSo -> Anschlusspunkt */
2488
+
2489
+ const pkr12 = getPkrTrafo(i7Data, powerTransformerInfo, '12');
2490
+ const pkr13 = getPkrTrafo(i7Data, powerTransformerInfo, '13');
2491
+ const pkr23 = getPkrTrafo(i7Data, powerTransformerInfo, '23');
2492
+
2493
+ const ukr12 = getUkrTrafo(i7Data, powerTransformerInfo, '12');
2494
+ const ukr13 = getUkrTrafo(i7Data, powerTransformerInfo, '13');
2495
+ const ukr23 = getUkrTrafo(i7Data, powerTransformerInfo, '23');
2496
+
2497
+ const sr1 = getSrTrafo(i7Data, powerTransformerInfo, 1, true);
2498
+ const sr2 = getSrTrafo(i7Data, powerTransformerInfo, 2, true);
2499
+ const sr3 = getSrTrafo(i7Data, powerTransformerInfo, 3, true);
2500
+
2501
+ const ur1 = getUrTrafo(i7Data, powerTransformerInfo, 1);
2502
+ const ur2 = getUrTrafo(i7Data, powerTransformerInfo, 2);
2503
+ const ur3 = getUrTrafo(i7Data, powerTransformerInfo, 3);
2504
+
2505
+ // I rated
2506
+ const ir1 = (sr1 * Math.pow(10, 6) / ur1 * 1000) / Math.sqrt(3);
2507
+ const ir2 = (sr2 * Math.pow(10, 6) / ur2 * 1000) / Math.sqrt(3);
2508
+ const ir3 = (sr3 * Math.pow(10, 6) / ur3 * 1000) / Math.sqrt(3);
2509
+
2510
+ //Leerlaufverluste in kW
2511
+ const pLeer = getTrafoPleer(i7Data, powerTransformerInfo)
2512
+ // Leerlaufstrom bezogen auf Wicklung mit dem grössten Sr in %
2513
+ const iLeer = getTrafoIleer(i7Data, powerTransformerInfo);
2514
+
2515
+ // Impedanzen
2516
+ const impedanzW1 = calculateImpedanzenTrafo3W(1, ur1, ur2, ur3,
2517
+ sr1, sr2, sr3,
2518
+ pkr12, pkr13, pkr23,
2519
+ ukr12, ukr13, ukr23,
2520
+ pLeer, iLeer);
2521
+ const impedanzW2 = calculateImpedanzenTrafo3W(2, ur1, ur2, ur3,
2522
+ sr1, sr2, sr3,
2523
+ pkr12, pkr13, pkr23,
2524
+ ukr12, ukr13, ukr23,
2525
+ pLeer, iLeer);
2526
+ const impedanzW3 = calculateImpedanzenTrafo3W(3, ur1, ur2, ur3,
2527
+ sr1, sr2, sr3,
2528
+ pkr12, pkr13, pkr23,
2529
+ ukr12, ukr13, ukr23,
2530
+ pLeer, iLeer);
2531
+
2532
+ const wicklung1 = trafoWicklungen.get(i7Data.trafowicklung3w1);
2533
+ let terminal1, terminal2, terminal3;
2534
+ if (wicklung1) {
2535
+ const start = this.memoryObjects.get(wicklung1.aknoten);
2536
+ /* const startUUID = this.integralID2UUID.get(wicklung1.aknoten)
2537
+ const start = this.cimModel.getObject(startUUID);*/
2538
+ if (start) {
2539
+ terminal1 = createConnection(this.cimModel, powerTransformer, start, PhaseCode.ABC, 1);
2540
+ } else {
2541
+ console.log(`PowerTransformer ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
2542
+ }
2543
+ } else {
2544
+ console.log(`Trafo ${i7Data.id} Wicklung 1 ${i7Data.trafowicklung3w1} ist nicht vorhanden.`);
2545
+ }
2546
+
2547
+ const powerTransformerEnd1 = new PowerTransformerEnd(getUUID(i7Data.guid_w1), `W1 ${powerTransformer.name}`);
2548
+ powerTransformerEnd1.endNumber = 1;
2549
+
2550
+ powerTransformerEnd1.connectionKind = getSchaltgruppe(schaltgruppe, powerTransformerEnd1.endNumber);
2551
+ powerTransformerEnd1.phaseAngleClock = getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd1.endNumber);
2552
+
2553
+
2554
+ // Berechnung
2555
+ powerTransformerEnd1.r = impedanzW1.r;
2556
+ powerTransformerEnd1.x = impedanzW1.x;
2557
+ powerTransformerEnd1.g = impedanzW1.g;
2558
+ powerTransformerEnd1.b = impedanzW1.b;
2559
+ powerTransformerEnd1.ratedU = ur1;
2560
+ powerTransformerEnd1.ratedS = sr1;
2561
+
2562
+ // Spannungsebene
2563
+ if (powerTransformerEnd1.ratedU) {
2564
+ let baseVoltage = this.cimModel.getBaseVoltage(powerTransformerEnd1.ratedU);
2565
+ if (!baseVoltage) {
2566
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, powerTransformerEnd1.ratedU);
2567
+ }
2568
+ powerTransformerEnd1.baseVoltageUUID = baseVoltage.mrid;
2569
+ } else {
2570
+ console.log(`Wicklung ${i7Data.id} ${powerTransformerEnd1.endNumber} ${powerTransformerEnd1.mrid} besitzt keine Spannungsangabe.`);
2571
+ }
2572
+
2573
+ powerTransformerEnd1.powerTransformerUUID = powerTransformer.mrid;
2574
+ powerTransformer.addPowerTransformerEnd(powerTransformerEnd1);
2575
+
2576
+ // Terminal
2577
+ // const terminal1 = getConductingEquipmentTerminalBySecNumber(powerTransformer, powerTransformerEnd1.endNumber);
2578
+ if (terminal1) {
2579
+ powerTransformerEnd1.terminalUUID = terminal1.mrid;
2580
+ this.setConductingEquipmentCurrentLimit('W1 ' + powerTransformer.name, terminal1.mrid, ir1);
2581
+ } else {
2582
+ console.log(`Wicklung3W ${i7Data.id} ${powerTransformerEnd1.endNumber} ${powerTransformerEnd1.mrid} besitzt keine Terminalinstanz.`);
2583
+ }
2584
+
2585
+ // Wicklung 2
2586
+ const wicklung2 = trafoWicklungen.get(i7Data.trafowicklung3w2);
2587
+ if (wicklung2) {
2588
+ /* const startUUID = this.integralID2UUID.get(wicklung2.aknoten)
2589
+ const start = this.cimModel.getObject(startUUID);*/
2590
+ const start = this.memoryObjects.get(wicklung2.aknoten);
2591
+ if (start) {
2592
+ terminal2 = createConnection(this.cimModel, powerTransformer, start, PhaseCode.ABC, 2);
2593
+ } else {
2594
+ console.log(`PowerTransformer ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
2595
+ }
2596
+ } else {
2597
+ console.log(`Trafo ${i7Data.id} Wicklung 2 ${i7Data.trafowicklung3w2} ist nicht vorhanden.`);
2598
+ }
2599
+ const powerTransformerEnd2 = new PowerTransformerEnd(getUUID(i7Data.guid_w2), `Wicklung 2 ${powerTransformer.name}`);
2600
+ powerTransformerEnd2.endNumber = 2;
2601
+ powerTransformerEnd2.connectionKind = getSchaltgruppe(schaltgruppe, powerTransformerEnd2.endNumber);
2602
+ powerTransformerEnd2.phaseAngleClock = getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd2.endNumber);
2603
+
2604
+ // Berechnung
2605
+ powerTransformerEnd2.r = impedanzW2.r;
2606
+ powerTransformerEnd2.x = impedanzW2.x;
2607
+ powerTransformerEnd2.g = impedanzW2.g;
2608
+ powerTransformerEnd2.b = impedanzW2.b;
2609
+ powerTransformerEnd2.ratedS = sr2;
2610
+ powerTransformerEnd2.ratedU = ur2;
2611
+
2612
+ // Spannungsebene
2613
+ if (powerTransformerEnd2.ratedU) {
2614
+ let baseVoltage = this.cimModel.getBaseVoltage(powerTransformerEnd2.ratedU);
2615
+ if (!baseVoltage) {
2616
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, powerTransformerEnd2.ratedU);
2617
+ }
2618
+ powerTransformerEnd2.baseVoltageUUID = baseVoltage.mrid;
2619
+ } else {
2620
+ console.log(`Wicklung ${i7Data.id} ${powerTransformerEnd2.endNumber} ${powerTransformerEnd2.mrid} besitzt keine Spannungsangabe.`);
2621
+ }
2622
+ powerTransformerEnd2.powerTransformerUUID = powerTransformer.mrid;
2623
+ powerTransformer.addPowerTransformerEnd(powerTransformerEnd2);
2624
+ // Terminal2
2625
+ /* const terminal2 = getConductingEquipmentTerminalBySecNumber(powerTransformer, powerTransformerEnd2.endNumber);*/
2626
+ if (terminal2) {
2627
+ powerTransformerEnd2.terminalUUID = terminal2.mrid;
2628
+ this.setConductingEquipmentCurrentLimit('W2 ' + powerTransformer.name, terminal2.mrid, ir2);
2629
+ } else {
2630
+ console.log(`Wicklung3W ${i7Data.id} ${powerTransformerEnd2.endNumber} ${powerTransformerEnd2.mrid} besitzt keine Terminalinstanz.`);
2631
+ }
2632
+
2633
+ // Wicklung 3
2634
+ const wicklung3 = trafoWicklungen.get(i7Data.trafowicklung3w3);
2635
+ if (wicklung3) {
2636
+ /* const startUUID = this.integralID2UUID.get(wicklung3.aknoten)
2637
+ const start = this.cimModel.getObject(startUUID);*/
2638
+ const start = this.memoryObjects.get(wicklung3.aknoten);
2639
+ if (start) {
2640
+ terminal3 = createConnection(this.cimModel, powerTransformer, start, PhaseCode.ABC, 3);
2641
+ } else {
2642
+ console.log(`PowerTransformer ${i7Data.id} ${powerTransformer.mrid} besitzt keinen Anfangsknoten.`);
2643
+ }
2644
+ } else {
2645
+ console.log(`Trafo ${i7Data.id} Wicklung 3 ${i7Data.trafowicklung3w2} ist nicht vorhanden.`);
2646
+ }
2647
+ const powerTransformerEnd3 = new PowerTransformerEnd(getUUID(i7Data.guid_w3), `Wicklung 3 ${powerTransformer.name}`);
2648
+ powerTransformerEnd3.endNumber = 3;
2649
+ powerTransformerEnd3.connectionKind = getSchaltgruppe(schaltgruppe, powerTransformerEnd3.endNumber);
2650
+ powerTransformerEnd3.phaseAngleClock = getSchaltgruppeAngleClock(schaltgruppe, powerTransformerEnd3.endNumber);
2651
+
2652
+ // Berechnung
2653
+ powerTransformerEnd3.r = impedanzW3.r;
2654
+ powerTransformerEnd3.x = impedanzW3.x;
2655
+ powerTransformerEnd2.g = impedanzW3.g;
2656
+ powerTransformerEnd2.b = impedanzW3.b;
2657
+ powerTransformerEnd3.ratedS = sr3;
2658
+ powerTransformerEnd3.ratedU = ur3;
2659
+
2660
+ // Spannungsebene
2661
+ if (powerTransformerEnd3.ratedU) {
2662
+ let baseVoltage = this.cimModel.getBaseVoltage(powerTransformerEnd3.ratedU);
2663
+ if (!baseVoltage) {
2664
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, powerTransformerEnd3.ratedU);
2665
+ }
2666
+ powerTransformerEnd3.baseVoltageUUID = baseVoltage.mrid;
2667
+ } else {
2668
+ console.log(`Wicklung3W ${i7Data.id} ${powerTransformerEnd3.endNumber} ${powerTransformerEnd3.mrid} besitzt keine Spannungsangabe.`);
2669
+ }
2670
+
2671
+ powerTransformerEnd3.powerTransformerUUID = powerTransformer.mrid;
2672
+ powerTransformer.addPowerTransformerEnd(powerTransformerEnd3);
2673
+
2674
+ // Terminal3
2675
+ /*const terminal3 = getConductingEquipmentTerminalBySecNumber(powerTransformer, powerTransformerEnd3.endNumber);*/
2676
+ if (terminal3) {
2677
+ powerTransformerEnd3.terminalUUID = terminal3.mrid;
2678
+ this.setConductingEquipmentCurrentLimit('W3 ' + powerTransformer.name, terminal3.mrid, ir3);
2679
+ } else {
2680
+ console.log(`Wicklung ${i7Data.id} ${powerTransformerEnd3.endNumber} ${powerTransformerEnd3.mrid} besitzt keine Terminalinstanz.`);
2681
+ }
2682
+
2683
+
2684
+ // Umspannanlage
2685
+ const substationUUID = this.integralID2UUID.get(i7Data.standort);
2686
+ if (substationUUID) {
2687
+ powerTransformer.equipmentContainerUUID = substationUUID;
2688
+
2689
+ const i7Schluessel = /*substation.description +*/
2690
+ TRAFO3WPRAEFIX_PRAEFIX +
2691
+ i7Data.bezeichner;
2692
+ powerTransformer.description = i7Schluessel;
2693
+
2694
+ } else {
2695
+ console.log(`Trafo2W ${i7Data.id} besitzt keine Umspannanlage.`);
2696
+ }
2697
+ this.cimModel.addPowerTransformer(powerTransformer);
2698
+ this.integralID2UUID.set(i7Data.id, powerTransformer.mrid);
2699
+ }
2700
+ } else {
2701
+ console.log(`Tabelle ${Integral7TableNames.TRAFO3W} ist nicht vorhanden.`);
2702
+ }
2703
+ }
2704
+
2705
+ async convertTrenner3f(containerIDs: number[]) {
2706
+ if (this.isTableAvailable(Integral7TableNames.TRENNER_3P)) {
2707
+ const result: Trenner3p[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TRENNER_3P, 0, 0, containerIDs));
2708
+ for (const i7Data of result) {
2709
+ const disconnector = new Disconnector(getUUID(i7Data.guid), i7Data.bezeichner);
2710
+ disconnector.normalOpen = convertToBooleanI7(!i7Data.schaltzustand);
2711
+ disconnector.open = convertToBooleanI7(!i7Data.schaltzustand);
2712
+
2713
+ const equipmentContainer = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer;
2714
+
2715
+ const cnStart = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
2716
+ const cnZiel = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
2717
+
2718
+ if (equipmentContainer) {
2719
+ // equipmentContainer.addEquipment(disconnector);
2720
+ disconnector.equipmentContainerUUID = equipmentContainer.mrid;
2721
+ } else {
2722
+ console.log(`Disconnector ${i7Data.id} besitzt keinen EquipmentContainer.`);
2723
+ }
2724
+
2725
+ if (cnStart) {
2726
+ createConnection(this.cimModel, disconnector, cnStart, PhaseCode.ABC, 1);
2727
+ } else {
2728
+ console.log(`Disconnector ${i7Data.id} besitzt keinen Anfangsknoten.`);
2729
+ }
2730
+ if (cnZiel) {
2731
+ createConnection(this.cimModel, disconnector, cnZiel, PhaseCode.ABC, 2);
2732
+ } else {
2733
+ console.log(`Disconnector ${i7Data.id} besitzt keinen Zielknoten.`);
2734
+ }
2735
+
2736
+ const vl = this.cimModel.objects.get((equipmentContainer as Bay)?.voltageLevelUUID) as VoltageLevel;
2737
+ const baseVoltage = this.cimModel.getBaseVoltageByUUID(vl?.baseVoltageUUID);
2738
+ if (baseVoltage) {
2739
+ disconnector.baseVoltageUUID = baseVoltage.mrid;
2740
+ }
2741
+
2742
+ this.cimModel.addDisconnector(disconnector);
2743
+ this.integralID2UUID.set(i7Data.id, disconnector.mrid);
2744
+ }
2745
+ } else {
2746
+ console.log(`Tabelle ${Integral7TableNames.TRENNER_3P} ist nicht vorhanden.`);
2747
+ }
2748
+ }
2749
+
2750
+ async convertTrennerFi3f(containerIDs: number[]) {
2751
+ if (this.isTableAvailable(Integral7TableNames.TRENNERFI_3P)) {
2752
+ const result: Trenner3p[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.TRENNERFI_3P, 0, 0, containerIDs));
2753
+ for (const i7Data of result) {
2754
+ const disconnector = new Disconnector(generateUUID(), i7Data.bezeichner);
2755
+ disconnector.normalOpen = convertToBooleanI7(i7Data.schaltzustand);
2756
+ disconnector.open = convertToBooleanI7(i7Data.schaltzustand);
2757
+
2758
+ const equipmentContainer = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer;
2759
+
2760
+ const cnStart = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
2761
+ const cnZiel = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
2762
+
2763
+ if (equipmentContainer) {
2764
+ // equipmentContainer.addEquipment(disconnector);
2765
+ disconnector.equipmentContainerUUID = equipmentContainer.mrid;
2766
+ } else {
2767
+ console.log(`Disconnector Fi3 ${i7Data.id} besitzt keinen EquipmentContainer.`);
2768
+ }
2769
+
2770
+ if (cnStart) {
2771
+ createConnection(this.cimModel, disconnector, cnStart, PhaseCode.ABC, 1);
2772
+ } else {
2773
+ console.log(`Disconnector Fi3 ${i7Data.id} besitzt keinen Anfangsknoten.`);
2774
+ }
2775
+ if (cnZiel) {
2776
+ createConnection(this.cimModel, disconnector, cnZiel, PhaseCode.ABC, 2);
2777
+ } else {
2778
+ console.log(`Disconnector Fi3 ${i7Data.id} besitzt keinen Zielknoten.`);
2779
+ }
2780
+
2781
+ const vl = this.cimModel.objects.get((equipmentContainer as Bay)?.voltageLevelUUID) as VoltageLevel;
2782
+ const baseVoltage = this.cimModel.getBaseVoltageByUUID(vl?.baseVoltageUUID);
2783
+ if (baseVoltage) {
2784
+ disconnector.baseVoltageUUID = baseVoltage.mrid;
2785
+ }
2786
+ this.cimModel.addDisconnector(disconnector);
2787
+ this.integralID2UUID.set(i7Data.id, disconnector.mrid);
2788
+ }
2789
+ } else {
2790
+ console.log(`Tabelle ${Integral7TableNames.TRENNERFI_3P} ist nicht vorhanden.`);
2791
+ }
2792
+ }
2793
+
2794
+ async convertLeistungsschalter(containerIDs: number[]) {
2795
+ if (this.isTableAvailable(Integral7TableNames.LEISTUNGSSCHALTER)) {
2796
+ const result: Leistungsschalter[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.LEISTUNGSSCHALTER, 0, 0, containerIDs));
2797
+ for (const i7Data of result) {
2798
+ const breaker = new Breaker(generateUUID(), i7Data.bezeichner);
2799
+ breaker.normalOpen = convertToBooleanI7(i7Data.schaltzustand);
2800
+ breaker.open = convertToBooleanI7(i7Data.schaltzustand);
2801
+
2802
+ const equipmentContainer = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.seliste)) as EquipmentContainer;
2803
+ const cnStart = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.aknoten));
2804
+ const cnZiel = this.cimModel.getConnectivityNode(this.integralID2UUID.get(i7Data.eknoten));
2805
+ if (equipmentContainer) {
2806
+ // equipmentContainer.addEquipment(breaker);
2807
+ breaker.equipmentContainerUUID = equipmentContainer.mrid;
2808
+ } else {
2809
+ console.log(`LS ${i7Data.id} besitzt keinen EquipmentContainer.`);
2810
+ }
2811
+ if (cnStart) {
2812
+ createConnection(this.cimModel, breaker, cnStart, PhaseCode.ABC, 1);
2813
+ } else {
2814
+ console.log(`LS ${i7Data.id} besitzt keinen Anfangsknoten.`);
2815
+ }
2816
+ if (cnZiel) {
2817
+ createConnection(this.cimModel, breaker, cnZiel, PhaseCode.ABC, 2);
2818
+ } else {
2819
+ console.log(`LS ${i7Data.id} besitzt keinen Zielknoten.`);
2820
+ }
2821
+
2822
+ const vl = this.cimModel.objects.get((equipmentContainer as Bay)?.voltageLevelUUID) as VoltageLevel;
2823
+ const baseVoltage = this.cimModel.getBaseVoltageByUUID(vl?.baseVoltageUUID);
2824
+ if (baseVoltage) {
2825
+ breaker.baseVoltageUUID = baseVoltage.mrid;
2826
+ }
2827
+
2828
+
2829
+ this.cimModel.addBreaker(breaker);
2830
+ this.integralID2UUID.set(i7Data.id, breaker.mrid);
2831
+ }
2832
+ } else {
2833
+ console.log(`Tabelle ${Integral7TableNames.LEISTUNGSSCHALTER} ist nicht vorhanden.`);
2834
+ }
2835
+ }
2836
+
2837
+ /* async convertBelastungen() {
2838
+ if (this.isTableAvailable(Integral7TableNames.BELASTUNG)) {
2839
+ const result: Belastung[] = await this.queryFunctionWrapper(BELASTUNG_SQL_QUERY);
2840
+ for (const i7Data of result) {
2841
+ const energyConsumer = new EnergyConsumer(getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
2842
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
2843
+ const powerData = getActiveReactivePower(i7Data);
2844
+
2845
+ createSvStatus(this.cimModel, inBetrieb, energyConsumer);
2846
+
2847
+ energyConsumer.p = powerData[0];
2848
+ energyConsumer.q = powerData[1];
2849
+
2850
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
2851
+
2852
+ if (connectivityNode) {
2853
+ createConnection(this.cimModel, energyConsumer, connectivityNode, PhaseCode.ABC);
2854
+
2855
+ const equipmentContainerCn = connectivityNode.connectivityNodeContainer as EquipmentContainer;
2856
+ if (equipmentContainerCn) {
2857
+ const equipmentContainer = determineEquipmentContainer(equipmentContainerCn);
2858
+ equipmentContainer.addEquipment(energyConsumer);
2859
+ energyConsumer.equipmentContainer = equipmentContainer;
2860
+
2861
+ const i7Schluesel = getDescription(equipmentContainer.getSubstation()) +
2862
+ BELASTUNG_PRAEFIX + i7Data.bezeichner;
2863
+ energyConsumer.description = i7Schluesel;
2864
+ } else {
2865
+ console.log(`EnergyConsumer ${i7Data.id} besitzt keinen EquipmentContainer.`);
2866
+ }
2867
+
2868
+ } else {
2869
+ console.log(`EnergyConsumer ${i7Data.id} besitzt keinen ConnectivityNode.`);
2870
+ }
2871
+
2872
+ this.cimModel.addEnergyConsumer(energyConsumer);
2873
+ this.integralID2UUID.set(i7Data.id, energyConsumer.mrid);
2874
+ }
2875
+ } else {
2876
+ console.log(`Tabelle ${Integral7TableNames.BELASTUNG} ist nicht vorhanden.`);
2877
+ }
2878
+ }*/
2879
+ /* async convertEinspeisungen() {
2880
+ if (this.isTableAvailable(Integral7TableNames.EINSPEISUNG)) {
2881
+ const result: Einspeisung[] = await this.queryFunctionWrapper(EINSPEISUNG_SQL_QUERY);
2882
+ for (const i7Data of result) {
2883
+ const energySource = new EnergySource(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname);
2884
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
2885
+
2886
+ const prio = i7Data.einspprio;
2887
+ const usoll = i7Data.usoll;
2888
+
2889
+ createSvStatus(this.cimModel, inBetrieb, energySource);
2890
+ // TODO Eispeisungen mit Spannungsregelung als ExternalNetworkInjection?
2891
+ const spannungsgeregelt = convertToBooleanI7(i7Data.spannungsgeregelt);
2892
+
2893
+ const powerData = getActiveReactivePower(i7Data);
2894
+ energySource.activePower = powerData[0];
2895
+ energySource.reactivePower = powerData[1];
2896
+
2897
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
2898
+
2899
+ if (connectivityNode) {
2900
+ createConnection(this.cimModel, energySource, connectivityNode, PhaseCode.ABC);
2901
+
2902
+ const equipmentContainerCn = connectivityNode.connectivityNodeContainer as EquipmentContainer;
2903
+ if (equipmentContainerCn) {
2904
+ const equipmentContainer = determineEquipmentContainer(equipmentContainerCn);
2905
+ equipmentContainer.addEquipment(energySource);
2906
+ energySource.equipmentContainer = equipmentContainer;
2907
+
2908
+ const i7Schluesel = getDescription(equipmentContainer.getSubstation()) +
2909
+ EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
2910
+ energySource.description = i7Schluesel;
2911
+
2912
+ } else {
2913
+ console.log(`EnergySource ${i7Data.id} besitzt keinen EquipmentContainer.`);
2914
+ }
2915
+ } else {
2916
+ console.log(`EnergySource ${i7Data.id} besitzt keinen ConnectivityNode.`);
2917
+ }
2918
+
2919
+ // ToDo PSRType
2920
+
2921
+ this.cimModel.addEnergySource(energySource);
2922
+ this.integralID2UUID.set(i7Data.id, energySource.mrid);
2923
+ }
2924
+ } else {
2925
+ console.log(`Tabelle ${Integral7TableNames.EINSPEISUNG} ist nicht vorhanden.`);
2926
+ }
2927
+ }*/
2928
+ /* async convertBoundaryInjections() {
2929
+ if (this.isTableAvailable(Integral7TableNames.BOUNDARYINJECTION)) {
2930
+ const result: RandnetzEinspeisung[] = await this.queryFunctionWrapper(BOUNDARYINJECTION_SQL_QUERY);
2931
+ for (const i7Data of result) {
2932
+ const externalNetworkInjection = new ExternalNetworkInjection(getUUID(i7Data.guid), getName(i7Data), i7Data.kurzname);
2933
+
2934
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
2935
+ createSvStatus(this.cimModel, inBetrieb, externalNetworkInjection);
2936
+
2937
+ const prio = i7Data.einspprio;
2938
+ const usoll = i7Data.usoll;
2939
+
2940
+
2941
+ const spannungsgeregelt = convertToBooleanI7(i7Data.spannungsgeregelt);
2942
+
2943
+ externalNetworkInjection.p = getNumber(i7Data.p_ersatznetz ) + getNumber(i7Data.p_restnetz);
2944
+ externalNetworkInjection.q = getNumber(i7Data.q_ersatznetz) + getNumber(i7Data.q_restnetz);
2945
+
2946
+ externalNetworkInjection.governorSCD = getNumber(i7Data.kr);
2947
+ externalNetworkInjection.referencePriority = getNumber(i7Data.einspprio);
2948
+ /!* externalNetworkInjection.maxR0ToX0Ratio = 1/(/x0/r0)
2949
+ externalNetworkInjection.maxR1ToX1Ratio = (1/x1/r1)*!/
2950
+ externalNetworkInjection.maxZ0ToZ1Ratio = getNumber(i7Data.z0_z1);
2951
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
2952
+
2953
+ if (connectivityNode) {
2954
+ createConnection(this.cimModel, externalNetworkInjection, connectivityNode, PhaseCode.ABC);
2955
+
2956
+ const equipmentContainerCn = connectivityNode.connectivityNodeContainer as EquipmentContainer;
2957
+ if (equipmentContainerCn) {
2958
+ const equipmentContainer = determineEquipmentContainer(equipmentContainerCn);
2959
+ equipmentContainer.addEquipment(externalNetworkInjection);
2960
+ externalNetworkInjection.equipmentContainer = equipmentContainer;
2961
+
2962
+ const i7Schluesel = getDescription(equipmentContainer.getSubstation()) +
2963
+ EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
2964
+ externalNetworkInjection.description = i7Schluesel;
2965
+
2966
+ } else {
2967
+ console.log(`BoundaryInjection ${i7Data.id} besitzt keinen EquipmentContainer.`);
2968
+ }
2969
+ } else {
2970
+ console.log(`BoundaryInjection ${i7Data.id} besitzt keinen ConnectivityNode.`);
2971
+ }
2972
+
2973
+ // ToDo PSRType
2974
+
2975
+ this.cimModel.addExternalNetworkInjection(externalNetworkInjection);
2976
+ this.integralID2UUID.set(i7Data.id, externalNetworkInjection.mrid);
2977
+ }
2978
+ } else {
2979
+ console.log(`Tabelle ${Integral7TableNames.EINSPEISUNG} ist nicht vorhanden.`);
2980
+ }
2981
+ }*/
2982
+
2983
+ /* async convertGeneratoren() {
2984
+ // Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
2985
+ if (this.isTableAvailable(Integral7TableNames.GENERATOR)) {
2986
+ const result: Generator[] = await this.queryFunctionWrapper(GENERATOR_SQL_QUERY);
2987
+ for (const i7Data of result) {
2988
+ const synchronousMachine = new SynchronousMachine(getUUID(i7Data.guid), i7Data.bezeichner, i7Data.kurzname);
2989
+
2990
+ const s = getActiveReactivePower(i7Data);
2991
+ const s0 = getNumber(i7Data.sr);
2992
+ synchronousMachine.ratedS = s0 === 0 ? s[0] : s0;
2993
+ synchronousMachine.ratedU = i7Data.ur;
2994
+
2995
+ synchronousMachine.type = SynchronousMachineKind.generator;
2996
+ synchronousMachine.referencePriority = i7Data.einspprio;
2997
+
2998
+ const maxQ = getNumber(i7Data.q_max);
2999
+ synchronousMachine.maxQ = maxQ !== 0 ? maxQ : getNumber(i7Data.qmax_von_pmax);
3000
+ const minQ = getNumber(i7Data.q_min);
3001
+ synchronousMachine.minQ = minQ !== 0 ? minQ : getNumber(i7Data.qmin_von_pmin);
3002
+
3003
+ const reactiveCapabilityCurve = new ReactiveCapabilityCurve(generateUUID(), 'CurveData');
3004
+ reactiveCapabilityCurve.curveStyle = CurveStyle.straightLineYValues;
3005
+ reactiveCapabilityCurve.xUnit = UnitSymbol.W;
3006
+ reactiveCapabilityCurve.y1Unit = UnitSymbol.VAr;
3007
+ reactiveCapabilityCurve.y2Unit = UnitSymbol.VAr;
3008
+
3009
+ const curveData1 = new CurveData(generateUUID());
3010
+ curveData1.curve = reactiveCapabilityCurve;
3011
+ curveData1.xvalue = i7Data.p_min; //pMin
3012
+ curveData1.y1value = i7Data.qmin_von_pmin;//qMin pMin
3013
+ curveData1.y2value = i7Data.qmax_von_pmin;//qMay pMin
3014
+ this.cimModel.addCurveData(curveData1);
3015
+
3016
+ const curveData2 = new CurveData(generateUUID());
3017
+ curveData2.curve = reactiveCapabilityCurve;
3018
+ curveData2.xvalue = i7Data.p_max; //pMin
3019
+ curveData2.y1value = i7Data.qmin_von_pmax//qMin pMin
3020
+ curveData2.y2value = i7Data.qmax_von_pmax;//qMay pMin
3021
+ this.cimModel.addCurveData(curveData2);
3022
+
3023
+ this.cimModel.addReactiveCapabilityCurve(reactiveCapabilityCurve);
3024
+ synchronousMachine.initialReactiveCapabilityCurve = reactiveCapabilityCurve;
3025
+
3026
+
3027
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
3028
+ createSvStatus(this.cimModel, inBetrieb, synchronousMachine);
3029
+
3030
+
3031
+ synchronousMachine.ratedPowerFactor = i7Data.cosphir ? i7Data.cosphir : 0;
3032
+ synchronousMachine.qPercent = i7Data.cos_phi ? (1 - i7Data.cosphir) : 0;
3033
+
3034
+ synchronousMachine.earthing = false;
3035
+ // synchronousMachine.r: number;
3036
+ // synchronousMachine.r0: number;
3037
+ // synchronousMachine.r2: number;
3038
+ // synchronousMachine.x0: number;
3039
+ // synchronousMachine.x2: number;
3040
+ synchronousMachine.satDirectSubtransX = i7Data.xd2s ? i7Data.xd2s : 0;
3041
+
3042
+ // synchronousMachine.earthingStarPointR
3043
+ // synchronousMachine.earthingStarPointX
3044
+ // ynchronousMachine.ikk: number;
3045
+ // synchronousMachine.mu: number;
3046
+
3047
+ // synchronousMachine.satDirectSyncX: number;
3048
+ // synchronousMachine.satDirectTransX: number;
3049
+ // synchronousMachine.shortCircuitRotorType: ShortCircuitRotorKind;
3050
+ // synchronousMachine.voltageRegulationRange: number;
3051
+
3052
+ // RegulatingControl
3053
+ const regulatingControl = new RegulatingControl(generateUUID(), `RegulatingControl_${synchronousMachine.name}`);
3054
+ switch (i7Data.spannungsgeregelt) {
3055
+ case 1: {
3056
+ regulatingControl.mode = RegulatingControlModeKind.voltage;
3057
+ }
3058
+ }
3059
+ synchronousMachine.regulatingControl = regulatingControl;
3060
+ regulatingControl.addRegulatingCondEq(synchronousMachine);
3061
+
3062
+
3063
+ // GeneratingUnit
3064
+ const generatingUnitConfig = FUEL_TYPE_CONFIG[i7Data.nameprimaertyp];
3065
+
3066
+ /!** Wenn ein Config für den Primärenergietyp vorhanden*!/
3067
+ let generatingUnit;
3068
+
3069
+ if (generatingUnitConfig) {
3070
+ switch (generatingUnitConfig.class) {
3071
+ case 'ThermalGeneratingUnit': {
3072
+ generatingUnit = new ThermalGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
3073
+ if (generatingUnitConfig.fuelType) {
3074
+ generateFuelType(i7Data.nameprimaertyp, generatingUnitConfig.fuelType, generatingUnit, this.cimModel);
3075
+ }
3076
+ break;
3077
+ }
3078
+ case 'SolarGeneratingUnit': {
3079
+ generatingUnit = new SolarGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
3080
+ break;
3081
+ }
3082
+ case 'WindGeneratingUnit': {
3083
+ generatingUnit = new WindGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname, i7Data.nameprimaertyp);
3084
+ switch (generatingUnitConfig.fuelType) {
3085
+ case 'onshore':
3086
+ generatingUnit.windGenUnitType = WindGenUnitKind.onshore;
3087
+ break;
3088
+ case 'offshore':
3089
+ generatingUnit.windGenUnitType = WindGenUnitKind.offshore;
3090
+ break;
3091
+ }
3092
+ break;
3093
+ }
3094
+ case 'NuclearGeneratingUnit': {
3095
+ generatingUnit = new NuclearGeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
3096
+ break;
3097
+ }
3098
+ }
3099
+ }
3100
+
3101
+ if(!generatingUnit) {
3102
+ generatingUnit = new GeneratingUnit(getUUID(''), 'Generator_' + i7Data.bezeichner, i7Data.kurzname);
3103
+ }
3104
+
3105
+ generatingUnit.maxOperatingP = getNumber(i7Data.p_max);
3106
+ generatingUnit.minOperatingP = getNumber(i7Data.p_min);
3107
+
3108
+ generatingUnit.initialP = i7Data.p0;
3109
+ generatingUnit.nominalP = generatingUnit.maxOperatingP;
3110
+
3111
+ generatingUnit.genControlSource = GeneratorControlSource.unavailable;
3112
+
3113
+
3114
+
3115
+ generatingUnit.addRotatingMachine(synchronousMachine);
3116
+ synchronousMachine.generatingUnit = generatingUnit;
3117
+
3118
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
3119
+
3120
+ if (connectivityNode) {
3121
+ const terminal = createConnection(this.cimModel, synchronousMachine, connectivityNode, PhaseCode.ABC);
3122
+ regulatingControl.terminal = terminal;
3123
+ const equipmentContainerCn = connectivityNode.connectivityNodeContainer as EquipmentContainer;
3124
+ if (equipmentContainerCn) {
3125
+ const equipmentContainer = determineEquipmentContainer(equipmentContainerCn);
3126
+ equipmentContainer.addEquipment(synchronousMachine);
3127
+ synchronousMachine.equipmentContainer = equipmentContainer;
3128
+
3129
+ equipmentContainer.addEquipment(generatingUnit);
3130
+ generatingUnit.equipmentContainer = equipmentContainer;
3131
+
3132
+ const i7Schluesel = getDescription(equipmentContainer.getSubstation()) +
3133
+ GENERATOR_PRAEFIX + i7Data.bezeichner;
3134
+ synchronousMachine.description = i7Schluesel;
3135
+
3136
+ } else {
3137
+ console.log(`SynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
3138
+ }
3139
+ } else {
3140
+ console.log(`SynchronousMachine ${i7Data.id} besitzt keinen ConnectivityNode.`);
3141
+ }
3142
+
3143
+ this.cimModel.addRegulatingControl(regulatingControl);
3144
+ this.cimModel.addGeneratingUnit(generatingUnit);
3145
+ this.cimModel.addSynchronousMachine(synchronousMachine);
3146
+ this.integralID2UUID.set(i7Data.id, synchronousMachine.mrid);
3147
+
3148
+ }
3149
+ }
3150
+ }*/
3151
+
3152
+ /* async convertAsynchronmotor() {
3153
+ // Generatoren werden als GeneratingUnit und SynchronousMachine abgebildet
3154
+ if (this.isTableAvailable(Integral7TableNames.ASYNCHRONMOTOR)) {
3155
+ const result: Asynchronmotor[] = await this.queryFunctionWrapper(ASYNCHRONMOTOR_SQL_QUERY);
3156
+ for (const i7Data of result) {
3157
+ const asynchronousMachine = new AsynchronousMachine(getUUID(i7Data.guid), getName(i7Data), i7Data.bezeichner, i7Data.kurzname);
3158
+ asynchronousMachine.efficiency = i7Data.wirkungsgrad * 100;
3159
+ asynchronousMachine.iaIrRatio = i7Data.ilr_ir;
3160
+ asynchronousMachine.rxLockedRotorRatio = 0;
3161
+ asynchronousMachine.polePairNumber = i7Data.polpaarz;
3162
+ asynchronousMachine.ratedMechanicalPower = i7Data.p_mech;
3163
+ asynchronousMachine.ratedPowerFactor = i7Data.cos_phir;
3164
+
3165
+ asynchronousMachine.ratedS = i7Data.sr;
3166
+ asynchronousMachine.ratedU = i7Data.ur;
3167
+
3168
+ asynchronousMachine.p = i7Data.p0;
3169
+ asynchronousMachine.q = i7Data.flag_ind === 1 ? i7Data.q0_ind : i7Data.q0_kap;
3170
+ asynchronousMachine.asynchronousMachineType = AsynchronousMachineKind.motor;
3171
+ asynchronousMachine.controlEnabled = false;
3172
+
3173
+ const inBetrieb = convertToBooleanI7(i7Data.betrieb);
3174
+ createSvStatus(this.cimModel, inBetrieb, asynchronousMachine);
3175
+
3176
+ const connectivityNode = this.cimModel.objects.get(this.integralID2UUID.get(i7Data.anschluss)) as IConnectivityNode;
3177
+
3178
+ if (connectivityNode) {
3179
+ createConnection(this.cimModel, asynchronousMachine, connectivityNode, PhaseCode.ABC);
3180
+
3181
+ const equipmentContainerCN = connectivityNode.connectivityNodeContainer as EquipmentContainer;
3182
+ if (equipmentContainerCN) {
3183
+ const equipmentContainer = determineEquipmentContainer(equipmentContainerCN);
3184
+
3185
+ equipmentContainer.addEquipment(asynchronousMachine);
3186
+ asynchronousMachine.equipmentContainer = equipmentContainer;
3187
+
3188
+ const i7Schluesel = getDescription(equipmentContainer.getSubstation()) +
3189
+ EINSPEISUNG_PRAEFIX + i7Data.bezeichner;
3190
+ asynchronousMachine.description = i7Schluesel;
3191
+
3192
+ this.cimModel.addAsynchronousMachine(asynchronousMachine);
3193
+ this.integralID2UUID.set(i7Data.id, asynchronousMachine.mrid);
3194
+
3195
+ } else {
3196
+ console.log(`AsynchronousMachine ${i7Data.id} besitzt keinen EquipmentContainer.`);
3197
+ }
3198
+ } else {
3199
+ console.log(`AsynchronousMachine ${i7Data.id} besitzt keinen ConnectivityNode.`);
3200
+ }
3201
+
3202
+ }
3203
+ } else {
3204
+ console.log(`Tabelle ${Integral7TableNames.ASYNCHRONMOTOR} ist nicht vorhanden.`);
3205
+ }
3206
+ }*/
3207
+
3208
+ /**------------------Schema----------------------------*/
3209
+ async convertNetzvarianten() {
3210
+ if (this.isTableAvailable(Integral7TableNames.NETZVARIANTEN)) {
3211
+ const result: Netzvarianten[] = await this.queryFunctionWrapper(getNetzQuery(I7Objects.NETZVARIANTEN, 0, 0, []));
3212
+ for (const i7Data of result) {
3213
+ // this.allg_netzvarianten.set(i7Data.id, i7Data);
3214
+ /** Netzschemas art mit der id 2 */
3215
+ if (i7Data.art === 2) {
3216
+ const diagram = new Diagram(getUUID(i7Data.guid), i7Data.name, String(i7Data.id));
3217
+ diagram.orientation = OrientationKind.negative;
3218
+ diagram.diagramStyle = this.cimModel.getDiagramStyle(DIAGRAM_LAYOUT_TYPES.NODE_BREAKER);
3219
+ this.cimModel.addDiagram(diagram);
3220
+ this.integralID2UUID.set(i7Data.id, diagram.mrid);
3221
+ }
3222
+ }
3223
+ } else {
3224
+ console.log(`Tabelle ${Integral7TableNames.NETZVARIANTEN} ist nicht vorhanden.`);
3225
+ }
3226
+ }
3227
+
3228
+ private setWireInfoProperties(object: WireInfo, data: StkTyp) {
3229
+ /* object.r1 = new ResistancePerLength(data.r1, UnitMultiplier.none, UnitSymbol.ohm);
3230
+ object.x1 = new ReactancePerLength(data.x1, UnitMultiplier.none, UnitSymbol.ohm);
3231
+ object.c1 = new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F);
3232
+
3233
+ object.r0 = new ResistancePerLength(data.r1, UnitMultiplier.none, UnitSymbol.ohm);
3234
+ object.x0 = new ReactancePerLength(data.x1, UnitMultiplier.none, UnitSymbol.ohm);
3235
+ object.c0 = new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F);
3236
+
3237
+ object.ratedCurrent = new CurrentFlow(data.ir, UnitMultiplier.none, UnitSymbol.A);*/
3238
+ object.r1 = +data.r1;
3239
+ object.x1 = +data.x1;
3240
+ object.c1 = new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F)
3241
+
3242
+ object.r0 = new ResistancePerLength(data.r1, UnitMultiplier.none, UnitSymbol.ohm);
3243
+ object.x0 = new ReactancePerLength(data.x1, UnitMultiplier.none, UnitSymbol.ohm);
3244
+ object.c0 = new CapacitancePerLength(data.c1, UnitMultiplier.micro, UnitSymbol.F);
3245
+
3246
+ object.ratedCurrent = +data.ir;
3247
+ }
3248
+
3249
+
3250
+ private setACLineSegmentProperties(acLineSegment: ACLineSegment, data: Stk, psrTypeName: string) {
3251
+ // acLineSegment.description = data.nametyp;
3252
+
3253
+ // Spannungsebene
3254
+ if (!acLineSegment.baseVoltage) {
3255
+ let baseVoltage;
3256
+ if (data.un && data.un > 0) {
3257
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, data.un);
3258
+ } else {
3259
+ baseVoltage = createBaseVoltageIfNotExists(this.cimModel, 110);
3260
+ }
3261
+ acLineSegment.baseVoltage = baseVoltage;
3262
+ }
3263
+
3264
+ // Laenge
3265
+ if (data.laenge) {
3266
+ acLineSegment.length = data.laenge;
3267
+ } else {
3268
+ //console.log(`Stromkreissbschnitt ${data.id} besitzt keine Längenangabe. Annahme der Länge: 0.1 km. `);
3269
+ }
3270
+
3271
+ const assetType = this.cimModel.getWireInfoByName(data.nametyp);
3272
+ // r0
3273
+ if (data.r0 && data.r0 !== 0) {
3274
+ acLineSegment.r0 = data.laenge <= 0 ? data.r0 : data.r0 /*/ data.laenge*/;
3275
+ } else {
3276
+ // console.log(`Stromkreissbschnitt ${data.id} ${acLineSegment.mrid} r0 ist 0. Btyp. `);
3277
+ if (assetType) {
3278
+ // acLineSegment.r0 = assetType.r0.value * acLineSegment.length;
3279
+ acLineSegment.r0 = assetType.r0.value * acLineSegment.length;
3280
+ // console.log(`\tBtyp r0 ist ${acLineSegment.r0}`);
3281
+ }
3282
+ }
3283
+
3284
+ // x0
3285
+ if (data.x0 && data.x0 !== 0) {
3286
+ acLineSegment.x0 = data.laenge <= 0 ? data.x0 : data.x0 /*/ data.laenge*/;
3287
+ } else {
3288
+ // console.log(`Stromkreissbschnitt ${data.id} ${acLineSegment.mrid} x0 ist 0. Btyp. `);
3289
+ if (assetType) {
3290
+ // acLineSegment.x0 = assetType.x0.value * acLineSegment.length;
3291
+ acLineSegment.x0 = assetType.x0.value * acLineSegment.length;
3292
+ // console.log(`\tBtyp x0 ist ${acLineSegment.x0}`);
3293
+ }
3294
+ }
3295
+
3296
+ // r1
3297
+ if (data.r1 && data.r1 !== 0) {
3298
+ acLineSegment.r = data.laenge <= 0 ? data.r1 : data.r1 /*/ data.laenge*/;
3299
+ } else {
3300
+ // console.log(`Stromkreissbschnitt ${data.id} ${acLineSegment.mrid} r1 ist 0. Btyp. `);
3301
+ if (assetType) {
3302
+ // acLineSegment.r = assetType.r1.value * acLineSegment.length;
3303
+ acLineSegment.r = assetType.r1 * data.laenge;
3304
+ // console.log(`\tBtyp r1 ist ${acLineSegment.r}`);
3305
+ }
3306
+ }
3307
+
3308
+ // x1
3309
+ if (data.x1 && data.x1 !== 0) {
3310
+ acLineSegment.x = data.laenge <= 0 ? data.x1 : data.x1 /*/ data.laenge*/;
3311
+ } else {
3312
+ // console.log(`Stromkreissbschnitt ${data.id} ${acLineSegment.mrid} x1 ist 0. Btyp. `);
3313
+ if (assetType) {
3314
+ // acLineSegment.x = assetType.x1.value * acLineSegment.length;
3315
+ acLineSegment.x = assetType.x1 * data.laenge;
3316
+ // console.log(`\tBtyp x1 ist ${acLineSegment.x}`);
3317
+ }
3318
+ }
3319
+
3320
+ // ir
3321
+ for (const terminalUUID of acLineSegment.terminalsUUIDs) {
3322
+ if (data.ir && data.ir !== 0) {
3323
+ this.setConductingEquipmentCurrentLimit(acLineSegment.name, terminalUUID, data.ir);
3324
+ } /*else {
3325
+ console.log(`Stromkreissbschnitt ${data.id} ${acLineSegment.mrid} ir ist 0. `);
3326
+ }*/
3327
+ else if (assetType && assetType.ratedCurrent && assetType.ratedCurrent !== 0) {
3328
+ this.setConductingEquipmentCurrentLimit(acLineSegment.name, terminalUUID, assetType.ratedCurrent);
3329
+ } else {
3330
+ // console.log(`Stromkreissbschnitt ${data.id} ${acLineSegment.mrid} ir ist 0 und hat keinen Assettyp`);
3331
+ }
3332
+
3333
+ }
3334
+ //PSRType
3335
+ const psrType = createIfNotExitsPSRType(this.cimModel, psrTypeName);
3336
+ acLineSegment.psrTypeUUID = psrType.mrid;
3337
+ // psrType.addPowerSystemResource(acLineSegment);
3338
+ }
3339
+
3340
+ private setConductingEquipmentCurrentLimit(name: string, terminalUUID: string, ir: number) {
3341
+ const currentLimit = new CurrentLimit(generateUUID(), `${name}`);
3342
+ this.cimModel.addCurrentLimit(currentLimit);
3343
+ currentLimit.value = new CurrentFlow(ir, UnitMultiplier.none, UnitSymbol.A);
3344
+
3345
+
3346
+ const operationalLimitSet = new OperationalLimitSet(generateUUID(), `${name}`);
3347
+ this.cimModel.addOperationalLimitSet(operationalLimitSet);
3348
+ // operationalLimitSet.addOperationalLimit(currentLimit);
3349
+ currentLimit.operationalLimitSetUUID = operationalLimitSet.mrid;
3350
+
3351
+ const operationalLimitType = this.getOperationalLimitType('patl');
3352
+ // operationalLimitType.addOperationalLimit(currentLimit); speicher
3353
+ currentLimit.operationalLimitTypeUUID = operationalLimitType.mrid;
3354
+
3355
+ // terminal.addOperationalLimitSet(operationalLimitSet); speicher
3356
+ operationalLimitSet.terminalUUID = terminalUUID;
3357
+ }
3358
+
3359
+ private getOperationalLimitType(name: string) {
3360
+ let operationalLimitType = this.cimModel.getOperationalLimitTypeByName(name);
3361
+ if (!operationalLimitType) {
3362
+ operationalLimitType = new OperationalLimitType(generateUUID(), name);
3363
+ operationalLimitType.direction = OperationalLimitDirectionKind.absoluteValue;
3364
+ operationalLimitType.limitType = LimitTypeKind.patl;
3365
+ this.cimModel.addOperationalLimitType(operationalLimitType);
3366
+ }
3367
+ return operationalLimitType;
3368
+ }
3369
+
3370
+ private setTransformerEndInfoProperties(wicklung: TransformerEndInfo, data: any, endNumber: number) {
3371
+
3372
+ const minstufe = `minstufe_s${endNumber}`;
3373
+ const mittelstufe = `mittelstufe_s${endNumber}`;
3374
+ const maxstufe = `maxstufe_s${endNumber}`;
3375
+ const umax = `umax_s${endNumber}`;
3376
+ const umin = `umin_s${endNumber}`;
3377
+ const gestufte_seite = `gestufte_seite_s${endNumber}`;
3378
+
3379
+ const ur = `ur${endNumber}`;
3380
+
3381
+ wicklung.endNumber = endNumber;
3382
+ wicklung.ratedU = new Voltage(data[ur], UnitMultiplier.k, UnitSymbol.V);
3383
+ wicklung.tapActiv = convertToBooleanI7(data[gestufte_seite]);
3384
+
3385
+ const tapChangerInfo = new TapChangerInfo(generateUUID(), `TapChangerInfo_${data['id']}`);
3386
+ tapChangerInfo.highStep = data[maxstufe];
3387
+ tapChangerInfo.lowStep = data[minstufe];
3388
+ tapChangerInfo.neutralStep = data[mittelstufe];
3389
+
3390
+ wicklung.uMax = data[umax];
3391
+ wicklung.uMin = data[umin];
3392
+
3393
+ }
3394
+
3395
+
3396
+ async convertSchemaBayElements(bay: Bay, diagram: Diagram, saAusrichtung: number, deltaAusrichtung: number) {
3397
+ for (const eqiup of bay.equipments) {
3398
+ if (eqiup instanceof Disconnector) {
3399
+ const disconnector = eqiup as Disconnector;
3400
+
3401
+ for (const terminal of disconnector.terminals.values()) {
3402
+ const connectedCE = isConnectedTo(terminal.connectivityNode as ConnectivityNode, 'BusbarSection');
3403
+ if (connectedCE && terminal.connectivityNode.diagramObjects.length > 0) {
3404
+ const diagramObjectSSAB = getDiagramObjectBelonginToDiagram(terminal.connectivityNode.diagramObjects, diagram.mrid);
3405
+ const diagramObjectBay = getDiagramObjectBelonginToDiagram(bay.diagramObjects, diagram.mrid);
3406
+ if (diagramObjectSSAB && diagramObjectBay) {
3407
+ const diagramObject = new DiagramObject(getUUID(''), 'SSAB Trenner');
3408
+ if (saAusrichtung === 0) { // oben/waagerecht
3409
+ const x = diagramObjectBay.diagramObjectPoints[0].xPosition + 16;
3410
+ const y = diagramObjectSSAB.diagramObjectPoints[0].yPosition + 0.5;
3411
+ const points = [new Point(x, y)];
3412
+ createDiagramObjectPoints(diagramObject, points);
3413
+ eqiup.addDiagramObject(diagramObject);
3414
+ diagramObject.identifiedObject = eqiup;
3415
+ diagram.addDiagramObject(diagramObject);
3416
+ diagramObject.diagram = diagram;
3417
+ }
3418
+ }
3419
+ } else {
3420
+
3421
+ }
3422
+ }
3423
+ }
3424
+ }
3425
+ }
3426
+
3427
+ private writeHeaderStart(xmlWriter: XMLWriter, profileURI?: string) {
3428
+ xmlWriter.startDocument('1.0', 'UTF-8');
3429
+ /** <rdf:RDF xmlns:...>*/
3430
+ xmlWriter.startElementNS(RDF_XML.RDF_NS_PREFIX, 'RDF', RDF_XML.RDF_NS);
3431
+
3432
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.RDF_NS_PREFIX}`, RDF_XML.RDF_NS);
3433
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.CIM_NS_PREFIX}`, RDF_XML.CIM_NS_16);
3434
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.ENTSOE_NS_PREFIX}`, RDF_XML.ENTSOE_NS);
3435
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.MD_NS_PREFIX}`, RDF_XML.MD_NS);
3436
+
3437
+ if (profileURI === RDF_XML.AMP_I7_PROFILE_URI) {
3438
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.AMPRION_NS_PREFIX}`, RDF_XML.AMPRION_NS);
3439
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.IPS_NS_PREFIX}`, RDF_XML.IPS_NS);
3440
+ writeElementAttribute(xmlWriter, `xmlns:${RDF_XML.CAPE_NS_PREFIX}`, RDF_XML.CAPE_NS);
3441
+ }
3442
+ }
3443
+
3444
+ private writeHeaderEnd(xmlWriter: XMLWriter) {
3445
+ /** </rdf:RDF>*/
3446
+ xmlWriter.endElement();
3447
+ xmlWriter.endDocument();
3448
+ }
3449
+
3450
+ private objectToCIMXML(xmlWriter: XMLWriter, values: Map<string, IIdentifiedObject>, profileName: string) {
3451
+ for (const object of values.values()) {
3452
+ object.toCIMXML(xmlWriter, profileName);
3453
+ }
3454
+ }
3455
+
3456
+ private objectArrayToCIMXML(xmlWriter: XMLWriter, values: any[], profileName: string) {
3457
+ for (const object of values) {
3458
+ object.toCIMXML(xmlWriter, profileName);
3459
+ }
3460
+ }
3461
+
3462
+ private checkMemoryObject(i7ID: number, cimObject: IdentifiedObject) {
3463
+ /** Wenn an diesem Knoten eine Leitung/Trafo angeschlossen ist, dann belasse dieses Objekt im Speicher. */
3464
+ if (this.leitungAnschlussKnotenIDs.has(i7ID)) {
3465
+ this.memoryObjects.set(i7ID, cimObject);
3466
+ }
3467
+ }
3468
+
3469
+ queryFunctionWrapper(query): Promise<any> {
3470
+ return new Promise((resolve, reject) => {
3471
+ this.queryFunction(query, (successResponse) => {
3472
+ resolve(successResponse);
3473
+ }, (errorResponse) => {
3474
+ reject(errorResponse)
3475
+ });
3476
+ });
3477
+ }
3478
+
3479
+ queryFunction(query, successCallback, errorCallback) {
3480
+ this.mysqlConnection.query(query, (error, results, fields) => {
3481
+ if (error) errorCallback(error);
3482
+ successCallback(results);
3483
+ });
3484
+ }
3485
+
3486
+ private isTableAvailable(tableName: string): boolean {
3487
+ return this.availableTableNames.indexOf(tableName) > -1 ? true : false;
3488
+ }
3489
+
3490
+ private initDbConnection(mySqlConfig: MySQL) {
3491
+ this.mysqlConnection = mysql.createConnection({
3492
+ host: mySqlConfig.host,
3493
+ port: mySqlConfig.port,
3494
+ database: mySqlConfig.database,
3495
+ user: mySqlConfig.user,
3496
+ password: mySqlConfig.password,
3497
+ });
3498
+ }
3499
+
3500
+ openConnection() {
3501
+ this.mysqlConnection.connect();
3502
+ }
3503
+
3504
+ closeConnection() {
3505
+ this.mysqlConnection.end();
3506
+ }
3507
+
3508
+ }