|
Caribou
|
Defines a traction (tractive force) field.
A traction is a force applied to a surface region (planar discretization such as triangle or quad elements). It does not take into account the surface normal, but instead follows a force direction explicitly defined in the input parameters of the component.
This component allows to apply the total tractive force from a set of smaller load increments following a linear slope until the total load is reach, or apply all the load at once.
| DataTypes | The datatype of the coordinates/derivatives vectors (3D float vector, 3D double vector, 2D float vector or 2D double vector). |
#include <TractionForce.h>
Public Types | |
| typedef sofa::defaulttype::Vec3Types | DataTypes |
| typedef DataTypes::VecCoord | VecCoord |
| typedef DataTypes::VecDeriv | VecDeriv |
| typedef DataTypes::Coord | Coord |
| typedef DataTypes::Deriv | Deriv |
| typedef Coord::value_type | Real |
| typedef sofa::defaulttype::Mat< 3, 3, Real > | Mat33 |
| template<int nRows, int Options = 0> | |
| using | Vector = Eigen::Matrix< Real, nRows, 1, Options > |
| template<int nRows> | |
| using | MapVector = Eigen::Map< const Vector< nRows, Eigen::ColMajor > > |
| using | Triange = TriangleSetTopologyContainer::Triangle |
| using | Quad = QuadSetTopologyContainer::Quad |
| using | MechanicalStateLink = SingleLink< TractionForce, MechanicalState< DataTypes >, BaseLink::FLAG_STRONGLINK > |
Public Member Functions | |
| SOFA_CLASS (TractionForce, SOFA_TEMPLATE(sofa::core::behavior::ForceField, sofa::defaulttype::Vec3Types)) | |
| void | init () override |
| void | reset () override |
| void | addForce (const sofa::core::MechanicalParams *mparams, Data< VecDeriv > &d_f, const Data< VecCoord > &d_x, const Data< VecDeriv > &d_v) override |
| void | addDForce (const sofa::core::MechanicalParams *, Data< VecDeriv > &, const Data< VecDeriv > &) override |
| void | addKToMatrix (sofa::defaulttype::BaseMatrix *, SReal, unsigned int &) override |
| void | draw (const sofa::core::visual::VisualParams *vparams) override |
| void | handleEvent (sofa::core::objectmodel::Event *event) override |
| SReal | getPotentialEnergy (const sofa::core::MechanicalParams *, const Data< VecDeriv > &) const override |
| void | increment_load (Deriv traction_increment_per_unit_area) |
| Increment the traction load by an increment of traction_increment (vector of tractive force per unit area). | |
Public Attributes | |
| Data< Deriv > | d_traction |
| Tractive force per unit area. | |
| Data< sofa::helper::vector< Triange > > | d_triangles |
| List of triangles (ex: [t1p1 t1p2 t1p3 t2p1 t2p2 t2p3 ...]) | |
| Data< sofa::helper::vector< Quad > > | d_quads |
| List of quads (ex: [q1p1 q1p2 q1p3 q1p4 q2p1 q2p2 q2p3 ...]) | |
| Data< Real > | d_slope |
| Slope of force increment, the resulting traction will be p^t = p^{t-1} + p*slope. If slope = 0, the force will be constant. | |
| MechanicalStateLink | d_mechanicalState |
| Mechanical state that contains the triangle positions. | |
| Data< unsigned int > | d_number_of_steps_before_increment |
| Number of steps to wait before a load increment. This can be used to simulate a Newton-Raphson solver. | |
| Data< bool > | d_draw_faces |
| Draw the faces on which the traction will be applied. | |
| Data< VecDeriv > | d_nodal_forces |
| Data< Real > | d_total_load |
| Tractive force for each nodes of the surface on which we are applying the traction. More... | |
| Data<Real> SofaCaribou::forcefield::TractionForce::d_total_load |
Tractive force for each nodes of the surface on which we are applying the traction.
Current total load applied (tractive force vector times the total surface area)