Description

Base class for all iterative solvers.

#include <ChIterativeSolverMulticore.h>

Inheritance diagram for chrono::ChIterativeSolverMulticore:
Collaboration diagram for chrono::ChIterativeSolverMulticore:

Public Member Functions

virtual double Solve (ChSystemDescriptor &sysd) override
 Each child class must define its own solve method.
 
virtual void RunTimeStep ()=0
 Similarly, the run timestep function needs to be defined.
 
virtual void ComputeImpulses ()=0
 This function computes the new velocities based on the lagrange multipliers.
 
void ComputeInvMassMatrix ()
 Compute the inverse mass matrix and the term v+M_inv*hf.
 
void ComputeMassMatrix ()
 Compute mass matrix.
 
void PerformStabilization ()
 Solves just the bilaterals so that they can be warm started.
 
real GetResidual () const
 
virtual double GetError () const override
 Return the tolerance error reached during the last solve.
 
- Public Member Functions inherited from chrono::ChIterativeSolverVI
void SetOmega (double mval)
 Set the overrelaxation factor (default: 1.0). More...
 
void SetSharpnessLambda (double mval)
 Set the sharpness factor (default: 1.0). More...
 
void SetRecordViolation (bool mval)
 Enable/disable recording of the constraint violation history. More...
 
double GetOmega () const
 Return the current value of the overrelaxation factor.
 
double GetSharpnessLambda () const
 Return the current value of the sharpness factor.
 
virtual int GetIterations () const override
 Return the number of iterations performed during the last solve.
 
const std::vector< double > & GetViolationHistory () const
 Access the vector of constraint violation history. More...
 
const std::vector< double > & GetDeltalambdaHistory () const
 Access the vector with history of maximum change in Lagrange multipliers Note that collection of constraint violations must be enabled through SetRecordViolation.
 
- Public Member Functions inherited from chrono::ChIterativeSolver
void SetMaxIterations (int max_iterations)
 Set the maximum number of iterations.
 
void SetTolerance (double tolerance)
 Set the tolerance threshold used by the stopping criteria.
 
void EnableDiagonalPreconditioner (bool val)
 Enable/disable use of a simple diagonal preconditioner (default: true). More...
 
void EnableWarmStart (bool val)
 Enable/disable warm starting by providing an initial guess (default: false). More...
 
int GetMaxIterations () const
 Get the current maximum number of iterations.
 
double GetTolerance () const
 Get the current tolerance value.
 
- Public Member Functions inherited from chrono::ChSolver
virtual Type GetType () const
 Return type of the solver.
 
virtual bool Setup (ChSystemDescriptor &sysd)
 This function does the setup operations for the solver. More...
 
void SetVerbose (bool mv)
 Set verbose output from solver.
 

Public Attributes

ChMulticoreDataManagerdata_manager
 
ChSolverMulticoresolver
 
ChSolverMulticorebilateral_solver
 

Protected Member Functions

 ChIterativeSolverMulticore (ChMulticoreDataManager *dc)
 
- Protected Member Functions inherited from chrono::ChIterativeSolverVI
void AtIterationEnd (double mmaxviolation, double mdeltalambda, unsigned int iternum)
 This method MUST be called by all iterative methods INSIDE their iteration loops (at the end). More...
 
virtual void ArchiveOUT (ChArchiveOut &marchive) override
 Method to allow serialization of transient data to archives.
 
virtual void ArchiveIN (ChArchiveIn &marchive) override
 Method to allow de-serialization of transient data from archives.
 
virtual bool SolveRequiresMatrix () const override
 Indicate whether ot not the Solve() phase requires an up-to-date problem matrix. More...
 
- Protected Member Functions inherited from chrono::ChIterativeSolver
 ChIterativeSolver (int max_iterations, double tolerance, bool use_precond, bool warm_start)
 
void SaveMatrix (ChSystemDescriptor &sysd)
 
double CheckSolution (ChSystemDescriptor &sysd, const ChVectorDynamic<> &x)
 

Protected Attributes

ChShurProductBilateral ShurProductBilateral
 
ChShurProductFEM ShurProductFEM
 
ChProjectNone ProjectNone
 
- Protected Attributes inherited from chrono::ChIterativeSolverVI
int m_iterations
 total number of iterations performed by the solver
 
double m_omega
 over-relaxation factor
 
double m_shlambda
 sharpness factor
 
bool record_violation_history
 
std::vector< double > violation_history
 
std::vector< double > dlambda_history
 
- Protected Attributes inherited from chrono::ChIterativeSolver
bool m_use_precond
 use diagonal preconditioning?
 
bool m_warm_start
 use initial guesss?
 
int m_max_iterations
 maximum number of iterations
 
double m_tolerance
 tolerance threshold in stopping criteria
 
- Protected Attributes inherited from chrono::ChSolver
bool verbose
 

Additional Inherited Members

- Public Types inherited from chrono::ChSolver
enum  Type {
  Type::PSOR = 0, Type::PSSOR, Type::PJACOBI, Type::PMINRES,
  Type::BARZILAIBORWEIN, Type::APGD, Type::ADDM, Type::SPARSE_LU,
  Type::SPARSE_QR, Type::PARDISO_MKL, Type::PARDISO_PROJECT, Type::MUMPS,
  Type::GMRES, Type::MINRES, Type::BICGSTAB, CUSTOM
}
 Available types of solvers. More...
 

The documentation for this class was generated from the following files:
  • /builds/uwsbel/chrono/src/chrono_multicore/solver/ChIterativeSolverMulticore.h
  • /builds/uwsbel/chrono/src/chrono_multicore/solver/ChIterativeSolverMulticore.cpp