3#include "base/src/mat.h"
6#include "shared/interface/signal.h"
22 class IContactModelMechanical;
24 class IPieceMechanical;
44 using fid_signal = shared::Signal<IContactModel *,const IContact *>;
65 virtual DVect2 getEnd1Curvature()
const=0;
67 virtual DVect2 getEnd2Curvature()
const=0;
69 virtual DVect2 getEnd1Extent()
const=0;
71 virtual DVect2 getEnd2Extent()
const=0;
73 virtual const IContactModel *
getModel()
const=0;
74 virtual IContactModel *
getModel()=0;
79 virtual IContactModel *
setModel(
const IContactModel *toClone,
bool validate=
true)=0;
140 virtual DAVect getEffectiveRotationalStiffness()
const =0;
147 virtual void setFullUpdate(
bool)=0;
148 virtual bool getFullUpdate()
const=0;
149 virtual DVect localForceFromStress(
const Mat &)
const=0;
150 virtual void setForce(
const DVect &vin) = 0;
158 return safeDiv(1.0,c->getEnd1Curvature().y()) + safeDiv(1.0,c->getEnd2Curvature().y());
161 inline double calcRSQ(
const IContactMechanical *c) {
162 return safeDiv(1.0,std::max(c->getEnd1Curvature().y(),c->getEnd2Curvature().y()));
Base class for items that will be stored in containers.
Definition ithing.h:31
Definition ipiecemechanical.h:11
uint32 TType
class type indicator
Definition basedef.h:47
DVect3 DVect
Vector of doubles, either 2D or 3D.
Definition dim.h:156
DAVect3 DAVect
Angular vector of doubles, either 2D or 3D.
Definition dim.h:164
namespace Itasca
Definition basememory.cpp:14
Itasca Library standard namespace, specific to 2D or 3D.
Definition icontactmodule.h:6
A overflow checked shorthand for static_cast<T>().