29#ifndef HPP_CONSTRAINTS_SOLVER_BY_SUBSTITUTION_HH
30#define HPP_CONSTRAINTS_SOLVER_BY_SUBSTITUTION_HH
40namespace constraints {
86 const std::size_t& priority = 0);
113 return explicitConstraintSet().notOutDers().nbIndices();
119 template <
typename LineSearchType>
121 return solve<LineSearchType>(arg,
false, ls);
124 template <
typename LineSearchType>
126 LineSearchType ls = LineSearchType())
const {
133 return impl_solve(arg, optimize, ls);
205 return dimension() + explicit_.outDers().nbIndices();
213 explicit_.isSatisfied(arg);
222 explicit_.isSatisfied(arg, errorThreshold);
230 assert(
error.size() == dimension() + explicit_.errorSize());
232 residualError(
error.head(dimension()));
234 explicit_.isSatisfied(arg,
error.tail(explicit_.errorSize()));
235 return iterative && _explicit;
250 template <
typename LineSearchType>
252 computeValue<true>(arg);
254 computeDescentDirection();
255 lineSearch(*
this, arg, dq_);
256 explicit_.solve(arg);
267 explicit_.errorThreshold(threshold);
279 virtual std::ostream&
print(std::ostream& os)
const;
284 explicit_.solve(result);
294 template <
typename LineSearchType>
Definition: explicit-constraint-set.hh:99
Definition: by-substitution.hh:73
void computeActiveRowsOfJ(std::size_t iStack)
BySubstitution(const LiegroupSpacePtr_t &configSpace)
virtual ~BySubstitution()
Definition: by-substitution.hh:78
vector_t rightHandSide() const
void explicitConstraintSetHasChanged()
Should be called whenever explicit solver is modified.
Status solve(vectorOut_t arg, bool optimize, LineSearchType ls=LineSearchType()) const
Definition: by-substitution.hh:125
Status solve(vectorOut_t arg) const
Definition: by-substitution.hh:162
bool oneStep(vectorOut_t arg, LineSearchType &lineSearch) const
Definition: by-substitution.hh:251
Status solve(vectorOut_t arg, LineSearchType ls=LineSearchType()) const
Definition: by-substitution.hh:120
value_type errorThreshold() const
Get error threshold.
Definition: by-substitution.hh:270
bool isSatisfied(vectorIn_t arg, vectorOut_t error) const
Definition: by-substitution.hh:229
size_type errorSize() const
Definition: by-substitution.hh:204
bool getRightHandSide(const ImplicitPtr_t &constraint, vectorOut_t rhs) const
virtual std::ostream & print(std::ostream &os) const
void rightHandSide(vectorIn_t rhs)
void projectVectorOnKernel(ConfigurationIn_t from, vectorIn_t velocity, vectorOut_t result) const
bool rightHandSideFromConfig(const ImplicitPtr_t &constraint, ConfigurationIn_t config)
const NumericalConstraints_t & numericalConstraints() const
Get the numerical constraints implicit and explicit.
Definition: by-substitution.hh:99
ExplicitConstraintSet & explicitConstraintSet()
Get explicit constraint set.
Definition: by-substitution.hh:104
bool isSatisfied(vectorIn_t arg, value_type errorThreshold) const
Definition: by-substitution.hh:220
const ExplicitConstraintSet & explicitConstraintSet() const
Set explicit constraint set.
Definition: by-substitution.hh:107
segments_t implicitDof() const
size_type numberFreeVariables() const
Return the number of free variables.
Definition: by-substitution.hh:112
bool add(const ImplicitPtr_t &numericalConstraint, const std::size_t &priority=0)
virtual void projectOnKernel(ConfigurationIn_t from, ConfigurationIn_t to, ConfigurationOut_t result)
bool integrate(vectorIn_t from, vectorIn_t velocity, vectorOut_t result) const
Definition: by-substitution.hh:281
vector_t rightHandSideFromConfig(ConfigurationIn_t config)
bool isConstraintSatisfied(const ImplicitPtr_t &constraint, vectorIn_t arg, vectorOut_t error, bool &constraintFound) const
bool rightHandSide(const ImplicitPtr_t &constraint, vectorIn_t rhs)
BySubstitution(const BySubstitution &other)
void updateJacobian(vectorIn_t arg) const
BySubstitution extract(interval_t interval)
size_type rightHandSideSize() const
bool isSatisfied(vectorIn_t arg) const
Definition: by-substitution.hh:211
void errorThreshold(const value_type &threshold)
Set error threshold.
Definition: by-substitution.hh:265
Definition: hierarchical-iterative.hh:240
virtual bool integrate(vectorIn_t from, vectorIn_t velocity, vectorOut_t result) const
Status
Definition: hierarchical-iterative.hh:245
bool isSatisfied(vectorIn_t arg) const
Definition: hierarchical-iterative.hh:338
value_type errorThreshold() const
Get error threshold.
Definition: hierarchical-iterative.hh:413
#define HPP_CONSTRAINTS_DLLAPI
Definition: config.hh:88
assert(d.lhs()._blocks()==d.rhs()._blocks())
pinocchio::LiegroupSpacePtr_t LiegroupSpacePtr_t
Definition: fwd.hh:69
shared_ptr< Implicit > ImplicitPtr_t
Definition: fwd.hh:174
std::pair< value_type, value_type > interval_t
Definition: fwd.hh:84
pinocchio::size_type size_type
Definition: fwd.hh:47
pinocchio::value_type value_type
Definition: fwd.hh:48
pinocchio::vectorIn_t vectorIn_t
Definition: fwd.hh:60
pinocchio::ConfigurationIn_t ConfigurationIn_t
Definition: fwd.hh:107
pinocchio::matrix_t matrix_t
Definition: fwd.hh:56
std::vector< segment_t > segments_t
Definition: fwd.hh:85
pinocchio::vectorOut_t vectorOut_t
Definition: fwd.hh:61
std::vector< constraints::ImplicitPtr_t > NumericalConstraints_t
Definition: fwd.hh:176
pinocchio::vector_t vector_t
Definition: fwd.hh:59
pinocchio::ConfigurationOut_t ConfigurationOut_t
Definition: fwd.hh:108
#define HPP_SERIALIZABLE_SPLIT()
Definition: hierarchical-iterative.hh:70