20#ifndef _LINEAR_SYSTEM_ANALYZER_H_
21#define _LINEAR_SYSTEM_ANALYZER_H_
23#include "mbsim/solver.h"
24#include "mbsim/functions/function.h"
25#include "mbsim/utils/index.h"
26#include <mbsim/utils/boost_parameters.h>
30 BOOST_PARAMETER_NAME(modeNumbers)
31 BOOST_PARAMETER_NAME(frequencyRange)
35namespace MBSimControl {
45 void execute()
override;
46 void setInitialTime(
double t0_) { t0 = t0_; }
47 void setInitialInput(
const fmatvec::Vec &u0_) { u0 <<= u0_; }
48 void setMinimumNaturalFrequency(
double fmin_) { fmin = fmin_; }
49 void setMaximumNaturalFrequency(
double fmax_) { fmax = fmax_; }
50 void setNormalModeScaleFactor(
double modeScaleFactor_) { modeScaleFactor = modeScaleFactor_; }
51 void setNormalModeScale(
const fmatvec::VecV &modeScale_) { modeScale <<= modeScale_; }
52 void setExcitationFrequencies(
const fmatvec::VecV &fex_) { fex <<= fex_; }
53 void setExcitationAmplitudeFunction(
MBSim::Function<fmatvec::VecV(
double)> *Amp_) { Amp = Amp_; }
54 void setExcitationPhaseFunction(
MBSim::Function<fmatvec::VecV(
double)> *Phi_) { Phi = Phi_; }
55 void setPlotStepSize(
double dtPlot_) { dtPlot = dtPlot_; }
56 void setLoops(
double loops_) { loops = loops_; }
57 void initializeUsingXML(xercesc::DOMElement *element)
override;
59 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), visualizeNormalModes, MBSim::tag, (optional (modeNumbers,(fmatvec::VecVI),fmatvec::VecVI()))) {
64 BOOST_PARAMETER_MEMBER_FUNCTION( (
void), visualizeFrequencyResponse, MBSim::tag, (optional (frequencyRange,(fmatvec::Vec2),
"[0;1e4]"))) {
66 fRange = frequencyRange;
73 double modeScaleFactor{1};
74 fmatvec::VecV modeScale;
77 fmatvec::VecV amp, phi;
78 fmatvec::Vec zEq, u0, fex;
86 std::vector<fmatvec::MatVx3> fap;
Linear system analyzer.
Definition: linear_system_analyzer.h:41