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:
|
| 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 |
|
| 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 Transformation & | getActualTetraRotation (Index index) |
|
const Transformation & | getInitialTetraRotation (Index index) |
|
const MaterialStiffness & | getMaterialStiffness (TetrahedronID tetraId) |
|
const StrainDisplacement & | getStrainDisplacement (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) |
|
| 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 |
|
| 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) |
|
| 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::BaseMatrix * | getComplianceMatrix (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) |
|
| SOFA_ABSTRACT_CLASS (StateAccessor, objectmodel::BaseObject) |
|
virtual const MultiLink< StateAccessor, BaseMechanicalState, BaseLink::FLAG_DUPLICATE >::Container & | getMechanicalStates () const |
|
| 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) |
|
Base * | findLinkDestClass (const BaseClass *destType, const std::string &path, const BaseLink *link) override |
|
virtual std::string | getPathName () const override |
|
SReal | getTime () const |
|
const BaseContext * | getContext () const |
|
BaseContext * | getContext () |
|
const BaseObject * | getMaster () const |
|
BaseObject * | getMaster () |
|
const VecSlaves & | getSlaves () const |
|
BaseObject * | getSlave (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 |
|
virtual const BaseClass * | getClass () 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::TagSet & | getTags () 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=" ") |
|
BaseData * | findData (const std::string &name) const |
|
std::vector< BaseData * > | findGlobalField (const std::string &name) const |
|
BaseLink * | findLink (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 VecData & | getDataFields () const |
|
const MapData & | getDataAliases () const |
|
const VecLink & | getLinks () const |
|
const MapLink & | getLinkAliases () 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::TagSet & | getTags () 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 |
|
| SOFA_ABSTRACT_CLASS (SOFA_TEMPLATE(SingleStateAccessor, DataTypes), StateAccessor) |
|
MechanicalState< DataTypes > * | getMState () |
|
const MechanicalState< DataTypes > * | getMState () const |
|
|
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 |
|
| 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 |
|
void | checkPoissonRatio () |
|
void | checkYoungModulus () |
|
Real | getVecRealInElement (sofa::Size elementId, const Data< VecReal > &data, Real defaultValue) const |
|
| ForceField (MechanicalState< DataTypes > *mm=nullptr) |
|
| ~ForceField () override |
|
| BaseForceField () |
|
| ~BaseForceField () override=default |
|
| StateAccessor () |
|
| ~StateAccessor () override=default |
|
| 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) |
|
| 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) |
|
virtual | ~IntrusiveObject ()=default |
|
| SingleStateAccessor (MechanicalState< DataTypes > *mm=nullptr) |
|
| ~SingleStateAccessor () override=default |
|
| TaskSchedulerUser () |
|
void | initTaskScheduler () |
|
void | reinitTaskScheduler () |
|
void | stopTaskSchduler () |
|