All Classes Namespaces Functions Variables Typedefs Enumerations Enumerator Pages
Public Member Functions | Protected Attributes | List of all members
MBSimIntegrator::TimeSteppingSSCIntegrator Class Reference

Half-explicit time-stepping integrator of first or higer order with StepSize Control (SSC) important options / settings : More...

#include <time_stepping_ssc_integrator.h>

Inheritance diagram for MBSimIntegrator::TimeSteppingSSCIntegrator:
MBSimIntegrator::Integrator MBSim::Solver fmatvec::Atom

Public Member Functions

 TimeSteppingSSCIntegrator ()
 
 ~TimeSteppingSSCIntegrator ()
 
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 setFlagOutputOnlyAtTPlot (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 &systemT1_, MBSim::DynamicSystemSolver &systemT2_, MBSim::DynamicSystemSolver &systemT3_, 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_)
 
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 ()
 
virtual void initializeUsingXML (xercesc::DOMElement *element)
 initialize integrator More...
 
void updatebi ()
 
void updatela ()
 
void updatezd ()
 
- Public Member Functions inherited from MBSimIntegrator::Integrator
 Integrator ()
 constructor
 
virtual ~Integrator ()
 destructor
 
void setStartTime (double tStart_)
 
void setEndTime (double tEnd_)
 
void setPlotStepSize (double dtPlot_)
 
void setInitialState (const fmatvec::Vec &z0_)
 
void setWarnLevel (int level)
 
void setOutput (bool flag)
 
double getStartTime () const
 
double getEndTime () const
 
double getPlotStepSize () const
 
const fmatvec::VecgetInitialState () const
 
int getWarnLevel () const
 
bool getOutput () const
 
void execute (MBSim::DynamicSystemSolver &system)
 start solving the dynamic system More...
 
void debugInit ()
 
virtual std::string getType () const
 
- Public Member Functions inherited from MBSim::Solver
 Solver ()
 constructor
 
virtual ~Solver ()
 destructor
 
- Public Member Functions inherited from fmatvec::Atom
Atomoperator= (const Atom &)
 
void setMessageStreamActive (MsgType type, bool active)
 
void getMessageStream (MsgType type, std::shared_ptr< bool > &a, std::shared_ptr< std::ostream > &s)
 
void adoptMessageStreams (const Atom *src=NULL)
 
std::ostream & msg (MsgType type)
 
bool msgAct (MsgType type)
 

Protected Attributes

MBSim::DynamicSystemSolversysT1
 
MBSim::DynamicSystemSolversysT2
 
MBSim::DynamicSystemSolversysT3
 
double dt
 
double dtOld
 
double dte
 
double dtMin
 
double dtMax
 
double dt_SSC_vorGapControl
 
bool driftCompensation
 
double t
 
double tPlot
 
int qSize
 
int xSize
 
int uSize
 
int zSize
 
fmatvec::Vec ze
 
fmatvec::Vec zi
 
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 LStmp_T1
 
fmatvec::VecInt LStmp_T2
 
fmatvec::VecInt LStmp_T3
 
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::Vec la
 
fmatvec::Vec lae
 
fmatvec::Vec la1d
 
fmatvec::Vec la2b
 
fmatvec::VecInt laSizes
 
fmatvec::VecInt laeSizes
 
fmatvec::VecInt la1dSizes
 
fmatvec::VecInt la2bSizes
 
fmatvec::Vec gInActive
 
fmatvec::Vec gdInActive
 
std::vector< MBSim::Link * > SetValuedLinkListT1
 
std::vector< MBSim::Link * > SetValuedLinkListT2
 
std::vector< MBSim::Link * > SetValuedLinkListT3
 
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 FlagCoutInfo
 
bool FlagOutputOnlyAtTPlot
 
bool FlagPlotEveryStep
 
bool outputInterpolation
 
double safetyFactorGapControl
 
int GapControlStrategy
 
int numThreads
 
double time
 
MBSim::StopWatch Timer
 
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 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
 
int integrationStepsOrder1
 
int integrationStepsOrder2
 
int order
 
int StepTrials
 
int AnzahlAktiverKontakte
 
double gNDurchschnittprostep
 
fmatvec::Vec bi
 
- Protected Attributes inherited from MBSimIntegrator::Integrator
double tStart
 start, end, plot time
 
double tEnd
 
double dtPlot
 
fmatvec::Vec z0
 initial state
 
int warnLevel
 warn level
 
bool output
 flag for ouput printing
 
std::string name
 name of integrator
 

Additional Inherited Members

- Public Types inherited from fmatvec::Atom
enum  MsgType
 
- Static Public Member Functions inherited from MBSimIntegrator::Integrator
static IntegratorreadXMLFile (const std::string &filename)
 
- Static Public Member Functions inherited from fmatvec::Atom
static void setCurrentMessageStream (MsgType type, const std::shared_ptr< bool > &a=std::make_shared< bool >(true), const std::shared_ptr< std::ostream > &s=std::make_shared< std::ostream >(std::cout.rdbuf()))
 
static std::ostream & msgStatic (MsgType type)
 
static bool msgActStatic (MsgType type)
 
- Protected Member Functions inherited from fmatvec::Atom
 Atom (const Atom &src)
 
- Static Protected Attributes inherited from MBSim::Solver
static DynamicSystemSolversystem = 0
 dynamic system
 

Detailed Description

Half-explicit time-stepping integrator of first or higer order with StepSize Control (SSC) 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 step size 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

Author
Robert Huber
Date
2009-09-07 modifications for mbsim_dev

Constructor & Destructor Documentation

MBSimIntegrator::TimeSteppingSSCIntegrator::TimeSteppingSSCIntegrator ( )

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

MBSimIntegrator::TimeSteppingSSCIntegrator::~TimeSteppingSSCIntegrator ( )

Destructor

Member Function Documentation

void MBSimIntegrator::TimeSteppingSSCIntegrator::getDataForGapControl ( )

internal subroutines

void MBSimIntegrator::TimeSteppingSSCIntegrator::initializeUsingXML ( xercesc::DOMElement *  element)
virtual

initialize integrator

Parameters
XMLdescription

Reimplemented from MBSimIntegrator::Integrator.

void MBSimIntegrator::TimeSteppingSSCIntegrator::integrate ( MBSim::DynamicSystemSolver system_)
virtual

Start the integration

Implements MBSimIntegrator::Integrator.

void MBSimIntegrator::TimeSteppingSSCIntegrator::integrate ( MBSim::DynamicSystemSolver systemT1_,
MBSim::DynamicSystemSolver systemT2_,
MBSim::DynamicSystemSolver systemT3_,
int  Threads = 0 
)

Threads: Number of Threads (0,1,2 or 3) 0: auto (number of threads depends on order and SSC)

void MBSimIntegrator::TimeSteppingSSCIntegrator::preIntegrate ( MBSim::DynamicSystemSolver system)
virtual

subroutines for integrate function

Reimplemented from MBSimIntegrator::Integrator.

void MBSimIntegrator::TimeSteppingSSCIntegrator::setDriftCompensation ( bool  dc)
inline

Set drift compensation

void MBSimIntegrator::TimeSteppingSSCIntegrator::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

void MBSimIntegrator::TimeSteppingSSCIntegrator::setFlagOutputOnlyAtTPlot ( bool  flag = true)
inline

set Flag for writing output only at tPlot-Time instances or not (default false)

void MBSimIntegrator::TimeSteppingSSCIntegrator::setFlagPlotIntegrator ( bool  flag = true)
inline

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

void MBSimIntegrator::TimeSteppingSSCIntegrator::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

void MBSimIntegrator::TimeSteppingSSCIntegrator::setInitialStepSize ( double  dt_)
inline

Set initial step size

void MBSimIntegrator::TimeSteppingSSCIntegrator::setmaxGainSSC ( double  maxGain)
inline

Set maximal gain for increasing dt by stepsize control

void MBSimIntegrator::TimeSteppingSSCIntegrator::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

void MBSimIntegrator::TimeSteppingSSCIntegrator::setOutputInterpolation ( bool  flag = true)
inline

Set Flag for output interpolation

void MBSimIntegrator::TimeSteppingSSCIntegrator::setSafetyFactorSSC ( double  sfactor)
inline

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

void MBSimIntegrator::TimeSteppingSSCIntegrator::setStepSizeMax ( double  dtMax_)
inline

Set maximal step size

void MBSimIntegrator::TimeSteppingSSCIntegrator::setStepSizeMin ( double  dtMin_)
inline

Set minimal step size (default 2*maxOrder*epsroot()

Member Data Documentation

fmatvec::Vec MBSimIntegrator::TimeSteppingSSCIntegrator::aTol
protected

Absolute Toleranz

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagCoutInfo
protected

Flag: write integration info (integ. summary) to cout (default true)

int MBSimIntegrator::TimeSteppingSSCIntegrator::FlagErrorTest
protected

include (0) or exclude (3) variable u or scale (2) with stepsize for error test

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagErrorTestAlwaysValid
protected

FlagErrorTest is always valid or only during nonsmooth steps

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagOutputOnlyAtTPlot
protected

Flag: write output info to cout only for plot-time-instances (default false)

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagPlotEveryStep
protected

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

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagPlotIntegrationSum
protected

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

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagPlotIntegrator
protected

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

bool MBSimIntegrator::TimeSteppingSSCIntegrator::FlagSSC
protected

activate step size control

int MBSimIntegrator::TimeSteppingSSCIntegrator::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

double MBSimIntegrator::TimeSteppingSSCIntegrator::gapTol
protected

Toleranz for closing gaps

std::ofstream MBSimIntegrator::TimeSteppingSSCIntegrator::integPlot
protected

filestream for integrator info at each step

double MBSimIntegrator::TimeSteppingSSCIntegrator::maxGainSSC
protected

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

int MBSimIntegrator::TimeSteppingSSCIntegrator::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)

int MBSimIntegrator::TimeSteppingSSCIntegrator::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)

int MBSimIntegrator::TimeSteppingSSCIntegrator::numThreads
protected

Number of Threads

bool MBSimIntegrator::TimeSteppingSSCIntegrator::outputInterpolation
protected

Flag interpolate z and la for plotting (default true)

fmatvec::Vec MBSimIntegrator::TimeSteppingSSCIntegrator::rTol
protected

Relative Toleranz

double MBSimIntegrator::TimeSteppingSSCIntegrator::safetyFactorGapControl
protected

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

double MBSimIntegrator::TimeSteppingSSCIntegrator::safetyFactorSSC
protected

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

double MBSimIntegrator::TimeSteppingSSCIntegrator::time
protected

computaional time

MBSim::StopWatch MBSimIntegrator::TimeSteppingSSCIntegrator::Timer
protected

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


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

Impressum / Disclaimer / Datenschutz Generated by doxygen 1.8.5 Valid HTML