mbsim  4.0.0
MBSim Kernel
MBSim::AutoTimeSteppingSSCIntegrator Class Reference

Explicit and Implicit time-stepping integrator of first or higer order with StepSize Control (SSC) StepSizeControl, GapControl, Extrapolation und concept analogue to TimeSteppingSSCIntegrator. More...

#include <auto_time_stepping_ssc_integrator.h>

Inheritance diagram for MBSim::AutoTimeSteppingSSCIntegrator:
[legend]

Public Member Functions

 AutoTimeSteppingSSCIntegrator ()
 
 ~AutoTimeSteppingSSCIntegrator ()
 
void setInitialStepSize (double dt_)
 
void setStepSizeMax (double dtMax_)
 
void setStepSizeMin (double dtMin_)
 
void setmaxGainSSC (double maxGain)
 
void setSafetyFactorSSC (double sfactor)
 
void setSafetyFactorGapControl (double s)
 
void setOutputInterpolation (bool flag=true)
 
void setFlagPlotIntegrator (bool flag=true)
 
void setGapControl (int strategy=1)
 
void setDriftCompensation (bool dc)
 
void setMaxOrder (int order_, int method_=0)
 
void deactivateSSC (bool flag=false)
 
void setFlagErrorTest (int Flag, bool alwaysValid=true)
 
void integrate (MBSim::DynamicSystemSolver &system_)
 
void integrate (MBSim::DynamicSystemSolver &system_, std::vector< MBSim::DynamicSystemSolver * > systems)
 
void integrate (MBSim::DynamicSystemSolver &systemT1_, MBSim::DynamicSystemSolver &systemT2_, MBSim::DynamicSystemSolver &systemT3_, MBSim::DynamicSystemSolver &systemTP_, int Threads=0)
 
void integrate (MBSim::DynamicSystemSolver &systemT1_, MBSim::DynamicSystemSolver &systemT2_, MBSim::DynamicSystemSolver &systemT3_, MBSim::DynamicSystemSolver &systemTP_, std::vector< MBSim::DynamicSystemSolver * > systems, int Threads=0)
 
void setAbsoluteTolerance (const fmatvec::Vec &aTol_)
 
void setAbsoluteTolerance (double aTol_)
 
void setRelativeTolerance (const fmatvec::Vec &rTol_)
 
void setRelativeTolerance (double rTol_)
 
void setgapTolerance (double gTol)
 
void preIntegrate (MBSim::DynamicSystemSolver &system)
 
void subIntegrate (MBSim::DynamicSystemSolver &system, double tStop)
 
void postIntegrate (MBSim::DynamicSystemSolver &system)
 
void preIntegrate (MBSim::DynamicSystemSolver &systemT1_, MBSim::DynamicSystemSolver &systemT2_, MBSim::DynamicSystemSolver &systemT3_, MBSim::DynamicSystemSolver &systemTP_)
 
void getAllSetValuedla (fmatvec::Vec &la_, fmatvec::VecInt &la_Sizes, std::vector< MBSim::Link * > &SetValuedLinkList)
 
void setAllSetValuedla (const fmatvec::Vec &la_, const fmatvec::VecInt &la_Sizes, std::vector< MBSim::Link * > &SetValuedLinkList)
 
void getDataForGapControl ()
 
bool testTolerances ()
 
bool GapControl (double qUnsafe, bool SSCTestOK)
 
bool changedLinkStatus (const fmatvec::VecInt &L1, const fmatvec::VecInt &L2, int ex)
 
double calculatedtNewRel (const fmatvec::Vec &ErrorLocal, double H)
 
void plot ()
 
void plotPar ()
 
void doIntegPlot ()
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 
void update (MBSim::DynamicSystemSolver &system, const fmatvec::Vec &z, double t, int nrSys_=1)
 special update of dynamic system for theta time stepping integrator More...
 
void doStep (MBSim::DynamicSystemSolver &system_, fmatvec::Vec &z_, int nrSys_, double t_, double dt_, bool exp_)
 
void doExpStep (MBSim::DynamicSystemSolver &system_, fmatvec::Vec &z_, int nrSys_, double t_, double dt_)
 Do One Explicit Time Integration Step. More...
 
void doImpStep (MBSim::DynamicSystemSolver &system_, fmatvec::Vec &z_, int nrSys_, double t_, double dt_)
 Do One Implicit Time Integration Step. More...
 
void doLinImpStep (MBSim::DynamicSystemSolver &system_, fmatvec::Vec &z_, int nrSys_, double t_, double dt_)
 Do One Linear Implicit Time Integration Step. More...
 
void setTheta (double theta_)
 
void getdhdqdhdu (fmatvec::Mat &dhdq_, fmatvec::Mat &dhdu_, const fmatvec::Vec z_, const double t_, const int nsys_)
 
void setItMax (int itMax_)
 
void setInexactJac (bool inexactJac_)
 
void setItTol (double itTol_)
 
void setSetValuedForceLawsExplicit (bool SetValuedForceLawsExplicit_)
 
void setPlotParallel (bool plotParallel_)
 
- Public Member Functions inherited from MBSim::Integrator
 Integrator ()
 constructor
 
 ~Integrator () override=default
 destructor
 
void setStartTime (double tStart_)
 
void setEndTime (double tEnd_)
 
void setPlotStepSize (double dtPlot_)
 
void setInitialState (const fmatvec::Vec &z0_)
 
double getStartTime () const
 
double getEndTime () const
 
double getPlotStepSize () const
 
const fmatvec::Vec & getInitialState () const override
 
void execute () override
 start solving the dynamic system set by setSystem. More...
 
virtual void integrate ()=0
 start the integration of the system set by setSystem. Each class implemeting this function should call debugInit first. More...
 
void integrate (MBSim::DynamicSystemSolver &sys)
 Convinent function: call setSystem(&sys) and integrate()
 
void debugInit ()
 
virtual void preIntegrate ()
 
virtual void subIntegrate (double tStop)
 
virtual void postIntegrate ()
 
void initializeUsingXML (xercesc::DOMElement *element) override
 initialize integrator More...
 
- Public Member Functions inherited from MBSim::Solver
 Solver ()
 constructor
 
 ~Solver () override=default
 destructor
 
void throwError (const std::string &msg) const
 
virtual void execute ()=0
 start solving the dynamic system set by setSystem. More...
 
virtual void postprocessing ()
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 
virtual const fmatvec::Vec & getInitialState () const =0
 
void setSystem (DynamicSystemSolver *s)
 
MBSim::DynamicSystemSolvergetSystem ()
 
const MBXMLUtils::DOMEvalExceptiongetDOMEvalError () const
 

Protected Attributes

MBSim::DynamicSystemSolversysT1
 
MBSim::DynamicSystemSolversysT2
 
MBSim::DynamicSystemSolversysT3
 
MBSim::DynamicSystemSolversysTP
 
double dt
 
double dtOld
 
double dte
 
double dtMin
 
double dtMax
 
double dt_SSC_vorGapControl
 
bool driftCompensation
 
double t
 
double tPlot
 
double tPlotP
 
int qSize
 
int xSize
 
int uSize
 
int zSize
 
fmatvec::Vec ze
 
fmatvec::Vec zeP
 
fmatvec::Vec zi
 
fmatvec::Vec ziP
 
fmatvec::Vec zT1
 
fmatvec::Vec zT2
 
fmatvec::Vec zT3
 
fmatvec::Vec zTP
 
fmatvec::Vec z1d
 
fmatvec::Vec z2d
 
fmatvec::Vec z2dRE
 
fmatvec::Vec z3d
 
fmatvec::Vec z4d
 
fmatvec::Vec z6d
 
fmatvec::Vec z2b
 
fmatvec::Vec z3b
 
fmatvec::Vec z4b
 
fmatvec::Vec z6b
 
fmatvec::Vec zStern
 
fmatvec::VecInt LS
 
fmatvec::VecInt LSe
 
fmatvec::VecInt LSA
 
fmatvec::VecInt LSB1
 
fmatvec::VecInt LSB2
 
fmatvec::VecInt LSC1
 
fmatvec::VecInt LSC2
 
fmatvec::VecInt LSC3
 
fmatvec::VecInt LSC4
 
fmatvec::VecInt LSD1
 
fmatvec::VecInt LSD2
 
fmatvec::VecInt LSD3
 
fmatvec::VecInt LSD4
 
fmatvec::VecInt LSD5
 
fmatvec::VecInt LSD6
 
fmatvec::VecInt LS_Reg
 
fmatvec::VecInt LSe_Reg
 
fmatvec::VecInt LSA_Reg
 
fmatvec::VecInt LSB1_Reg
 
fmatvec::VecInt LSB2_Reg
 
fmatvec::VecInt LSC1_Reg
 
fmatvec::VecInt LSC2_Reg
 
fmatvec::VecInt LSC3_Reg
 
fmatvec::VecInt LSC4_Reg
 
fmatvec::VecInt LSD1_Reg
 
fmatvec::VecInt LSD2_Reg
 
fmatvec::VecInt LSD3_Reg
 
fmatvec::VecInt LSD4_Reg
 
fmatvec::VecInt LSD5_Reg
 
fmatvec::VecInt LSD6_Reg
 
fmatvec::VecInt LS_Reg_T1
 
fmatvec::VecInt LS_Reg_T2
 
fmatvec::VecInt LS_Reg_T3
 
fmatvec::VecInt LS_Reg_z2b
 
fmatvec::VecInt S_Reg_z1d
 
fmatvec::VecInt LS_Reg_z4b
 
fmatvec::VecInt LS_Reg_z6b
 
fmatvec::VecInt LS_Reg_z1d
 
fmatvec::VecInt LS_Reg_z3b
 
fmatvec::VecInt LSB1_2_Reg
 
fmatvec::VecInt LS_tmp
 
fmatvec::Vec la
 
fmatvec::Vec laP
 
fmatvec::Vec lae
 
fmatvec::Vec laeP
 
fmatvec::Vec la1d
 
fmatvec::Vec la2b
 
fmatvec::VecInt laSizes
 
fmatvec::VecInt laSizesP
 
fmatvec::VecInt laeSizes
 
fmatvec::VecInt laeSizesP
 
fmatvec::VecInt la1dSizes
 
fmatvec::VecInt la2bSizes
 
fmatvec::Vec qT1
 
fmatvec::Vec qT2
 
fmatvec::Vec qT3
 
fmatvec::Vec qTP
 
fmatvec::Vec uT1
 
fmatvec::Vec uT2
 
fmatvec::Vec uT3
 
fmatvec::Vec uTP
 
fmatvec::Vec xT1
 
fmatvec::Vec xT2
 
fmatvec::Vec xT3
 
fmatvec::Vec xTP
 
fmatvec::Vec gInActive
 
fmatvec::Vec gdInActive
 
std::vector< MBSim::Link * > SetValuedLinkListT1
 
std::vector< MBSim::Link * > SetValuedLinkListT2
 
std::vector< MBSim::Link * > SetValuedLinkListT3
 
std::vector< MBSim::Link * > SetValuedLinkListTP
 
int StepsWithUnchangedConstraints
 
int FlagErrorTest
 
bool FlagErrorTestAlwaysValid
 
fmatvec::Vec aTol
 
fmatvec::Vec rTol
 
bool FlagSSC
 
int maxOrder
 
int method
 
bool FlagGapControl
 
double gapTol
 
double maxGainSSC
 
double safetyFactorSSC
 
std::ofstream integPlot
 
bool FlagPlotIntegrator
 
bool FlagPlotIntegrationSum
 
bool FlagPlotEveryStep
 
bool outputInterpolation
 
double safetyFactorGapControl
 
int GapControlStrategy
 
int numThreads
 
int numThreadsB1
 
double time
 
double dhdztime
 
double timeB1
 
double timeB2
 
double timePlot
 
double timePlotPar
 
MBSim::StopWatch Timer
 
MBSim::StopWatch dhdzTimer
 
MBSim::StopWatch TimerB1
 
MBSim::StopWatch TimerB2
 
MBSim::StopWatch TimerPlot
 
MBSim::StopWatch TimerPlotPar
 
int iter
 
int iterA
 
int iterB1
 
int iterB2
 
int iterC1
 
int iterC2
 
int iterC3
 
int iterC4
 
int iterB2RE
 
int maxIterUsed
 
int maxIter
 
int sumIter
 
int integrationSteps
 
int integrationStepswithChange
 
int refusedSteps
 
int refusedStepsWithImpact
 
int JacUpdateT1
 
int JacUpdateT2
 
int JacUpdateT3
 
int wrongAlertGapControl
 
int stepsOkAfterGapControl
 
int stepsRefusedAfterGapControl
 
int statusGapControl
 
int singleStepsT1
 
int singleStepsT2
 
int singleStepsT3
 
double dtRelGapControl
 
double qUncertaintyByExtrapolation
 
int indexLSException
 
fmatvec::Vec gUniActive
 
double Penetration
 
double PenetrationCounter
 
double PenetrationLog
 
double PenetrationMin
 
double PenetrationMax
 
double maxdtUsed
 
double mindtUsed
 
bool ChangeByGapControl
 
bool calcBlock2
 
bool IterConvergence
 
bool ConstraintsChanged
 
bool ConstraintsChangedBlock1
 
bool ConstraintsChangedBlock2
 
bool ConstraintsChanged_B1_A
 
int integrationStepsOrder1
 
int integrationStepsOrder2
 
int order
 
int StepTrials
 
int AnzahlAktiverKontakte
 
double gNDurchschnittprostep
 
int iter_T1
 
int iter_T2
 
int iter_T3
 
int step
 
fmatvec::RangeV Iq
 
fmatvec::RangeV Iu
 
fmatvec::RangeV Ix
 
bool expInt
 
int it_T1
 
int it_T2
 
int it_T3
 
bool gAC_T1
 
bool gAC_T2
 
bool gAC_T3
 
bool gAC_reg_T1
 
bool gAC_reg_T2
 
bool gAC_reg_T3
 
bool upgedated_T1
 
bool upgedated_T2
 
bool upgedated_T3
 
bool JacUpdate_B1_T1
 
bool JacUpdate_B2_T1
 
bool JacUpdate_B1_T2
 
bool JacUpdate_B2_T2
 
bool JacUpdate_T1
 
bool JacUpdate_T2
 
int itMax
 
double itTol
 
fmatvec::Mat dhdq_n_T1
 
fmatvec::Mat dhdu_n_T1
 
fmatvec::Mat dhdq_n_T2
 
fmatvec::Mat dhdu_n_T2
 
fmatvec::Mat dhdq_n_T3
 
fmatvec::Mat dhdu_n_T3
 
fmatvec::Mat dhdq_T1
 
fmatvec::Mat dhdu_T1
 
fmatvec::Mat dhdq_T2
 
fmatvec::Mat dhdu_T2
 
fmatvec::Mat dhdq_T3
 
fmatvec::Mat dhdu_T3
 
fmatvec::Mat dhdq_z1d
 
fmatvec::Mat dhdu_z1d
 
fmatvec::Mat dhdq_z2b
 
fmatvec::Mat dhdq_z3b
 
fmatvec::Mat dhdq_z4b
 
fmatvec::Mat dhdq_z6b
 
fmatvec::Mat dhdu_z2b
 
fmatvec::Mat dhdu_z3b
 
fmatvec::Mat dhdu_z4b
 
fmatvec::Mat dhdu_z6b
 
fmatvec::Mat dhdq_end
 
fmatvec::Mat dhdu_end
 
fmatvec::Mat dhdq_z2d
 
fmatvec::Mat dhdu_z2d
 
fmatvec::Mat dhdq_z2dRE
 
fmatvec::Mat dhdu_z2dRE
 
fmatvec::Mat dhdq_z3d
 
fmatvec::Mat dhdu_z3d
 
fmatvec::Mat dhdq_z4d
 
fmatvec::Mat dhdu_z4d
 
fmatvec::Mat dhdq_z6d
 
fmatvec::Mat dhdu_z6d
 
double theta
 
bool parJac
 
bool parInt
 
std::vector< MBSim::DynamicSystemSolver * > * psystems
 
bool inexactJac
 
int maxImpIter
 
int JacConstSteps
 
bool SetValuedForceLawsExplicit
 
bool plotParallel
 
fmatvec::Mat JacVgl
 
fmatvec::Mat JacVgl2
 
fmatvec::Mat JacVgl3
 
int JacCounter
 
- Protected Attributes inherited from MBSim::Integrator
double tStart {0.}
 start, end, plot time
 
double tEnd {1.}
 
double dtPlot {1e-4}
 
fmatvec::Vec z0
 initial state
 
std::string name
 name of integrator
 
- Protected Attributes inherited from MBSim::Solver
MBSim::DynamicSystemSolversystem
 dynamic system
 
MBXMLUtils::DOMEvalException domEvalError
 Special XML helper variable.
 

Detailed Description

Explicit and Implicit time-stepping integrator of first or higer order with StepSize Control (SSC) StepSizeControl, GapControl, Extrapolation und concept analogue to TimeSteppingSSCIntegrator.

important options / settings :

a) setMaxOrder(int order, int method=0) order: maximum order of integration scheme 1 to 3 with SSC by extrapolation (method=0) (order=4 without SSC) 1 to 4 with embedded SSC (1=1(2), ... 4=4(5)) (method=1 or 2) method: method used for error estimation and Stepsize control 0: step size control by extrapolation (steps wit dt and dt/2 are compared) DEFAULT 1: embedded method (compare maxOrder maxOrder+1); proceed with maxOrder (recommended) 2: embedded method with local extrapolation (integration is continued with maxOrder+1)

b) setFlagErrorTest(int Flag, bool alwaysValid= true) Flag: for scaling variables for the purpose of error estimation
0: include velocities u for error test 2: scale velocities u with stepsize for error test 3: exclude velocities u for error test alwaysValid: true : u is scaled resp. exluded during smooth and nonsmooth steps alwaysValid: false : u is scaled resp. exluded only during nonsmooth steps

c) deactivateSSC(bool flag=false) : maximum order: 1 to 4

d) setGapControl(bool FlagGapControl=true, int GapControlStrategy=0)
FlagGapControl activate / deactivate gap control GapControlStrategy choose strategy for Gap Control (1:maximal Stepsize to 4:minimal Penetration) 1: uses biggest root (maximal dt) 2: score for all roots are evaluated 3: gapTol is used 4: uses smallest root (minimal penetration) 0: gap control deactivated

e) Basic Implicit Integration Implicit Integration only possible with:

  • StepSizeControl method 0 (step size control by extrapolation)
  • GapControl deactivated (GapControl should work, but isn't tested in detail)

f) setInexactJac(bool inexactJac_=false) inexactJac_: true: - Linear Implicit Integration: Jacobis are updated if time step size changes,

  • Full Implicit Integration: Jacobis are updated of Newton-Iterations doesn't converge

e) Parallel Computation: The concept allows the following parallel computation methods:

  • parallel computation of different time step sizes dt, dt/2, etc.
  • parallel computation of Jacobi matrices (dhdu, dhdq)
  • parallel plotting of system during the next integration step

Usage:

  • integrate(sys): sequential computation
  • integrate(sys, systems): sequential integration, parallel computation of Jacobis
  • integrate(sys,sys,sys,sys): parallel integration, parallel plotting, sequential computation of Jacobis
  • integrate(sys,sys,sys,sys,systems): parallel integration, parallel plotting, parallel computations of Jacobis
Author
Jan Clauberg

Constructor & Destructor Documentation

◆ AutoTimeSteppingSSCIntegrator()

MBSim::AutoTimeSteppingSSCIntegrator::AutoTimeSteppingSSCIntegrator ( )

Constructor with \default dt(1e-5), \default driftCompensation(false)

◆ ~AutoTimeSteppingSSCIntegrator()

MBSim::AutoTimeSteppingSSCIntegrator::~AutoTimeSteppingSSCIntegrator ( )

Destructor

Member Function Documentation

◆ doExpStep()

void MBSim::AutoTimeSteppingSSCIntegrator::doExpStep ( MBSim::DynamicSystemSolver system_,
fmatvec::Vec &  z_,
int  nrSys_,
double  t_,
double  dt_ 
)

Do One Explicit Time Integration Step.

Parameters
dynamicsystem
Vectorz
Numberof Dynamic System
CurrentTime
CurrentTimeStepSize

◆ doImpStep()

void MBSim::AutoTimeSteppingSSCIntegrator::doImpStep ( MBSim::DynamicSystemSolver system_,
fmatvec::Vec &  z_,
int  nrSys_,
double  t_,
double  dt_ 
)

Do One Implicit Time Integration Step.

Parameters
dynamicsystem
Vectorz
Numberof Dynamic System
CurrentTime
CurrentTimeStepSize

◆ doLinImpStep()

void MBSim::AutoTimeSteppingSSCIntegrator::doLinImpStep ( MBSim::DynamicSystemSolver system_,
fmatvec::Vec &  z_,
int  nrSys_,
double  t_,
double  dt_ 
)

Do One Linear Implicit Time Integration Step.

Parameters
dynamicsystem
Vectorz
Numberof Dynamic System
CurrentTime
CurrentTimeStepSize

◆ getAllSetValuedla()

void MBSim::AutoTimeSteppingSSCIntegrator::getAllSetValuedla ( fmatvec::Vec &  la_,
fmatvec::VecInt &  la_Sizes,
std::vector< MBSim::Link * > &  SetValuedLinkList 
)

internal subroutines

◆ getdhdqdhdu()

void MBSim::AutoTimeSteppingSSCIntegrator::getdhdqdhdu ( fmatvec::Mat &  dhdq_,
fmatvec::Mat &  dhdu_,
const fmatvec::Vec  z_,
const double  t_,
const int  nsys_ 
)

get Jabobians by parallel calculation

◆ initializeUsingXML()

void MBSim::AutoTimeSteppingSSCIntegrator::initializeUsingXML ( xercesc::DOMElement *  element)
virtual

Reimplemented from MBSim::Solver.

◆ integrate()

void MBSim::AutoTimeSteppingSSCIntegrator::integrate ( MBSim::DynamicSystemSolver system_)

Start the integration

◆ preIntegrate()

void MBSim::AutoTimeSteppingSSCIntegrator::preIntegrate ( MBSim::DynamicSystemSolver system)

subroutines for integrate function

◆ setAbsoluteTolerance()

void MBSim::AutoTimeSteppingSSCIntegrator::setAbsoluteTolerance ( const fmatvec::Vec &  aTol_)
inline

Tolerances for Integrator

◆ setDriftCompensation()

void MBSim::AutoTimeSteppingSSCIntegrator::setDriftCompensation ( bool  dc)
inline

Set drift compensation

◆ setFlagErrorTest()

void MBSim::AutoTimeSteppingSSCIntegrator::setFlagErrorTest ( int  Flag,
bool  alwaysValid = true 
)

Set Flag vor ErrorTest (default 0: all variables ae tested; 2: u is scaled with dt; 3: exclude u alwaysValid = true : u is scaled resp. exluded during the smooth and nonsmooth part alwaysValid = false : u is scaled resp. exluded only during nonsmooth steps

◆ setFlagPlotIntegrator()

void MBSim::AutoTimeSteppingSSCIntegrator::setFlagPlotIntegrator ( bool  flag = true)
inline

set Flag for writing integrator info at each step to a file (default true)

◆ setGapControl()

void MBSim::AutoTimeSteppingSSCIntegrator::setGapControl ( int  strategy = 1)
inline

Set Flag to optimise dt for minmal penetration of unilateral links; choose strategy for Gap Control (1:maximal Stepsize to 4:minimal Penetration) 1: uses biggest root (maximal dt) 2: score for all roots are evaluated 3: gapTol is used 4: uses smallest root (minimal penetration) 0: gap control deactivated with statistic calculations -1: gap control deactivated without statistic calculations

◆ setInexactJac()

void MBSim::AutoTimeSteppingSSCIntegrator::setInexactJac ( bool  inexactJac_)
inline

set of exact or inexact Jabians should be used

◆ setInitialStepSize()

void MBSim::AutoTimeSteppingSSCIntegrator::setInitialStepSize ( double  dt_)
inline

Set initial step size

◆ setItMax()

void MBSim::AutoTimeSteppingSSCIntegrator::setItMax ( int  itMax_)
inline

set maximum number of full implicit iterations

◆ setItTol()

void MBSim::AutoTimeSteppingSSCIntegrator::setItTol ( double  itTol_)
inline

Tolerance for Newton Iterations of full implicit iterations

◆ setmaxGainSSC()

void MBSim::AutoTimeSteppingSSCIntegrator::setmaxGainSSC ( double  maxGain)
inline

Set maximal gain for increasing dt by stepsize control

◆ setMaxOrder()

void MBSim::AutoTimeSteppingSSCIntegrator::setMaxOrder ( int  order_,
int  method_ = 0 
)

set maximum order (1,2,3 (method=0) or 1 to 4 (method=1,2) and method 0: SSC by extrapolation (recommended!!);
1,2: embedded SSC; proceed with maxOrder [1] (recommended if you don't want to use 0) or with maxOrder+1 [2] without SSC maximum order from 1 to 4 is possible

◆ setOutputInterpolation()

void MBSim::AutoTimeSteppingSSCIntegrator::setOutputInterpolation ( bool  flag = true)
inline

Set Flag for output interpolation

◆ setPlotParallel()

void MBSim::AutoTimeSteppingSSCIntegrator::setPlotParallel ( bool  plotParallel_)
inline

Flag if Plotting should be done in Parallel

◆ setSafetyFactorSSC()

void MBSim::AutoTimeSteppingSSCIntegrator::setSafetyFactorSSC ( double  sfactor)
inline

safety factor for stepsize estimation: dt = dt_estimate * safetyFactorSSC (]0;1]; default 0.6)

◆ setSetValuedForceLawsExplicit()

void MBSim::AutoTimeSteppingSSCIntegrator::setSetValuedForceLawsExplicit ( bool  SetValuedForceLawsExplicit_)
inline

Set-valued force laws with explicit or implicit discretization

◆ setStepSizeMax()

void MBSim::AutoTimeSteppingSSCIntegrator::setStepSizeMax ( double  dtMax_)
inline

Set maximal step size

◆ setStepSizeMin()

void MBSim::AutoTimeSteppingSSCIntegrator::setStepSizeMin ( double  dtMin_)
inline

Set minimal step size (default 2*maxOrder*epsroot

◆ setTheta()

void MBSim::AutoTimeSteppingSSCIntegrator::setTheta ( double  theta_)
inline

set combination parameter between explicit (0) and implicit (1) Euler scheme

◆ update()

void MBSim::AutoTimeSteppingSSCIntegrator::update ( MBSim::DynamicSystemSolver system,
const fmatvec::Vec &  z,
double  t,
int  nrSys_ = 1 
)

special update of dynamic system for theta time stepping integrator

Parameters
dynamicsystem
statevector
time
Systemnumber

Member Data Documentation

◆ aTol

fmatvec::Vec MBSim::AutoTimeSteppingSSCIntegrator::aTol
protected

Absolute Tolerance

◆ dhdq_n_T1

fmatvec::Mat MBSim::AutoTimeSteppingSSCIntegrator::dhdq_n_T1
protected

Jacobi-Matrices for implicit integration

◆ dtRelGapControl

double MBSim::AutoTimeSteppingSSCIntegrator::dtRelGapControl
protected

Other internal variables

◆ expInt

bool MBSim::AutoTimeSteppingSSCIntegrator::expInt
protected

Flag for Explicit or Implicit Integration

◆ FlagErrorTest

int MBSim::AutoTimeSteppingSSCIntegrator::FlagErrorTest
protected

Include (0) or Exclude (3) Variable u or Scale (2) with Stepsize for Error Test

◆ FlagErrorTestAlwaysValid

bool MBSim::AutoTimeSteppingSSCIntegrator::FlagErrorTestAlwaysValid
protected

FlagErrorTest is Always Valid or Only During Nonsmooth Steps

◆ FlagPlotEveryStep

bool MBSim::AutoTimeSteppingSSCIntegrator::FlagPlotEveryStep
protected

every successful integration step is ploted (set dtPlot=0 to activate FlagPlotEveryStep) (default false)

◆ FlagPlotIntegrationSum

bool MBSim::AutoTimeSteppingSSCIntegrator::FlagPlotIntegrationSum
protected

Flag: write integration summary to a file (default true)

◆ FlagPlotIntegrator

bool MBSim::AutoTimeSteppingSSCIntegrator::FlagPlotIntegrator
protected

Flag: write integrator info at each step to a file (default true)

◆ FlagSSC

bool MBSim::AutoTimeSteppingSSCIntegrator::FlagSSC
protected

Stepsize Control activated or Deactivated

◆ gAC_T1

bool MBSim::AutoTimeSteppingSSCIntegrator::gAC_T1
protected

Flag if gActiveChanged (set-valued)

◆ GapControlStrategy

int MBSim::AutoTimeSteppingSSCIntegrator::GapControlStrategy
protected

choose strategy for Gap Control (1:maximal Stepsize to 4:minimal Penetration) 1: uses biggest root (maximal dt) 2: score for all roots are evaluated 3: gapTol is used 4: uses smallest root (minimal penetration) 0: gap control deactivated

◆ gapTol

double MBSim::AutoTimeSteppingSSCIntegrator::gapTol
protected

Toleranz for closing gaps

◆ inexactJac

bool MBSim::AutoTimeSteppingSSCIntegrator::inexactJac
protected

Flag of Exact or Inexact Jacobians should be uses

◆ integPlot

std::ofstream MBSim::AutoTimeSteppingSSCIntegrator::integPlot
protected

filestream for integrator info at each step

◆ integrationSteps

int MBSim::AutoTimeSteppingSSCIntegrator::integrationSteps
protected

Counter for Integrations steps

◆ it_T1

int MBSim::AutoTimeSteppingSSCIntegrator::it_T1
protected

Number of Iterations for Full-Implicit Integration

◆ iter

int MBSim::AutoTimeSteppingSSCIntegrator::iter
protected

Iterations for solving set-valued laws of different systems

◆ iter_T1

int MBSim::AutoTimeSteppingSSCIntegrator::iter_T1
protected

iteration counters

◆ itMax

int MBSim::AutoTimeSteppingSSCIntegrator::itMax
protected

Maximal number of Iterations for Full-Implicit Integration

◆ itTol

double MBSim::AutoTimeSteppingSSCIntegrator::itTol
protected

Tolerance for Full-Implicit Integration

◆ JacCounter

int MBSim::AutoTimeSteppingSSCIntegrator::JacCounter
protected

Counter for all Jacobian Updates

◆ JacUpdate_B1_T1

bool MBSim::AutoTimeSteppingSSCIntegrator::JacUpdate_B1_T1
protected

Flag if Jabobis of different Systems were updated in B1 or B2

◆ JacUpdateT1

int MBSim::AutoTimeSteppingSSCIntegrator::JacUpdateT1
protected

Counter for Jacobi updates

◆ maxGainSSC

double MBSim::AutoTimeSteppingSSCIntegrator::maxGainSSC
protected

maximal gain factor for increasing dt by stepsize control (default 2.5; maxGain * safetyFactor must be GT 1)

◆ maxOrder

int MBSim::AutoTimeSteppingSSCIntegrator::maxOrder
protected

Maximum order of Integration Scheme SSC by extrapolation (steps with differnt dt are compared): 1, 2, 3
SSC with embedded methods (differnt orders are compared): 1 to 4 [ 1= 1(2), ... 4= 4(5) ] maxOrder(maxOrder+1) - not available for implicit integration

◆ method

int MBSim::AutoTimeSteppingSSCIntegrator::method
protected

method for intrgration and step size control method=0 step size control by extrapolation (steps wit dt and dt/2 are compared) DEFAULT method=1 embedded method for step size control (maxOrder and maxOrder+1 are compared); proceed with maxOrder (recommended) method=2 embedded method for SSC with -local extrapolation- (integration is continued with maxOrder+1)

◆ numThreads

int MBSim::AutoTimeSteppingSSCIntegrator::numThreads
protected

Number of Threads

◆ outputInterpolation

bool MBSim::AutoTimeSteppingSSCIntegrator::outputInterpolation
protected

Flag interpolate z and la for plotting (default true)

◆ plotParallel

bool MBSim::AutoTimeSteppingSSCIntegrator::plotParallel
protected

Flag if Plotting should be done in Parallel

◆ rTol

fmatvec::Vec MBSim::AutoTimeSteppingSSCIntegrator::rTol
protected

Relative Tolerance

◆ safetyFactorGapControl

double MBSim::AutoTimeSteppingSSCIntegrator::safetyFactorGapControl
protected

Safety factor for GapControl (dtNew = dt_gapcontrol*safetyFactor; default min(1+RTol,1.001)

◆ safetyFactorSSC

double MBSim::AutoTimeSteppingSSCIntegrator::safetyFactorSSC
protected

safety factor for stepsize estimation: dt = dt_estimate * safetyFactorSSC (]0;1]; default 0.6)

◆ SetValuedForceLawsExplicit

bool MBSim::AutoTimeSteppingSSCIntegrator::SetValuedForceLawsExplicit
protected

Set-valued force laws with explicit or implicit discretization

◆ singleStepsT1

int MBSim::AutoTimeSteppingSSCIntegrator::singleStepsT1
protected

Single steps of different systems

◆ theta

double MBSim::AutoTimeSteppingSSCIntegrator::theta
protected

combination parameter between explicit (0) and implicit (1) Euler scheme

◆ time

double MBSim::AutoTimeSteppingSSCIntegrator::time
protected

computaional time

◆ Timer

MBSim::StopWatch MBSim::AutoTimeSteppingSSCIntegrator::Timer
protected

for internal use (start clock, integration info ...)

◆ upgedated_T1

bool MBSim::AutoTimeSteppingSSCIntegrator::upgedated_T1
protected

Flag if System has already been updated

◆ wrongAlertGapControl

int MBSim::AutoTimeSteppingSSCIntegrator::wrongAlertGapControl
protected

Variables for GapControl


The documentation for this class was generated from the following files: