61 dSolTol(dSolutionTol),
 
  122 #include "stepsol.hc" 
  129                 const bool bmod_res_test)
 
  131 bEvalProdCalledFirstTime(
true),
 
  134 bModResTest(bmod_res_test)
 
  167         if (nw < std::numeric_limits<doublereal>::epsilon()) {
 
  173         if (
fabs(sigma) > std::numeric_limits<doublereal>::epsilon()) {
 
  178 #ifdef DEBUG_ITERATIVE 
  179         std::cout << 
"Tau " << Tau << std::endl;
 
  187         External::SendFreeze();
 
  216 #warning "ImplicitStepIntegrator::TestScale() not available with Schur solution" 
  241                 return 1./(1. + dXPr);
 
  253                 const bool bmod_res_test,
 
  258 iMaxIterCoef(iMaxIterCoef),
 
  259 dFactorCoef(dFactorCoef)
 
  274                 std::deque<MyVectorHandler*>& qX,
 
  275                 std::deque<MyVectorHandler*>& qXPrime,
 
  295                 bool bConverged = 
false;
 
  298                 doublereal dResErrMin = std::numeric_limits<doublereal>::max();
 
  302                 for (
int i = 0; i <= iMaxPowerCoef; ++i) {
 
  303                         const bool bLastChance = i == iMaxPowerCoef;
 
  335                         if (Err < dResErrMin) {
 
  364                                 dTol = dSafetyFactor * dResErrMin;
 
  365                                 dSolTol = dSafetyFactor * dSolErrMin;
 
  368                         silent_cout(
"Derivatives(" << i + 1  << 
'/' << 2 * 
iMaxIterCoef + 1
 
  370                                 << 
" coef=" << 
dCoef / TStep
 
  441         dAlgebraicEqu = 
dCoef;
 
  450                 const bool bmod_res_test)
 
  497                         inc.PutCoef(i, -ddd);
 
  500                         incsol *= (1./(-ddd));
 
  502                                 fdjac.PutCoef(j, i, std::abs(incsol(j)) > 1.E-100 ? incsol(j) : 0.);
 
  506                 std::cerr << 
"\nxxxxxxxxxxxxxxx\n" << std::endl;
 
  507                 std::cerr << *pJac << std::endl;
 
  508                 std::cerr << 
"\n---------------\n" << std::endl;
 
  509                 std::cerr << fdjac << std::endl;
 
  510                 std::cerr << 
"\n===============\n" << std::endl;
 
  512 #endif // MBDYN_FDJAC 
  563                 const bool bmod_res_test)
 
  605                 silent_cerr(
"Step1Integrator::" 
  607                         "unknown order for local dof " 
  608                         << DCount << std::endl);
 
  626                 std::deque<MyVectorHandler*>& qX,
 
  627                 std::deque<MyVectorHandler*>& qXPrime,
 
  650                 std::cout << 
"After prediction, time=" << 
pDM->
dGetTime() << std::endl;
 
  651                 std::cout << 
"Dof:      |    XCurr  ";
 
  652                 for (
unsigned idx = 0; idx < qX.size(); idx++) {
 
  653                         std::cout << 
"|  XPrev[" << idx << 
"] ";
 
  655                 std::cout << 
"|   XPrime  ";
 
  656                 for (
unsigned idx = 0; idx < qXPrime.size(); idx++) {
 
  657                         std::cout << 
"| XPPrev[" << idx << 
"] ";
 
  659                 std::cout << 
"|" << std::endl;
 
  660                 for (
int iTmpCnt = 1; iTmpCnt <= iNumDofs; iTmpCnt++) {
 
  661                         std::cout << std::setw(8) << iTmpCnt << 
": ";
 
  662                         std::cout << std::setw(12) << pX->operator()(iTmpCnt);
 
  663                         for (
unsigned int ivec = 0; ivec < qX.size(); ivec++) {
 
  664                                 std::cout << std::setw(12)
 
  665                                 << (qX[ivec])->
operator()(iTmpCnt);
 
  667                         std::cout << std::setw(12) << pXPrime->operator()(iTmpCnt);
 
  668                         for (
unsigned int ivec = 0; ivec < qXPrime.size(); ivec++) {
 
  669                                 std::cout << std::setw(12)
 
  670                                 << (qXPrime[ivec])->
operator()(iTmpCnt);
 
  672                         std::cout << 
" " << 
pDM->DataManager::GetDofDescription(iTmpCnt) << std::endl;
 
  679                         EffIter, Err, 
dSolTol, SolErr);
 
  695                 const bool bmod_res_test)
 
  728                                 dXPn, dXPnm1, dXPnm2);
 
  748                 silent_cerr(
"Step2Integrator::" 
  750                         "unknown order for local dof " 
  751                         << DCount << std::endl);
 
  768                 std::deque<MyVectorHandler*>& qX,
 
  769                 std::deque<MyVectorHandler*>& qXPrime,
 
  794                 std::cout << 
"After prediction, time=" << 
pDM->
dGetTime() << std::endl;
 
  795                 std::cout << 
"Dof:      |    XCurr  ";
 
  796                 for (
unsigned idx = 0; idx < qX.size(); idx++) {
 
  797                         std::cout << 
"|  XPrev[" << idx << 
"] ";
 
  799                 std::cout << 
"|   XPrime  ";
 
  800                 for (
unsigned idx = 0; idx < qXPrime.size(); idx++) {
 
  801                         std::cout << 
"| XPPrev[" << idx << 
"] ";
 
  803                 std::cout << 
"|" << std::endl;
 
  804                 for (
int iTmpCnt = 1; iTmpCnt <= iNumDofs; iTmpCnt++) {
 
  805                         std::cout << std::setw(8) << iTmpCnt << 
": ";
 
  806                         std::cout << std::setw(12) << pX->operator()(iTmpCnt);
 
  807                         for (
unsigned int ivec = 0; ivec < qX.size(); ivec++) {
 
  808                                 std::cout << std::setw(12)
 
  809                                         << (qX[ivec])->
operator()(iTmpCnt);
 
  811                         std::cout << std::setw(12) << pXPrime->operator()(iTmpCnt);
 
  812                         for (
unsigned int ivec = 0; ivec < qXPrime.size(); ivec++) {
 
  813                                 std::cout << std::setw(12)
 
  814                                         << (qXPrime[ivec])->
operator()(iTmpCnt);
 
  816                         std::cout << 
" " << 
pDM->DataManager::GetDofDescription(iTmpCnt) << std::endl;
 
  823                         EffIter, Err, 
dSolTol, SolErr);
 
  839                 const bool bmod_res_test)
 
  917                 const bool bmod_res_test)
 
  997                 const bool bmod_res_test)
 
  999 Rho(pRho), AlgebraicRho(pAlgRho)
 
 1025         doublereal dDen = 2.*(1.+dAlpha)-(1.-dRho)*(1.-dRho);
 
 1026         doublereal dBeta = dAlpha*((1.-dRho)*(1.-dRho)*(2.+dAlpha)
 
 1027                 +2.*(2.*dRho-1.)*(1.+dAlpha))/dDen;
 
 1028         doublereal dDelta = .5*dAlpha*dAlpha*(1.-dRho)*(1.-dRho)/dDen;
 
 1030         mp[0] = -6.*dAlpha*(1.+dAlpha);
 
 1032         np[0] = 1.+4.*dAlpha+3.*dAlpha*dAlpha;
 
 1033         np[1] = dAlpha*(2.+3.*dAlpha);
 
 1038         b[1][
DIFFERENTIAL] = dT*(dBeta/2.+dAlpha/2.-dDelta/dAlpha*(1.+dAlpha));
 
 1042                         << 
"Alpha = " << dAlpha << std::endl
 
 1043                         << 
"Differential coefficients:" << std::endl
 
 1044                         << 
"beta  = " << dBeta << std::endl
 
 1045                         << 
"delta = " << dDelta << std::endl
 
 1053         if (dAlgebraicRho != dRho) {
 
 1054                 dDen = 2.*(1.+dAlpha)-(1.-dAlgebraicRho)*(1.-dAlgebraicRho);
 
 1055                 dBeta = dAlpha*((1.-dAlgebraicRho)*(1.-dAlgebraicRho)*(2.+dAlpha)
 
 1056                                 +2.*(2.*dAlgebraicRho-1.)*(1.+dAlpha))/dDen;
 
 1057                 dDelta = .5*dAlpha*dAlpha*(1.-dAlgebraicRho)*(1.-dAlgebraicRho)/dDen;
 
 1060                 b[0][
ALGEBRAIC] = dT*(dDelta/dAlpha+dAlpha/2.);
 
 1061                 b[1][
ALGEBRAIC] = dT*(dBeta/2.+dAlpha/2.-dDelta/dAlpha*(1.+dAlpha));
 
 1071         DEBUGCOUT(
"Algebraic coefficients:" << std::endl
 
 1072                         << 
"beta  = " << dBeta << std::endl
 
 1073                         << 
"delta = " << dDelta << std::endl
 
 1074                         << 
"a2    = " << a[1][
ALGEBRAIC] << std::endl
 
 1075                         << 
"b0    = " << b[0][
ALGEBRAIC] << std::endl
 
 1076                         << 
"b1    = " << b[1][
ALGEBRAIC] << std::endl
 
 1077                         << 
"b2    = " << b[2][
ALGEBRAIC] << std::endl);
 
 1082                         << b[1][DIFFERENTIAL]*b[1][DIFFERENTIAL]-4.*b[2][DIFFERENTIAL]*b[0][DIFFERENTIAL]
 
 1084                         << 
"Asymptotic rho for algebraic variables: " 
 1087                         << b[1][ALGEBRAIC]*b[1][ALGEBRAIC]-4.*b[2][ALGEBRAIC]*b[0][ALGEBRAIC]
 
 1109                 return np[0]*dXPm1+
np[1]*dXPm2-
mp[1]*dXm1;
 
 1111         return mp[0]*dXm1+
mp[1]*dXm2+
np[0]*dXPm1+
np[1]*dXPm2;
 
 1138         return mp[0]*dXm1+
mp[1]*dXm2+
np[0]*dXPm1+
np[1]*dXPm2;
 
 1157         return np[0]*dXPm1+
np[1]*dXPm2-
mp[1]*dXm1;
 
 1180                 const bool bmod_res_test)
 
 1182 Rho(pRho), AlgebraicRho(pAlgRho), bStep(0)
 
 1207                 cerr << 
"HOPE time step integrator is not implemented yet in variable step form" << std::endl;
 
 1220         mp[0] = -6.*dAlpha*(1.+dAlpha);
 
 1222         np[0] = 1.+4.*dAlpha+3.*dAlpha*dAlpha;
 
 1223         np[1] = dAlpha*(2.+3.*dAlpha);
 
 1240                                 << 
"Alpha = " << dAlpha << std::endl
 
 1241                                 << 
"Differential coefficients:" << std::endl
 
 1242                                 << 
"HOPE-Alpha = " << dALPHA << std::endl
 
 1250                 doublereal dAlgebraicALPHA = 4.*dAlgebraicRho/(3.+dAlgebraicRho);
 
 1252                 if (dAlgebraicRho != dRho) {
 
 1254                         b[0][
ALGEBRAIC] = dTMod*(4.-dAlgebraicALPHA)/6.; 
 
 1255                         b[1][
ALGEBRAIC] = dTMod*dAlgebraicALPHA/2.; 
 
 1263                 DEBUGCOUT(
"Algebraic coefficients:" << std::endl
 
 1264                                 << 
"HOPE-Alpha = " << dAlgebraicALPHA << std::endl
 
 1266                                 << 
"b0    = " << b[0][
ALGEBRAIC] << std::endl
 
 1267                                 << 
"b1    = " << b[1][
ALGEBRAIC] << std::endl);
 
 1288                 return np[0]*dXPm1+
np[1]*dXPm2-
mp[1]*dXm1;
 
 1290         return mp[0]*dXm1+
mp[1]*dXm2+
np[0]*dXPm1+
np[1]*dXPm2;
 
 1324         return mp[0]*dXm1+
mp[1]*dXm2+
np[0]*dXPm1+
np[1]*dXPm2;
 
 1348         return np[0]*dXPm1+
np[1]*dXPm2-
mp[1]*dXm1;
 
 1383                 const bool bmod_res_test)
 
 1388 bEvalProdCalledFirstTime(
true),
 
 1393 pXPrimePrimeCurr(0),
 
 1395 bModResTest(bmod_res_test)
 
 1428         if (nw < std::numeric_limits<doublereal>::epsilon()) {
 
 1434         if (
fabs(sigma) > std::numeric_limits<doublereal>::epsilon()) {
 
 1439 #ifdef DEBUG_ITERATIVE 
 1440         std::cout << 
"Tau " << Tau << std::endl;
 
 1448         External::SendFreeze();
 
 1477 #warning "InverseDynamicsStepSolver::TestScale() not available with Schur solution" 
 1485                         iCntp1++, ++CurrDof)
 
 1502                 return 1./(1. + dXPr);
 
 1556                         EffIter, Err, 
dSolTol, SolErr);
 
 1577                 silent_cout(
"Residual(velocity):" << std::endl);
 
 1586                         silent_cout(
"Jacobian(velocity):" << std::endl << *pMat);
 
 1595                 silent_cout(
"Solution(velocity):" << std::endl);
 
 1614                 silent_cout(
"Residual(acceleration):" << std::endl);
 
 1623                         silent_cout(
"Jacobian(acceleration):" << std::endl << *pMat);
 
 1632                 silent_cout(
"Solution(acceleration):" << std::endl);
 
 1646                 silent_cout(
"Residual(inverseDynamics):" << std::endl);
 
 1655                         silent_cout(
"Jacobian(inverseDynamics):" << std::endl << *pMat);
 
 1661         switch (dynamic_cast<const InverseSolver *>(
pDM->
GetSolver())->GetProblemType()) {
 
 1671                 silent_cout(
"Solution(inverseDynamics):" << std::endl);
 
 1735         switch (dynamic_cast<const InverseSolver *>(
pDM->
GetSolver())->GetProblemType()) {
 
const doublereal dFactorCoef
doublereal dPredStateAlg(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2) const 
virtual void Reset(void)=0
virtual VectorHandler * pResHdl(void) const =0
Step1Integrator(const integer MaxIt, const doublereal dT, const doublereal dSolutionTol, const bool bmod_res_test)
virtual SolutionManager * pGetSolutionManager(void) const 
void SetCoef(doublereal dT, doublereal dAlpha, enum StepChange NewStep)
doublereal dPredDer(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXPm1, const doublereal &dXPm2) const 
doublereal dPredStateAlg(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2) const 
void SetCoef(doublereal dT, doublereal dAlpha, enum StepChange NewStep)
doublereal dPredDerAlg(const doublereal &dXm1, const doublereal &dXPm1, const doublereal &dXPm2) const 
virtual doublereal dPredDer(const doublereal &dXm1, const doublereal &dXPm1) const =0
void UpdateDof(const int DCount, const DofOrder::Order Order, const VectorHandler *const pSol=0) const 
doublereal dPredictState(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
virtual integer iGetNumCols(void) const =0
virtual void EvalProd(doublereal Tau, const VectorHandler &f0, const VectorHandler &w, VectorHandler &z) const 
doublereal dPredDer(const doublereal &dXm1, const doublereal &dXPm1) const 
virtual void SetCoef(doublereal dT, doublereal dAlpha, enum StepChange NewStep)=0
virtual doublereal dPredDerAlg(const doublereal &dXm1, const doublereal &dXPm1, const doublereal &dXPm2) const =0
void Jacobian(MatrixHandler *pJac) const 
bool bEvalProdCalledFirstTime
ImplicitStepIntegrator(const integer MaxIt, const doublereal dT, const doublereal dSolutionTol, const integer stp, const integer sts, const bool bmod_res_test)
#define MBDYN_EXCEPT_ARGS
StepIntegrator(const integer MaxIt, const doublereal dT, const doublereal dSolutionTol, const integer stp, const integer sts)
VectorHandler * pXPrimeCurr
#define DEBUGCOUTFNAME(fname)
DerivativeSolver(const doublereal Tl, const doublereal dSolTl, const doublereal dC, const integer iMaxIt, const bool bmod_res_test, const integer iMaxIterCoef, const doublereal dFactorCoef)
void Jacobian(MatrixHandler *pJac) const 
bool bEvalProdCalledFirstTime
doublereal dPredState(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1) const 
virtual void OutputTypes(const bool fpred)
virtual void PrintResidual(const VectorHandler &Res, integer iIterCnt) const 
doublereal dGetTime(void) const 
virtual void Predict(void)
doublereal dPredictState(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
virtual void IncCoef(integer iRow, const doublereal &dCoef)=0
virtual doublereal InnerProd(const VectorHandler &VH) const 
doublereal dPredDerAlg(const doublereal &dXm1, const doublereal &dXPm1) const 
virtual ~Step2Integrator(void)
virtual integer GetIntegratorMaxIters(void) const 
virtual doublereal TestScale(const NonlinearSolverTest *pTest, doublereal &dCoef) const 
doublereal Advance(Solver *pS, const doublereal TStep, const doublereal, const StepChange, std::deque< MyVectorHandler * > &qX, std::deque< MyVectorHandler * > &qXPrime, MyVectorHandler *const pX, MyVectorHandler *const pXPrime, integer &EffIter, doublereal &Err, doublereal &SolErr)
void SetOrder(InverseDynamics::Order iOrder)
virtual void AssRes(VectorHandler &ResHdl, doublereal dCoef)
doublereal dPredictDerivative(const doublereal &dXm1, const doublereal &dXPm1, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
bool outputRes(void) const 
virtual void Residual(VectorHandler *pRes) const =0
StepNIntegrator(const integer MaxIt, const doublereal dT, const doublereal dSolutionTol, const integer stp, const bool bmod_res_test)
bool outputJac(void) const 
void SetDataManager(DataManager *pDatMan)
virtual doublereal TestScale(const NonlinearSolverTest *pTest, doublereal &dAlgebraicEqu) const 
VectorHandler * pXPrimePrev
Step2Integrator(const integer MaxIt, const doublereal dT, const doublereal dSolutionTol, const bool bmod_res_test)
virtual void DerivativesUpdate(void) const 
virtual integer iGetSize(void) const =0
virtual doublereal Norm(void) const 
GradientExpression< UnaryExpr< FuncFabs, Expr > > fabs(const GradientExpression< Expr > &u)
virtual VectorHandler & ScalarMul(const VectorHandler &VH, const doublereal &d)
virtual void AfterConvergence(void) const 
virtual void Resize(integer iSize)
doublereal dPredictDerivative(const doublereal &dXm1, const doublereal &dXPm1, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
bool bJacobian(void) const 
InverseDynamicsStepSolver(const integer MaxIt, const doublereal dT, const doublereal dSolutionTol, const integer stp, const integer sts, const bool bmod_res_test)
doublereal dPredictDerivative(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXPm1, const doublereal &dXPm2, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
virtual void IDAfterConvergence(void) const 
CrankNicolsonIntegrator(const doublereal Tl, const doublereal dSolTl, const integer iMaxIt, const bool bmod_res_test)
virtual doublereal dPredState(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2) const =0
virtual void AfterPredict(void) const 
InverseDynamics::Order iOrder
void Residual(VectorHandler *pRes) const 
bool outputSol(void) const 
void LinkToSolution(VectorHandler &XCurr, VectorHandler &XPrimeCurr)
virtual void SetDrvHdl(const DriveHandler *pDH)
virtual doublereal dPredStateAlg(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1) const =0
InverseDynamics::Order GetOrder(void) const 
const DataManager::DofVecType * pDofs
virtual void SolveT(void)
doublereal dPredState(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2) const 
doublereal dPredStateAlg(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1) const 
virtual MatrixHandler * pMatHdl(void) const =0
virtual doublereal dPredState(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1) const =0
doublereal dPredState(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1) const 
virtual doublereal Advance(Solver *pS, const doublereal TStep, const doublereal dAlph, const StepChange StType, std::deque< MyVectorHandler * > &qX, std::deque< MyVectorHandler * > &qXPrime, MyVectorHandler *const pX, MyVectorHandler *const pXPrime, integer &EffIter, doublereal &Err, doublereal &SolErr)
doublereal dPredDerAlg(const doublereal &dXm1, const doublereal &dXPm1, const doublereal &dXPm2) const 
HopeSolver(const doublereal Tl, const doublereal dSolTol, const integer iMaxIt, const DriveCaller *pRho, const DriveCaller *pAlgRho, const bool bmod_res_test)
void Update(const VectorHandler *pSol) const 
MyVectorHandler SavedState
VectorHandler * pXPrimePrimeCurr
doublereal copysign(doublereal x, doublereal y)
virtual VectorHandler & ScalarMul(const VectorHandler &VH, const doublereal &d)
virtual NonlinearSolver * pGetNonlinearSolver(void) const 
virtual doublereal GetIntegratorDTol(void) const 
VectorHandler * pXPrimeCurr
virtual ~StepIntegrator(void)
virtual void Predict(void)
void UpdateDof(const int DCount, const DofOrder::Order Order, const VectorHandler *const pSol=0) const 
virtual void MatrReset(void)=0
void PredictDof(const int DCount, const DofOrder::Order Order, const VectorHandler *const pSol=0) const 
virtual void AssJac(MatrixHandler &JacHdl, doublereal dCoef)
virtual doublereal Advance(Solver *pS, const doublereal TStep, const doublereal dAlph, const StepChange StType, std::deque< MyVectorHandler * > &qX, std::deque< MyVectorHandler * > &qXPrime, MyVectorHandler *const pX, MyVectorHandler *const pXPrime, integer &EffIter, doublereal &Err, doublereal &SolErr)
virtual void Jacobian(MatrixHandler *pJac) const 
virtual void Solve(void)=0
void SetDriveHandler(const DriveHandler *pDH)
virtual doublereal TestScale(const NonlinearSolverTest *pTest, doublereal &dCoef) const 
doublereal dPredictState(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
doublereal dPredDerAlg(const doublereal &dXm1, const doublereal &dXPm1) const 
virtual ~StepNIntegrator(void)
MyVectorHandler SavedDerState
doublereal dPredictState(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
void SetCoef(doublereal dT, doublereal dAlpha, enum StepChange NewStep)
~ImplicitEulerIntegrator(void)
DofVecType::const_iterator DofIterator_const
#define ASSERT(expression)
doublereal dPredDer(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXPm1, const doublereal &dXPm2) const 
virtual void EvalProd(doublereal Tau, const VectorHandler &f0, const VectorHandler &w, VectorHandler &z) const 
virtual void AssConstrJac(MatrixHandler &JacHdl)
virtual void PutCoef(integer iRow, const doublereal &dCoef)=0
const DofVecType & GetDofs(void) const 
virtual doublereal dPredStateAlg(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2) const =0
DriveCaller * pGetDriveCaller(void) const 
doublereal db0Differential
virtual void SetCoef(doublereal dT, doublereal dAlpha, enum StepChange NewStep)=0
MyVectorHandler SavedState
void Residual(VectorHandler *pRes) const 
virtual void SetDriveHandler(const DriveHandler *pDH)
MultistepSolver(const doublereal Tl, const doublereal dSolTol, const integer iMaxIt, const DriveCaller *pRho, const DriveCaller *pAlgRho, const bool bmod_res_test)
MyVectorHandler SavedDerState
virtual const doublereal & dScaleCoef(const integer &iIndex) const 
ImplicitEulerIntegrator(const doublereal Tl, const doublereal dSolTl, const integer iMaxIt, const bool bmod_res_test)
VectorHandler * pXPrimePrev
~InverseDynamicsStepSolver(void)
doublereal dPredState(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXP, const doublereal &dXPm1, const doublereal &dXPm2) const 
doublereal dPredStateAlg(const doublereal &dXm1, const doublereal &dXP, const doublereal &dXPm1) const 
virtual doublereal Advance(Solver *pS, const doublereal TStep, const doublereal dAlph, const StepChange StType, std::deque< MyVectorHandler * > &qX, std::deque< MyVectorHandler * > &qXPrime, MyVectorHandler *const pX, MyVectorHandler *const pXPrime, integer &EffIter, doublereal &Err, doublereal &SolErr)
void Update(const VectorHandler *pSol) const 
virtual integer GetIntegratorNumPreviousStates(void) const 
doublereal dGet(const doublereal &dVar) const 
doublereal dPredDer(const doublereal &dXm1, const doublereal &dXPm1) const 
virtual void PrintSolution(const VectorHandler &Sol, integer iIterCnt) const 
virtual ~Step1Integrator(void)
const Solver * GetSolver(void) const 
virtual void Update(const VectorHandler *pSol) const 
virtual void Update(void) const 
virtual doublereal TestScale(const NonlinearSolverTest *pTest, doublereal &dAlgebraicEqu) const 
void PredictDof(const int DCount, const DofOrder::Order Order, const VectorHandler *const pSol=0) const 
virtual VectorHandler * pSolHdl(void) const =0
virtual void Update(const VectorHandler *pSol) const =0
virtual void AssConstrRes(VectorHandler &ResHdl, InverseDynamics::Order iOrder)
void UpdateLoop(const T *const t, void(T::*pUpd)(const int DCount, const DofOrder::Order Order, const VectorHandler *const pSol) const, const VectorHandler *const pSol=0) const 
void SetDriveHandler(const DriveHandler *pDH)
virtual doublereal dPredDer(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXPm1, const doublereal &dXPm2) const =0
virtual void Solve(const NonlinearProblem *pNLP, Solver *pS, const integer iMaxIter, const doublereal &Tol, integer &iIterCnt, doublereal &dErr, const doublereal &SolTol, doublereal &dSolErr)=0
virtual void Residual(VectorHandler *pRes) const 
VectorHandler * pLambdaCurr
void SetCoef(doublereal dT, doublereal dAlpha, enum StepChange NewStep)
~CrankNicolsonIntegrator(void)
VectorHandler * pXPrimePrev2
doublereal dPredictDerivative(const doublereal &dXm1, const doublereal &dXm2, const doublereal &dXPm1, const doublereal &dXPm2, DofOrder::Order o=DofOrder::DIFFERENTIAL) const 
virtual integer iGetNumRows(void) const =0
integer iGetNumDofs(void) const 
virtual integer GetIntegratorNumUnknownStates(void) const 
virtual doublereal GetIntegratorDSolTol(void) const 
virtual doublereal dPredDerAlg(const doublereal &dXm1, const doublereal &dXPm1) const =0
virtual ~ImplicitStepIntegrator(void)