23#include "mbsim/links/floating_frame_link.h"
27 class GeneralizedForceLaw;
28 class GeneralizedImpactLaw;
29 class FrictionForceLaw;
30 class FrictionImpactLaw;
55 void updatelaF()
override { (this->*updatelaF_)(); updlaF =
false; }
56 void updatelaM()
override { (this->*updatelaM_)(); updlaM =
false; }
63 void (
Joint::*updatelaF_)();
64 void (
Joint::*updatelaM_)();
65 void updateh(
int i=0)
override;
66 void updateW(
int i=0)
override;
67 void updateg()
override;
68 void updategd()
override;
69 void updatewb()
override;
70 void updatexd()
override;
76 void calccorrSize(
int j)
override;
77 void calcxSize()
override {
if(integrateGeneralizedRelativeVelocityOfRotation)
xSize = momentDir.cols(); }
78 void init(
InitStage stage,
const InitConfigSet &config)
override;
82 bool isActive()
const override {
return true; }
109 void setIntegrateGeneralizedRelativeVelocityOfRotation(
bool integrateGeneralizedRelativeVelocityOfRotation_) { integrateGeneralizedRelativeVelocityOfRotation = integrateGeneralizedRelativeVelocityOfRotation_; }
111 enum class AngleMode {
115 void setAngleMode(AngleMode angleMode_) { angleMode = angleMode_; }
117 fmatvec::VecV evalGeneralizedRelativePositionOfRotation()
override;
119 void initializeUsingXML(xercesc::DOMElement *element)
override;
147 bool integrateGeneralizedRelativeVelocityOfRotation{
false};
149 AngleMode angleMode { AngleMode::smallAngles };
151 bool disableAngleWarning {
false };
153 fmatvec::Mat3xV RF, RM;
154 fmatvec::RangeV iFM, iMM;
161 void updateb()
override;
163 void setBody(
Body* body_) { body = body_; }
164 void init(
InitStage stage,
const InitConfigSet &config)
override;
base class for all mechanical bodies with mass and generalised coordinates
Definition: body.h:49
InitStage
The stages of the initialization.
Definition: element.h:62
std::string name
name of element
Definition: element.h:260
floating frame link
Definition: floating_frame_link.h:32
fmatvec::Mat3xV forceDir
directions of force and moment in frame of reference
Definition: floating_frame_link.h:80
basic force law on acceleration level for constraint description
Definition: generalized_force_law.h:34
basic force law on velocity level for constraint description
Definition: generalized_impact_law.h:32
bool isSetValued() const override
asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore s...
Definition: joint.h:165
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: joint.cc:563
void calcbSize() override
calculates size of rfactors
Definition: joint.cc:552
Joint contraint.
Definition: joint_constraint.h:37
class for connections: constraints on frames
Definition: joint.h:42
void solveImpactsFixpointSingle() override
Definition: joint.cc:217
void setMomentDirection(const fmatvec::Mat3xV &md)
Definition: joint.h:107
bool isSingleValued() const override
asks the link if it contains single valued force laws that contribute to the right-hand side vector h
Definition: joint.cc:213
void calcgSize(int j) override
calculates size of relative distances
Definition: joint.cc:107
void checkImpactsForTermination() override
verify underlying force laws on velocity level concerning given tolerances
Definition: joint.cc:443
void init(InitStage stage, const InitConfigSet &config) override
plots time series header
Definition: joint.cc:123
void solveConstraintsFixpointSingle() override
Definition: joint.cc:241
void solveImpactsRootFinding() override
Definition: joint.cc:313
bool isActive() const override
Definition: joint.h:82
void setForceDirection(const fmatvec::Mat3xV &fd)
Definition: joint.h:102
GeneralizedImpactLaw * fifl
Definition: joint.h:135
void calcgdSize(int j) override
calculates size of gap velocities
Definition: joint.cc:111
void solveConstraintsRootFinding() override
Definition: joint.cc:337
void calcrFactorSize(int j) override
calculates size of rfactors
Definition: joint.cc:115
void solveConstraintsGaussSeidel() override
Definition: joint.cc:289
~Joint() override
destructor
Definition: joint.cc:40
void solveImpactsGaussSeidel() override
Definition: joint.cc:265
GeneralizedForceLaw * fml
Definition: joint.h:130
bool isSetValued() const override
asks the link if it contains force laws that contribute to the lagrange multiplier and is therefore s...
Definition: joint.cc:209
Joint(const std::string &name="")
constructor
Definition: joint.h:48
GeneralizedForceLaw * ffl
Definition: joint.h:125
void jacobianConstraints() override
computes JACOBIAN and mass action matrix of nonlinear contact equations
Definition: joint.cc:361
void calclaSize(int j) override
calculates size of contact force parameters
Definition: joint.cc:103
void updaterFactors() override
update relaxation factors for contact equations
Definition: joint.cc:420
GeneralizedImpactLaw * fiml
Definition: joint.h:140
void checkConstraintsForTermination() override
verify underlying force laws concerning given tolerances
Definition: joint.cc:473
void jacobianImpacts() override
computes JACOBIAN and mass action matrix of nonlinear contact equations on velocity level
Definition: joint.cc:391
fmatvec::Vec gdn
relative velocity and acceleration after an impact for event driven scheme summarizing all possible c...
Definition: joint.h:145
bool gActiveChanged() override
Definition: joint.h:83
int xSize
size and local index of order one parameters
Definition: link.h:479
namespace MBSim
Definition: bilateral_constraint.cc:30