23#ifndef _PHEM56_INTEGRATOR_H_
24#define _PHEM56_INTEGRATOR_H_
26#include "root_finding_integrator.h"
45 static void fprob(
int* ifcn,
int* nq,
int* nu,
int* nx,
int* nla,
int* nzg,
int* nzf,
int* lrda,
int* nblk,
int* nmrc,
int* npgp,
int* npfl,
int* indgr,
int* indgc,
int* indflr,
int* indflc,
double* t,
double* q,
double* u,
double* x,
double* xl,
double* g,
double* WT_,
double* f,
double* wb,
double* deltagd_,
double* V_,
double* qd_,
double* xd_,
double* M_);
46 static void solout(
int* nr,
int* nq,
int* nu,
int* nx,
int* nla,
int* lrdo,
double* q,
double* u,
double* x,
double* a,
double* rlam,
double* dowk,
int* irtrn);
78 std::exception_ptr exception;
82 ~PHEM56Integrator()
override =
default;
84 void setAbsoluteTolerance(
const fmatvec::Vec &aTol_) {
aTol <<= aTol_; }
85 void setAbsoluteTolerance(
double aTol_) {
aTol.resize(1,fmatvec::INIT,aTol_); }
86 void setRelativeTolerance(
const fmatvec::Vec &rTol_) {
rTol <<= rTol_; }
87 void setRelativeTolerance(
double rTol_) {
rTol.resize(1,fmatvec::INIT,rTol_); }
88 void setInitialStepSize(
double dt0_) {
dt0 = dt0_; }
89 void setMaximumStepSize(
double dtMax_) {
dtMax = dtMax_; }
90 void setStepLimit(
int maxSteps_) {
maxSteps = maxSteps_; }
91 void setLinearAlgebra(LinearAlgebra linearAlgebra_) {
linearAlgebra = linearAlgebra_; }
92 void setGeneralVMatrix(
bool generalVMatrix_) {
generalVMatrix = generalVMatrix_; }
93 void setInitialProjection(
bool initialProjection_) {
initialProjection = initialProjection_; }
97 const fmatvec::Vec& getAbsoluteTolerance()
const {
return aTol; }
98 const fmatvec::Vec& getRelativeTolerance()
const {
return rTol; }
virtual void integrate()=0
start the integration of the system set by setSystem. Each class implemeting this function should cal...
DAE-Integrator PHEM56.
Definition: phem56_integrator.h:33
bool projectOntoIndex1ConstraintManifold
Definition: phem56_integrator.h:62
bool generalVMatrix
Definition: phem56_integrator.h:56
fmatvec::Vec rTol
Definition: phem56_integrator.h:66
int maxSteps
Definition: phem56_integrator.h:70
int numberOfStepsBetweenProjections
Definition: phem56_integrator.h:60
double dtMax
Definition: phem56_integrator.h:72
bool initialProjection
Definition: phem56_integrator.h:58
fmatvec::Vec aTol
Definition: phem56_integrator.h:64
void integrate() override
start the integration of the system set by setSystem. Each class implemeting this function should cal...
Definition: phem56_integrator.cc:296
void initializeUsingXML(xercesc::DOMElement *element) override
initialize integrator
Definition: phem56_integrator.cc:421
LinearAlgebra linearAlgebra
Definition: phem56_integrator.h:54
double dt0
Definition: phem56_integrator.h:68
Integrator with root-finding.
Definition: root_finding_integrator.h:32
namespace MBSim
Definition: bilateral_constraint.cc:30