16 #ifndef SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H 17 #define SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H 148 const std::vector<MlcpConstraintType>& constraintsType,
double subStep,
149 int constraintID,
int matrixEntryForConstraintID);
154 const std::vector<MlcpConstraintType>& constraintsType,
157 double& convergence_criteria,
158 bool& signoriniVerified,
bool& signoriniValid);
163 const std::vector<MlcpConstraintType>& constraintsType,
double subStep,
164 double constraint_convergence_criteria[MLCP_NUM_CONSTRAINT_TYPES],
double& convergence_criteria,
165 bool& signoriniVerified);
170 const std::vector<MlcpConstraintType>& constraintsType,
171 double subStep,
double convergence_criteria,
172 bool signorini_verified,
int nbLoop);
175 typedef Eigen::Matrix<double, Eigen::Dynamic, Eigen::Dynamic>
Matrix;
176 typedef Eigen::Matrix<double, Eigen::Dynamic, 1>
Vector;
194 #endif // SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H void setEpsilonConvergence(double val)
Definition: MlcpGaussSeidelSolver.h:84
bool isCatchingExplodingConvergenceCriteria() const
Definition: MlcpGaussSeidelSolver.h:112
Definition: DriveElementFromInputBehavior.cpp:27
MlcpGaussSeidelSolver(double epsilonConvergence, double contactTolerance, unsigned int maxIterations)
Definition: MlcpGaussSeidelSolver.h:61
bool solve(const MlcpProblem &problem, MlcpSolution *solution)
MLCP_GaussSeidel::solve Resolution of a given MLCP (Gauss Seidel iterative solver) ...
Definition: MlcpGaussSeidelSolver.cpp:47
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: MlcpGaussSeidelSolver.h:175
double getEpsilonConvergence() const
Definition: MlcpGaussSeidelSolver.h:80
A solver for mixed LCP problems using the Gauss-Seidel iterative method.
Definition: MlcpGaussSeidelSolver.h:47
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
Definition: MlcpProblem.h:63
Definition: MlcpConstraintType.h:44
void setContactTolerance(double val)
Definition: MlcpGaussSeidelSolver.h:92
virtual ~MlcpGaussSeidelSolver()
Definition: MlcpGaussSeidelSolver.h:72
unsigned int m_maxIterations
Definition: MlcpGaussSeidelSolver.h:182
Matrix m_lhsEnforcedLocalSystem
Definition: MlcpGaussSeidelSolver.h:187
void setCatchingExplodingConvergenceCriteria(bool val)
Definition: MlcpGaussSeidelSolver.h:116
bool m_catchExplodingConvergenceCriteria
Definition: MlcpGaussSeidelSolver.h:183
double m_substepRatio
Definition: MlcpGaussSeidelSolver.h:181
double m_epsilonConvergence
Definition: MlcpGaussSeidelSolver.h:179
void setSubstepRatio(double val)
Definition: MlcpGaussSeidelSolver.h:100
void setMaxIterations(unsigned int val)
Definition: MlcpGaussSeidelSolver.h:108
bool isVerbose() const
Definition: MlcpGaussSeidelSolver.h:120
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
Definition: MlcpSolution.h:35
MlcpGaussSeidelSolver()
Definition: MlcpGaussSeidelSolver.h:50
double getSubstepRatio() const
Definition: MlcpGaussSeidelSolver.h:96
static double defaultContactTolerance()
Definition: MlcpGaussSeidelSolver.h:134
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > Matrix
Definition: MlcpProblem.h:62
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
Definition: MlcpGaussSeidelSolver.h:176
The description of a solution to a mixed linear complementarity problem.
Definition: MlcpSolution.h:33
This class provides a solver interface for mixed linear complementarity problems. ...
Definition: MlcpSolver.h:30
int m_numEnforcedAtomicConstraints
Definition: MlcpGaussSeidelSolver.h:186
void calculateConvergenceCriteria(int n, const MlcpProblem::Matrix &A, int nbColumnInA, const MlcpProblem::Vector &b, const MlcpSolution::Vector &initialGuess_and_solution, const std::vector< MlcpConstraintType > &constraintsType, double subStep, double constraint_convergence_criteria[MLCP_NUM_CONSTRAINT_TYPES], double &convergence_criteria, bool &signoriniVerified, bool &signoriniValid)
Definition: MlcpGaussSeidelSolver.cpp:250
double getContactTolerance() const
Definition: MlcpGaussSeidelSolver.h:88
void computeEnforcementSystem(int n, const MlcpProblem::Matrix &A, int nbColumnInA, const MlcpProblem::Vector &b, const MlcpSolution::Vector &initialGuess_and_solution, const MlcpProblem::Vector &frictionCoefs, const std::vector< MlcpConstraintType > &constraintsType, double subStep, int constraintID, int matrixEntryForConstraintID)
Definition: MlcpGaussSeidelSolver.cpp:424
void setVerbose(bool val)
Definition: MlcpGaussSeidelSolver.h:124
Vector m_rhsEnforcedLocalSystem
Definition: MlcpGaussSeidelSolver.h:188
static double defaultEpsilonConvergence()
Definition: MlcpGaussSeidelSolver.h:130
double m_contactTolerance
Definition: MlcpGaussSeidelSolver.h:180
A description of an MLCP (mixed linear complementarity problem, or mixed LCP) system to be solved...
Definition: MlcpProblem.h:57
bool m_verbose
Definition: MlcpGaussSeidelSolver.h:184
static int defaultMaxIterations()
Definition: MlcpGaussSeidelSolver.h:138
void doOneIteration(int n, const MlcpProblem::Matrix &A, int nbColumnInA, const MlcpProblem::Vector &b, MlcpSolution::Vector *initialGuess_and_solution, const MlcpProblem::Vector &frictionCoefs, const std::vector< MlcpConstraintType > &constraintsType, double subStep, double constraint_convergence_criteria[MLCP_NUM_CONSTRAINT_TYPES], double &convergence_criteria, bool &signoriniVerified)
Definition: MlcpGaussSeidelSolver.cpp:735
unsigned int getMaxIterations() const
Definition: MlcpGaussSeidelSolver.h:104
void printViolationsAndConvergence(int n, const MlcpProblem::Matrix &A, int nbColumnInA, const MlcpProblem::Vector &b, const MlcpSolution::Vector &initialGuess_and_solution, const std::vector< MlcpConstraintType > &constraintsType, double subStep, double convergence_criteria, bool signorini_verified, int nbLoop)
Definition: MlcpGaussSeidelSolver.cpp:1601