Explicit and Implicit time-stepping integrator of first or higer order with StepSize Control (SSC) StepSizeControl, GapControl, Extrapolation und concept analogue to TimeSteppingSSCIntegrator.
More...
|
| | 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_) |
| |
|
| Integrator () |
| | constructor
|
| |
|
| ~Integrator () override=default |
| | destructor
|
| |
|
void | setStartTime (double tStart_) |
| |
|
void | setEndTime (double tEnd_) |
| |
|
void | setPlotStepSize (double dtPlot_) |
| |
|
double | getStartTime () const |
| |
|
double | getEndTime () const |
| |
|
double | getPlotStepSize () const |
| |
| 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...
|
| |
|
| 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) |
| |
|
void | setInitialState (const fmatvec::Vec &z0_) |
| |
|
const fmatvec::Vec & | getInitialState () const |
| |
|
void | setSystem (DynamicSystemSolver *s) |
| |
|
MBSim::DynamicSystemSolver * | getSystem () |
| |
|
const MBXMLUtils::DOMEvalException & | getDOMEvalError () const |
| |
|
|
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 |
| |
|
double | tStart {0.} |
| | start, end, plot time
|
| |
|
double | tEnd {1.} |
| |
|
double | dtPlot {1e-4} |
| |
|
std::string | name |
| | name of integrator
|
| |
|
fmatvec::Vec | z0 |
| | initial state
|
| |
|
MBSim::DynamicSystemSolver * | system |
| | dynamic system
|
| |
|
MBXMLUtils::DOMEvalException | domEvalError |
| | Special XML helper variable.
|
| |
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