SOFA API  1a4bb3e7
Open source framework for multi-physics simuation
sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager > Class Template Reference

#include <SSORPreconditioner.h>

Inheritance diagram for sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >:

Detailed Description

template<class TMatrix, class TVector, class TThreadManager = NoThreadManager>
class sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >

Linear system solver / preconditioner based on Successive Over Relaxation (SSOR).

If the matrix is decomposed as $A = D + L + L^T$, this solver computes

Classes

class  SSORPreconditionerInvertData
 

Public Attributes

sofa::core::objectmodel::lifecycle::RemovedData f_verbose {this, "v23.12", "v24.06", "verbose", "This Data is no longer used"}
 
Data< double > f_omega
 Omega coefficient. More...
 

Public Member Functions

 SOFA_CLASS (SOFA_TEMPLATE3(SSORPreconditioner, TMatrix, TVector, TThreadManager), SOFA_TEMPLATE3(sofa::component::linearsolver::MatrixLinearSolver, TMatrix, TVector, TThreadManager))
 
void solve (Matrix &M, Vector &x, Vector &b) override
 
void invert (Matrix &M) override
 
MatrixInvertDatacreateInvertData () override
 
void parse (core::objectmodel::BaseObjectDescription *arg) override
 
void solve (Matrix &M, Vector &z, Vector &r)
 
void solve (Matrix &M, Vector &z, Vector &r)
 
- Public Member Functions inherited from sofa::component::linearsolver::MatrixLinearSolver< TMatrix, TVector, NoThreadManager >
void resetSystem ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void resetSystem ()
 
void resizeSystem (Size n)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void resizeSystem (Size)
 
void setSystemMBKMatrix (const core::MechanicalParams *mparams)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void setSystemMBKMatrix (const core::MechanicalParams *mparams)
 
void rebuildSystem (SReal, SReal)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void rebuildSystem (SReal massFactor, SReal forceFactor)
 
void setSystemLHVector (core::MultiVecDerivId v)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void setSystemLHVector (core::MultiVecDerivId v)
 
void applySystemSolution ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void applySystemSolution ()
 
void applyConstraintForce (const sofa::core::ConstraintParams *, sofa::core::MultiVecDerivId, const linearalgebra::BaseVector *)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void applyConstraintForce (const sofa::core::ConstraintParams *, sofa::core::MultiVecDerivId, const linearalgebra::BaseVector *)
 
void computeResidual (const core::ExecParams *, linearalgebra::BaseVector *)
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void computeResidual (const core::ExecParams *params, linearalgebra::BaseVector *f)
 
GraphScatteredVectorcreatePersistentVector ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API GraphScatteredVectorcreatePersistentVector ()
 
linearalgebra::BaseMatrixgetSystemBaseMatrix ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API linearalgebra::BaseMatrixgetSystemBaseMatrix ()
 
linearalgebra::BaseVectorgetSystemRHBaseVector ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API linearalgebra::BaseVectorgetSystemRHBaseVector ()
 
linearalgebra::BaseVectorgetSystemLHBaseVector ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API linearalgebra::BaseVectorgetSystemLHBaseVector ()
 
void checkLinearSystem ()
 
SOFA_COMPONENT_LINEARSOLVER_ITERATIVE_API void checkLinearSystem ()
 
bool addJMInvJtLocal (GraphScatteredMatrix *M, MatrixLinearSolver< GraphScatteredMatrix, GraphScatteredVector, NoThreadManager >::ResMatrixType *result, const MatrixLinearSolver< GraphScatteredMatrix, GraphScatteredVector, NoThreadManager >::JMatrixType *J, const SReal fact)
 

Protected Member Functions

 SSORPreconditioner ()
 

Attribute details

◆ f_omega

template<class TMatrix , class TVector , class TThreadManager = NoThreadManager>
Data<double> sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::f_omega

Omega coefficient.

◆ f_verbose

template<class TMatrix , class TVector , class TThreadManager = NoThreadManager>
sofa::core::objectmodel::lifecycle::RemovedData sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::f_verbose {this, "v23.12", "v24.06", "verbose", "This Data is no longer used"}

Constructor details

◆ SSORPreconditioner()

template<class TMatrix , class TVector , class TThreadManager >
sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::SSORPreconditioner
protected

Function details

◆ createInvertData()

template<class TMatrix , class TVector , class TThreadManager = NoThreadManager>
MatrixInvertData* sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::createInvertData ( )
inlineoverride

◆ invert()

template<class TMatrix , class TVector , class TThreadManager >
void sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::invert ( Matrix M)
override

◆ parse()

template<class TMatrix , class TVector , class TThreadManager >
void sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::parse ( core::objectmodel::BaseObjectDescription arg)
override

◆ SOFA_CLASS()

template<class TMatrix , class TVector , class TThreadManager = NoThreadManager>
sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::SOFA_CLASS ( SOFA_TEMPLATE3(SSORPreconditioner< TMatrix, TVector, TThreadManager >, TMatrix, TVector, TThreadManager)  ,
SOFA_TEMPLATE3(sofa::component::linearsolver::MatrixLinearSolver, TMatrix, TVector, TThreadManager)   
)

◆ solve() [1/3]

template<class TMatrix , class TVector , class TThreadManager >
void sofa::component::linearsolver::preconditioner::SSORPreconditioner< TMatrix, TVector, TThreadManager >::solve ( Matrix M,
Vector x,
Vector b 
)
override

◆ solve() [2/3]

◆ solve() [3/3]