23 class FrictionController;
50 Real frictionCoefficient,
Constraint solver callback interface with context and start rows for context.
Solver callback class for elementary FrictionController.
Real calculateNormalForce() const
static ContextData findContextData(const FrictionController *frictionController, const ConstraintImplementation *context)
Real calculateNormalForce(const ConstraintImplementation *context) const
virtual void postIterativeSolve(const NlmcpCallback::Args &) const override
Before direct solve, after iterative solve.
virtual void update(const NlmcpCallback::Args &args) const override
Update call when bounds and/or q may be updated given the current solution z.
static Real calculateNormalForce(const ConstraintImplementation *context, ContextData contextData)
virtual Real calculateResidual(const NlmcpCallback::Args &args) const override
Calculate residual given current solution.
virtual void onSetContext(const NlmcpCallbackSolverData &) override
Called when context constraint has been set and all data is valid.
static RangeReal calculateBound(Real normalImpact, Real frictionCoefficient, RangeReal minBound=RangeReal{ 0.0 })
FrictionControllerNlCallback(const FrictionController *frictionController)
Default constructor.
virtual Bool initialize(const NlmcpCallback::Args &args) override
This method is a test for the non-linear solver if this callback is active for non-linear solve.
Real calculateNormalImpact(const RealValarray &z) const
virtual ~FrictionControllerNlCallback()
Translational or rotational friction controller for Hinge, Prismatic and CylindricalJoint.
The agx namespace contains the dynamics/math part of the AGX Dynamics API.
std::valarray< agx::Real > RealValarray
For this module, vectors are defined using valarray.
AGXCORE_EXPORT const InvalidIndexStruct InvalidIndex
bool useSecondaryConstraint
Data from the solver the ConstraintNlmcpCallback is part of.