@enervance/insight-cim-model 0.0.1 → 0.0.3
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.
- package/dist/config/westnetz-neplan/neplan-load.config.js +0 -1
- package/dist/config/westnetz-neplan/neplan-load.config.js.map +1 -1
- package/dist/constants/cim-class-definition.js +6 -0
- package/dist/constants/cim-class-definition.js.map +1 -1
- package/dist/constants/cim-class-names.d.ts +6 -0
- package/dist/constants/cim-class-names.js +6 -0
- package/dist/constants/cim-class-names.js.map +1 -1
- package/dist/converter/integral7/ConverterIntegral7.d.ts +17 -4
- package/dist/converter/integral7/ConverterIntegral7.js +530 -39
- package/dist/converter/integral7/ConverterIntegral7.js.map +1 -1
- package/dist/converter/integral7/config/db-config.d.ts +3 -1
- package/dist/converter/integral7/model/integral/Hgueleitung.d.ts +9 -0
- package/dist/converter/integral7/model/integral/Hgueleitung.js +3 -0
- package/dist/converter/integral7/model/integral/Hgueleitung.js.map +1 -0
- package/dist/converter/integral7/model/integral/Kopfstation.d.ts +31 -0
- package/dist/converter/integral7/model/integral/Kopfstation.js +3 -0
- package/dist/converter/integral7/model/integral/Kopfstation.js.map +1 -0
- package/dist/converter/integral7/model/interfaces.d.ts +8 -0
- package/dist/converter/integral7/sql/integral.sql.d.ts +8 -0
- package/dist/converter/integral7/sql/integral.sql.js +22 -1
- package/dist/converter/integral7/sql/integral.sql.js.map +1 -1
- package/dist/converter/integral7/utils.d.ts +4 -1
- package/dist/converter/integral7/utils.js +26 -8
- package/dist/converter/integral7/utils.js.map +1 -1
- package/dist/etl-neplan/etl-neplan-contingency-analysis.js +22 -7
- package/dist/etl-neplan/etl-neplan-contingency-analysis.js.map +1 -1
- package/dist/etl-neplan/etl-neplan-feederline.d.ts +3 -1
- package/dist/etl-neplan/etl-neplan-feederline.js +73 -15
- package/dist/etl-neplan/etl-neplan-feederline.js.map +1 -1
- package/dist/etl-neplan/etl-neplan.js.map +1 -1
- package/dist/etl-neplan/neplan-contingency-analysis.d.ts +14 -0
- package/dist/etl-neplan/neplan-contingency-analysis.js +337 -0
- package/dist/etl-neplan/neplan-contingency-analysis.js.map +1 -0
- package/dist/graph/Types.d.ts +5 -0
- package/dist/graph/Types.js +10 -0
- package/dist/graph/Types.js.map +1 -0
- package/dist/graph/connections/connection.d.ts +11 -0
- package/dist/graph/connections/connection.js +17 -0
- package/dist/graph/connections/connection.js.map +1 -0
- package/dist/graph/edges/edge.d.ts +8 -0
- package/dist/graph/edges/edge.js +16 -0
- package/dist/graph/edges/edge.js.map +1 -0
- package/dist/graph/graph-interfaces.d.ts +15 -0
- package/dist/graph/graph-interfaces.js +3 -0
- package/dist/graph/graph-interfaces.js.map +1 -0
- package/dist/graph/graph-util.d.ts +13 -0
- package/dist/graph/graph-util.js +114 -0
- package/dist/graph/graph-util.js.map +1 -0
- package/dist/graph/graph.d.ts +15 -0
- package/dist/graph/graph.js +75 -0
- package/dist/graph/graph.js.map +1 -0
- package/dist/graph/nodes/node.d.ts +14 -0
- package/dist/graph/nodes/node.js +28 -0
- package/dist/graph/nodes/node.js.map +1 -0
- package/dist/index.d.ts +6 -0
- package/dist/index.js +12 -0
- package/dist/index.js.map +1 -1
- package/dist/model/core/ACDCTerminal.js +2 -2
- package/dist/model/core/ACDCTerminal.js.map +1 -1
- package/dist/model/core/ConnectivityNode.js +3 -2
- package/dist/model/core/ConnectivityNode.js.map +1 -1
- package/dist/model/core/PSRType.d.ts +0 -1
- package/dist/model/core/PSRType.js +3 -6
- package/dist/model/core/PSRType.js.map +1 -1
- package/dist/model/core/PowerSystemResource.js +3 -8
- package/dist/model/core/PowerSystemResource.js.map +1 -1
- package/dist/model/core/Substation.d.ts +3 -0
- package/dist/model/core/Substation.js +4 -0
- package/dist/model/core/Substation.js.map +1 -1
- package/dist/model/core/Terminal.d.ts +2 -0
- package/dist/model/core/Terminal.js +2 -2
- package/dist/model/core/Terminal.js.map +1 -1
- package/dist/model/core/VoltageLevel.js +0 -1
- package/dist/model/core/VoltageLevel.js.map +1 -1
- package/dist/model/dc/ACDCConverter.d.ts +23 -0
- package/dist/model/dc/ACDCConverter.js +33 -0
- package/dist/model/dc/ACDCConverter.js.map +1 -0
- package/dist/model/dc/ACDCConverterDCTerminal.d.ts +13 -0
- package/dist/model/dc/ACDCConverterDCTerminal.js +54 -0
- package/dist/model/dc/ACDCConverterDCTerminal.js.map +1 -0
- package/dist/model/dc/CsConverter.d.ts +21 -0
- package/dist/model/dc/CsConverter.js +43 -0
- package/dist/model/dc/CsConverter.js.map +1 -0
- package/dist/model/dc/CsOperatingModeKind.d.ts +4 -0
- package/dist/model/dc/CsOperatingModeKind.js +9 -0
- package/dist/model/dc/CsOperatingModeKind.js.map +1 -0
- package/dist/model/dc/CsPpccControlKind.d.ts +5 -0
- package/dist/model/dc/CsPpccControlKind.js +10 -0
- package/dist/model/dc/CsPpccControlKind.js.map +1 -0
- package/dist/model/dc/DCBaseTerminal.d.ts +8 -0
- package/dist/model/dc/DCBaseTerminal.js +30 -0
- package/dist/model/dc/DCBaseTerminal.js.map +1 -0
- package/dist/model/dc/DCConductingEquipment.d.ts +5 -0
- package/dist/model/dc/DCConductingEquipment.js +12 -0
- package/dist/model/dc/DCConductingEquipment.js.map +1 -0
- package/dist/model/dc/DCConverterOperatingModeKind.d.ts +5 -0
- package/dist/model/dc/DCConverterOperatingModeKind.js +10 -0
- package/dist/model/dc/DCConverterOperatingModeKind.js.map +1 -0
- package/dist/model/dc/DCConverterUnit.d.ts +14 -0
- package/dist/model/dc/DCConverterUnit.js +54 -0
- package/dist/model/dc/DCConverterUnit.js.map +1 -0
- package/dist/model/dc/DCEquipmentContainer.d.ts +5 -0
- package/dist/model/dc/DCEquipmentContainer.js +12 -0
- package/dist/model/dc/DCEquipmentContainer.js.map +1 -0
- package/dist/model/dc/DCLine.d.ts +11 -0
- package/dist/model/dc/DCLine.js +48 -0
- package/dist/model/dc/DCLine.js.map +1 -0
- package/dist/model/dc/DCLineSegment.d.ts +13 -0
- package/dist/model/dc/DCLineSegment.js +69 -0
- package/dist/model/dc/DCLineSegment.js.map +1 -0
- package/dist/model/dc/DCNode.d.ts +12 -0
- package/dist/model/dc/DCNode.js +41 -0
- package/dist/model/dc/DCNode.js.map +1 -0
- package/dist/model/dc/DCPolarityKind.d.ts +5 -0
- package/dist/model/dc/DCPolarityKind.js +10 -0
- package/dist/model/dc/DCPolarityKind.js.map +1 -0
- package/dist/model/dc/DCTerminal.d.ts +10 -0
- package/dist/model/dc/DCTerminal.js +38 -0
- package/dist/model/dc/DCTerminal.js.map +1 -0
- package/dist/model/dc/VsConverter.d.ts +18 -0
- package/dist/model/dc/VsConverter.js +33 -0
- package/dist/model/dc/VsConverter.js.map +1 -0
- package/dist/model/dc/VsPpccControlKind.d.ts +7 -0
- package/dist/model/dc/VsPpccControlKind.js +12 -0
- package/dist/model/dc/VsPpccControlKind.js.map +1 -0
- package/dist/model/dc/VsQpccControlKind.d.ts +5 -0
- package/dist/model/dc/VsQpccControlKind.js +10 -0
- package/dist/model/dc/VsQpccControlKind.js.map +1 -0
- package/dist/model/domain/UnitMultiplier.js.map +1 -1
- package/dist/model/extensions/amprion/model/AmprionModell.d.ts +25 -0
- package/dist/model/extensions/amprion/model/AmprionModell.js +64 -0
- package/dist/model/extensions/amprion/model/AmprionModell.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProject.d.ts +34 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProject.js +134 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProject.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProjectBundle.d.ts +17 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProjectBundle.js +77 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProjectBundle.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProjectPlan.d.ts +14 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProjectPlan.js +57 -0
- package/dist/model/extensions/amprion/project/AMPRIONConstructionProjectPlan.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProject.d.ts +7 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProject.js +17 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProject.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectPhase.d.ts +19 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectPhase.js +74 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectPhase.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectStructure.d.ts +15 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectStructure.js +26 -0
- package/dist/model/extensions/amprion/project/AMPRIONErpProjectStructure.js.map +1 -0
- package/dist/model/extensions/amprion/project/AMPRIONProjectPriorityKind.d.ts +5 -0
- package/dist/model/extensions/amprion/project/AMPRIONProjectPriorityKind.js +10 -0
- package/dist/model/extensions/amprion/project/AMPRIONProjectPriorityKind.js.map +1 -0
- package/dist/model/extensions/amprion/wires/AMPRIONSeriesCompensator.d.ts +9 -0
- package/dist/model/extensions/amprion/wires/AMPRIONSeriesCompensator.js +46 -0
- package/dist/model/extensions/amprion/wires/AMPRIONSeriesCompensator.js.map +1 -0
- package/dist/model/extensions/enervance/operations/EVTerminalAction.js.map +1 -1
- package/dist/model/extensions/neplan-westnetz/assets/WNFacility.js.map +1 -1
- package/dist/model/generation/WindGeneratingUnit.d.ts +5 -0
- package/dist/model/generation/WindGeneratingUnit.js +66 -0
- package/dist/model/generation/WindGeneratingUnit.js.map +1 -1
- package/dist/model/model/Model.d.ts +39 -1
- package/dist/model/model/Model.js +91 -1
- package/dist/model/model/Model.js.map +1 -1
- package/dist/model/wires/ACLineSegment.d.ts +1 -0
- package/dist/model/wires/ACLineSegment.js +15 -2
- package/dist/model/wires/ACLineSegment.js.map +1 -1
- package/dist/model/wires/AsynchronousMachine.d.ts +1 -0
- package/dist/model/wires/AsynchronousMachine.js +37 -1
- package/dist/model/wires/AsynchronousMachine.js.map +1 -1
- package/dist/model/wires/Disconnector.js +1 -1
- package/dist/model/wires/EnergySource.d.ts +2 -0
- package/dist/model/wires/EnergySource.js +28 -2
- package/dist/model/wires/EnergySource.js.map +1 -1
- package/dist/model/wires/SeriesCompensator.d.ts +18 -2
- package/dist/model/wires/SeriesCompensator.js +108 -5
- package/dist/model/wires/SeriesCompensator.js.map +1 -1
- package/dist/util/util-create.js.map +1 -1
- package/dist/util/util-topology.d.ts +2 -2
- package/dist/util/util-topology.js +14 -6
- package/dist/util/util-topology.js.map +1 -1
- package/package.json +1 -1
- package/src/config/westnetz-neplan/neplan-load.config.ts +1 -1
- package/src/constants/cim-class-definition.ts +20 -1
- package/src/constants/cim-class-names.ts +9 -0
- package/src/converter/integral7/ConverterIntegral7.ts +753 -345
- package/src/converter/integral7/config/db-config.ts +3 -2
- package/src/converter/integral7/model/integral/Hgueleitung.ts +12 -0
- package/src/converter/integral7/model/integral/Kopfstation.ts +46 -0
- package/src/converter/integral7/model/interfaces.ts +23 -16
- package/src/converter/integral7/sql/integral.sql.ts +27 -1
- package/src/converter/integral7/utils.ts +43 -11
- package/src/etl-neplan/etl-neplan-contingency-analysis.ts +30 -12
- package/src/etl-neplan/etl-neplan-feederline.ts +100 -17
- package/src/etl-neplan/etl-neplan.ts +1 -0
- package/src/etl-neplan/neplan-contingency-analysis.ts +572 -0
- package/src/graph/Types.ts +7 -0
- package/src/graph/connections/connection.ts +29 -0
- package/src/graph/edges/edge.ts +27 -0
- package/src/graph/graph-interfaces.ts +21 -0
- package/src/graph/graph-util.ts +158 -0
- package/src/graph/graph.ts +84 -0
- package/src/graph/nodes/node.ts +43 -0
- package/src/index.ts +8 -0
- package/src/model/core/ACDCTerminal.ts +2 -2
- package/src/model/core/ConnectivityNode.ts +2 -2
- package/src/model/core/PSRType.ts +3 -6
- package/src/model/core/PowerSystemResource.ts +3 -7
- package/src/model/core/Substation.ts +6 -0
- package/src/model/core/Terminal.ts +15 -6
- package/src/model/core/VoltageLevel.ts +0 -1
- package/src/model/dc/ACDCConverter.ts +66 -0
- package/src/model/dc/ACDCConverterDCTerminal.ts +64 -0
- package/src/model/dc/CsConverter.ts +68 -0
- package/src/model/dc/CsOperatingModeKind.ts +4 -0
- package/src/model/dc/CsPpccControlKind.ts +5 -0
- package/src/model/dc/DCBaseTerminal.ts +30 -0
- package/src/model/dc/DCConductingEquipment.ts +8 -0
- package/src/model/dc/DCConverterOperatingModeKind.ts +6 -0
- package/src/model/dc/DCConverterUnit.ts +60 -0
- package/src/model/dc/DCEquipmentContainer.ts +8 -0
- package/src/model/dc/DCLine.ts +56 -0
- package/src/model/dc/DCLineSegment.ts +81 -0
- package/src/model/dc/DCNode.ts +49 -0
- package/src/model/dc/DCPolarityKind.ts +5 -0
- package/src/model/dc/DCTerminal.ts +45 -0
- package/src/model/dc/VsConverter.ts +48 -0
- package/src/model/dc/VsPpccControlKind.ts +7 -0
- package/src/model/dc/VsQpccControlKind.ts +5 -0
- package/src/model/domain/UnitMultiplier.ts +12 -12
- package/src/model/equivalents/EquivalentBranch.ts +10 -10
- package/src/model/extensions/amprion/model/AmprionModell.ts +92 -0
- package/src/model/extensions/amprion/project/AMPRIONConstructionProject.ts +174 -0
- package/src/model/extensions/amprion/project/AMPRIONConstructionProjectBundle.ts +89 -0
- package/src/model/extensions/amprion/project/AMPRIONConstructionProjectPlan.ts +64 -0
- package/src/model/extensions/amprion/project/AMPRIONErpProject.ts +21 -0
- package/src/model/extensions/amprion/project/AMPRIONErpProjectPhase.ts +89 -0
- package/src/model/extensions/amprion/project/AMPRIONErpProjectStructure.ts +36 -0
- package/src/model/extensions/amprion/project/AMPRIONProjectPriorityKind.ts +5 -0
- package/src/model/extensions/amprion/wires/AMPRIONSeriesCompensator.ts +53 -0
- package/src/model/extensions/enervance/core/EVTerminal.ts +1 -1
- package/src/model/extensions/enervance/operations/EVTerminalAction.ts +0 -1
- package/src/model/extensions/neplan-westnetz/assets/WNFacility.ts +0 -1
- package/src/model/generation/WindGeneratingUnit.ts +73 -0
- package/src/model/model/Model.ts +131 -7
- package/src/model/wires/ACLineSegment.ts +244 -228
- package/src/model/wires/AsynchronousMachine.ts +38 -1
- package/src/model/wires/Disconnector.ts +1 -1
- package/src/model/wires/EnergySource.ts +256 -222
- package/src/model/wires/SeriesCompensator.ts +145 -19
- package/src/util/util-create.ts +2 -0
- package/src/util/util-topology.ts +18 -7
- package/test/apache-jena-fuseki-interface/{apache-jena-fuseki-neplan.tests.spec.ts → apache-jena-fuseki-neplan-1.tests.sp-ec.ts} +0 -26
- package/test/apache-jena-fuseki-interface/apache-jena-fuseki-neplan-2.tests.spec.ts +255 -0
- package/test/apache-jena-fuseki-interface/data/xml/finnentrop/Finnentrop_Rootnet_Area 1_EQ_V1.xml +20867 -0
- package/test/apache-jena-fuseki-interface/data/xml/finnentrop/Finnentrop_Rootnet_Area 1_SSH_V1.xml +3784 -0
- package/test/apache-jena-fuseki-interface/data/xml/ruhrau-katharina/Ruhrau_Katharina_Rootnet_Area 1_EQ_V1.xml +42546 -0
- package/test/apache-jena-fuseki-interface/data/xml/ruhrau-katharina/Ruhrau_Katharina_Rootnet_Area 1_SSH_V1.xml +10101 -0
- package/test/apache-jena-fuseki-interface/data/xml/ruhrau-katharina/Ruhrau_Katharina_Rootnet_Area 1_SV_V1.xml +6229 -0
- package/test/integral7-converter/integral7-converter.tests.spec.ts +12 -3
- package/test/power-system-data-model-converter/power-system-data-model-converter.tests.spec.ts +1 -1
- package/test/apache-jena-fuseki-interface/data/apache-jena-fuseki-3.12.0/run/system/tdb.lock +0 -1
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import { BaseClass } from '../interfaces';
|
|
2
|
+
|
|
3
|
+
export interface Kopfstation extends BaseClass {
|
|
4
|
+
anschluss: number;
|
|
5
|
+
betrieb: number;
|
|
6
|
+
|
|
7
|
+
u_geregelt: number;
|
|
8
|
+
p_geregelt: number;
|
|
9
|
+
grad_geregelt: number;
|
|
10
|
+
|
|
11
|
+
alpha: number;
|
|
12
|
+
gamma: number;
|
|
13
|
+
rix: number;
|
|
14
|
+
|
|
15
|
+
kr: number;
|
|
16
|
+
kr_dc: number;
|
|
17
|
+
|
|
18
|
+
ranking_dc: number;
|
|
19
|
+
ranking_nr: number;
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
winkel_1: number;
|
|
23
|
+
winkel_2: number;
|
|
24
|
+
|
|
25
|
+
nachbar_ng: number;
|
|
26
|
+
|
|
27
|
+
pr: number;
|
|
28
|
+
ur: number;
|
|
29
|
+
|
|
30
|
+
pges: number;
|
|
31
|
+
uges: number;
|
|
32
|
+
|
|
33
|
+
udc: number;
|
|
34
|
+
|
|
35
|
+
p_min: number;
|
|
36
|
+
p_max: number;
|
|
37
|
+
q_min: number;
|
|
38
|
+
q_max: number;
|
|
39
|
+
p_leer: number;
|
|
40
|
+
pkr: number;
|
|
41
|
+
|
|
42
|
+
pgrad: number;
|
|
43
|
+
usoll: number;
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
}
|
|
@@ -37,32 +37,32 @@ export interface Standort extends BaseClass {
|
|
|
37
37
|
|
|
38
38
|
}
|
|
39
39
|
|
|
40
|
-
export interface Anlage extends BaseClass{
|
|
40
|
+
export interface Anlage extends BaseClass {
|
|
41
41
|
standort: number,
|
|
42
42
|
un: number;
|
|
43
43
|
}
|
|
44
44
|
|
|
45
45
|
|
|
46
|
-
export interface AnlagenAbschnitt extends BaseClass{
|
|
46
|
+
export interface AnlagenAbschnitt extends BaseClass {
|
|
47
47
|
schaltanlage: number,
|
|
48
48
|
pos: number;
|
|
49
49
|
}
|
|
50
50
|
|
|
51
|
-
export interface Abzweig extends BaseClass{
|
|
51
|
+
export interface Abzweig extends BaseClass {
|
|
52
52
|
standort: number,
|
|
53
53
|
un: number;
|
|
54
54
|
netzgruppe: number;
|
|
55
55
|
id_psse_cape: number;
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
export interface Schaltfeld extends BaseClass{
|
|
58
|
+
export interface Schaltfeld extends BaseClass {
|
|
59
59
|
seltyp: number,
|
|
60
60
|
saabschnitt: number;
|
|
61
61
|
feldnummer: number;
|
|
62
62
|
ips_folder_id: string;
|
|
63
63
|
}
|
|
64
64
|
|
|
65
|
-
export interface NsgSchaltfeld extends SchemaObject{
|
|
65
|
+
export interface NsgSchaltfeld extends SchemaObject {
|
|
66
66
|
deltaausrichtung: number,
|
|
67
67
|
hoehe: number;
|
|
68
68
|
nsgsaa: number,
|
|
@@ -71,9 +71,7 @@ export interface NsgSchaltfeld extends SchemaObject{
|
|
|
71
71
|
}
|
|
72
72
|
|
|
73
73
|
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
export interface SchaltfeldKnoten extends BaseClass{
|
|
74
|
+
export interface SchaltfeldKnoten extends BaseClass {
|
|
77
75
|
schaltfeld: number,
|
|
78
76
|
|
|
79
77
|
}
|
|
@@ -121,7 +119,7 @@ export interface NsgLeitungsPunkt extends SchemaObject {
|
|
|
121
119
|
abstand_rel_anchor_m: number;
|
|
122
120
|
}
|
|
123
121
|
|
|
124
|
-
export interface Stk extends BaseClass{
|
|
122
|
+
export interface Stk extends BaseClass {
|
|
125
123
|
leitung: number;
|
|
126
124
|
laenge: number;
|
|
127
125
|
un: number;
|
|
@@ -136,6 +134,15 @@ export interface Stk extends BaseClass{
|
|
|
136
134
|
tend: number;
|
|
137
135
|
}
|
|
138
136
|
|
|
137
|
+
export interface Ldrossel extends BaseClass, Connection {
|
|
138
|
+
standort: number,
|
|
139
|
+
ur: number;
|
|
140
|
+
ir: number;
|
|
141
|
+
ukr: number;
|
|
142
|
+
pkr: number;
|
|
143
|
+
id_psse_cape: number;
|
|
144
|
+
}
|
|
145
|
+
|
|
139
146
|
export interface StkTyp {
|
|
140
147
|
id: number;
|
|
141
148
|
name: string
|
|
@@ -234,8 +241,8 @@ export interface Wicklung {
|
|
|
234
241
|
guid_w3: string,
|
|
235
242
|
|
|
236
243
|
|
|
237
|
-
|
|
238
244
|
}
|
|
245
|
+
|
|
239
246
|
export interface Trafo2w extends BaseClass, Connection, Wicklung {
|
|
240
247
|
standort: number;
|
|
241
248
|
name: string;
|
|
@@ -245,8 +252,6 @@ export interface Trafo2w extends BaseClass, Connection, Wicklung {
|
|
|
245
252
|
}
|
|
246
253
|
|
|
247
254
|
|
|
248
|
-
|
|
249
|
-
|
|
250
255
|
export interface Trafo3w extends BaseClass, Connection, Wicklung {
|
|
251
256
|
standort: number;
|
|
252
257
|
name: string;
|
|
@@ -311,6 +316,7 @@ export interface Belastung extends BaseClass {
|
|
|
311
316
|
flag_ind: number;
|
|
312
317
|
multfaktor: number;
|
|
313
318
|
}
|
|
319
|
+
|
|
314
320
|
export interface Einspeisung extends Belastung {
|
|
315
321
|
einspprio: number;
|
|
316
322
|
kr: number;
|
|
@@ -412,6 +418,7 @@ export interface NsgSAAB extends SchemaObject {
|
|
|
412
418
|
saabschnitt: number;
|
|
413
419
|
nsgsa: number;
|
|
414
420
|
}
|
|
421
|
+
|
|
415
422
|
export interface NsgLeitung extends SchemaObject {
|
|
416
423
|
leitung: number;
|
|
417
424
|
anschlussanf: number;
|
|
@@ -435,9 +442,9 @@ export interface NsgLeitungsPunkt extends SchemaObject {
|
|
|
435
442
|
}
|
|
436
443
|
|
|
437
444
|
export interface Impedanz {
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
445
|
+
r: number;
|
|
446
|
+
x: number;
|
|
447
|
+
g: number;
|
|
448
|
+
b: number;
|
|
442
449
|
}
|
|
443
450
|
|
|
@@ -21,6 +21,7 @@ export class Integral7TableNames {
|
|
|
21
21
|
public static ERSATZLAENGSZWEIG = "netz_ersatzlaengszweig";
|
|
22
22
|
public static TRAFO2W = "netz_trafo2w";
|
|
23
23
|
public static TRAFO3W = "netz_trafo3w";
|
|
24
|
+
public static LAENGSDROSSEL = "netz_ldrossel";
|
|
24
25
|
public static TRAFO3_WICKLUNG = "netz_trafowicklung3w";
|
|
25
26
|
public static TRAFO3W_KNOTEN = "netz_knotent3w";
|
|
26
27
|
|
|
@@ -37,6 +38,9 @@ export class Integral7TableNames {
|
|
|
37
38
|
public static ASYNCHRONMOTOR = "netz_asynchronmotor";
|
|
38
39
|
public static BOUNDARYINJECTION = "netz_boundaryinjection";
|
|
39
40
|
|
|
41
|
+
public static HGUE_LEITUNG = "netz_hgueleitung";
|
|
42
|
+
public static HGUE_KOPFSTATION_KLASSISCH = "netz_hguekopfklassisch";
|
|
43
|
+
public static HGUE_KOPFSTATION_VSC = "netz_hguekopfvsc";
|
|
40
44
|
public static TYP_FREILEITUNG = "typen_freileitungabschnitt";
|
|
41
45
|
public static TYP_KABEL = "typen_kabelabschnitt";
|
|
42
46
|
public static TYP_DROSSEL = "typen_kdrossel";
|
|
@@ -86,6 +90,7 @@ export class I7Objects {
|
|
|
86
90
|
public static ERSATZLAENGSZWEIG = "ERSATZLAENGSZWEIG";
|
|
87
91
|
public static TRAFO2W = "TRAFO2W";
|
|
88
92
|
public static TRAFO3W = "TRAFO3W";
|
|
93
|
+
public static LAENGSDROSSEL = "LAENGSDROSSEL";
|
|
89
94
|
public static TRAFO3_WICKLUNG = "TRAFO3_WICKLUNG";
|
|
90
95
|
public static TRAFO3W_KNOTEN = "TRAFO3W_KNOTEN";
|
|
91
96
|
|
|
@@ -102,6 +107,10 @@ export class I7Objects {
|
|
|
102
107
|
public static ASYNCHRONMOTOR = "ASYNCHRONMOTOR";
|
|
103
108
|
public static BOUNDARYINJECTION = "BOUNDARYINJECTION";
|
|
104
109
|
|
|
110
|
+
public static HGUE_LEITUNG = "HGUE_LEITUNG";
|
|
111
|
+
public static HGUE_KOPFSTATION_KLASSISCH = "HGUE_KOPFSTATION_KLASSISCH";
|
|
112
|
+
public static HGUE_KOPFSTATION_VSC = "HGUE_KOPFSTATION_VSC";
|
|
113
|
+
|
|
105
114
|
public static TYP_FREILEITUNG = "TYP_FREILEITUNG";
|
|
106
115
|
public static TYP_KABEL = "TYP_KABEL";
|
|
107
116
|
public static TYP_DROSSEL = "TYP_DROSSEL";
|
|
@@ -201,9 +210,26 @@ export function getNetzQuery(objectName: I7Objects, limit: number, offset: numbe
|
|
|
201
210
|
case I7Objects.KABEL: {
|
|
202
211
|
return `SELECT * FROM ${Integral7TableNames[I7Objects.KABEL]} WHERE ${getWhereIDs('leitung', whereIDs).join(' OR ')};`;
|
|
203
212
|
}
|
|
213
|
+
case I7Objects.LAENGSDROSSEL: {
|
|
214
|
+
console.log(`SELECT * FROM ${Integral7TableNames[I7Objects.LAENGSDROSSEL]} LIMIT ${limit} OFFSET ${offset};`);
|
|
215
|
+
return `SELECT * FROM ${Integral7TableNames[I7Objects.LAENGSDROSSEL]} LIMIT ${limit} OFFSET ${offset};`;
|
|
216
|
+
}
|
|
204
217
|
case I7Objects.ERSATZLAENGSZWEIG: {
|
|
205
218
|
return `SELECT * FROM ${Integral7TableNames[I7Objects.ERSATZLAENGSZWEIG]} LIMIT ${limit} OFFSET ${offset};`;
|
|
206
219
|
}
|
|
220
|
+
|
|
221
|
+
case I7Objects.HGUE_LEITUNG: {
|
|
222
|
+
return `SELECT * FROM ${Integral7TableNames[I7Objects.HGUE_LEITUNG]} LIMIT ${limit} OFFSET ${offset};`;
|
|
223
|
+
}
|
|
224
|
+
|
|
225
|
+
case I7Objects.HGUE_KOPFSTATION_KLASSISCH: {
|
|
226
|
+
return `SELECT * FROM ${Integral7TableNames[I7Objects.HGUE_KOPFSTATION_KLASSISCH]} WHERE ${getWhereIDs('anschluss', whereIDs).join(' OR ')};`;
|
|
227
|
+
}
|
|
228
|
+
|
|
229
|
+
case I7Objects.HGUE_KOPFSTATION_VSC: {
|
|
230
|
+
return `SELECT * FROM ${Integral7TableNames[I7Objects.HGUE_KOPFSTATION_VSC]} WHERE ${getWhereIDs('anschluss', whereIDs).join(' OR ')};`;
|
|
231
|
+
}
|
|
232
|
+
|
|
207
233
|
case I7Objects.TRAFO2W: {
|
|
208
234
|
// return `SELECT * FROM ${Integral7TableNames[I7Objects.TRAFO2W]} WHERE ${getWhereIDs('standort', whereIDs).join(' OR ')};`;
|
|
209
235
|
return `SELECT * FROM ${Integral7TableNames[I7Objects.TRAFO2W]} LIMIT ${limit} OFFSET ${offset};`;
|
|
@@ -262,7 +288,7 @@ export function getNetzQuery(objectName: I7Objects, limit: number, offset: numbe
|
|
|
262
288
|
return `SELECT * FROM ${Integral7TableNames[I7Objects.GENERATOR]} WHERE ${getWhereIDs('anschluss', whereIDs).join(' OR ')};`;
|
|
263
289
|
}
|
|
264
290
|
case I7Objects.ASYNCHRONMOTOR: {
|
|
265
|
-
return `SELECT * FROM ${Integral7TableNames[I7Objects.ASYNCHRONMOTOR]}
|
|
291
|
+
return `SELECT * FROM ${Integral7TableNames[I7Objects.ASYNCHRONMOTOR]} WHERE ${getWhereIDs('anschluss', whereIDs).join(' OR ')};`;
|
|
266
292
|
}
|
|
267
293
|
case I7Objects.BOUNDARYINJECTION: {
|
|
268
294
|
return `SELECT * FROM ${Integral7TableNames[I7Objects.BOUNDARYINJECTION]} LIMIT ${limit} OFFSET ${offset};`;
|
|
@@ -2,7 +2,7 @@ import { BaseClass, Belastung, Wicklung } from './model/interfaces';
|
|
|
2
2
|
import {
|
|
3
3
|
BaseVoltage,
|
|
4
4
|
Bay,
|
|
5
|
-
ConductingEquipment, ConnectivityNode,
|
|
5
|
+
ConductingEquipment, ConnectivityNode, createBaseVoltageIfNotExists,
|
|
6
6
|
createRatioTapChangerTablePoint,
|
|
7
7
|
EquipmentContainer,
|
|
8
8
|
FossilFuel,
|
|
@@ -79,6 +79,10 @@ export function getLine(cimModel: Model, bezeichner: string, kurzname: string):
|
|
|
79
79
|
return;
|
|
80
80
|
}
|
|
81
81
|
|
|
82
|
+
export function getU(un: any, deafultUn: number): number {
|
|
83
|
+
return (isNaN(un) || un === null) ? deafultUn : +un;
|
|
84
|
+
}
|
|
85
|
+
|
|
82
86
|
/** Wenn die Objektreferenzen nicht vorhanden sind, wird das BV-Objekt über die UUID bestimmt. */
|
|
83
87
|
export function getTerminalUn(cimModel: Model, ce: ConductingEquipment): BaseVoltage | undefined {
|
|
84
88
|
const terminals = ce.terminals.size > 0 ? [...ce.terminals.keys()] : ce.terminalsUUIDs;
|
|
@@ -545,20 +549,48 @@ export function writeFile(filePath: string, data: any) {
|
|
|
545
549
|
});
|
|
546
550
|
}
|
|
547
551
|
|
|
548
|
-
|
|
549
|
-
export function writeZipFile(zip: JSZip, path: string): Promise<any> {
|
|
552
|
+
export function generateNodeStream(zip: JSZip): Promise<Status> {
|
|
550
553
|
return new Promise((resolve, reject) => {
|
|
554
|
+
try {
|
|
555
|
+
resolve({status: 'successful', message: 'ok', data: zip.generateNodeStream({type: 'nodebuffer', streamFiles: true})});
|
|
556
|
+
} catch (e) {
|
|
557
|
+
reject({status: 'error', message: e.toString()});
|
|
558
|
+
}
|
|
559
|
+
});
|
|
560
|
+
}
|
|
551
561
|
|
|
552
|
-
|
|
553
|
-
|
|
554
|
-
|
|
555
|
-
.
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
|
|
559
|
-
|
|
562
|
+
export function writeZipFile(data: NodeJS.ReadableStream, path: string): Promise<any> {
|
|
563
|
+
return new Promise((resolve, reject) => {
|
|
564
|
+
try {
|
|
565
|
+
data.pipe(fs.createWriteStream(path))
|
|
566
|
+
.on('finish', function () {
|
|
567
|
+
// JSZip generates a readable stream with a "end" event,
|
|
568
|
+
// but is piped here in a writable stream which emits a "finish" event.
|
|
569
|
+
resolve({status: 'successful', message: 'ok'});
|
|
570
|
+
});
|
|
571
|
+
} catch (e) {
|
|
572
|
+
reject({status: 'error', message: e.toString()});
|
|
573
|
+
}
|
|
560
574
|
});
|
|
561
575
|
}
|
|
576
|
+
|
|
577
|
+
/*export function writeZipFile(zip: JSZip, path: string): Promise<any> {
|
|
578
|
+
return new Promise((resolve, reject) => {
|
|
579
|
+
try {
|
|
580
|
+
zip
|
|
581
|
+
.generateNodeStream({type: 'nodebuffer', streamFiles: true})
|
|
582
|
+
.pipe(fs.createWriteStream(path))
|
|
583
|
+
.on('finish', function () {
|
|
584
|
+
// JSZip generates a readable stream with a "end" event,
|
|
585
|
+
// but is piped here in a writable stream which emits a "finish" event.
|
|
586
|
+
resolve();
|
|
587
|
+
});
|
|
588
|
+
} catch (e) {
|
|
589
|
+
|
|
590
|
+
}
|
|
591
|
+
|
|
592
|
+
});
|
|
593
|
+
}*/
|
|
562
594
|
/** Integral 7 Exporter */
|
|
563
595
|
export function determineEquipmentContainer(equipmentContainerType: string, cimModel: Model, equipmentContainer: EquipmentContainer): EquipmentContainer | undefined {
|
|
564
596
|
switch (equipmentContainerType) {
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { Model } from '../model/model/Model';
|
|
2
2
|
import { WNFeeder } from '../model/extensions/neplan-westnetz/core/WNFeeder';
|
|
3
|
-
import { Equipment } from '../model/core/Equipment';
|
|
4
3
|
import { WNConnectivityNode } from '../model/extensions/neplan-westnetz/core/WNConnectivityNode';
|
|
5
4
|
import { ConductingEquipment } from '../model/core/ConductingEquipment';
|
|
6
5
|
import { Switch } from '../model/wires/Switch';
|
|
@@ -12,7 +11,7 @@ import { SwitchingPlan } from '../model/operations/SwitchingPlan';
|
|
|
12
11
|
import { EVTerminalAction } from '../model/extensions/enervance/operations/EVTerminalAction';
|
|
13
12
|
import { SwitchActionKind } from '../model/operations/SwitchActionKind';
|
|
14
13
|
import { IOutage } from '../interfaces/model/operations/IOutage';
|
|
15
|
-
import {
|
|
14
|
+
import { Graph } from '../graph/graph';
|
|
16
15
|
|
|
17
16
|
export function performContingencyAnalysis(cimModel: Model): string[] {
|
|
18
17
|
|
|
@@ -21,21 +20,32 @@ export function performContingencyAnalysis(cimModel: Model): string[] {
|
|
|
21
20
|
/** 2 Erstelle für jedes nicht verbundenes Element, das zu einem anderen Abgang gehört, eine Schaltmaßname. */
|
|
22
21
|
|
|
23
22
|
const insertSPARQL = [];
|
|
23
|
+
const graph = new Graph();
|
|
24
|
+
|
|
24
25
|
for (const feeder of cimModel.feeders.values()) {
|
|
25
26
|
const wnFeeder = feeder as WNFeeder;
|
|
26
|
-
const disconnectedTerminalCNs = []; // nicht verbundene Knoten
|
|
27
|
-
const disconnectedSwitches = []; // nicht verbundene Schaltelemente
|
|
27
|
+
const disconnectedTerminalCNs = []; // nicht verbundene Knoten zu anderen Abgängen
|
|
28
28
|
const disconnectedTerminalCEs = []; // nicht verbundene leitende Equipments
|
|
29
29
|
|
|
30
|
+
const disconnectedSwitches = []; // nicht verbundene Schaltelemente
|
|
31
|
+
const disconnectedTerminal = []; // nicht verbundene Knoten zum gleichen Abgang
|
|
32
|
+
|
|
30
33
|
/** 1.1 / 1.2) nicht verbundene Knoten und Switches bestimmen */
|
|
31
34
|
for (const equip of wnFeeder.additionalGroupedEquipment.values()) {
|
|
32
35
|
if (equip instanceof ConductingEquipment) {
|
|
33
36
|
const ce = equip as ConductingEquipment;
|
|
34
37
|
// Bestimme nicht verbundene CNs
|
|
35
38
|
for (const terminal of ce.terminals.values()) {
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
+
|
|
40
|
+
if (!terminal.isClosed()) {
|
|
41
|
+
/** verbindungen zu anderen Angängen */
|
|
42
|
+
if(!wnFeeder.normalEnergizedConnectivityNodes.has(terminal.connectivityNode.mrid)) {
|
|
43
|
+
if (terminal.connectivityNode && (terminal.connectivityNode as WNConnectivityNode).additionalConnectivityNodeContainer) {
|
|
44
|
+
disconnectedTerminalCNs.push(terminal);
|
|
45
|
+
}
|
|
46
|
+
} else if (wnFeeder.normalEnergizedConnectivityNodes.has(terminal.connectivityNode.mrid)) {
|
|
47
|
+
/** offene Verbindungen zu sich selbst */
|
|
48
|
+
if (!disconnectedTerminal.includes(terminal)) disconnectedTerminal.push(terminal);
|
|
39
49
|
}
|
|
40
50
|
}
|
|
41
51
|
}
|
|
@@ -50,15 +60,20 @@ export function performContingencyAnalysis(cimModel: Model): string[] {
|
|
|
50
60
|
}
|
|
51
61
|
}
|
|
52
62
|
|
|
53
|
-
|
|
54
63
|
/** 1.1 / 1.2) nicht verbundene leitende Elemente bestimmen */
|
|
55
64
|
for (const cn of wnFeeder.normalEnergizedConnectivityNodes.values()) {
|
|
56
65
|
// Bestimme nicht verbundene CNs
|
|
57
66
|
for (const terminal of cn.terminals.values()) {
|
|
58
|
-
|
|
59
|
-
if (!terminal.isClosed()
|
|
60
|
-
|
|
61
|
-
|
|
67
|
+
|
|
68
|
+
if (!terminal.isClosed()) {
|
|
69
|
+
/** ist offen und gehört zu einem anderen Abgang */
|
|
70
|
+
if (!wnFeeder.additionalGroupedEquipment.has(terminal.conductingEquipment.mrid)) {
|
|
71
|
+
if (terminal.conductingEquipment.additionalEquipmentContainer.size) {
|
|
72
|
+
disconnectedTerminalCEs.push(terminal);
|
|
73
|
+
}
|
|
74
|
+
} else if (wnFeeder.additionalGroupedEquipment.has(terminal.conductingEquipment.mrid)) {
|
|
75
|
+
/** offene Verbindungen zu sich selbst */
|
|
76
|
+
if (!disconnectedTerminal.includes(terminal)) disconnectedTerminal.push(terminal);
|
|
62
77
|
}
|
|
63
78
|
}
|
|
64
79
|
}
|
|
@@ -86,6 +101,9 @@ export function performContingencyAnalysis(cimModel: Model): string[] {
|
|
|
86
101
|
console.log('\twnFeeder.additionalGroupedEquipment ' + wnFeeder.additionalGroupedEquipment.size);
|
|
87
102
|
console.log('\twnFeeder.normalEnergizedConnectivityNodes + ' + wnFeeder.normalEnergizedConnectivityNodes.size);*/
|
|
88
103
|
|
|
104
|
+
// Stationen mit mehr als einem Anbgang ausfallen lassen.
|
|
105
|
+
|
|
106
|
+
// Head TerminalAusfälle
|
|
89
107
|
for (const headTerminal of feeder.normalHeadTerminals.values()) {
|
|
90
108
|
//Lege einen N-1 Fall an, wenn es Schaltmaßnahmen exisitieren
|
|
91
109
|
|
|
@@ -9,12 +9,15 @@ import { Model } from '../model/model/Model';
|
|
|
9
9
|
import { WNFeeder } from '../model/extensions/neplan-westnetz/core/WNFeeder';
|
|
10
10
|
import { IConnectivityNode } from '../interfaces/model/core/IConnectivityNode';
|
|
11
11
|
import { ACLineSegment } from '../model/wires/ACLineSegment';
|
|
12
|
-
import { generateUUID } from '../util/utils';
|
|
12
|
+
import { generateUUID, isInArray } from '../util/utils';
|
|
13
13
|
import { Equipment } from '../model/core/Equipment';
|
|
14
14
|
import { WNConnectivityNode } from '../model/extensions/neplan-westnetz/core/WNConnectivityNode';
|
|
15
15
|
import { EVTerminal } from '../model/extensions/enervance/core/EVTerminal';
|
|
16
16
|
import { ITerminal } from '../interfaces/model/core/ITerminal';
|
|
17
17
|
import { ConductingEquipment } from '../model/core/ConductingEquipment';
|
|
18
|
+
import { VoltageLevel } from '../model/core/VoltageLevel';
|
|
19
|
+
import { Bay } from '../model/core/Bay';
|
|
20
|
+
import { ExternalNetworkInjection } from '../model/wires/ExternalNetworkInjection';
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* Erzeugung von Abgängen
|
|
@@ -34,20 +37,34 @@ export function createFeederLines(cimModel: Model, basiIRI: string): string [] {
|
|
|
34
37
|
const computableGridsSlackElements: IIdentifiedObject[][] = determineNetworksSlackElements(cimModel, computableGrids);
|
|
35
38
|
|
|
36
39
|
/** KRUECKE Anlagen mit mehr als 10 Switchelementen und Slacks werden als Umspannanlagen markiert. */
|
|
37
|
-
const substationElements = determineSubstations(cimModel);
|
|
38
|
-
|
|
40
|
+
const substationElements = determineSubstations(cimModel, computableGridsSlackElements);
|
|
41
|
+
|
|
42
|
+
const computableGridsSlackElementsForFeeder = [...computableGridsSlackElements, substationElements]
|
|
43
|
+
|
|
44
|
+
//_9fafa042-b9d1-4052-ace2-9bfbefeb0134
|
|
45
|
+
//_59f7d40a-36c9-4b39-95e4-657976e50b12
|
|
46
|
+
const cn1 = cimModel.getConnectivityNode('9fafa042-b9d1-4052-ace2-9bfbefeb0134');
|
|
47
|
+
const cn2 = cimModel.getConnectivityNode('59f7d40a-36c9-4b39-95e4-657976e50b12');
|
|
48
|
+
for (const s of computableGridsSlackElementsForFeeder) {
|
|
49
|
+
if (s.indexOf(cn1) !== -1) console.log('9fafa042-b9d1-4052-ace2-9bfbefeb0134')
|
|
50
|
+
if (s.indexOf(cn2) !== -1) console.log('59f7d40a-36c9-4b39-95e4-657976e50b12')
|
|
51
|
+
}
|
|
39
52
|
|
|
40
53
|
const insertObjectSPARQL = [];
|
|
41
54
|
/** bestimmt ALLE elektrisch zusammenhängende Abgänge (eine Art Stromkreis für Mittelspannungsnetze) */
|
|
42
55
|
for (const grid of computableGrids) {
|
|
43
56
|
/** Für das Netz die elektrisch zusammenhängenden Abgänge bestimmen (bestehend aus allen Elementen ) */
|
|
44
|
-
const networkFeederElements: IIdentifiedObject[][] = determineFeederLinesElements(cimModel, grid,
|
|
45
|
-
|
|
57
|
+
const networkFeederElements: IIdentifiedObject[][] = determineFeederLinesElements(cimModel, grid, computableGridsSlackElementsForFeeder);
|
|
46
58
|
|
|
47
59
|
/** Erstellen der FeederLine Objekte */
|
|
48
60
|
for (const feederObjects of networkFeederElements) {
|
|
49
|
-
|
|
61
|
+
|
|
62
|
+
const headTerminals = determineHeadTerminals(feederObjects, computableGridsSlackElements, substationElements);
|
|
63
|
+
|
|
64
|
+
const headTerminal = determineStartHeadTerminals(headTerminals, substationElements);
|
|
65
|
+
|
|
50
66
|
const startCN = headTerminal?.connectivityNode;
|
|
67
|
+
console.log(startCN.name);
|
|
51
68
|
const substation = startCN?.getVoltageLevel()?.getSubstation();
|
|
52
69
|
|
|
53
70
|
if (substation && startCN) {
|
|
@@ -80,6 +97,7 @@ export function createFeederLines(cimModel: Model, basiIRI: string): string [] {
|
|
|
80
97
|
insertObjectSPARQL.push(headTerminal.setNormalHeadFeeder(feeder));
|
|
81
98
|
|
|
82
99
|
cimModel.addFeeder(feeder);
|
|
100
|
+
|
|
83
101
|
} else {
|
|
84
102
|
console.log(`Der StartConnNode oder die Substion für Feeder konnte nicht bestimmt werden`);
|
|
85
103
|
console.log(substation + ' ' + startCN);
|
|
@@ -96,7 +114,8 @@ export function createFeederLines(cimModel: Model, basiIRI: string): string [] {
|
|
|
96
114
|
* ???Trafos gehören immer zu einer Umspannanlage und können nicht zu einem Angang gehören???.
|
|
97
115
|
depricated Hinweis: der Algorythmus setzt varaus, dass Slackelemente vorher bestimmt wurden.
|
|
98
116
|
D.h. sie sind als 'visited' markiert. */
|
|
99
|
-
export function determineFeederLinesElements(cimModel: Model, grid: IIdentifiedObject[],
|
|
117
|
+
export function determineFeederLinesElements(cimModel: Model, grid: IIdentifiedObject[],
|
|
118
|
+
slackSubstationElements: IIdentifiedObject[][]): IIdentifiedObject[][] {
|
|
100
119
|
|
|
101
120
|
const networkFeederLineElements: IIdentifiedObject[][] = [];
|
|
102
121
|
for (let i = 0; i < grid.length; i++) {
|
|
@@ -120,19 +139,83 @@ export function determineFeederLinesElements(cimModel: Model, grid: IIdentifiedO
|
|
|
120
139
|
* Gesucht ist ein ConnectivityNode der nicht Teil des Abgangs ist.
|
|
121
140
|
* Die Bedingung ist erfüllt, wenn der ConnectivityNode nicht
|
|
122
141
|
* im Array gridElements enthalten ist. */
|
|
123
|
-
export function
|
|
142
|
+
export function determineHeadTerminals(gridElements: IIdentifiedObject[],
|
|
143
|
+
slackSubstationElements: IIdentifiedObject[][],
|
|
144
|
+
additionalslackSubstationElements: IIdentifiedObject[]): ITerminal[] {
|
|
145
|
+
const headTerminals = [];
|
|
124
146
|
for (const object of gridElements) {
|
|
125
|
-
if (object.constructor.name.includes('ACLineSegment')) {
|
|
126
|
-
|
|
147
|
+
/*if (object.constructor.name.includes('ACLineSegment')) {*/
|
|
148
|
+
if (object instanceof ConductingEquipment) {
|
|
149
|
+
const ce = object as unknown as ConductingEquipment;
|
|
150
|
+
if (ce.mrid === '6d21f61c-e0cc-44f7-9382-026b7663bf9f' ||
|
|
151
|
+
ce.mrid === '6ad74c2d-4194-4537-9d0a-96b27bea096c' ||
|
|
152
|
+
ce.mrid === '871c91f0-9abb-49e5-9d38-fcbc58633ddb' ||
|
|
153
|
+
ce.mrid === 'a9b2f23b-c799-4edf-9972-8f594d67446b') {
|
|
154
|
+
console.log();
|
|
155
|
+
}
|
|
156
|
+
//_9fafa042-b9d1-4052-ace2-9bfbefeb0134
|
|
157
|
+
//_59f7d40a-36c9-4b39-95e4-657976e50b12
|
|
158
|
+
for (const terminal of ce.terminals.values()) {
|
|
159
|
+
if (terminal.connectivityNode.mrid === '9fafa042-b9d1-4052-ace2-9bfbefeb0134' ||
|
|
160
|
+
terminal.connectivityNode.mrid === '59f7d40a-36c9-4b39-95e4-657976e50b12' ||
|
|
161
|
+
terminal.connectivityNode.mrid === '871c91f0-9abb-49e5-9d38-fcbc58633ddb' ||
|
|
162
|
+
terminal.connectivityNode.mrid === 'a9b2f23b-c799-4edf-9972-8f594d67446b') {
|
|
163
|
+
console.log();
|
|
164
|
+
}
|
|
127
165
|
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
}
|
|
166
|
+
if (isInArray(terminal.connectivityNode, slackSubstationElements)) { /** gehört der CN zur Substation mit Slack */
|
|
167
|
+
headTerminals.push(terminal);
|
|
168
|
+
} else if (additionalslackSubstationElements.indexOf(terminal.connectivityNode) != null) { /** gehört der CN zur (Schwerpunkt-)Substation ohne Slack */
|
|
169
|
+
headTerminals.push(terminal);
|
|
133
170
|
}
|
|
171
|
+
/* if (terminal.isClosed()) { /!** ist elektrisch angeschlossen. *!/
|
|
172
|
+
if (gridElements.indexOf(terminal.connectivityNode) === -1) { /!** ist CN Teil des Abgabgs und ist mit einem ConductEquip verbunden? *!/
|
|
173
|
+
headTerminals.push(terminal);
|
|
174
|
+
}
|
|
175
|
+
}*/
|
|
134
176
|
}
|
|
135
177
|
}
|
|
136
178
|
}
|
|
137
|
-
return;
|
|
138
|
-
}
|
|
179
|
+
return headTerminals;
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** HeadTerminal bestimmen
|
|
183
|
+
* HeadTerminal gehört zu der Station mit dem Slack
|
|
184
|
+
* falls der 2 Headterminals mit je einem Slack existieren, wird das erste Element als Head festgelegt*/
|
|
185
|
+
export function determineStartHeadTerminals(terminals: ITerminal[], additionalslackSubstationElements: IIdentifiedObject[]): ITerminal {
|
|
186
|
+
for (const terminal of terminals) {
|
|
187
|
+
const cnc = terminal.connectivityNode.connectivityNodeContainer;
|
|
188
|
+
let voltageLevel;
|
|
189
|
+
if (cnc instanceof VoltageLevel) {
|
|
190
|
+
voltageLevel = cnc as VoltageLevel;
|
|
191
|
+
} else if (cnc instanceof Bay) {
|
|
192
|
+
voltageLevel = (cnc as Bay).voltageLevel;
|
|
193
|
+
}
|
|
194
|
+
for (const equip of voltageLevel?.equipments) {
|
|
195
|
+
if (equip instanceof ExternalNetworkInjection) {
|
|
196
|
+
return terminal;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
/** Wenn keine Kriterien erfüllt werden,
|
|
202
|
+
* dann überprüfe additionalslackSubstationElements */
|
|
203
|
+
const trm = determineStartHeadTerminalsTemporary(terminals, additionalslackSubstationElements);
|
|
204
|
+
if(trm) return trm;
|
|
205
|
+
/** Wenn keine Kriterien erfüllt werden,
|
|
206
|
+
* dann nehme den ersten Terminal*/
|
|
207
|
+
return terminals[0];
|
|
208
|
+
}
|
|
209
|
+
|
|
210
|
+
/** Übergangslösung, Schwerpunktstationen ohne Slack */
|
|
211
|
+
export function determineStartHeadTerminalsTemporary(terminals: ITerminal[], additionalslackSubstationElements: IIdentifiedObject[]): ITerminal {
|
|
212
|
+
for (const terminal of terminals) {
|
|
213
|
+
if (additionalslackSubstationElements.indexOf(terminal.connectivityNode) !==-1) {
|
|
214
|
+
return terminal;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
/** Wenn keine Kriterien erfüllt werden,
|
|
218
|
+
* dann nehme den ersten Terminal*/
|
|
219
|
+
return terminals[0];
|
|
220
|
+
}
|
|
221
|
+
|
|
@@ -328,6 +328,7 @@ export async function loadFusekiData(fusekiURI: string, graphURI: string,
|
|
|
328
328
|
return await Promise.all(loadConfig.map(async (className) => {
|
|
329
329
|
const sparqlQuery = neplanClassDefinitions.get(className).getQuerySPARQL(graphURI);
|
|
330
330
|
const dataResponse = await fetch(`${fusekiURI}?query=${encodeURIComponent(sparqlQuery)}&format=json`);
|
|
331
|
+
|
|
331
332
|
return await dataResponse.json();
|
|
332
333
|
}));
|
|
333
334
|
}
|