20 #ifndef _CONSTITUTIVE_LAWS_H_
21 #define _CONSTITUTIVE_LAWS_H_
25 #include <mbsim/numerics/linear_complementarity_problem/linear_complementarity_problem.h>
26 #include <mbsim/contour.h>
27 #include <mbsim/functions/function.h>
28 #include <fmatvec/atom.h>
34 class InfluenceFunction;
69 virtual bool isActive(
double g,
double gTol) {
return true; }
70 virtual bool remainsActive(
double s,
double sTol) {
return true; }
80 virtual double project(
double la,
double gdn,
double r,
double laMin=0) {
return 0; }
81 virtual fmatvec::Vec diff(
double la,
double gdn,
double r,
double laMin=0) {
return fmatvec::Vec(2, fmatvec::INIT, 0); }
82 virtual double solve(
double G,
double gdn) {
return 0; }
91 virtual bool isFulfilled(
double la,
double gdn,
double tolla,
double tolgd,
double laMin=0) {
return true; }
103 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
108 virtual std::string
getType()
const {
return "GeneralizedForceLaw"; }
162 virtual bool isActive(
double g,
double gTol) {
return g<=gTol; }
163 virtual bool remainsActive(
double gd,
double gdTol) {
return gd<=gdTol; }
164 virtual double project(
double la,
double gdn,
double r,
double laMin=0);
165 virtual fmatvec::Vec diff(
double la,
double gdn,
double r,
double laMin=0);
166 virtual double solve(
double G,
double gdn);
167 virtual bool isFulfilled(
double la,
double gdn,
double tolla,
double tolgd,
double laMin=0);
171 bool remainsClosed(
double s,
double sTol) {
return s<=sTol; }
173 virtual std::string
getType()
const {
return "UnilateralConstraint"; }
195 virtual bool isActive(
double g,
double gTol) {
return true; }
196 virtual double project(
double la,
double gdn,
double r,
double laMin=0);
197 virtual fmatvec::Vec diff(
double la,
double gdn,
double r,
double laMin=0);
198 virtual double solve(
double G,
double gdn);
199 virtual bool isFulfilled(
double la,
double gdn,
double tolla,
double tolgd,
double laMin=0);
203 bool remainsClosed(
double s,
double sTol) {
return true; }
205 virtual std::string
getType()
const {
return "BilateralConstraint"; }
226 virtual double project(
double la,
double gdn,
double gda,
double r,
double laMin=0) = 0;
227 virtual fmatvec::Vec diff(
double la,
double gdn,
double gda,
double r,
double laMin=0) = 0;
228 virtual double solve(
double G,
double gdn,
double gda) = 0;
229 virtual bool isFulfilled(
double la,
double gdn,
double gda,
double tolla,
double tolgd,
double laMin=0) = 0;
230 virtual void initializeUsingXML(xercesc::DOMElement *element) {}
231 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
236 virtual std::string
getType()
const {
return "GeneralizedImpactLaw"; }
264 virtual double project(
double la,
double gdn,
double gda,
double r,
double laMin=0);
265 virtual fmatvec::Vec diff(
double la,
double gdn,
double gda,
double r,
double laMin=0);
266 virtual double solve(
double G,
double gdn,
double gda);
267 virtual bool isFulfilled(
double la,
double gdn,
double gda,
double tolla,
double tolgd,
double laMin=0);
268 virtual void initializeUsingXML(xercesc::DOMElement *element);
269 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
270 virtual std::string
getType()
const {
return "UnilateralNewtonImpact"; }
274 double epsilon, gd_limit;
295 virtual double project(
double la,
double gdn,
double gda,
double r,
double laMin=0);
296 virtual fmatvec::Vec diff(
double la,
double gdn,
double gda,
double r,
double laMin=0);
297 virtual double solve(
double G,
double gdn,
double gda);
298 virtual bool isFulfilled(
double la,
double gdn,
double gda,
double tolla,
double tolgd,
double laMin=0);
300 virtual std::string
getType()
const {
return "BilateralImpact"; }
314 if(frictionForceFunc)
315 frictionForceFunc->setParent(
this);
321 virtual ~FrictionForceLaw() {
if(frictionForceFunc)
delete frictionForceFunc; frictionForceFunc = NULL; };
325 if(frictionForceFunc)
326 frictionForceFunc->init(stage);
333 virtual bool isFulfilled(
const fmatvec::Vec& la,
const fmatvec::Vec& gdn,
double laN,
double tolla,
double tolgd) {
return true; }
335 virtual int getFrictionDirections() = 0;
336 virtual bool isSticking(
const fmatvec::Vec& s,
double sTol) = 0;
337 virtual double getFrictionCoefficient(
double gd) {
return 0; }
338 virtual bool isSetValued()
const = 0;
339 virtual void initializeUsingXML(xercesc::DOMElement *element) {}
340 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
345 virtual std::string
getType()
const {
return "FrictionForceLaw"; }
348 fmatvec::Vec operator()(
const fmatvec::Vec &gd,
double laN) { assert(frictionForceFunc);
return (*frictionForceFunc)(gd,laN); }
356 frictionForceFunc=frictionForceFunc_;
357 frictionForceFunc->setParent(
this);
361 Function<fmatvec::Vec(fmatvec::Vec,double)> *frictionForceFunc;
387 virtual int getFrictionDirections() {
return 1; }
388 virtual bool isSticking(
const fmatvec::Vec& s,
double sTol) {
return fabs(s(0)) <= sTol; }
389 virtual double getFrictionCoefficient(
double gd) {
return mu; }
390 virtual bool isSetValued()
const {
return true; }
391 virtual void initializeUsingXML(xercesc::DOMElement *element);
392 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
393 virtual std::string
getType()
const {
return "PlanarCoulombFriction"; }
396 void setFrictionCoefficient(
double mu_) { mu = mu_; }
425 virtual int getFrictionDirections() {
return 2; }
426 virtual bool isSticking(
const fmatvec::Vec& s,
double sTol) {
return nrm2(s(0,1)) <= sTol; }
427 virtual double getFrictionCoefficient(
double gd) {
return mu; }
428 virtual bool isSetValued()
const {
return true; }
429 virtual void initializeUsingXML(xercesc::DOMElement *element);
430 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
431 virtual std::string
getType()
const {
return "SpatialCoulombFriction"; }
434 void setFrictionCoefficient(
double mu_) { mu = mu_; }
452 if(
fmu)
fmu->setParent(
this);
471 virtual int getFrictionDirections() {
return 1; }
472 virtual bool isSticking(
const fmatvec::Vec& s,
double sTol) {
return fabs(s(0)) <= sTol; }
473 virtual double getFrictionCoefficient(
double gd) {
return (*
fmu)(gd); }
474 virtual bool isSetValued()
const {
return true; }
475 virtual void initializeUsingXML(xercesc::DOMElement *element);
476 virtual std::string
getType()
const {
return "PlanarStribeckFriction"; }
479 void setFrictionFunction(Function<
double(
double)> *fmu_) {
481 if(
fmu)
fmu->setParent(
this);
488 Function<double(double)> *
fmu;
503 if(
fmu)
fmu->setParent(
this);
522 virtual int getFrictionDirections() {
return 2; }
523 virtual bool isSticking(
const fmatvec::Vec& s,
double sTol) {
return nrm2(s(0,1)) <= sTol; }
524 virtual double getFrictionCoefficient(
double gd) {
return (*
fmu)(gd); }
525 virtual bool isSetValued()
const {
return true; }
526 virtual void initializeUsingXML(xercesc::DOMElement *element);
527 virtual std::string
getType()
const {
return "SpatialStribeckFriction"; }
530 void setFrictionFunction(Function<
double(
double)> *fmu_) {
532 if(
fmu)
fmu->setParent(
this);
539 Function<double(double)> *
fmu;
565 virtual int getFrictionDirections() = 0;
566 virtual void initializeUsingXML(xercesc::DOMElement *element) {}
567 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
572 virtual std::string
getType()
const {
return "FrictionImpactLaw"; }
599 virtual int getFrictionDirections() {
return 1; }
600 virtual void initializeUsingXML(xercesc::DOMElement *element);
601 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
602 virtual std::string
getType()
const {
return "PlanarCoulombImpact"; }
605 void setFrictionCoefficient(
double mu_) { mu = mu_; }
606 double getFrictionCoefficient(
double gd) {
return mu; }
635 virtual int getFrictionDirections() {
return 2; }
636 virtual void initializeUsingXML(xercesc::DOMElement *element);
637 virtual xercesc::DOMElement* writeXMLFile(xercesc::DOMNode *parent);
638 virtual std::string
getType()
const {
return "SpatialCoulombImpact"; }
641 void setFrictionCoefficient(
double mu_) { mu = mu_; }
642 double getFrictionCoefficient(
double gd) {
return mu; }
660 if(
fmu)
fmu->setParent(
this);
679 virtual int getFrictionDirections() {
return 1; }
680 virtual void initializeUsingXML(xercesc::DOMElement *element);
681 virtual std::string
getType()
const {
return "PlanarStribeckImpact"; }
684 double getFrictionCoefficient(
double gd) {
return (*
fmu)(gd); }
686 void setFrictionFunction(Function<
double(
double)> *fmu_) {
688 if(
fmu)
fmu->setParent(
this);
695 Function<double(double)> *
fmu;
710 if(
fmu)
fmu->setParent(
this);
729 virtual int getFrictionDirections() {
return 2; }
730 virtual void initializeUsingXML(xercesc::DOMElement *element);
731 virtual std::string
getType()
const {
return "SpatialStribeckImpact"; }
734 double getFrictionCoefficient(
double gd) {
return (*
fmu)(gd); }
736 void setFrictionFunction(Function<
double(
double)> *fmu_) {
738 if(
fmu)
fmu->setParent(
this);
745 Function<double(double)> *
fmu;
766 virtual bool isActive(
double g,
double gTol) {
return g<=gTol; }
767 virtual bool remainsActive(
double s,
double sTol) {
return s<=sTol; }
793 virtual bool isActive(
double g,
double gTol) {
return g < gTol ?
true :
false; }
794 virtual bool remainsActive(
double s,
double sTol) {
return true; }
809 void setDebuglevel(
int debuglevel) {
812 void setLCPSolvingStrategy(LinearComplementarityProblem::LCPSolvingStrategy strategy) {
813 LCP.setStrategy(strategy);
815 void setLCPJacobianType(LinearComplementarityProblem::JacobianType type) {
816 LCP.setJacobianType(type);
828 void addContourCoupling(Contour *contour1, Contour *contour2, InfluenceFunction *fct);
854 virtual double computeInfluenceCoefficient(std::vector<std::vector<SingleContact> > & contacts,
const std::pair<int, int> & contactIndex);
863 virtual double computeInfluenceCoefficient(std::vector<std::vector<SingleContact> > & contacts,
const std::pair<int, int> & contactIndex,
const std::pair<int, int> & couplingContactIndex);
868 virtual void computeMaterialConstant();
881 LinearComplementarityProblem
LCP;
935 InfluenceFunction *
function;
939 std::vector<xmlInfo> referenceXML;
961 virtual bool isActive(
double g,
double gTol) {
return true; }
962 virtual bool remainsActive(
double s,
double sTol) {
return true; }
969 virtual std::string
getType()
const {
return "RegularizedBilateralConstraint"; }
976 int getFrictionDirections() {
return 1; }
977 bool isSticking(
const fmatvec::Vec& s,
double sTol) {
return fabs(s(0)) <= sTol; }
978 bool isSetValued()
const {
return false; }
979 virtual void initializeUsingXML(xercesc::DOMElement *element);
986 int getFrictionDirections() {
return 2; }
987 bool isSticking(
const fmatvec::Vec& s,
double sTol) {
return nrm2(s(0,1)) <= sTol; }
988 bool isSetValued()
const {
return false; }
989 virtual void initializeUsingXML(xercesc::DOMElement *element);
virtual ~PlanarStribeckFriction()
destructor
Definition: constitutive_laws.h:458
basic force law on acceleration level for constraint description
Definition: constitutive_laws.h:41
virtual ~UnilateralConstraint()
destructor
Definition: constitutive_laws.h:159
virtual bool isSetValued() const
Definition: constitutive_laws.h:200
virtual bool isFulfilled(double la, double gdn, double tolla, double tolgd, double laMin=0)
Definition: constitutive_laws.h:91
virtual void updateInfluenceMatrix(std::vector< std::vector< SingleContact > > &contacts)
updates the influence matrix C
Definition: constitutive_laws.cc:922
LinearComplementarityProblem LCP
variable for the LCP
Definition: constitutive_laws.h:881
PlanarStribeckFriction(Function< double(double)> *fmu_=NULL)
constructor
Definition: constitutive_laws.h:451
basic planar friction force law on velocity level for constraint description
Definition: constitutive_laws.h:581
void setFrictionForceFunction(Function< fmatvec::Vec(fmatvec::Vec, double)> *frictionForceFunc_)
Set the friction force function for use in regularisized constitutive friction laws The first input p...
Definition: constitutive_laws.h:355
virtual std::string getType() const
Definition: constitutive_laws.h:300
virtual void updatePossibleContactPoints(const std::vector< std::vector< SingleContact > > &contacts)
saves all possible contacts in a vector
Definition: constitutive_laws.cc:911
virtual ~FrictionForceLaw()
destructor
Definition: constitutive_laws.h:321
virtual double project(double la, double gdn, double r, double laMin=0)
prox function evaluation
Definition: constitutive_laws.h:80
double matConst
parameter for guessing starting values of contact force (average eigenvalue of influence-matrix) ...
Definition: constitutive_laws.h:916
virtual ~GeneralizedImpactLaw()
destructor
Definition: constitutive_laws.h:223
Function< double(double)> * fmu
Definition: constitutive_laws.h:695
void init(Element::InitStage stage)
plots time series header
Definition: constitutive_laws.h:718
void updateRigidBodyGap(const std::vector< std::vector< SingleContact > > &contacts)
update the rigid body distances (gaps) for the single contacts
Definition: constitutive_laws.cc:945
Vector< Ref, double > Vec
Definition: constitutive_laws.h:934
virtual void initializeUsingXML(xercesc::DOMElement *element)
initialize the force law using XML
Definition: constitutive_laws.cc:895
Function< double(double, double)> * forceFunc
force function for a regularized contact law
Definition: constitutive_laws.h:141
virtual bool isSetValued() const
Definition: constitutive_laws.h:168
virtual std::string getType() const
Definition: constitutive_laws.h:431
basic bilateral force law on acceleration level for constraint description
Definition: constitutive_laws.h:182
virtual ~FrictionImpactLaw()
destructor
Definition: constitutive_laws.h:557
virtual std::string getType() const
Definition: constitutive_laws.h:345
virtual std::string getType() const
Definition: constitutive_laws.h:681
SpatialCoulombImpact(double mu_=0)
constructor
Definition: constitutive_laws.h:622
bool matConstSetted
parameter to save if matConst has been computed already
Definition: constitutive_laws.h:921
virtual bool isActive(double g, double gTol)
decides, if force law is active
Definition: constitutive_laws.h:195
basic planar friction force law on acceleration level for constraint description
Definition: constitutive_laws.h:369
UnilateralNewtonImpact(double epsilon_=0)
constructor
Definition: constitutive_laws.h:251
GeneralizedForceLaw(Function< double(double, double)> *forceFunc_=NULL)
constructor
Definition: constitutive_laws.h:46
FrictionImpactLaw()
constructor
Definition: constitutive_laws.h:552
FrictionForceLaw(Function< fmatvec::Vec(fmatvec::Vec, double)> *frictionForceFunc_=NULL)
constructor
Definition: constitutive_laws.h:313
virtual ~BilateralImpact()
destructor
Definition: constitutive_laws.h:292
void init(Element::InitStage stage)
plots time series header
Definition: constitutive_laws.h:668
planar Stribeck friction force law on acceleration level for constraint description ...
Definition: constitutive_laws.h:446
virtual ~PlanarCoulombFriction()
destructor
Definition: constitutive_laws.h:379
virtual std::string getType() const
Definition: constitutive_laws.h:602
virtual double computeInfluenceCoefficient(std::vector< std::vector< SingleContact > > &contacts, const std::pair< int, int > &contactIndex)
computes the coupling factor for the influence matrix on one contact point (two contours) ...
Definition: constitutive_laws.cc:956
basic class of MBSim mainly for plotting
Definition: element.h:58
virtual void initializeUsingXML(xercesc::DOMElement *element)
initialize the force law using XML
Definition: constitutive_laws.h:102
virtual ~RegularizedBilateralConstraint()
destructor
Definition: constitutive_laws.h:958
virtual std::string getType() const
Definition: constitutive_laws.h:527
virtual ~SpatialStribeckFriction()
destructor
Definition: constitutive_laws.h:509
basic bilateral force law on velocity level for constraint description
Definition: constitutive_laws.h:282
void addContourCoupling(Contour *contour1, Contour *contour2, InfluenceFunction *fct)
add a function that represents the coupling between two contours
Definition: constitutive_laws.cc:839
virtual double project(double la, double gdn, double r, double laMin=0)
prox function evaluation
Definition: constitutive_laws.cc:93
std::vector< std::pair< int, int > > possibleContactPoints
saves the indices of all active contacts in pairs
Definition: constitutive_laws.h:876
SpatialStribeckImpact(Function< double(double)> *fmu_=NULL)
constructor
Definition: constitutive_laws.h:709
int DEBUGLEVEL
print INFO output?
Definition: constitutive_laws.h:932
virtual double project(double la, double gdn, double r, double laMin=0)
prox function evaluation
Definition: constitutive_laws.cc:142
basic regularized bilateral force law on acceleration level for constraint description ...
Definition: constitutive_laws.h:948
UnilateralConstraint()
constructor
Definition: constitutive_laws.h:154
basic unilateral force law on acceleration level for constraint description
Definition: constitutive_laws.h:149
basic unilateral force law on velocity level for constraint description
Definition: constitutive_laws.h:246
void init(Element::InitStage stage)
plots time series header
Definition: constitutive_laws.h:460
fmatvec::SymMat C
Influence matrix between contact points.
Definition: constitutive_laws.h:886
spatial Stribeck friction force law on acceleration level for constraint description ...
Definition: constitutive_laws.h:497
Definition: constitutive_laws.h:972
virtual std::string getType() const
Definition: constitutive_laws.h:572
SpatialCoulombFriction(double mu_=0)
constructor
Definition: constitutive_laws.h:412
virtual void computeSmoothForces(std::vector< std::vector< SingleContact > > &contacts)
computes the normal forces for smooth constitutive law on every contact point
Definition: constitutive_laws.cc:811
virtual void computeSmoothForces(std::vector< std::vector< SingleContact > > &contact)
computes the normal forces for smooth constitutive law on every contact point
Definition: constitutive_laws.cc:1044
Matrix< General, Ref, Ref, double > Mat
void init(Element::InitStage stage)
plots time series header
Definition: constitutive_laws.h:56
virtual ~BilateralConstraint()
destructor
Definition: constitutive_laws.h:192
virtual std::string getType() const
Definition: constitutive_laws.h:638
RegularizedUnilateralConstraint(Function< double(double, double)> *forceFunc_=NULL)
constructor
Definition: constitutive_laws.h:758
virtual ~SpatialCoulombFriction()
destructor
Definition: constitutive_laws.h:417
basic friction force law on velocity level for constraint description
Definition: constitutive_laws.h:547
InitStage
The stages of the initialization.
Definition: element.h:97
basic friction force law on acceleration level for constraint description
Definition: constitutive_laws.h:308
virtual ~GeneralizedForceLaw()
destructor
Definition: constitutive_laws.h:54
basic spatial friction force law on velocity level for constraint description
Definition: constitutive_laws.h:617
RegularizedBilateralConstraint(Function< double(double, double)> *forceFunc_=NULL)
constructor
Definition: constitutive_laws.h:953
virtual bool isFulfilled(double la, double gdn, double tolla, double tolgd, double laMin=0)
Definition: constitutive_laws.cc:157
basic regularized unilateral force law on acceleration level for constraint description ...
Definition: constitutive_laws.h:753
basic force law on velocity level for constraint description
Definition: constitutive_laws.h:213
std::map< std::pair< Contour *, Contour * >, InfluenceFunction * > influenceFunctions
saves the influence functions for a pair of contours. The key is the pair of contour names ...
Definition: constitutive_laws.h:896
BilateralConstraint()
constructor
Definition: constitutive_laws.h:187
virtual bool isFulfilled(double la, double gdn, double tolla, double tolgd, double laMin=0)
Definition: constitutive_laws.cc:115
GeneralizedImpactLaw()
constructor
Definition: constitutive_laws.h:218
double operator()(double g, double gd)
Definition: constitutive_laws.h:118
virtual void initializeUsingXML(xercesc::DOMElement *element)
initialize the force law using XML
Definition: constitutive_laws.cc:803
virtual bool isActive(double g, double gTol)
decides, if force law is active
Definition: constitutive_laws.h:162
void init(Element::InitStage stage)
plots time series header
Definition: constitutive_laws.h:511
double gLim
relative contact point distance limit under which damping is active
Definition: constitutive_laws.h:911
virtual bool isSetValued() const
Definition: constitutive_laws.h:768
double dampingCoefficient
coefficient for possible contact damping
Definition: constitutive_laws.h:906
Function< double(double)> * fmu
Definition: constitutive_laws.h:539
UnilateralNewtonImpact(double epsilon_, double gd_limit_)
constructor
Definition: constitutive_laws.h:256
virtual ~UnilateralNewtonImpact()
destructor
Definition: constitutive_laws.h:261
virtual bool isActive(double g, double gTol)
decides, if force law is active
Definition: constitutive_laws.h:766
Function< double(double)> * fmu
Definition: constitutive_laws.h:488
virtual std::string getType() const
Definition: constitutive_laws.h:393
virtual ~PlanarCoulombImpact()
destructor
Definition: constitutive_laws.h:591
virtual void init(InitStage stage)
plots time series header
Definition: element.cc:70
virtual std::string getType() const
Definition: constitutive_laws.h:270
virtual bool isSetValued() const
Definition: constitutive_laws.h:963
Function< double(double)> * fmu
Definition: constitutive_laws.h:745
virtual ~RegularizedUnilateralConstraint()
destructor
Definition: constitutive_laws.h:763
PlanarStribeckImpact(Function< double(double)> *fmu_=NULL)
constructor
Definition: constitutive_laws.h:659
virtual void initializeContourCouplings(Contact *parent)
initialize all saved contour couplings in the map
Definition: constitutive_laws.cc:831
basic spatial friction force law on acceleration level for constraint description ...
Definition: constitutive_laws.h:407
virtual std::string getType() const
Definition: constitutive_laws.h:969
SpatialStribeckFriction(Function< double(double)> *fmu_=NULL)
constructor
Definition: constitutive_laws.h:502
fmatvec::Vec solution0
Solution of the last time, where contact has to be solved (can be used as starting guess for the next...
Definition: constitutive_laws.h:901
PlanarCoulombImpact(double mu_=0)
constructor
Definition: constitutive_laws.h:586
virtual ~PlanarStribeckImpact()
destructor
Definition: constitutive_laws.h:666
virtual ~SpatialCoulombImpact()
destructor
Definition: constitutive_laws.h:627
BilateralImpact()
constructor
Definition: constitutive_laws.h:287
virtual std::string getType() const
Definition: constitutive_laws.h:205
virtual void computeSmoothForces(std::vector< std::vector< SingleContact > > &contacts)
computes the normal forces for smooth constitutive law on every contact point
Definition: constitutive_laws.cc:854
MaxwellUnilateralConstraint(const double &damping=0, const double &gapLimit=0)
constructor
Definition: constitutive_laws.cc:821
virtual std::string getType() const
Definition: constitutive_laws.h:108
spatial Stribeck friction force law on velocity level for constraint description
Definition: constitutive_laws.h:704
void init(Element::InitStage stage)
plots time series header
Definition: constitutive_laws.h:323
virtual std::string getType() const
Definition: constitutive_laws.h:173
virtual ~MaxwellUnilateralConstraint()
destructor
Definition: constitutive_laws.cc:826
virtual bool isActive(double g, double gTol)
decides, if force law is active
Definition: constitutive_laws.h:793
A force law that computes the normal force of many contact kinematics based on the Maxwell-Force-Law...
Definition: constitutive_laws.h:780
virtual bool isSetValued() const =0
virtual std::string getType() const
Definition: constitutive_laws.h:476
PlanarCoulombFriction(double mu_=0)
constructor
Definition: constitutive_laws.h:374
virtual bool isActive(double g, double gTol)
decides, if force law is active
Definition: constitutive_laws.h:69
virtual std::string getType() const
Definition: constitutive_laws.h:731
planar Stribeck friction force law on velocity level for constraint description
Definition: constitutive_laws.h:654
virtual std::string getType() const
Definition: constitutive_laws.h:236
virtual bool isActive(double g, double gTol)
decides, if force law is active
Definition: constitutive_laws.h:961
virtual ~SpatialStribeckImpact()
destructor
Definition: constitutive_laws.h:716
void setForceFunction(Function< double(double, double)> *forceFunc_)
Set the force function for use in regularisized constitutive laws The first input parameter to the fo...
Definition: constitutive_laws.h:132
virtual void computeSmoothForces(std::vector< std::vector< SingleContact > > &contact)
computes the normal forces for smooth constitutive law on every contact point
Definition: constitutive_laws.h:125
virtual void initializeUsingXML(xercesc::DOMElement *element)
initialize the force law using XML
Definition: constitutive_laws.cc:1036
virtual bool isSetValued() const
Definition: constitutive_laws.h:795
Definition: constitutive_laws.h:982