16 #ifndef SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H 17 #define SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H 22 #include "SurgSim/Math/MlcpProblem.h" 23 #include "SurgSim/Math/MlcpSolver.h" 24 #include "SurgSim/Math/MlcpSolution.h" 75 double getEpsilonConvergence()
const;
79 void setEpsilonConvergence(
double precision);
82 double getContactTolerance()
const;
86 void setContactTolerance(
double tolerance);
89 size_t getMaxIterations()
const;
93 void setMaxIterations(
size_t maxIterations);
96 void computeEnforcementSystem(
size_t problemSize,
const MlcpProblem::Matrix& A,
97 const MlcpProblem::Vector& b,
98 const MlcpSolution::Vector& initialGuessAndSolution,
99 const std::vector<MlcpConstraintType>& constraintsType,
100 size_t constraintID,
size_t matrixEntryForConstraintID);
102 void calculateConvergenceCriteria(
size_t problemSize,
const MlcpProblem::Matrix& A,
103 const MlcpProblem::Vector& b,
104 const MlcpSolution::Vector& initialGuessAndSolution,
105 const std::vector<MlcpConstraintType>& constraintsType,
106 double constraintConvergenceCriteria[MLCP_NUM_CONSTRAINT_TYPES],
107 double* convergenceCriteria,
108 bool* validSignorini);
110 void doOneIteration(
size_t problemSize,
const MlcpProblem::Matrix& A,
111 const MlcpProblem::Vector& b,
112 MlcpSolution::Vector* initialGuessAndSolution,
113 const MlcpProblem::Vector& frictionCoefs,
114 const std::vector<MlcpConstraintType>& constraintsType,
115 double constraintConvergenceCriteria[MLCP_NUM_CONSTRAINT_TYPES],
double* convergenceCriteria,
116 bool* validSignorini);
118 void printViolationsAndConvergence(
size_t problemSize,
const MlcpProblem::Matrix& A,
119 const MlcpProblem::Vector& b,
120 const MlcpSolution::Vector& initialGuessAndSolution,
121 const std::vector<MlcpConstraintType>& constraintsType,
122 double convergenceCriteria,
123 bool validSignorini,
size_t iterations);
126 double m_epsilonConvergence;
129 double m_contactTolerance;
132 size_t m_maxIterations;
135 size_t m_numEnforcedAtomicConstraints;
138 Matrix m_lhsEnforcedLocalSystem;
141 Vector m_rhsEnforcedLocalSystem;
144 std::shared_ptr<SurgSim::Framework::Logger> m_logger;
150 #endif // SURGSIM_MATH_MLCPGAUSSSEIDELSOLVER_H Wraps glewInit() to separate the glew opengl definitions from the osg opengl definitions only imgui n...
Definition: AddRandomSphereBehavior.cpp:36
A solver for mixed LCP problems using the Gauss-Seidel iterative method.
Definition: MlcpGaussSeidelSolver.h:53
Eigen::Matrix< double, Eigen::Dynamic, 1 > Vector
A dynamic size column vector.
Definition: Vector.h:68
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
Definitions of small fixed-size square matrix types.
Definitions of small fixed-size vector types.
A description of an MLCP (mixed linear complementarity problem, or mixed LCP) system to be solved...
Definition: MlcpProblem.h:57
Eigen::Matrix< double, Eigen::Dynamic, Eigen::Dynamic > Matrix
A dynamic size matrix.
Definition: Matrix.h:65