SOFA plugin: MultiThreading  master
Open source framework for multi-physics simuation
multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes > Class Template Reference

#include <ParallelTetrahedronFEMForceField.h>

Inheritance diagram for multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >:

Detailed Description

template<class DataTypes>
class multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >

Parallel implementation of TetrahedronFEMForceField

This implementation is the most efficient when: 1) the number of tetrahedron is large (> 1000)

The following methods are executed in parallel:

  • addDForce
  • addKToMatrix

Protected Attributes

std::map< std::thread::id, VecDerivm_threadLocal_df
 
- Protected Attributes inherited from sofa::component::solidmechanics::fem::elastic::TetrahedronFEMForceField< DataTypes >
VecMaterialStiffness materialsStiffnesses
 
VecStrainDisplacement strainDisplacements
 
type::vector< Transformationrotations
 
type::vector< VoigtTensor_plasticStrains
 
SReal m_potentialEnergy
 
const VecElement * _indexedElements
 
bool needUpdateTopology
 
TetrahedronFEMForceFieldInternalData< DataTypesdata
 
Real m_restVolume
 
sofa::helper::ColorMapm_VonMisesColorMap
 
Transformation InvalidTransform
 
type::fixed_array< Coord, 4 > InvalidCoords
 
MaterialStiffness InvalidMaterialStiffness
 
StrainDisplacement InvalidStrainDisplacement
 
std::vector< sofa::type::Vec3m_renderedPoints
 
std::vector< sofa::type::RGBAColorm_renderedColors
 
type::vector< type::fixed_array< Coord, 4 > > _rotatedInitialElements
 
type::vector< Transformation_initialRotations
 
type::vector< unsigned int > _rotationIdx
 
type::vector< Transformation_initialTransformation
 
type::MatNoInit< 3, 3, Real > R0
 
CompressedMatrix _stiffnesses
 
- Protected Attributes inherited from sofa::core::behavior::StateAccessor
MultiLink< StateAccessor, BaseMechanicalState, BaseLink::FLAG_DUPLICATE > l_mechanicalStates
 
- Protected Attributes inherited from sofa::core::objectmodel::BaseObject
SingleLink< BaseObject, BaseContext, BaseLink::FLAG_DOUBLELINK > l_context
 
LinkSlaves l_slaves
 
SingleLink< BaseObject, BaseObject, BaseLink::FLAG_DOUBLELINK > l_master
 
- Protected Attributes inherited from sofa::core::objectmodel::Base
std::map< std::string, sofa::core::DataTrackerCallbackm_internalEngine
 
VecData m_vecData
 
MapData m_aliasData
 
VecLink m_vecLink
 
MapLink m_aliasLink
 
- Protected Attributes inherited from sofa::core::behavior::SingleStateAccessor< class >
SingleLink< SingleStateAccessor< DataTypes >, MechanicalState< DataTypes >, BaseLink::FLAG_STRONGLINK > mstate
 
- Protected Attributes inherited from multithreading::TaskSchedulerUser
sofa::simulation::TaskSchedulerm_taskScheduler { nullptr }
 

Public Member Functions

 SOFA_CLASS (SOFA_TEMPLATE(ParallelTetrahedronFEMForceField, DataTypes), SOFA_TEMPLATE(sofa::component::solidmechanics::fem::elastic::TetrahedronFEMForceField, DataTypes))
 
void init () override
 
void addForce (const sofa::core::MechanicalParams *mparams, DataVecDeriv &d_f, const DataVecCoord &d_x, const DataVecDeriv &d_v) override
 
void addDForce (const sofa::core::MechanicalParams *mparams, DataVecDeriv &d_df, const DataVecDeriv &d_dx) override
 
void addKToMatrix (sofa::linearalgebra::BaseMatrix *mat, SReal kFactor, unsigned int &offset) override
 
- Public Member Functions inherited from sofa::component::solidmechanics::fem::elastic::TetrahedronFEMForceField< DataTypes >
 SOFA_CLASS2 (SOFA_TEMPLATE(TetrahedronFEMForceField, DataTypes), SOFA_TEMPLATE(BaseLinearElasticityFEMForceField, DataTypes), SOFA_TEMPLATE(core::behavior::RotationFinder, DataTypes))
 
Real getRestVolume ()
 
void getRotation (Mat33 &R, Index nodeIdx)
 
void getRotations (VecReal &vecR)
 
void getRotations (linearalgebra::BaseMatrix *rotations, int offset=0) override
 
const type::vector< Mat33 > & getRotations () override
 
void setComputeGlobalMatrix (bool val)
 
const TransformationgetActualTetraRotation (Index index)
 
const TransformationgetInitialTetraRotation (Index index)
 
const MaterialStiffnessgetMaterialStiffness (TetrahedronID tetraId)
 
const StrainDisplacementgetStrainDisplacement (TetrahedronID tetraId)
 
const type::fixed_array< Coord, 4 > & getRotatedInitialElements (TetrahedronID tetraId)
 
void setMethod (std::string methodName)
 
void setMethod (int val)
 
void setUpdateStiffnessMatrix (bool val)
 
void reset () override
 
void init () override
 
void reinit () override
 
void addForce (const core::MechanicalParams *mparams, DataVecDeriv &d_f, const DataVecCoord &d_x, const DataVecDeriv &d_v) override
 
void addDForce (const core::MechanicalParams *mparams, DataVecDeriv &d_df, const DataVecDeriv &d_dx) override
 
SReal getPotentialEnergy (const core::MechanicalParams *, const DataVecCoord &x) const override
 
void addKToMatrix (sofa::linearalgebra::BaseMatrix *m, SReal kFactor, unsigned int &offset) override
 
void buildStiffnessMatrix (core::behavior::StiffnessMatrix *matrix) override
 
void buildDampingMatrix (core::behavior::DampingMatrix *) final
 
void draw (const core::visual::VisualParams *vparams) override
 
void computeBBox (const core::ExecParams *params, bool onlyVisible) override
 
void getElementStiffnessMatrix (Real *stiffness, Index nodeIdx)
 
- Public Member Functions inherited from sofa::component::solidmechanics::fem::elastic::BaseLinearElasticityFEMForceField< class >
 SOFA_CLASS (SOFA_TEMPLATE(BaseLinearElasticityFEMForceField, DataTypes), SOFA_TEMPLATE(core::behavior::ForceField, DataTypes))
 
 BaseLinearElasticityFEMForceField ()
 
void setPoissonRatio (Real val)
 
void setYoungModulus (Real val)
 
Real getYoungModulusInElement (sofa::Size elementId) const
 
Real getPoissonRatioInElement (sofa::Size elementId) const
 
- Public Member Functions inherited from ForceField< DataTypes >
 SOFA_CLASS2 (SOFA_TEMPLATE(ForceField, DataTypes), BaseForceField, SOFA_TEMPLATE(SingleStateAccessor, DataTypes))
 
void addForce (const MechanicalParams *mparams, MultiVecDerivId fId) override
 
virtual void addForce (const MechanicalParams *, DataVecDeriv &f, const DataVecCoord &x, const DataVecDeriv &v)=0
 
void addDForce (const MechanicalParams *mparams, MultiVecDerivId dfId) override
 
virtual void addDForce (const MechanicalParams *mparams, DataVecDeriv &df, const DataVecDeriv &dx)=0
 
virtual void addClambda (const MechanicalParams *mparams, DataVecDeriv &df, const DataVecDeriv &lambda, SReal cFactor)=delete
 
virtual void addClambda (const MechanicalParams *, MultiVecDerivId, MultiVecDerivId, SReal)=delete
 
SReal getPotentialEnergy (const MechanicalParams *mparams) const override
 
virtual SReal getPotentialEnergy (const MechanicalParams *, const DataVecCoord &x) const =0
 
void addKToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix) override
 
void addBToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix) override
 
virtual void addBToMatrix (sofa::linearalgebra::BaseMatrix *matrix, SReal bFact, unsigned int &offset)
 
void addToMatrix (sofa::linearalgebra::BaseMatrix *bm, unsigned offset, const IndexArray &nodeIndex, const ElementMat &em, SReal scale)
 
void addForce (const MechanicalParams *mparams, MultiVecDerivId fId) override
 
virtual void addForce (const MechanicalParams *, DataVecDeriv &f, const DataVecCoord &x, const DataVecDeriv &v)=0
 
void addDForce (const MechanicalParams *mparams, MultiVecDerivId dfId) override
 
virtual void addDForce (const MechanicalParams *mparams, DataVecDeriv &df, const DataVecDeriv &dx)=0
 
virtual void addClambda (const MechanicalParams *mparams, DataVecDeriv &df, const DataVecDeriv &lambda, SReal cFactor)=delete
 
virtual void addClambda (const MechanicalParams *, MultiVecDerivId, MultiVecDerivId, SReal)=delete
 
SReal getPotentialEnergy (const MechanicalParams *mparams) const override
 
virtual SReal getPotentialEnergy (const MechanicalParams *, const DataVecCoord &x) const =0
 
void addKToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix) override
 
void addBToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix) override
 
virtual void addBToMatrix (sofa::linearalgebra::BaseMatrix *matrix, SReal bFact, unsigned int &offset)
 
void addToMatrix (sofa::linearalgebra::BaseMatrix *bm, unsigned offset, const IndexArray &nodeIndex, const ElementMat &em, SReal scale)
 
- Public Member Functions inherited from sofa::core::behavior::BaseForceField
 SOFA_ABSTRACT_CLASS (BaseForceField, StateAccessor)
 
bool insertInNode (objectmodel::BaseNode *node) override
 
bool removeInNode (objectmodel::BaseNode *node) override
 
virtual void addForce (const MechanicalParams *mparams, MultiVecDerivId fId)=0
 
virtual void addDForce (const MechanicalParams *mparams, MultiVecDerivId dfId)=0
 
virtual void addMBKdx (const MechanicalParams *mparams, MultiVecDerivId dfId)
 
virtual SReal getPotentialEnergy (const MechanicalParams *mparams=mechanicalparams::defaultInstance()) const=0
 
virtual void addKToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix)=0
 
virtual void addBToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix)
 
virtual void addMBKToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix)
 
virtual const sofa::linearalgebra::BaseMatrixgetComplianceMatrix (const MechanicalParams *)=delete
 
virtual void addClambda (const MechanicalParams *, MultiVecDerivId, MultiVecDerivId, SReal)=delete
 
virtual void addForce (const MechanicalParams *mparams, MultiVecDerivId fId)=0
 
virtual void addDForce (const MechanicalParams *mparams, MultiVecDerivId dfId)=0
 
virtual void addMBKdx (const MechanicalParams *mparams, MultiVecDerivId dfId)
 
virtual SReal getPotentialEnergy (const MechanicalParams *mparams=mechanicalparams::defaultInstance()) const=0
 
virtual void addKToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix)=0
 
virtual void addBToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix)
 
virtual void addMBKToMatrix (const MechanicalParams *mparams, const sofa::core::behavior::MultiMatrixAccessor *matrix)
 
- Public Member Functions inherited from sofa::core::behavior::StateAccessor
 SOFA_ABSTRACT_CLASS (StateAccessor, objectmodel::BaseObject)
 
virtual const MultiLink< StateAccessor, BaseMechanicalState, BaseLink::FLAG_DUPLICATE >::Container & getMechanicalStates () const
 
- Public Member Functions inherited from sofa::core::objectmodel::BaseObject
 SOFA_CLASS (BaseObject, Base)
 
void setSrc (const std::string &v, std::vector< std::string > *attributeList=nullptr)
 
void setSrc (const std::string &v, const BaseObject *loader, std::vector< std::string > *attributeList=nullptr)
 
BasefindLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override
 
virtual std::string getPathName () const override
 
SReal getTime () const
 
const BaseContextgetContext () const
 
BaseContextgetContext ()
 
const BaseObjectgetMaster () const
 
BaseObjectgetMaster ()
 
const VecSlavesgetSlaves () const
 
BaseObjectgetSlave (const std::string &name) const
 
virtual void addSlave (BaseObject::SPtr s)
 
virtual void removeSlave (BaseObject::SPtr s)
 
virtual void handleTopologyChange (core::topology::Topology *t)
 
void parse (BaseObjectDescription *arg) override
 
virtual void bwdInit ()
 
void updateInternal ()
 
virtual void storeResetState ()
 
virtual void cleanup ()
 
SReal getTime () const
 
- Public Member Functions inherited from sofa::core::objectmodel::Base
virtual const BaseClassgetClass () const
 
void addDeprecatedAttribute (lifecycle::DeprecatedData *attribute)
 
void addUpdateCallback (const std::string &name, std::initializer_list< BaseData * > inputs, std::function< sofa::core::objectmodel::ComponentState(const DataTracker &)> function, std::initializer_list< BaseData * > outputs)
 
void addOutputsToCallback (const std::string &name, std::initializer_list< BaseData * > outputs)
 
const std::string & getName () const
 
void setName (const std::string &n)
 
void setName (const std::string &n, int counter)
 
std::string getTypeName () const
 
virtual std::string getClassName () const
 
virtual std::string getTemplateName () const final
 
std::string getNameSpaceName () const
 
void setDefinitionSourceFileName (const std::string &sourceFileName)
 
const std::string & getDefinitionSourceFileName () const
 
void setDefinitionSourceFilePos (const int)
 
int getDefinitionSourceFilePos () const
 
void setInstanciationSourceFileName (const std::string &sourceFileName)
 
const std::string & getInstanciationSourceFileName () const
 
void setInstanciationSourceFilePos (const int)
 
int getInstanciationSourceFilePos () const
 
void addMessage (const sofa::helper::logging::Message &m) const
 
size_t countLoggedMessages (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
const std::deque< sofa::helper::logging::Message > & getLoggedMessages () const
 
const std::string getLoggedMessagesAsString (sofa::helper::logging::Message::TypeSet t=sofa::helper::logging::Message::AnyTypes) const
 
void clearLoggedMessages () const
 
bool notMuted () const
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 
virtual bool parseField (const std::string &attribute, const std::string &value)
 
virtual bool hasField (const std::string &attribute) const
 
void parseFields (const std::list< std::string > &str)
 
virtual void parseFields (const std::map< std::string, std::string * > &str)
 
void writeDatas (std::map< std::string, std::string * > &str)=delete
 
void writeDatas (std::ostream &out, const std::string &separator=" ")
 
BaseDatafindData (const std::string &name) const
 
std::vector< BaseData * > findGlobalField (const std::string &name) const
 
BaseLinkfindLink (const std::string &name) const
 
std::vector< BaseLink * > findLinks (const std::string &name) const
 
virtual void updateLinks (bool logErrors=true)
 
BaseData::BaseInitData initData (::sofa::core::objectmodel::Data< T > *field, const char *name, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags)
 
BaseData::BaseInitData initData (Data< T > *field, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
Data< T >::InitData initData (Data< T > *field, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void addData (BaseData *f, const std::string &name)
 
void addData (BaseData *f)
 
void removeData (BaseData *f)
 
void addAlias (BaseData *field, const char *alias)
 
void addLink (BaseLink *l)
 
void addAlias (BaseLink *link, const char *alias)
 
const VecDatagetDataFields () const
 
const MapDatagetDataAliases () const
 
const VecLinkgetLinks () const
 
const MapLinkgetLinkAliases () const
 
virtual bool findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link)
 
bool findLinkDest (T *&ptr, const std::string &path, const BaseLink *link)
 
const sofa::core::objectmodel::TagSetgetTags () const
 
bool hasTag (Tag t) const
 
void addTag (Tag t)
 
void removeTag (Tag t)
 
ComponentState getComponentState () const
 
bool isComponentStateValid () const
 
bool isComponentStateInvalid () const
 
 SOFA_ATTRIBUTE_DEPRECATED__TOBASECONSTRAINT () virtual const behavior
 
- Public Member Functions inherited from sofa::core::behavior::SingleStateAccessor< class >
 SOFA_ABSTRACT_CLASS (SOFA_TEMPLATE(SingleStateAccessor, DataTypes), StateAccessor)
 
MechanicalState< DataTypes > * getMState ()
 
const MechanicalState< DataTypes > * getMState () const
 

Protected Member Functions

template<class Function >
void addDForceGeneric (VecDeriv &df, const VecDeriv &dx, Real kFactor, const VecElement &indexedElements, Function f)
 
void addDForceSmall (VecDeriv &df, const VecDeriv &dx, Real kFactor, const VecElement &indexedElements)
 
void addDForceCorotational (VecDeriv &df, const VecDeriv &dx, Real kFactor, const VecElement &indexedElements)
 
void drawTrianglesFromTetrahedra (const sofa::core::visual::VisualParams *vparams, bool showVonMisesStressPerElement, bool drawVonMisesStress, const VecCoord &x, const VecReal &youngModulus, bool heterogeneous, Real minVM, Real maxVM, sofa::helper::ReadAccessor< sofa::Data< sofa::type::vector< Real >>> vM) override
 
- Protected Member Functions inherited from sofa::component::solidmechanics::fem::elastic::TetrahedronFEMForceField< DataTypes >
 TetrahedronFEMForceField ()
 
 ~TetrahedronFEMForceField () override
 
void computeStrainDisplacement (StrainDisplacement &J, Coord a, Coord b, Coord c, Coord d)
 
Real peudo_determinant_for_coef (const type::Mat< 2, 3, Real > &M)
 
void computeStiffnessMatrix (StiffnessMatrix &S, StiffnessMatrix &SR, const MaterialStiffness &K, const StrainDisplacement &J, const Transformation &Rot)
 
virtual void computeMaterialStiffness (Index i, Index &a, Index &b, Index &c, Index &d)
 
void computeForce (Displacement &F, const Displacement &Depl, VoigtTensor &plasticStrain, const MaterialStiffness &K, const StrainDisplacement &J)
 
void computeForce (Displacement &F, const Displacement &Depl, const MaterialStiffness &K, const StrainDisplacement &J, SReal fact)
 
void initSmall (Index i, Index &a, Index &b, Index &c, Index &d)
 
void accumulateForceSmall (Vector &f, const Vector &p, typename VecElement::const_iterator elementIt, Index elementIndex)
 
void applyStiffnessSmall (Vector &f, const Vector &x, Index i=0, Index a=0, Index b=1, Index c=2, Index d=3, SReal fact=1.0)
 
void initLarge (Index i, Index &a, Index &b, Index &c, Index &d)
 
void computeRotationLarge (Transformation &r, const Vector &p, const Index &a, const Index &b, const Index &c)
 
void accumulateForceLarge (Vector &f, const Vector &p, typename VecElement::const_iterator elementIt, Index elementIndex)
 
void initPolar (Index i, Index &a, Index &b, Index &c, Index &d)
 
void accumulateForcePolar (Vector &f, const Vector &p, typename VecElement::const_iterator elementIt, Index elementIndex)
 
void initSVD (Index i, Index &a, Index &b, Index &c, Index &d)
 
void accumulateForceSVD (Vector &f, const Vector &p, typename VecElement::const_iterator elementIt, Index elementIndex)
 
void applyStiffnessCorotational (Vector &f, const Vector &x, Index i=0, Index a=0, Index b=1, Index c=2, Index d=3, SReal fact=1.0)
 
void handleTopologyChange () override
 
void computeVonMisesStress ()
 
bool isComputeVonMisesStressMethodSet ()
 
void computeMinMaxFromYoungsModulus ()
 
virtual void drawTrianglesFromTetrahedra (const core::visual::VisualParams *vparams, bool showVonMisesStressPerElement, bool drawVonMisesStress, const VecCoord &x, const VecReal &youngModulus, bool heterogeneous, Real minVM, Real maxVM, helper::ReadAccessor< Data< type::vector< Real >>> vM)
 
virtual void drawTrianglesFromRangeOfTetrahedra (const simulation::Range< VecElement::const_iterator > &range, const core::visual::VisualParams *vparams, bool showVonMisesStressPerElement, bool drawVonMisesStress, bool showWireFrame, const VecCoord &x, const VecReal &youngModulus, bool heterogeneous, Real minVM, Real maxVM, helper::ReadAccessor< Data< type::vector< Real >>> vM)
 
void handleEvent (core::objectmodel::Event *event) override
 
- Protected Member Functions inherited from sofa::component::solidmechanics::fem::elastic::BaseLinearElasticityFEMForceField< class >
void checkPoissonRatio ()
 
void checkYoungModulus ()
 
Real getVecRealInElement (sofa::Size elementId, const Data< VecReal > &data, Real defaultValue) const
 
- Protected Member Functions inherited from ForceField< DataTypes >
 ForceField (MechanicalState< DataTypes > *mm=nullptr)
 
 ~ForceField () override
 
- Protected Member Functions inherited from sofa::core::behavior::BaseForceField
 BaseForceField ()
 
 ~BaseForceField () override=default
 
- Protected Member Functions inherited from sofa::core::behavior::StateAccessor
 StateAccessor ()
 
 ~StateAccessor () override=default
 
- Protected Member Functions inherited from sofa::core::objectmodel::BaseObject
 BaseObject ()
 
 ~BaseObject () override
 
virtual void doUpdateInternal ()
 
void changeContextLink (BaseContext *before, BaseContext *&after)
 
void changeSlavesLink (BaseObject::SPtr ptr, std::size_t, bool add)
 
void trackInternalData (const BaseData &data)
 
void cleanTracker ()
 
bool hasDataChanged (const BaseData &data)
 
- Protected Member Functions inherited from sofa::core::objectmodel::Base
 Base ()
 
virtual ~Base ()
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
void initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags)
 
void initData0 (Data< T > *field, typename Data< T >::InitData &res, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false)
 
- Protected Member Functions inherited from sofa::core::IntrusiveObject
virtual ~IntrusiveObject ()=default
 
- Protected Member Functions inherited from sofa::core::behavior::SingleStateAccessor< class >
 SingleStateAccessor (MechanicalState< DataTypes > *mm=nullptr)
 
 ~SingleStateAccessor () override=default
 
- Protected Member Functions inherited from multithreading::TaskSchedulerUser
 TaskSchedulerUser ()
 
void initTaskScheduler ()
 
void reinitTaskScheduler ()
 
void stopTaskSchduler ()
 

Additional Inherited Members

- Public Attributes inherited from sofa::component::solidmechanics::fem::elastic::TetrahedronFEMForceField< DataTypes >
type::vector< Mat33 > m_rotations
 
Data< VecCoord > d_initialPoints
 
int method
 
Data< std::string > d_method
 
Data< VecReal > d_localStiffnessFactor
 
Data< bool > d_updateStiffnessMatrix
 
Data< bool > d_assembling
 
Data< sofa::helper::OptionsGroupd_gatherPt
 
Data< sofa::helper::OptionsGroupd_gatherBsize
 
Data< bool > d_drawHeterogeneousTetra
 
Real minYoung
 
Real maxYoung
 
type::vector< Real > elemLambda
 
type::vector< Real > elemMu
 
type::vector< Mat44 > elemShapeFun
 
Real prevMaxStress
 
Data< int > d_computeVonMisesStress
 
Data< type::vector< Real > > d_vonMisesPerElement
 
Data< type::vector< Real > > d_vonMisesPerNode
 
Data< type::vector< type::RGBAColor > > d_vonMisesStressColors
 
Real m_minVonMisesPerNode
 
Real m_maxVonMisesPerNode
 
Data< std::string > d_showStressColorMap
 
Data< float > d_showStressAlpha
 
Data< bool > d_showVonMisesStressPerNode
 
Data< bool > d_showVonMisesStressPerNodeColorMap
 
Data< bool > d_showVonMisesStressPerElement
 
Data< Real > d_showElementGapScale
 
Data< bool > d_updateStiffness
 
type::vector< type::Vec< 6, Real > > elemDisplacements
 
bool updateVonMisesStress
 
Data< Real > d_plasticMaxThreshold
 
Data< Real > d_plasticYieldThreshold
 
Data< Real > d_plasticCreep
 
- Public Attributes inherited from sofa::component::solidmechanics::fem::elastic::BaseLinearElasticityFEMForceField< class >
Data< VecReal > d_poissonRatio
 
Data< VecReal > d_youngModulus
 
SingleLink< BaseLinearElasticityFEMForceField< DataTypes >, sofa::core::topology::BaseMeshTopology, BaseLink::FLAG_STOREPATH|BaseLink::FLAG_STRONGLINK > l_topology
 
- Public Attributes inherited from sofa::core::behavior::BaseForceField
Data< SReal > rayleighStiffness
 
objectmodel::lifecycle::RemovedData isCompliance
 
- Public Attributes inherited from sofa::core::objectmodel::BaseObject
Data< bool > f_listening
 
- Public Attributes inherited from sofa::core::objectmodel::Base
std::vector< lifecycle::DeprecatedData * > m_oldAttributes
 
Data< int > d_messageLogCount
 
Data< std::string > name
 
Data< bool > f_printLog
 
Data< sofa::core::objectmodel::TagSetf_tags
 
Data< sofa::type::BoundingBoxf_bbox
 
Data< sofa::core::objectmodel::ComponentStated_componentState
 
std::string m_definitionSourceFileName
 
int m_definitionSourceFilePos
 
std::string m_instanciationSourceFileName
 
int m_instanciationSourceFilePos
 
- Public Attributes inherited from multithreading::TaskSchedulerUser
sofa::Data< int > d_nbThreads
 
sofa::Data< std::string > d_taskSchedulerType
 Type of task scheduler to use. More...
 
- Static Protected Attributes inherited from sofa::component::solidmechanics::fem::elastic::BaseLinearElasticityFEMForceField< class >
static constexpr Real defaultYoungModulusValue
 
static constexpr Real defaultPoissonRatioValue
 
- Static Public Member Functions inherited from sofa::component::solidmechanics::fem::elastic::BaseLinearElasticityFEMForceField< class >
static std::pair< Real, Real > toLameParameters (_2DMaterials, Real youngModulus, Real poissonRatio)
 
static std::pair< Real, Real > toLameParameters (_3DMaterials, Real youngModulus, Real poissonRatio)
 
- Static Public Member Functions inherited from ForceField< DataTypes >
static bool canCreate (T *&obj, objectmodel::BaseContext *context, objectmodel::BaseObjectDescription *arg)
 
static std::string shortName (const T *ptr=nullptr, objectmodel::BaseObjectDescription *arg=nullptr)
 
- Static Public Member Functions inherited from sofa::core::objectmodel::BaseObject
static bool canCreate (T *, BaseContext *, BaseObjectDescription *)
 
static T::SPtr create (T *, BaseContext *context, BaseObjectDescription *arg)
 
- Static Public Member Functions inherited from sofa::core::objectmodel::Base
static const BaseClassGetClass ()
 
static std::string shortName (const T *ptr=nullptr, BaseObjectDescription *=nullptr)
 

Attribute details

◆ m_threadLocal_df

template<class DataTypes >
std::map<std::thread::id, VecDeriv> multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::m_threadLocal_df
protected

Function details

◆ addDForce()

template<class DataTypes >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::addDForce ( const sofa::core::MechanicalParams mparams,
DataVecDeriv d_df,
const DataVecDeriv d_dx 
)
override

◆ addDForceCorotational()

template<class DataTypes >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::addDForceCorotational ( VecDeriv df,
const VecDeriv dx,
Real  kFactor,
const VecElement indexedElements 
)
protected

◆ addDForceGeneric()

template<class DataTypes >
template<class Function >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::addDForceGeneric ( VecDeriv df,
const VecDeriv dx,
Real  kFactor,
const VecElement indexedElements,
Function  f 
)
protected

◆ addDForceSmall()

template<class DataTypes >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::addDForceSmall ( VecDeriv df,
const VecDeriv dx,
Real  kFactor,
const VecElement indexedElements 
)
protected

◆ addForce()

template<class DataTypes >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::addForce ( const sofa::core::MechanicalParams mparams,
DataVecDeriv d_f,
const DataVecCoord d_x,
const DataVecDeriv d_v 
)
override

◆ addKToMatrix()

template<class DataTypes >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::addKToMatrix ( sofa::linearalgebra::BaseMatrix mat,
SReal  kFactor,
unsigned int &  offset 
)
overridevirtual

Reimplemented from ForceField< DataTypes >.

◆ drawTrianglesFromTetrahedra()

template<class DataTypes >
void multithreading::component::forcefield::solidmechanics::fem::elastic::ParallelTetrahedronFEMForceField< DataTypes >::drawTrianglesFromTetrahedra ( const sofa::core::visual::VisualParams vparams,
bool  showVonMisesStressPerElement,
bool  drawVonMisesStress,
const VecCoord x,
const VecReal youngModulus,
bool  heterogeneous,
Real  minVM,
Real  maxVM,
sofa::helper::ReadAccessor< sofa::Data< sofa::type::vector< Real >>>  vM 
)
overrideprotected

◆ init()

◆ SOFA_CLASS()