20 #ifndef _TIME_STEPPING_SSC_INTEGRATOR_H_
21 #define _TIME_STEPPING_SSC_INTEGRATOR_H_
23 #include "integrator.h"
24 #include "mbsim/utils/stopwatch.h"
30 namespace MBSimIntegrator {
73 double dt, dtOld, dte;
75 double dt_SSC_vorGapControl;
76 bool driftCompensation;
78 int qSize, xSize, uSize, zSize;
79 fmatvec::Vec ze, zi, z1d, z2d, z2dRE, z3d, z4d, z6d, z2b, z3b, z4b, z6b, zStern;
80 fmatvec::VecInt LS, LSe, LStmp_T1, LStmp_T2, LStmp_T3, LSA, LSB1, LSB2, LSC1, LSC2, LSC3, LSC4, LSD1, LSD2, LSD3, LSD4, LSD5, LSD6;
82 fmatvec::VecInt laSizes, laeSizes, la1dSizes, la2bSizes;
84 std::vector<MBSim::Link*> SetValuedLinkListT1;
85 std::vector<MBSim::Link*> SetValuedLinkListT2;
86 std::vector<MBSim::Link*> SetValuedLinkListT3;
88 int StepsWithUnchangedConstraints;
147 int iter, iterA, iterB1, iterB2, iterC1, iterC2, iterC3, iterC4, iterB2RE, maxIterUsed, maxIter, sumIter;
148 int integrationSteps, integrationStepswithChange, refusedSteps, refusedStepsWithImpact;
149 int wrongAlertGapControl, stepsOkAfterGapControl, stepsRefusedAfterGapControl, statusGapControl;
150 int singleStepsT1, singleStepsT2, singleStepsT3;
151 double dtRelGapControl, qUncertaintyByExtrapolation;
152 int indexLSException;
154 double Penetration, PenetrationCounter, PenetrationLog, PenetrationMin, PenetrationMax;
155 double maxdtUsed, mindtUsed;
156 bool ChangeByGapControl;
158 bool IterConvergence;
159 bool ConstraintsChanged, ConstraintsChangedBlock1, ConstraintsChangedBlock2;
160 int integrationStepsOrder1;
161 int integrationStepsOrder2;
164 int AnzahlAktiverKontakte;
165 double gNDurchschnittprostep;
209 void deactivateSSC(
bool flag=
false) {
FlagSSC=flag;}
222 void setAbsoluteTolerance(
double aTol_) {
aTol =
fmatvec::Vec(1,fmatvec::INIT,aTol_);}
224 void setRelativeTolerance(
double rTol_) {
rTol =
fmatvec::Vec(1,fmatvec::INIT,rTol_);}
225 void setgapTolerance(
double gTol) {
gapTol = gTol;}
236 bool testTolerances();
237 bool GapControl(
double qUnsafe,
bool SSCTestOK);
238 bool changedLinkStatus(
const fmatvec::VecInt &L1,
const fmatvec::VecInt &L2,
int ex);
239 double calculatedtNewRel(
const fmatvec::Vec &ErrorLocal,
double H);
void setmaxGainSSC(double maxGain)
Definition: time_stepping_ssc_integrator.h:181
void integrate(MBSim::DynamicSystemSolver &system_)
Definition: time_stepping_ssc_integrator.cc:105
int FlagErrorTest
Definition: time_stepping_ssc_integrator.h:91
Vector< Ref, double > Vec
void setFlagOutputOnlyAtTPlot(bool flag=true)
Definition: time_stepping_ssc_integrator.h:190
solver interface for modelling and simulation of dynamic systems
Definition: dynamic_system_solver.h:48
int method
Definition: time_stepping_ssc_integrator.h:108
bool FlagPlotIntegrationSum
Definition: time_stepping_ssc_integrator.h:122
bool FlagErrorTestAlwaysValid
Definition: time_stepping_ssc_integrator.h:93
void setStepSizeMin(double dtMin_)
Definition: time_stepping_ssc_integrator.h:179
bool FlagPlotIntegrator
Definition: time_stepping_ssc_integrator.h:120
void setGapControl(int strategy=1)
Definition: time_stepping_ssc_integrator.h:200
int GapControlStrategy
Definition: time_stepping_ssc_integrator.h:140
int numThreads
Definition: time_stepping_ssc_integrator.h:142
std::ofstream integPlot
Definition: time_stepping_ssc_integrator.h:118
void getDataForGapControl()
Definition: time_stepping_ssc_integrator.cc:1457
Half-explicit time-stepping integrator of first or higer order with StepSize Control (SSC) important ...
Definition: time_stepping_ssc_integrator.h:66
bool FlagSSC
Definition: time_stepping_ssc_integrator.h:99
void setInitialStepSize(double dt_)
Definition: time_stepping_ssc_integrator.h:175
MBSim::StopWatch Timer
Definition: time_stepping_ssc_integrator.h:146
bool FlagOutputOnlyAtTPlot
Definition: time_stepping_ssc_integrator.h:126
void setSafetyFactorSSC(double sfactor)
Definition: time_stepping_ssc_integrator.h:183
void setMaxOrder(int order_, int method_=0)
Definition: time_stepping_ssc_integrator.cc:95
double safetyFactorSSC
Definition: time_stepping_ssc_integrator.h:116
double time
Definition: time_stepping_ssc_integrator.h:144
TimeSteppingSSCIntegrator()
Definition: time_stepping_ssc_integrator.cc:46
Definition: stopwatch.h:35
void preIntegrate(MBSim::DynamicSystemSolver &system)
Definition: time_stepping_ssc_integrator.cc:117
double safetyFactorGapControl
Definition: time_stepping_ssc_integrator.h:132
int maxOrder
Definition: time_stepping_ssc_integrator.h:103
double gapTol
Definition: time_stepping_ssc_integrator.h:112
void setOutputInterpolation(bool flag=true)
Definition: time_stepping_ssc_integrator.h:186
void setFlagErrorTest(int Flag, bool alwaysValid=true)
Definition: time_stepping_ssc_integrator.cc:87
bool FlagPlotEveryStep
Definition: time_stepping_ssc_integrator.h:128
bool outputInterpolation
Definition: time_stepping_ssc_integrator.h:130
virtual void initializeUsingXML(xercesc::DOMElement *element)
initialize integrator
Definition: time_stepping_ssc_integrator.cc:1483
integrator-interface for dynamic systems
Definition: integrator.h:40
fmatvec::Vec rTol
Definition: time_stepping_ssc_integrator.h:97
void setStepSizeMax(double dtMax_)
Definition: time_stepping_ssc_integrator.h:177
fmatvec::Vec aTol
Definition: time_stepping_ssc_integrator.h:95
static DynamicSystemSolver * system
dynamic system
Definition: solver.h:65
void setFlagPlotIntegrator(bool flag=true)
Definition: time_stepping_ssc_integrator.h:188
double maxGainSSC
Definition: time_stepping_ssc_integrator.h:114
void setDriftCompensation(bool dc)
Definition: time_stepping_ssc_integrator.h:202
bool FlagCoutInfo
Definition: time_stepping_ssc_integrator.h:124
~TimeSteppingSSCIntegrator()
Definition: time_stepping_ssc_integrator.cc:81