mbsim 4.0.0 MBSim Kernel

Public Member Functions | Protected Attributes | List of all members
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.
virtual void | integrate ()=0
| start the integration of the system set by setSystem. Each class implemeting this function should call debugInit first.
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 | postprocessing ()
void | setSystem (DynamicSystemSolver *s)
MBSim::DynamicSystemSolver * | getSystem ()
const MBXMLUtils::DOMEvalException & | getDOMEvalError () const

## Protected Attributes

MBSim::DynamicSystemSolver * | sysT1
MBSim::DynamicSystemSolver * | sysT2
MBSim::DynamicSystemSolver * | sysT3
MBSim::DynamicSystemSolver * | sysTP
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::DynamicSystemSolver * | system
| 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

  dynamic | system
  Vector | z
  Number | of Dynamic System
  Current | Time
  Current | TimeStepSize

## ◆ doImpStep()

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

Do One Implicit Time Integration Step.

Parameters

  dynamic | system
  Vector | z
  Number | of Dynamic System
  Current | Time
  Current | TimeStepSize

## ◆ 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

  dynamic | system
  Vector | z
  Number | of Dynamic System
  Current | Time
  Current | TimeStepSize

## ◆ 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

## ◆ 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

  dynamic | system
  state | vector
  time |
  System | number

## 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:

- /mbsim-env/mbsim/kernel/mbsim/integrators/auto_time_stepping_ssc_integrator.h
- /mbsim-env/mbsim/kernel/mbsim/integrators/auto_time_stepping_ssc_integrator.cc