mbsim 4.0.0 MBSim Kernel

theta_time_stepping_ssc_integrator.h
1 /* Copyright (C) 2004-2012 MBSim Development Team
2 *
3 * This library is free software; you can redistribute it and/or
4 * modify it under the terms of the GNU Lesser General Public
5 * License as published by the Free Software Foundation; either
6 * version 2.1 of the License, or (at your option) any later version.
7 *
8 * This library is distributed in the hope that it will be useful,
9 * but WITHOUT ANY WARRANTY; without even the implied warranty of
10 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
11 * Lesser General Public License for more details.
12 *
13 * You should have received a copy of the GNU Lesser General Public
14 * License along with this library; if not, write to the Free Software
15 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
16 *
17 * Contact: jan.p.clauberg@googlemail.com
18 */
19
20 #ifndef _THETA_TIME_STEPPING_SSC_INTEGRATOR_H_
21 #define _THETA_TIME_STEPPING_SSC_INTEGRATOR_H_
22
23 #include "integrator.h"
24
25 namespace MBSim {
26
31 class ThetaTimeSteppingSSCIntegrator : public Integrator {
32 public:
36 ThetaTimeSteppingSSCIntegrator();
37
41 virtual ~ThetaTimeSteppingSSCIntegrator() {}
42
43 /* INHERITED INTERFACE OF INTEGRATOR */
44 using Integrator::integrate;
45 void integrate();
46 virtual void initializeUsingXML(xercesc::DOMElement *element);
47 /***************************************************/
48
49 /* GETTER / SETTER */
50 void setStepSize(double dt_) { dt = dt_; }
51 void setTheta(double theta_ ) { theta = theta_; }
52 void setDriftCompensation(bool dc) { driftCompensation = dc; }
53 /***************************************************/
54
61 void update(const fmatvec::Vec& z, double t);
62
67 void preIntegrate();
68
75 void subIntegrate(double tStop);
80 void postIntegrate();
81
82 private:
86 double dt;
87
91 double theta;
92
96 double t, tPlot;
97
101 int iter,step, integrationSteps, maxIter, sumIter;
102
106 double s0, time;
107
111 int stepPlot;
112
116 fmatvec::Vec z, q, u, x;
117
121 std::ofstream integPlot;
122
126 bool driftCompensation;
127 };
128
129 }
130
131 #endif /* _THETA_TIME_STEPPING_SSC_INTEGRATOR_H_ */
132
MBSim::ThetaTimeSteppingSSCIntegrator::update
void update(const fmatvec::Vec &z, double t)
update of dynamic system necessary values concerning theta time stepping integrator
Definition: theta_time_stepping_ssc_integrator.cc:39
MBSim::ThetaTimeSteppingSSCIntegrator
Definition: theta_time_stepping_ssc_integrator.h:31
MBSim::ThetaTimeSteppingSSCIntegrator::s0
double s0
computing time counter
Definition: theta_time_stepping_ssc_integrator.h:106
MBSim::Integrator
integrator-interface for dynamic systems
Definition: integrator.h:37
MBSim::ThetaTimeSteppingSSCIntegrator::initializeUsingXML
virtual void initializeUsingXML(xercesc::DOMElement *element)
initialize integrator
Definition: theta_time_stepping_ssc_integrator.cc:168
MBSim::ThetaTimeSteppingSSCIntegrator::~ThetaTimeSteppingSSCIntegrator
virtual ~ThetaTimeSteppingSSCIntegrator()
destructor
Definition: theta_time_stepping_ssc_integrator.h:41
MBSim::ThetaTimeSteppingSSCIntegrator::stepPlot
int stepPlot
plot step difference
Definition: theta_time_stepping_ssc_integrator.h:111
MBSim::Integrator::integrate
virtual void integrate()=0
start the integration of the system set by setSystem. Each class implemeting this function should cal...
MBSim::ThetaTimeSteppingSSCIntegrator::z
fmatvec::Vec z
state, position, velocity, order coordinate of dynamical system
Definition: theta_time_stepping_ssc_integrator.h:116
MBSim::ThetaTimeSteppingSSCIntegrator::ThetaTimeSteppingSSCIntegrator
ThetaTimeSteppingSSCIntegrator()
constructor
Definition: theta_time_stepping_ssc_integrator.cc:37
MBSim::ThetaTimeSteppingSSCIntegrator::subIntegrate
void subIntegrate(double tStop)
integration steps
Definition: theta_time_stepping_ssc_integrator.cc:104
MBSim::ThetaTimeSteppingSSCIntegrator::t
double t
time and plot time
Definition: theta_time_stepping_ssc_integrator.h:96
MBSim::ThetaTimeSteppingSSCIntegrator::integPlot
std::ofstream integPlot
file stream for integration information
Definition: theta_time_stepping_ssc_integrator.h:121
MBSim::ThetaTimeSteppingSSCIntegrator::preIntegrate
void preIntegrate()
preintegration steps
Definition: theta_time_stepping_ssc_integrator.cc:68
MBSim::ThetaTimeSteppingSSCIntegrator::theta
double theta
convex combination parameter between explicit (0) and implicit (1) Euler scheme
Definition: theta_time_stepping_ssc_integrator.h:91
MBSim::ThetaTimeSteppingSSCIntegrator::iter
int iter
iteration counter for constraints, plots, integration, maximum constraints, cummulation constraint
Definition: theta_time_stepping_ssc_integrator.h:101
MBSim::ThetaTimeSteppingSSCIntegrator::postIntegrate
void postIntegrate()
postintegration steps
Definition: theta_time_stepping_ssc_integrator.cc:151
MBSim::ThetaTimeSteppingSSCIntegrator::driftCompensation
bool driftCompensation
flag for drift compensation
Definition: theta_time_stepping_ssc_integrator.h:126
MBSim::ThetaTimeSteppingSSCIntegrator::dt
double dt
step size
Definition: theta_time_stepping_ssc_integrator.h:86
MBSim::ThetaTimeSteppingSSCIntegrator::integrate
void integrate()
start the integration of the system set by setSystem. Each class implemeting this function should cal...
Definition: theta_time_stepping_ssc_integrator.cc:162
MBSim
namespace MBSim
Definition: bilateral_constraint.cc:30