DPsim
Loading...
Searching...
No Matches
EMT_Ph3_SSN_Capacitor.cpp
Go to the documentation of this file.
1// SPDX-FileCopyrightText: 2026 Institute for Automation of Complex Power Systems, EONERC, RWTH Aachen University
2// SPDX-License-Identifier: MPL-2.0
3
5
6using namespace CPS;
7
14
16 auto copy = Capacitor::make(name, mLogLevel);
17 copy->setParameters(**mCapacitance);
18 return copy;
19}
20
23
24 Matrix aMatrix = Matrix::Zero(3, 3);
25 Matrix bMatrix = capacitance.inverse();
26 Matrix cMatrix = Matrix::Identity(3, 3);
27 Matrix dMatrix = Matrix::Zero(3, 3);
28
29 // I-type capacitor:
30 //
31 // x = vC_abc
32 // u = i_abc
33 // y = v_abc
34 //
35 // dvC/dt = C^{-1} i
36 // v = vC
37 TwoTerminalITypeSSNComp::setParameters(aMatrix, bMatrix, cMatrix, dMatrix);
38}
39
42 Real omega = 2.0 * PI * frequency;
43
44 MatrixComp admittance = MatrixComp::Zero(3, 3);
45 admittance = Complex(0.0, omega) * (**mCapacitance).cast<Complex>();
46
47 MatrixComp vInitABC = MatrixComp::Zero(3, 1);
48
49 // Interface voltage convention: v = v_terminal1 - v_terminal0
50 vInitABC(0, 0) = RMS3PH_TO_PEAK1PH * initialSingleVoltage(1) -
52 vInitABC(1, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_B;
53 vInitABC(2, 0) = vInitABC(0, 0) * SHIFT_TO_PHASE_C;
54
55 MatrixComp iInitABC = admittance * vInitABC;
56
57 SPDLOG_LOGGER_INFO(mSLog,
58 "\nCapacitance [F]: {:s}"
59 "\nAdmittance [S]: {:s}",
61 Logger::matrixCompToString(admittance));
62
63 return iInitABC;
64}
const CPS::Attribute< Matrix >::Ptr mCapacitance
Capacitance [F].
void setParameters(Matrix capacitance)
Sets model specific parameters.
MatrixComp buildInitialInputFromNodes(Real frequency) override final
Capacitor(String uid, String name, Logger::Level logLevel=Logger::Level::off)
SimPowerComp< Real >::Ptr clone(String name) override final
Returns a modified copy of the component with the given suffix added to the name and without.
void setParameters(Matrix capacitance)
TwoTerminalITypeSSNComp(String uid, String name, Logger::Level logLevel=Logger::Level::off)
void setParameters(const Matrix &A, const Matrix &B, const Matrix &C, const Matrix &D)
String uid()
Returns unique id.
AttributeList::Ptr mAttributes
Attribute List.
spdlog::level::level_enum Level
Definition Logger.h:33
static String matrixCompToString(const MatrixComp &mat)
Definition Logger.cpp:37
static String matrixToString(const Matrix &mat)
Definition Logger.cpp:31
std::shared_ptr< SimPowerComp< VarType > > Ptr
Complex initialSingleVoltage(UInt index)
Logger::Level mLogLevel
Component logger control for internal variables.
Logger::Log mSLog
Component logger.
static std::shared_ptr< Capacitor > make(Args &&...args)
Definition PtrFactory.h:19
#define PI
Definition Definitions.h:43
#define RMS3PH_TO_PEAK1PH
Definition Definitions.h:50
#define SHIFT_TO_PHASE_C
Definition Definitions.h:47
#define SHIFT_TO_PHASE_B
Definition Definitions.h:46
Eigen::Matrix< Real, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > Matrix
Dense matrix for real numbers.
Definition Definitions.h:81
std::string String
Definition Definitions.h:65
double Real
Definition Definitions.h:62
std::complex< Real > Complex
Definition Definitions.h:63
Eigen::Matrix< Complex, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > MatrixComp
Dense matrix for complex numbers.
Definition Definitions.h:84