28class MNAStateSpaceExtractor {
30 using Ptr = std::shared_ptr<MNAStateSpaceExtractor>;
32 MNAStateSpaceExtractor() =
default;
34 void initialize(
const CPS::MNAInterface::List &components, UInt mnaVectorSize,
38 Bool systemMatrixChanged, Real time);
40 Bool isInitialized()
const {
return mInitialized; }
42 UInt getStateCount()
const {
return mStateCount; }
44 Real getTimeStep()
const {
return mTimeStep; }
46 const Matrix &getDiscreteStateMatrix()
const {
return mAd; }
50 Bool hasExtractionTime()
const {
return mHasExtractionTime; }
52 Real getLastExtractionTime()
const {
return mLastExtractionTime; }
55 struct ContributorEntry {
56 MNAStateSpaceContributor::Ptr contributor;
62 void allocateMatrices();
64 void collectMetadata();
66 void stampStaticMatrices();
68 void restampVariableMatrices();
70 void rebuildCombinedMatrices();
74 Bool mInitialized =
false;
76 UInt mMnaVectorSize = 0;
82 Bool mHasVariableContributors =
false;
84 Bool mStateMatrixValid =
false;
88 Real mLastExtractionTime = 0.0;
90 Bool mHasExtractionTime =
false;
92 std::vector<ContributorEntry> mContributorEntries;
94 Matrix mAdLocalStatic;
98 Matrix mAdLocalVariable;
99 Matrix mBdMnaVariable;
100 Matrix mCdMnaVariable;