15 if (!mExtractor.isInitialized())
16 throw std::logic_error(
"StateSpaceModalAnalysis requires an initialized "
17 "MNAStateSpaceExtractor.");
19 const Matrix &Ad = mExtractor.getDiscreteStateMatrix();
22 mDiscreteEigenvalues.resize(0);
23 mContinuousEigenvalues.resize(0);
27 Eigen::EigenSolver<Matrix> eigenSolver(Ad,
false);
29 if (eigenSolver.info() != Eigen::Success)
30 throw std::runtime_error(
31 "StateSpaceModalAnalysis: eigenvalue computation failed.");
33 mDiscreteEigenvalues = eigenSolver.eigenvalues();
35 mContinuousEigenvalues.resize(mDiscreteEigenvalues.rows());
37 for (Eigen::Index idx = 0; idx < mDiscreteEigenvalues.rows(); ++idx)
38 mContinuousEigenvalues(idx) =
39 mapDiscreteToContinuous(mDiscreteEigenvalues(idx));