Harmony
HARMONic stabilitY assessment of PE-penetrated power systems
Loading...
Searching...
No Matches
component_builder.h
Go to the documentation of this file.
1#pragma once
2#include <iostream>
3#include <memory>
4
5#include <nlohmann/json.hpp>
6using JSON = nlohmann::json;
7
8#include "../network.h"
9#include "../Include_components.h"
10#include "json_parameters.h"
11#include "json_expression.h"
12
20
21public:
22
23 static std::unique_ptr<Element> buildFromJSON(
24 const JSON& comp,
25 unsigned int index,
26 const JsonParameterTable& params = {});
27
28 static void findNumber(const std::string& key, const JSON& j);
29 static void findScalar(const std::string& key, const JSON& j, const JsonParameterTable& params);
30 static void findNonEmptyString(const std::string& key, const JSON& j);
31 static void findNonEmptyNumericArray(const std::string& key, const JSON& j, int arraysize = -1);
33 const std::string& key,
34 const JSON& j,
35 const JsonParameterTable& params,
36 int arraysize = -1);
37
38private:
39 static Capacitor* buildCapacitor(const JSON& comp, const JsonParameterTable& params);
40 static Inductor* buildInductor(const JSON& comp, const JsonParameterTable& params);
41 static Resistor* buildResistor(const JSON& comp, const JsonParameterTable& params);
42 static Impedance* buildImpedance(const JSON& comp, const JsonParameterTable& params);
43 static Admittance* buildAdmittance(const JSON& comp, const JsonParameterTable& params);
44 static Load* buildLoad(const JSON& comp, const JsonParameterTable& params);
45 static LoadPQ* buildLoadPQ(const JSON& comp, const JsonParameterTable& params);
46 static AC_source* buildACSource(const JSON& comp, const JsonParameterTable& params);
47 static Generator* buildGenerator(const JSON& comp, const JsonParameterTable& params);
48 static DC_source* buildDCSource(const JSON& comp, const JsonParameterTable& params);
49 static Switch* buildSwitch(const JSON& comp);
50 static TransmissionLine* buildTransmissionLine(const JSON& comp, const JsonParameterTable& params);
51 static Cable* buildCable(const JSON& comp, const JsonParameterTable& params);
52 static Overhead_Line* buildOverheadLine(const JSON& comp, const JsonParameterTable& params);
53 static MMC* buildMMC(const JSON& comp, const JsonParameterTable& params);
54 static WTtype3* buildWTtype3(const JSON& comp, const JsonParameterTable& params);
55 static WTtype4* buildWTtype4(const JSON& comp, const JsonParameterTable& params);
56 static WPplant* buildWPplant(const JSON& comp, const JsonParameterTable& params);
57 static PVplant* buildPVplant(const JSON& comp, const JsonParameterTable& params);
58 static Transformer_real* buildTransformerReal(const JSON& comp, const JsonParameterTable& params);
59 static Transformer_classic* buildTransformerClassic(const JSON& comp, const JsonParameterTable& params);
60 static TransformerDeltaDelta* buildTransformerDeltaDelta(const JSON& comp, const JsonParameterTable& params);
61 static TransformerDeltaY_real* buildTransformerDeltaYReal(const JSON& comp, const JsonParameterTable& params);
62 static TransformerDeltaY* buildTransformerDeltaY(const JSON& comp, const JsonParameterTable& params);
63 static TransformerYDelta* buildTransformerYDelta(const JSON& comp, const JsonParameterTable& params);
64 static TransformerYY_real* buildTransformerYYReal(const JSON& comp, const JsonParameterTable& params);
65 static TransformerYY* buildTransformerYY(const JSON& comp, const JsonParameterTable& params);
66
67 static std::vector<double> readTransformerClassicValues(const JSON& comp, const JsonParameterTable& params);
68 static std::vector<double> readTransformerRealValues(const JSON& comp, const JsonParameterTable& params);
69 static std::vector<double> readNumericArray(
70 const JSON& comp,
71 const std::string& key,
72 const JsonParameterTable& params);
73 static DenseMatrix readDenseMatrixValues(
74 const JSON& comp,
75 const std::string& key,
76 const JsonParameterTable& params);
77 static std::vector<double> readVoltageVector(const JSON& comp, const JsonParameterTable& params);
78 static double readScalarField(
79 const JSON& comp,
80 const std::string& key,
81 const JsonParameterTable& params);
82
83 static Admittance* buildSymbolicAdmittance(
84 const JSON& comp,
85 const JsonParameterTable& params,
86 const char* exprField);
87};
RCP< const Basic > j
Imaginary unit j.
Definition Symbolic_functions.cpp:9
Ideal AC voltage source with added series impedance.
Definition AC_source.h:19
Generic admittance matrix element for single- or multi-phase networks.
Definition Admittance.h:20
Multi-layer cable model with conductor and insulator sections.
Definition Cable.h:18
Models a single- or multi-phase capacitive branch.
Definition Capacitor.h:18
Definition component_builder.h:19
static void findNumericOrReferenceArray(const std::string &key, const JSON &j, const JsonParameterTable &params, int arraysize=-1)
Definition component_builder.cpp:555
static std::unique_ptr< Element > buildFromJSON(const JSON &comp, unsigned int index, const JsonParameterTable &params={})
Definition component_builder.cpp:51
static void findScalar(const std::string &key, const JSON &j, const JsonParameterTable &params)
Definition component_builder.cpp:516
static void findNumber(const std::string &key, const JSON &j)
Definition component_builder.cpp:509
static void findNonEmptyNumericArray(const std::string &key, const JSON &j, int arraysize=-1)
Definition component_builder.cpp:538
static void findNonEmptyString(const std::string &key, const JSON &j)
Definition component_builder.cpp:531
DC-side voltage source for hybrid AC-DC networks.
Definition DC_source.h:19
Synchronous machine generator with default electrical parameters.
Definition Generator.h:16
Series impedance for each phase with diagonal (or matrix) Z entries.
Definition Impedance.h:19
Represents an inductor element for circuit/network equations.
Definition Inductor.h:19
Lookup table for "parameters": { "name": number } at simulation or component scope.
Definition json_parameters.h:18
Constant P-Q load for AC power-flow studies.
Definition Load_PQ.h:16
Load with resistive, inductive, and capacitive components in series.
Definition Load.h:18
Modular Multilevel Converter with arm dynamics and control loops.
Definition MMC.h:21
Overhead line model with bundle geometry and frequency-dependent Y parameters.
Definition overhead_line.h:19
Two-stage PV inverter plant with boost DC-DC stage and LCL-filtered VSC.
Definition PV_plant.h:19
Models a single- or multi-phase resistive branch.
Definition Resistor.h:16
Single- or multi-phase switch with per-phase open/closed state.
Definition Switch.h:16
Delta-delta connected classic transformer.
Definition Transformer_Delta_Delta.h:16
Delta-wye connected real transformer with turns ratio and phase shift.
Definition Transformer_Delta_Y_real.h:16
Delta-wye connected classic transformer.
Definition Transformer_Delta_Y.h:16
Wye-delta connected classic transformer.
Definition Transformer_Y_Delta.h:16
Wye-wye connected real transformer with turns ratio and phase shift.
Definition Transformer_Y_Y_real.h:16
Wye-wye connected classic transformer.
Definition Transformer_Y_Y.h:16
Classic transformer with primary, secondary, and mutual inductance.
Definition Transformer_classic.h:16
Real transformer with turns ratio and phase lag.
Definition Transformer_real.h:16
Lumped transmission line with per-unit-length R, L, G, C parameters.
Definition Transmissionline.h:18
Wind power plant composed of multiple wind turbine instances.
Definition WP_plant.h:16
Type 3 wind turbine with DFIG, RSC/GSC converters, and filter.
Definition WT_type_3.h:16
Type 4 wind turbine with full-scale back-to-back converter and filter.
Definition WT_type_4.h:16
nlohmann::json JSON
Definition component_builder.h:6
SymEngine expression parsing for JSON component definitions (Type B).
Named numeric parameters for JSON simulation files (Type A indirection).