DPsim
Loading...
Searching...
No Matches
EMT_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
6#include <array>
7#include <vector>
8
11
12namespace CPS {
13namespace EMT {
14
24class SSNComp : public MNASimPowerComp<Real> {
25private:
26 const Int mInputSize;
27 const Int mOutputSize;
28
29protected:
31
34
39
42
44
45 SSNComp(String uid, String name, Int inputSize, Int outputSize,
46 Logger::Level logLevel = Logger::Level::off);
47
48 virtual Matrix calculateHistoryVector() const;
49
51 Real frequency) const;
52 virtual MatrixComp
54 const MatrixComp &u) const;
55
56 virtual void updateState(const Matrix &uOld, const Matrix &uNew);
57
59 virtual void updateLogAttributes(const Matrix &u) const;
60
61 virtual void recomputeDiscreteModel();
62
64 virtual void updateStateSpaceModel();
65
68
69public:
72 std::array<UInt, 3> indices;
73
79 };
80
82 UInt getStateCount() const;
83
91 virtual std::vector<String> getLocalStateNames() const;
92
97 virtual std::vector<LocalAbcStateBlock> getLocalAbcStateBlocks() const;
98
100 const Matrix &getDiscreteA() const;
101
103 const Matrix &getDiscreteB() const;
104
106 const Matrix &getC() const;
107
108 void setParameters(const Matrix &A, const Matrix &B, const Matrix &C,
109 const Matrix &D);
110
111 void mnaCompInitialize(Real omega, Real timeStep,
112 Attribute<Matrix>::Ptr leftVector) override final;
113
115 AttributeBase::List &prevStepDependencies,
116 AttributeBase::List &attributeDependencies,
117 AttributeBase::List &modifiedAttributes) override final;
118
119 void mnaCompPreStep(Real time, Int timeStepCount) override final;
120
122 AttributeBase::List &prevStepDependencies,
123 AttributeBase::List &attributeDependencies,
124 AttributeBase::List &modifiedAttributes,
125 Attribute<Matrix>::Ptr &leftVector) override final;
126};
127
128} // namespace EMT
129} // namespace CPS
std::vector< Ptr > List
Definition Attribute.h:123
AttributePointer< Attribute< T > > Ptr
Definition Attribute.h:250
void setParameters(const Matrix &A, const Matrix &B, const Matrix &C, const Matrix &D)
virtual std::vector< String > getLocalStateNames() const
virtual void updateLogAttributes(const Matrix &u) const
Update derived attributes used for logging/inspection.
const Matrix & getDiscreteA() const
Get discrete state transition matrix used by the trapezoidal SSN model.
const Matrix & getDiscreteB() const
Get discrete input matrix used by the trapezoidal SSN model.
void mnaCompPreStep(Real time, Int timeStepCount) override final
const Attribute< Matrix >::Ptr mX
Definition EMT_SSNComp.h:43
virtual void recomputeDiscreteModel()
virtual Attribute< Matrix >::Ptr inputAttribute() const =0
const Matrix & getC() const
Get continuous-time output matrix of the SSN model.
void mnaCompAddPreStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes) override final
void mnaCompAddPostStepDependencies(AttributeBase::List &prevStepDependencies, AttributeBase::List &attributeDependencies, AttributeBase::List &modifiedAttributes, Attribute< Matrix >::Ptr &leftVector) override final
virtual void updateState(const Matrix &uOld, const Matrix &uNew)
virtual Matrix calculateHistoryVector() const
virtual void updateStateSpaceModel()
Hook for variable/time-varying SSN components.
SSNComp(String uid, String name, Int inputSize, Int outputSize, Logger::Level logLevel=Logger::Level::off)
virtual MatrixComp calculateSteadyStateStateFromInput(const MatrixComp &u, Real frequency) const
virtual Attribute< Matrix >::Ptr outputAttribute() const =0
virtual std::vector< LocalAbcStateBlock > getLocalAbcStateBlocks() const
UInt getStateCount() const
Get number of internal state variables of the SSN model.
virtual MatrixComp calculateSteadyStateOutputFromInput(const MatrixComp &x, const MatrixComp &u) const
void mnaCompInitialize(Real omega, Real timeStep, Attribute< Matrix >::Ptr leftVector) override final
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
std::array< UInt, 3 > indices
Local SSN state indices representing one native abc-frame state block.
Definition EMT_SSNComp.h:72