DPsim
Loading...
Searching...
No Matches
StateSpaceModalAnalysis.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#pragma once
4
5#include <dpsim/Definitions.h>
7
8#include <vector>
9
10namespace DPsim {
11
16
26
33public:
34 explicit StateSpaceModalAnalysis(const MNAStateSpaceExtractor &extractor);
35
41 mAnalysisFrame = frame;
42 }
43
48 void setGlobalDq0Frame(Real omega, Real theta0 = 0.0) {
49 mGlobalOmega = omega;
50 mGlobalTheta0 = theta0;
51 }
52
53 void setPoleMapping(StateSpacePoleMapping mapping) { mPoleMapping = mapping; }
54
56 void update();
57
60 return mDiscreteEigenvalues;
61 }
62
66 return mContinuousEigenvalues;
67 }
68
74 return mRightEigenvectors;
75 }
76
82 return mLeftEigenvectors;
83 }
84
93 return mParticipationFactors;
94 }
95
100 const std::vector<String> &getStateNames() const { return mStateNames; }
101
102private:
103 Matrix buildDiscreteStateMatrixInAnalysisFrame() const;
104
105 Matrix buildGlobalDq0Transformation(Real theta) const;
106
107 std::vector<String> buildStateNamesInAnalysisFrame() const;
108
109 Complex mapDiscreteToContinuous(const Complex &z) const;
110
111 const MNAStateSpaceExtractor &mExtractor;
112
114
116
117 Real mGlobalOmega = 0.0;
118
119 Real mGlobalTheta0 = 0.0;
120
121 CPS::VectorComp mDiscreteEigenvalues;
122
123 CPS::VectorComp mContinuousEigenvalues;
124
125 CPS::MatrixComp mRightEigenvectors;
126 CPS::MatrixComp mLeftEigenvectors;
127 CPS::MatrixComp mParticipationFactors;
128
129 std::vector<String> mStateNames;
130};
131
132} // namespace DPsim
void setAnalysisFrame(StateSpaceAnalysisFrame frame)
const std::vector< String > & getStateNames() const
const CPS::VectorComp & getContinuousEigenvalues() const
const CPS::VectorComp & getDiscreteEigenvalues() const
Eigenvalues of the extracted discrete-time state matrix in the selected analysis frame.
void setPoleMapping(StateSpacePoleMapping mapping)
StateSpaceModalAnalysis(const MNAStateSpaceExtractor &extractor)
void update()
Update modal quantities from the current extracted state matrix.
void setGlobalDq0Frame(Real omega, Real theta0=0.0)
const CPS::MatrixComp & getLeftEigenvectors() const
const CPS::MatrixComp & getRightEigenvectors() const
const CPS::MatrixComp & getParticipationFactors() const
Eigen::Matrix< Complex, Eigen::Dynamic, 1 > VectorComp
Dense vector for complex numbers.
Definition Definitions.h:68
Eigen::Matrix< Complex, Eigen::Dynamic, Eigen::Dynamic, Eigen::ColMajor > MatrixComp
Dense matrix for complex numbers.
Definition Definitions.h:84
CPS::Complex Complex
Definition Definitions.h:19
CPS::Real Real
Definition Definitions.h:18
CPS::Matrix Matrix
Definition Definitions.h:24