DPsim
Loading...
Searching...
No Matches
DP_SSNComp.h
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
4#pragma once
5
8
9namespace CPS {
10namespace DP {
11
18class SSNComp : public MNASimPowerComp<Complex> {
19private:
20 const Int mInputSize;
21 const Int mOutputSize;
22
23protected:
25
31
35
40
43
44 SSNComp(String uid, String name, Int inputSize, Int outputSize,
45 Logger::Level logLevel = Logger::Level::off);
46
48 Matrix buildAugmentedA(Real omega) const;
50 Matrix buildAugmentedB() const;
51
53 virtual void recomputeDiscreteModel(Real omega);
54
55 virtual MatrixComp calculateHistoryVector() const;
56
59 Real omega) const;
60 virtual MatrixComp
62 const MatrixComp &u) const;
63
64 virtual void updateState(const MatrixComp &uOld, const MatrixComp &uNew);
65
67 virtual void updateStateSpaceModel();
68
71
72public:
74 UInt getStateCount() const;
75
77 const MatrixComp &getDiscreteA() const;
79 const MatrixComp &getDiscreteB() const;
81 const Matrix &getC() const;
82
83 void setParameters(const Matrix &A, const Matrix &B, const Matrix &C,
84 const Matrix &D);
85
86 void mnaCompInitialize(Real omega, Real timeStep,
87 Attribute<Matrix>::Ptr leftVector) override final;
88
90 AttributeBase::List &prevStepDependencies,
91 AttributeBase::List &attributeDependencies,
92 AttributeBase::List &modifiedAttributes) override final;
93
94 void mnaCompPreStep(Real time, Int timeStepCount) override final;
95
97 AttributeBase::List &prevStepDependencies,
98 AttributeBase::List &attributeDependencies,
99 AttributeBase::List &modifiedAttributes,
100 Attribute<Matrix>::Ptr &leftVector) override final;
101};
102
103} // namespace DP
104} // namespace CPS
std::vector< Ptr > List
Definition Attribute.h:123
AttributePointer< Attribute< T > > Ptr
Definition Attribute.h:250
MatrixComp mDiscreteB
Definition DP_SSNComp.h:34
void mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override final
virtual void updateStateSpaceModel()
Hook for variable/time-varying SSN components.
virtual MatrixComp calculateHistoryVector() const
Matrix mA
Continuous-time real physical model (user-provided).
Definition DP_SSNComp.h:27
const MatrixComp & getDiscreteA() const
Get the complex discrete state-transition operator of the envelope model.
UInt getStateCount() const
Get number of internal state variables of the SSN model.
virtual void updateState(const MatrixComp &uOld, const MatrixComp &uNew)
MatrixComp mYHist
Complex history term.
Definition DP_SSNComp.h:39
virtual Attribute< MatrixComp >::Ptr inputAttribute() const =0
Matrix buildAugmentedA(Real omega) const
Build A_aug = [[A, w I], [-w I, A]].
virtual MatrixComp calculateSteadyStateStateFromInput(const MatrixComp &u, Real omega) const
Steady-state envelope state X_ss = (j w I - A)^-1 B u.
virtual void recomputeDiscreteModel(Real omega)
Discretize the augmented model and fold it into complex dA, dB, W.
void mnaCompAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override final
MatrixComp mW
Complex Norton matrix W = C dB + D.
Definition DP_SSNComp.h:37
void mnaCompInitialize(Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override final
const Attribute< MatrixComp >::Ptr mX
Complex envelope state X.
Definition DP_SSNComp.h:42
const Matrix & getC() const
Get the continuous-time output matrix of the SSN model.
MatrixComp mDiscreteA
Complex envelope discrete operators (folded from the augmented model).
Definition DP_SSNComp.h:33
SSNComp(String uid, String name, Int inputSize, Int outputSize, Logger::Level logLevel=Logger::Level::off)
Definition DP_SSNComp.cpp:9
Matrix buildAugmentedB() const
Build B_aug = blkdiag(B, B).
const MatrixComp & getDiscreteB() const
Get the complex discrete input operator of the envelope model.
virtual MatrixComp calculateSteadyStateOutputFromInput(const MatrixComp &x, const MatrixComp &u) const
virtual Attribute< MatrixComp >::Ptr outputAttribute() const =0
void mnaCompPreStep(Real time, Int timeStepCount) override final
void setParameters(const Matrix &A, const Matrix &B, const Matrix &C, const Matrix &D)
String uid()
Returns unique id.
spdlog::level::level_enum Level
Definition Logger.h:33
MNASimPowerComp(String uid, String name, Bool hasPreStep, Bool hasPostStep, Logger::Level logLevel)
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
int Int
Definition Definitions.h:61
Eigen::Matrix< Complex, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > MatrixComp
Dense matrix for complex numbers.
Definition Definitions.h:84
unsigned int UInt
Definition Definitions.h:60