Go to the documentation of this file.
16 #ifndef SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H
17 #define SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H
99 const std::vector<MlcpConstraintType>& constraintsType,
100 size_t constraintID,
size_t matrixEntryForConstraintID);
105 const std::vector<MlcpConstraintType>& constraintsType,
107 double* convergenceCriteria,
108 bool* validSignorini);
114 const std::vector<MlcpConstraintType>& constraintsType,
116 bool* validSignorini);
121 const std::vector<MlcpConstraintType>& constraintsType,
122 double convergenceCriteria,
123 bool validSignorini,
size_t iterations);
144 std::shared_ptr<SurgSim::Framework::Logger>
m_logger;
150 #endif // SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H
Matrix m_lhsEnforcedLocalSystem
The left-hand side matrix.
Definition: MlcpGaussSeidelSolver.h:138
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: MlcpProblem.h:62
bool solve(const MlcpProblem &problem, MlcpSolution *solution)
Resolution of a given MLCP (Gauss Seidel iterative solver)
Definition: MlcpGaussSeidelSolver.cpp:83
double getEpsilonConvergence() const
Definition: MlcpGaussSeidelSolver.cpp:53
void calculateConvergenceCriteria(size_t problemSize, const MlcpProblem::Matrix &A, const MlcpProblem::Vector &b, const MlcpSolution::Vector &initialGuessAndSolution, const std::vector< MlcpConstraintType > &constraintsType, double constraintConvergenceCriteria[MLCP_NUM_CONSTRAINT_TYPES], double *convergenceCriteria, bool *validSignorini)
Definition: MlcpGaussSeidelSolver.cpp:152
void computeEnforcementSystem(size_t problemSize, const MlcpProblem::Matrix &A, const MlcpProblem::Vector &b, const MlcpSolution::Vector &initialGuessAndSolution, const std::vector< MlcpConstraintType > &constraintsType, size_t constraintID, size_t matrixEntryForConstraintID)
Definition: MlcpGaussSeidelSolver.cpp:284
This class provides a solver interface for mixed linear complementarity problems.
Definition: MlcpSolver.h:30
Vector m_rhsEnforcedLocalSystem
The right-hand side vector.
Definition: MlcpGaussSeidelSolver.h:141
MlcpGaussSeidelSolver()
Constructor.
Definition: MlcpGaussSeidelSolver.cpp:30
Definition: CompoundShapeToGraphics.cpp:29
void doOneIteration(size_t problemSize, const MlcpProblem::Matrix &A, const MlcpProblem::Vector &b, MlcpSolution::Vector *initialGuessAndSolution, const MlcpProblem::Vector &frictionCoefs, const std::vector< MlcpConstraintType > &constraintsType, double constraintConvergenceCriteria[MLCP_NUM_CONSTRAINT_TYPES], double *convergenceCriteria, bool *validSignorini)
Definition: MlcpGaussSeidelSolver.cpp:465
size_t m_numEnforcedAtomicConstraints
The number of atomic constraints, aka the system size.
Definition: MlcpGaussSeidelSolver.h:135
void setContactTolerance(double tolerance)
Set the contact tolerance.
Definition: MlcpGaussSeidelSolver.cpp:68
A solver for mixed LCP problems using the Gauss-Seidel iterative method.
Definition: MlcpGaussSeidelSolver.h:53
A description of an MLCP (mixed linear complementarity problem, or mixed LCP) system to be solved.
Definition: MlcpProblem.h:57
double getContactTolerance() const
Definition: MlcpGaussSeidelSolver.cpp:63
Definition: MlcpConstraintType.h:44
size_t m_maxIterations
The maximum number of iterations.
Definition: MlcpGaussSeidelSolver.h:132
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
Definition: MlcpProblem.h:63
void printViolationsAndConvergence(size_t problemSize, const MlcpProblem::Matrix &A, const MlcpProblem::Vector &b, const MlcpSolution::Vector &initialGuessAndSolution, const std::vector< MlcpConstraintType > &constraintsType, double convergenceCriteria, bool validSignorini, size_t iterations)
Definition: MlcpGaussSeidelSolver.cpp:651
size_t getMaxIterations() const
Definition: MlcpGaussSeidelSolver.cpp:73
virtual ~MlcpGaussSeidelSolver()
Destructor.
Definition: MlcpGaussSeidelSolver.cpp:49
void setMaxIterations(size_t maxIterations)
Set the max number of iterations.
Definition: MlcpGaussSeidelSolver.cpp:78
double m_contactTolerance
The contact tolerance.
Definition: MlcpGaussSeidelSolver.h:129
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
A dynamic size column vector.
Definition: Vector.h:68
double m_epsilonConvergence
The precision.
Definition: MlcpGaussSeidelSolver.h:126
void setEpsilonConvergence(double precision)
Set the precision.
Definition: MlcpGaussSeidelSolver.cpp:58
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
Definition: MlcpSolution.h:35
std::shared_ptr< SurgSim::Framework::Logger > m_logger
The logger.
Definition: MlcpGaussSeidelSolver.h:144
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > Matrix
A dynamic size matrix.
Definition: Matrix.h:65
The description of a solution to a mixed linear complementarity problem.
Definition: MlcpSolution.h:33