template<class TMatrix, class TVector>
class sofa::component::linearsystem::MatrixLinearSystem< TMatrix, TVector >
Assemble the global matrix using local matrix components
Components add their contributions directly to the global matrix, through their local matrices. Local matrices act as a proxy (they don't really store a local matrix). They have a link to the global matrix and an offset parameter to add the contribution into the right entry into the global matrix.
- Template Parameters
- 
  
    | TMatrix | The type of the data structure used to represent the global matrix. In the general cases, this type derives from sofa::linearalgebra::BaseMatrix. |  | TVector | The type of the data structure used to represent the vectors of the linear system: the right-hand side and the solution. In the general cases, this type derives from sofa::linearalgebra::BaseVector. |  
 
|  | 
|  | SOFA_CLASS (SOFA_TEMPLATE2(MatrixLinearSystem, TMatrix, TVector), SOFA_TEMPLATE2(TypedMatrixLinearSystem, TMatrix, TVector)) | 
|  | 
| const MappingGraph & | getMappingGraph () const | 
|  | 
| template<Contribution c> | 
| auto | getSharedMatrix (sofa::core::matrixaccumulator::get_component_type< c > *object, const PairMechanicalStates &pair) -> std::shared_ptr< LocalMappedMatrixType< Real > > | 
|  | 
| template<Contribution c> | 
| auto | getSharedMatrixSize (sofa::core::matrixaccumulator::get_component_type< c > *object, const PairMechanicalStates &pair) -> std::optional< type::Vec2u > | 
|  | 
| template<Contribution c> | 
| LocalMatrixMaps< c, typename MatrixLinearSystem< TMatrix, TVector >::Real > & | getLocalMatrixMap () | 
|  | 
| template<Contribution c> | 
| const LocalMatrixMaps< c, typename MatrixLinearSystem< TMatrix, TVector >::Real > & | getLocalMatrixMap () const | 
|  | 
| template<core::matrixaccumulator::Contribution c> | 
| AssemblingMappedMatrixAccumulator< c, typename MatrixLinearSystem< TMatrix, TVector >::Real > * | createLocalMappedMatrixT (sofa::core::matrixaccumulator::get_component_type< c > *object, SReal factor) | 
|  | 
|  | SOFA_CLASS (SOFA_TEMPLATE2(TypedMatrixLinearSystem, TMatrix, TVector), sofa::core::behavior::BaseMatrixLinearSystem) | 
|  | 
| virtual TMatrix * | getSystemMatrix () const | 
|  | Return the global matrix of the linear system.  More... 
 | 
|  | 
| virtual TVector * | getRHSVector () const | 
|  | Return the RHS of the linear system.  More... 
 | 
|  | 
| virtual TVector * | getSolutionVector () const | 
|  | Return the solution of the linear system.  More... 
 | 
|  | 
| linearalgebra::BaseMatrix * | getSystemBaseMatrix () const override | 
|  | Returns the system matrix as a linearalgebra::BaseMatrix*.  More... 
 | 
|  | 
| virtual void | resizeSystem (sofa::Size n) | 
|  | Set the size of the matrix to n x n, and the size of RHS and solution to n.  More... 
 | 
|  | 
| virtual void | clearSystem () | 
|  | 
| virtual void | setRHS (core::MultiVecDerivId v) | 
|  | 
| virtual void | setSystemSolution (core::MultiVecDerivId v) | 
|  | 
| virtual void | dispatchSystemSolution (core::MultiVecDerivId v) | 
|  | 
| virtual void | dispatchSystemRHS (core::MultiVecDerivId v) | 
|  | 
| core::objectmodel::BaseContext * | getSolveContext () | 
|  | 
| SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void | setRHS (core::MultiVecDerivId v) | 
|  | 
| SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void | setSystemSolution (core::MultiVecDerivId v) | 
|  | 
| SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void | dispatchSystemSolution (core::MultiVecDerivId v) | 
|  | 
| SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void | dispatchSystemRHS (core::MultiVecDerivId v) | 
|  | 
| void | setRHS (core::MultiVecDerivId v) | 
|  | 
| void | setSystemSolution (core::MultiVecDerivId v) | 
|  | 
| void | dispatchSystemSolution (core::MultiVecDerivId v) | 
|  | 
| void | dispatchSystemRHS (core::MultiVecDerivId v) | 
|  | 
|  | SOFA_ABSTRACT_CLASS (BaseMatrixLinearSystem, core::objectmodel::BaseObject) | 
|  | 
| void | buildSystemMatrix (const core::MechanicalParams *mparams) | 
|  | Construct and assemble the linear system matrix.  More... 
 | 
|  | 
| sofa::type::Vec2u | getMatrixSize () const | 
|  | 
|  | SOFA_CLASS (BaseObject, Base) | 
|  | 
| virtual void | draw (const core::visual::VisualParams *) | 
|  | Render internal data of this object, for debugging purposes.  More... 
 | 
|  | 
| virtual void | computeBBox (const core::ExecParams *, bool=false) | 
|  | 
| void | setSrc (const std::string &v, std::vector< std::string > *attributeList=nullptr) | 
|  | Sets a source Object and parses it to collect dependent Data.  More... 
 | 
|  | 
| 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 | 
|  | Return the full path name of this object.  More... 
 | 
|  | 
| virtual bool | insertInNode (BaseNode *) | 
|  | 
| virtual bool | removeInNode (BaseNode *) | 
|  | 
| SReal | getTime () const | 
|  | Current time.  More... 
 | 
|  | 
| 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 | handleEvent (Event *) | 
|  | Handle an event.  More... 
 | 
|  | 
| virtual void | handleTopologyChange () | 
|  | 
| virtual void | handleTopologyChange (core::topology::Topology *t) | 
|  | 
| void | parse (BaseObjectDescription *arg) override | 
|  | Parse the given description to assign values to this object's fields and potentially other parameters.  More... 
 | 
|  | 
| virtual void | init () | 
|  | Initialization method called at graph creation and modification, during top-down traversal.  More... 
 | 
|  | 
| virtual void | bwdInit () | 
|  | Initialization method called at graph creation and modification, during bottom-up traversal.  More... 
 | 
|  | 
| virtual void | reinit () | 
|  | Update method called when variables used in precomputation are modified.  More... 
 | 
|  | 
| void | updateInternal () | 
|  | Update method called when variables (used to compute other internal variables) are modified.  More... 
 | 
|  | 
| virtual void | storeResetState () | 
|  | Save the initial state for later uses in reset()  More... 
 | 
|  | 
| virtual void | reset () | 
|  | Reset to initial state.  More... 
 | 
|  | 
| virtual void | cleanup () | 
|  | 
| 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 | 
|  | Accessor to the object name.  More... 
 | 
|  | 
| void | setName (const std::string &n) | 
|  | Set the name of this object.  More... 
 | 
|  | 
| void | setName (const std::string &n, int counter) | 
|  | Set the name of this object, adding an integer counter.  More... 
 | 
|  | 
| std::string | getTypeName () const | 
|  | Get the type name of this object (i.e. class and template types)  More... 
 | 
|  | 
| virtual std::string | getClassName () const | 
|  | Get the class name of this object.  More... 
 | 
|  | 
| virtual std::string | getTemplateName () const final | 
|  | Get the template type names (if any) used to instantiate this object.  More... 
 | 
|  | 
| std::string | getNameSpaceName () const | 
|  | Get the template type names (if any) used to instantiate this object.  More... 
 | 
|  | 
| void | setDefinitionSourceFileName (const std::string &sourceFileName) | 
|  | Set the source filename (where the component is implemented)  More... 
 | 
|  | 
| const std::string & | getDefinitionSourceFileName () const | 
|  | Get the source filename (where the component is implemented)  More... 
 | 
|  | 
| void | setDefinitionSourceFilePos (const int) | 
|  | Set the source location (where the component is implemented)  More... 
 | 
|  | 
| int | getDefinitionSourceFilePos () const | 
|  | Get the source location (where the component is implemented)  More... 
 | 
|  | 
| 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 | 
|  | Represents the subsets the object belongs to.  More... 
 | 
|  | 
| bool | hasTag (Tag t) const | 
|  | Return true if the object belong to the given subset.  More... 
 | 
|  | 
| void | addTag (Tag t) | 
|  | Add a subset qualification to the object.  More... 
 | 
|  | 
| void | removeTag (Tag t) | 
|  | Remove a subset qualification to the object.  More... 
 | 
|  | 
| 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) | 
|  | Assign one field value (Data or Link)  More... 
 | 
|  | 
| virtual bool | hasField (const std::string &attribute) const | 
|  | Check if a given Data field or Link exists.  More... 
 | 
|  | 
| void | parseFields (const std::list< std::string > &str) | 
|  | Assign the field values stored in the given list of name + value pairs of strings.  More... 
 | 
|  | 
| virtual void | parseFields (const std::map< std::string, std::string * > &str) | 
|  | Assign the field values stored in the given map of name -> value pairs.  More... 
 | 
|  | 
| void | writeDatas (std::map< std::string, std::string * > &str)=delete | 
|  | Write the current field values to the given map of name -> value pairs.  More... 
 | 
|  | 
| 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 | 
|  | Find data fields given a name: several can be found as we look into the alias map.  More... 
 | 
|  | 
| BaseLink * | findLink (const std::string &name) const | 
|  | 
| std::vector< BaseLink * > | findLinks (const std::string &name) const | 
|  | Find link fields given a name: several can be found as we look into the alias map.  More... 
 | 
|  | 
| virtual void | updateLinks (bool logErrors=true) | 
|  | Update pointers in case the pointed-to objects have appeared.  More... 
 | 
|  | 
| template<class T > | 
| BaseData::BaseInitData | initData (::sofa::core::objectmodel::Data< T > *field, const char *name, const char *help, ::sofa::core::objectmodel::BaseData::DataFlags dataflags) | 
|  | Helper method used to initialize a data field containing a value of type T.  More... 
 | 
|  | 
| template<class T > | 
| BaseData::BaseInitData | initData (Data< T > *field, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false) | 
|  | Helper method used to initialize a data field containing a value of type T.  More... 
 | 
|  | 
| template<class T > | 
| Data< T >::InitData | initData (Data< T > *field, const T &value, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false) | 
|  | Helper method used to initialize a data field containing a value of type T.  More... 
 | 
|  | 
| void | addData (BaseData *f, const std::string &name) | 
|  | 
| void | addData (BaseData *f) | 
|  | 
| void | removeData (BaseData *f) | 
|  | Remove a data field.  More... 
 | 
|  | 
| void | addAlias (BaseData *field, const char *alias) | 
|  | Add an alias to a Data.  More... 
 | 
|  | 
| void | addLink (BaseLink *l) | 
|  | Add a link.  More... 
 | 
|  | 
| void | addAlias (BaseLink *link, const char *alias) | 
|  | Add an alias to a Link.  More... 
 | 
|  | 
| const VecData & | getDataFields () const | 
|  | Accessor to the vector containing all the fields of this object.  More... 
 | 
|  | 
| const MapData & | getDataAliases () const | 
|  | Accessor to the map containing all the aliases of this object.  More... 
 | 
|  | 
| const VecLink & | getLinks () const | 
|  | Accessor to the vector containing all the fields of this object.  More... 
 | 
|  | 
| const MapLink & | getLinkAliases () const | 
|  | Accessor to the map containing all the aliases of this object.  More... 
 | 
|  | 
| virtual bool | findDataLinkDest (BaseData *&ptr, const std::string &path, const BaseLink *link) | 
|  | 
| template<class T > | 
| bool | findLinkDest (T *&ptr, const std::string &path, const BaseLink *link) | 
|  | 
|  | 
|  | MatrixLinearSystem () | 
|  | 
| MappedMassMatrixObserver< Real > * | getMassObserver (BaseMass *mass) | 
|  | 
| template<Contribution c> | 
| void | contribute (const core::MechanicalParams *mparams, IndependentContributors &contributors) | 
|  | 
| void | assembleSystem (const core::MechanicalParams *mparams) override | 
|  | 
| void | makeLocalMatrixGroups (const core::MechanicalParams *mparams) | 
|  | 
| void | makeIndependentLocalMatrixGroups () | 
|  | 
| void | associateLocalMatrixToComponents (const core::MechanicalParams *mparams) override | 
|  | 
| void | cleanLocalMatrices () | 
|  | 
| template<Contribution c> | 
| LocalMatrixMaps< c, Real > & | getLocalMatrixMap () | 
|  | 
| template<Contribution c> | 
| const LocalMatrixMaps< c, Real > & | getLocalMatrixMap () const | 
|  | 
| template<Contribution c> | 
| void | associateLocalMatrixTo (sofa::core::matrixaccumulator::get_component_type< c > *component, const core::MechanicalParams *mparams) | 
|  | 
| template<Contribution c> | 
| BaseAssemblingMatrixAccumulator< c > * | createLocalMatrixT (sofa::core::matrixaccumulator::get_component_type< c > *object, SReal factor) | 
|  | 
| template<Contribution c> | 
| AssemblingMappedMatrixAccumulator< c, Real > * | createLocalMappedMatrixT (sofa::core::matrixaccumulator::get_component_type< c > *object, SReal factor) | 
|  | 
| virtual void | projectMappedMatrices (const core::MechanicalParams *mparams, linearalgebra::BaseMatrix *destination) | 
|  | 
| virtual void | assembleMappedMatrices (const core::MechanicalParams *mparams) | 
|  | 
| virtual void | applyProjectiveConstraints (const core::MechanicalParams *mparams) | 
|  | 
| template<Contribution c> | 
| std::shared_ptr< LocalMappedMatrixType< Real > > | getSharedMatrix (sofa::core::matrixaccumulator::get_component_type< c > *object, const PairMechanicalStates &pair) | 
|  | 
| template<Contribution c> | 
| std::optional< type::Vec2u > | getSharedMatrixSize (sofa::core::matrixaccumulator::get_component_type< c > *object, const PairMechanicalStates &pair) | 
|  | 
| template<Contribution c> | 
| void | setSharedMatrix (sofa::core::matrixaccumulator::get_component_type< c > *object, const PairMechanicalStates &pair, std::shared_ptr< LocalMappedMatrixType< Real > > matrix) | 
|  | 
| template<Contribution c> | 
| sofa::type::vector< sofa::core::matrixaccumulator::get_component_type< c > * > | getContributors () const | 
|  | Get the list of components contributing to the global matrix through the contribution type .  More...
 | 
|  | 
| void | buildGroupsOfComponentAssociatedToMechanicalStates (std::map< PairMechanicalStates, GroupOfComponentsAssociatedToAPairOfMechanicalStates > &groups) | 
|  | 
| virtual void | makeCreateDispatcher () | 
|  | 
| virtual std::shared_ptr< sofa::core::matrixaccumulator::IndexVerificationStrategy > | makeIndexVerificationStrategy (sofa::core::objectmodel::BaseObject *component) | 
|  | 
| virtual BaseMatrixProjectionMethod< LocalMappedMatrixType< Real > >::SPtr | createMatrixMapping (const PairMechanicalStates &pair) | 
|  | 
| BaseMatrixProjectionMethod< LocalMappedMatrixType< Real > > * | findProjectionMethod (const PairMechanicalStates &pair) | 
|  | 
| void | assemblePrecomputedMappedMassMatrix (const core::MechanicalParams *mparams, linearalgebra::BaseMatrix *destination) | 
|  | 
| void | recomputeMappedMassMatrix (const core::MechanicalParams *mparams, BaseMass *mass) | 
|  | 
| void | preAssembleSystem (const core::MechanicalParams *) override | 
|  | 
| virtual void | allocateSystem () | 
|  | 
| virtual void | resizeVectors (sofa::Size n) | 
|  | Set the size of RHS and solution to n.  More... 
 | 
|  | 
| void | copyLocalVectorToGlobalVector (core::MultiVecDerivId v, TVector *globalVector) | 
|  | 
| SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void | copyLocalVectorToGlobalVector (core::MultiVecDerivId v, GraphScatteredVector *globalVector) | 
|  | 
| void | copyLocalVectorToGlobalVector (core::MultiVecDerivId v, GraphScatteredVector *globalVector) | 
|  | 
|  | BaseMatrixLinearSystem () | 
|  | 
| virtual void | postAssembleSystem (const core::MechanicalParams *) | 
|  | 
|  | BaseObject () | 
|  | 
|  | ~BaseObject () override | 
|  | 
| virtual void | doUpdateInternal () | 
|  | Implementation of the internal update.  More... 
 | 
|  | 
| void | changeContextLink (BaseContext *before, BaseContext *&after) | 
|  | 
| void | changeSlavesLink (BaseObject::SPtr ptr, std::size_t, bool add) | 
|  | This method insures that slaves objects have master and context links set correctly.  More... 
 | 
|  | 
| void | trackInternalData (const BaseData &data) | 
|  | Method called to add the Data to the DataTracker (listing the Data to track)  More... 
 | 
|  | 
| void | cleanTracker () | 
|  | 
| bool | hasDataChanged (const BaseData &data) | 
|  | Method called to know if a tracked Data has changed.  More... 
 | 
|  | 
|  | Base () | 
|  | 
| virtual | ~Base () | 
|  | 
| void | initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, bool isDisplayed=true, bool isReadOnly=false) | 
|  | Helper method used by initData()  More... 
 | 
|  | 
| void | initData0 (BaseData *field, BaseData::BaseInitData &res, const char *name, const char *help, BaseData::DataFlags dataFlags) | 
|  | Helper method used by initData()  More... 
 | 
|  | 
| template<class T > | 
| 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) | 
|  | Helper method used by initData()  More... 
 | 
|  | 
| virtual | ~IntrusiveObject ()=default | 
|  |