1
+ @startuml
2
+
3
+ Interface SimbenchModel {
4
+ + id : String
5
+ }
6
+
7
+ Interface EntityModel {
8
+ - subnet : String
9
+ - voltLvl : Int
10
+ }
11
+ SimbenchModel <|-- EntityModel
12
+
13
+ Class Coordinate {
14
+ + x : BigDecimal
15
+ + y : BigDecimal
16
+ + subnet : String
17
+ + voltLvl : Int
18
+ }
19
+ EntityModel <|-- Coordinate
20
+
21
+ Class Node {
22
+ + nodeType : NodeType
23
+ + vmSetp : BigDecimal
24
+ + vaSetp: Option[BigDecimal] = None
25
+ + vmR : BigDecimal
26
+ + vmMin : BigDecimal
27
+ + vmMax : BigDecimal
28
+ + substation : Substation
29
+ + coordinate : Coordinate
30
+ }
31
+ EntityModel <|-- Node
32
+
33
+ Abstract Class ExternalNet {
34
+ + calculationType : CalculationType
35
+ + dspf : BigDecimal
36
+ + pExt : BigDecimal
37
+ + qExt : BigDecimal
38
+ }
39
+ EntityModel <|-- ExternalNet
40
+
41
+ Class Simple {
42
+ + node : Node
43
+ + calculationType : CalculationType
44
+ + dspf : BigDecimal
45
+ + pExt : BigDecimal
46
+ + qExt : BigDecimal
47
+ }
48
+ ExternalNet <|-- Simple
49
+
50
+ Class Ward {
51
+ + node : Node
52
+ + dspf : BigDecimal
53
+ + pExt : BigDecimal
54
+ + qExt : BigDecimal
55
+ + pWard : BigDecimal
56
+ + qWard : BigDecimal
57
+ }
58
+ ExternalNet <|-- Ward
59
+
60
+ Class WardExtended {
61
+ + node : Node
62
+ + dspf : BigDecimal
63
+ + pExt : BigDecimal
64
+ + qExt : BigDecimal
65
+ + rWardExtended : BigDecimal
66
+ + xWardExtended : BigDecimal
67
+ + vmWardExtended : BigDecimal
68
+ }
69
+ ExternalNet <|-- WardExtended
70
+
71
+ Abstract Class Line {
72
+ + nodeA : Node
73
+ + nodeB : Node
74
+ + lineType : T
75
+ + length : BigDecimal
76
+ + loadingMax : BigDecimal
77
+ }
78
+ EntityModel <|-- Line
79
+
80
+ Class ACLine {
81
+ + lineType : ACLineType
82
+ }
83
+ Line <|-- ACLine
84
+
85
+ Class DCLine {
86
+ + lineType : DCLineType
87
+ }
88
+ Line <|-- DCLine
89
+
90
+ Class Measurement {
91
+ + elements: List[EntityModel]
92
+ + variable : MeasurementVariable
93
+ }
94
+ EntityModel <|-- Measurement
95
+
96
+ Class Substation {
97
+ }
98
+ EntityModel <|-- Substation
99
+
100
+ Class Switch {
101
+ + nodeA : Node
102
+ + nodeB : Node
103
+ + switchType : SwitchType
104
+ + cond : Boolean
105
+ + substation : Substation
106
+ }
107
+ EntityModel <|-- Switch
108
+
109
+ Class Transformer2W {
110
+ + nodeHV : Node
111
+ + nodeLV : Node
112
+ + transformerType : Transformer2WType
113
+ + tappos : Int
114
+ + autoTap : Boolean
115
+ + autoTapSide : BranchElementPort
116
+ + loadingMax : BigDecimal
117
+ + substation : Substation
118
+ }
119
+ EntityModel <|-- Transformer2W
120
+
121
+ Class Transformer3W {
122
+ + nodeHV : Node
123
+ + nodeMV : Node
124
+ + nodeLV : Node
125
+ + transformerType : Transformer3WType
126
+ + tapPosHV : Int
127
+ + tapPosMV : Int
128
+ + tapPosLV : Int
129
+ + autoTap : Boolean
130
+ + autoTapSide : BranchElementPort
131
+ + loadingMax : BigDecimal
132
+ + substation : Substation
133
+ }
134
+ EntityModel <|-- Transformer3W
135
+
136
+ Interface ShuntModel {
137
+ - node : Node
138
+ }
139
+ SimbenchModel <|-- ShuntModel
140
+
141
+ Class Load {
142
+ + profile : LoadProfileType
143
+ + pLoad : BigDecimal
144
+ + qLoad : BigDecimal
145
+ + sR : BigDecimal
146
+ }
147
+ ShuntModel <|-- Load
148
+
149
+ Class PowerPlant {
150
+ + powerPlantType : PowerPlantType
151
+ + profile : PowerPlantProfileType
152
+ + calculationType : CalculationType
153
+ + dspf : BigDecimal
154
+ + p : BigDecimal
155
+ + q : BigDecimal
156
+ + sR : BigDecimal
157
+ + pMin : BigDecimal
158
+ + pMax : BigDecimal
159
+ + qMin : BigDecimal
160
+ + qMax : BigDecimal
161
+ }
162
+ ShuntModel <|-- PowerPlant
163
+
164
+ Class RES {
165
+ + resType : ResType
166
+ + profile : ResProfile
167
+ + calculationType : CalculationType
168
+ + p : BigDecimal
169
+ + q : BigDecimal
170
+ + sR : BigDecimal
171
+ }
172
+ ShuntModel <|-- RES
173
+
174
+ Class Shunt {
175
+ + p0 : BigDecimal
176
+ + q0 : BigDecimal
177
+ + vmR : BigDecimal
178
+ + step : Int
179
+ }
180
+ ShuntModel <|-- Shunt
181
+
182
+ Class Storage {
183
+ + storageType : StorageType
184
+ + profile : StorageProfile
185
+ + p : BigDecimal
186
+ + q : BigDecimal
187
+ + soc : BigDecimal
188
+ + sR : BigDecimal
189
+ + eStore : BigDecimal
190
+ + etaStore : BigDecimal
191
+ + selfDischarge : BigDecimal
192
+ + pMin : BigDecimal
193
+ + pMax : BigDecimal
194
+ + qMin : BigDecimal
195
+ + qMax : BigDecimal
196
+ }
197
+ ShuntModel <|-- Storage
198
+
199
+ Class StudyCase {
200
+ + pLoad : BigDecimal
201
+ + qLoad : BigDecimal
202
+ + pWind : BigDecimal
203
+ + pPv : BigDecimal
204
+ + pRes : BigDecimal
205
+ + vMSlack : BigDecimal
206
+ }
207
+ SimbenchModel <|-- StudyCase
208
+
209
+ Abstract Class LineType
210
+
211
+ Class ACLineType {
212
+ + id : String
213
+ + r : BigDecimal
214
+ + x : BigDecimal
215
+ + b : BigDecimal
216
+ + iMax : BigDecimal
217
+ + style : LineStyle
218
+ }
219
+ LineType <|-- ACLineType
220
+ ACLine --* ACLineType
221
+
222
+ Class DCLineType {
223
+ + id : String
224
+ + p : BigDecimal
225
+ + relPLoss : BigDecimal
226
+ + fixPLoss : BigDecimal
227
+ + pMax : BigDecimal
228
+ + qMinA : BigDecimal
229
+ + qMaxA : BigDecimal
230
+ + qMinB : BigDecimal
231
+ + qMaxB : BigDecimal
232
+ }
233
+ LineType <|-- DCLineType
234
+ DCLine --* DCLineType
235
+
236
+ Class Transformer2WType {
237
+ + sR : BigDecimal
238
+ + vmHV : BigDecimal
239
+ + vmLV : BigDecimal
240
+ + va0 : BigDecimal
241
+ + vmImp : BigDecimal
242
+ + pCu : BigDecimal
243
+ + pFe : BigDecimal
244
+ + iNoLoad : BigDecimal
245
+ + tapable : Boolean
246
+ + tapside : BranchElementPort
247
+ + dVm : BigDecimal
248
+ + dVa : BigDecimal
249
+ + tapNeutr : Int
250
+ + tapMin : Int
251
+ + tapMax : Int
252
+ }
253
+ SimbenchModel <|-- Transformer2WType
254
+ Transformer2W --* Transformer2WType
255
+
256
+ Class Transformer3WType {
257
+ + sRHV : BigDecimal
258
+ + sRMV : BigDecimal
259
+ + sRLV : BigDecimal
260
+ + vmHV : BigDecimal
261
+ + vmMV : BigDecimal
262
+ + vmLV : BigDecimal
263
+ + vaHVMV : BigDecimal
264
+ + vaHVLV : BigDecimal
265
+ + vmImpHV : BigDecimal
266
+ + vmImpMV : BigDecimal
267
+ + vmImpLV : BigDecimal
268
+ + pCuHV : BigDecimal
269
+ + pCuMV : BigDecimal
270
+ + pCuLV : BigDecimal
271
+ + pFe : BigDecimal
272
+ + iNoLoad : BigDecimal
273
+ + tapable : Boolean
274
+ + tapSide : BranchElementPort
275
+ + dVmHV : BigDecimal
276
+ + dVmMV : BigDecimal
277
+ + dVmLV : BigDecimal
278
+ + dVaHV : BigDecimal
279
+ + dVaMV : BigDecimal
280
+ + dVaLV : BigDecimal
281
+ + tapNeutrHV : Int
282
+ + tapNeutrMV : Int
283
+ + tapNeutrLV : Int
284
+ + tapMinHV : Int
285
+ + tapMinMV : Int
286
+ + tapMinLV : Int
287
+ + tapMaxHV : Int
288
+ + tapMaxMV : Int
289
+ + tapMaxLV : Int
290
+ }
291
+ SimbenchModel <|-- Transformer3WType
292
+ Transformer3W --* Transformer3WType
293
+
294
+ Interface ProfileType {
295
+ }
296
+
297
+ Enum LoadProfileType {
298
+ + apply(String): LoadProfileType
299
+ }
300
+ ProfileType <|-- LoadProfileType
301
+
302
+ Enum PowerPlantProfileType {
303
+ + apply(String): PowerPlantProfileType
304
+ }
305
+ ProfileType <|-- PowerPlantProfileType
306
+
307
+ Enum ResProfileType {
308
+ + apply(String): ResProfileType
309
+ }
310
+ ProfileType <|-- ResProfileType
311
+
312
+ Interface StorageProfileType {
313
+ }
314
+ ProfileType <|-- StorageProfileType
315
+
316
+ Interface ProfileModel <T extends ProfileType > {
317
+ + profileType : T
318
+ + profile : Map <ZonedDateTime , Tuple2 <BigDecimal , BigDecimal >>
319
+ }
320
+ SimbenchModel <|-- ProfileModel
321
+
322
+ Class LoadProfile {
323
+ }
324
+ ProfileModel <|-- LoadProfile
325
+ LoadProfileType *-- LoadProfile
326
+
327
+ Class PowerPlantProfile {
328
+ }
329
+ ProfileModel <|-- PowerPlantProfile
330
+ PowerPlantProfileType *-- PowerPlantProfile
331
+
332
+ Class ResProfile {
333
+ }
334
+ ProfileModel <|-- ResProfile
335
+ ResProfileType *-- ResProfile
336
+
337
+ Class StorageProfile {
338
+ }
339
+ ProfileModel <|-- StorageProfile
340
+ StorageProfileType *-- StorageProfile
341
+
342
+ @enduml
0 commit comments