New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[SofaCore SofaConstraint] Update FreeMotionAnimationLoop so that it can compute a linearised version of the constraint force. #459
Commits on Jan 5, 2018
-
-
UPDATE: FreeMotionAnimationLoop. Add option to keep the linearisation of
the mappings around the freemotion. It is disabled by default, so no change is actually introduced from the exisiting behavior.
-
UPDATE: SofaCore. ConstraintSolver API. Make it possible for derived
classes to redefine the state vector allocation for the constraint lambdas and the corrective displacements.
-
UPDATE : Perform ConstraintCorrection computations only if it belongs…
… to an active node git-svn-id: https://code.insimo.fr/svn/IS/ISSofa/branches/ISSofa@10524 f8a8aa39-ebdb-4476-bae3-08f188f1b544
-
WARNING CHANGE: SofaCore ConstraintCorrection API.
- ConstraintParams need to be given the VecId where the constraint jacobian must be accumulated, and where the constraint lambda must be stored. Right now the current API mostly assumes that the constraint lambda and the constraint force are stored in pre defined VecIds. It was therefore difficult to know where these quantities are stored, because it was dependent both on the constraint solver, and the constraint correction scheme used in the scene. - Separate method which computes the corrective displacement coming from the constraint force from the methods which apply this corrective displacement. This is anyway what was silently done in the concrete implementations of the ConstraintCorrection API.
-
WARNING CHANGE: SofaCore. LinearSolver API
- give read only access to the MultiMatrixAccessor used to construct the system matrix, if the solver actually builds it. - rename applyContactForce method into applyConstraintForce method. - also change the signature of the method, and document its responsibility, which is bounded to: -- projecting the constraint force in the motion space provided the constraint jacobian is known (which should be the case at the time this method is called) -- computing dx = A^-1 . J^t . lambda and storing the result in the VecId passed as a parameter.
-
CHANGE: SofaSimulation MechanicalIntegrateConstraintsVisitor
The visitor must be passed the location of the VecId where the corrective motion coming from the influence of the constraint force is stored. On overall this Visitor can be tuned to work along with the parameters of the methods of the ConstraintCorrection API.
-
UPDATE: SofaBaseLinearSolver. Reflect changes in LinearSolver API in
MatrixLinearSolver.
-
UPDATE: SofaConstraint. Reflect changes in ConstraintCorrection API.
Also, PrecomputedConstraintCorrection can no longer rely on the former API methods to compute the list of "active dofs" (which correponds to the sparsity pattern of the constraint jacobian). Instead this list is computed whenever the update of the compliance matrix is done.
-
UPDATE: SofaConstraint. FreeMotionAnimationLoop constructs a
ConstraintParams object that contains the necessary information to retrieve: - where to read the free motion of the dofs ( as done before ) - where the constraint jacobian must be accumulated - where the constraint force must be stored
-
UPDATE: SofaConstraint. Update GenericConstraintSolver with changes
introduced in ConstraintCorrection API. It also allocates dynamic VecId for constraint jacobian and constraint lambda.
-
UPDATE: SofaCore. BaseConstraint storeLambda method, to store the
constraint lambda at the constraint dofs level.
-
ADD: [SofaConstraint]. UniformConstraint, a component that shares sim…
…ilarities with UniformCompliance from the Compliant plugin. The idea is to be able to express constraint equations compatible with the Constraint / ConstraintCorrection API with mappings that give a strain measure and its jacobian.
-
UPDATE: [SofaConstraint]. UniformConstraint to compute the constraint…
… rhs as vfree + pos * invDt when solving constraints for velocity corrective motion.
-
UPDATE: [SofaConstraint]. UniformConstraint can use a constraint reso…
…lution which factors the compliance block to perform a direct solving of the constraint blocK. The default mode stays the iterative one where each line is treated one after the other.
-
FIX: [SofaConstraint]. UniformConstraint to take into account the con…
…straint index offset when filling the constraint jacobian matrix.
-
-
ADD: [SofaConstraint]. First draft for GeometricStiffnessForceField, …
…which assembles the geometric stiffness computed by a mapping inside the mechanical matrix. Does not support multimappings.
-
[SofaConstraint] MOVE: GeometricStiffnessForceField renamed to
MappingGeometricStiffnessForcefield
-
UPDATE: SofaBaseMechanics. Specify name and owner for dynamic data
created when allocating new state vectors.
-
CHANGE: SofaCore ConstraintCorrection API.
ConstraintCorrection constructor argument nbLines, which specify the size of the block this ConstraintCorrection is dealing with, is a non optional argument. Also prefer the use of setters / getters when specifying the nbLines and tolerance, since it is then much easier to track down mutable vs non mutable operations on a ConstraintCorrection object.
-
-
FIX: SofaConstraint. GenericConstraintSolver to also clear the lambda
and dx of the mapped dofs.
-
UPDATE: SofaConstraint. GenericConstraintSolver block gauss seidel to
support arbitrary block size. Previous implementation would crash silently (out of bounds in a raw buffer) if the block size was above 6.
-
UPDATE: SofaConstraint. GenericConstraintSolver to store the constraint
lambdas at the constraint dofs level and accumulate it back to the independent degrees of freedom, after the corrective motion has been applied.
-
UPDATE: SofaConstraint. FreeMotionAnimationLoop to assemble
geometric stiffness when available.
-
UPDATE: SofaConstraint FreeMotionAnimationLoop. xfree is computed only
when required, ie when solving constraints in position. Removed linearizeMappingsAroundFreeMotion option, since only one mapping linearization per time step is computed.
-
FIX: SofaBaseCollision. Fix typo GenerateStirngID -> GenerateStringID.
A personal opinion though, I find these random generated strings to be very confusing and ugly.
-
-
UPDATE: SofaMeshCollision. Some missing applyJ calls in the
ContactMappers when propagating the free motions to contact dofs.
-
UPDATE: SofaConstraint. UnilateralInteractionConstraint constraint
velocity violation computation.
-
UPDATE: SofaConstraint. BilateralInteractionConstraint constraint
velocity violation evaluation.
-
UPDATE: SofaConstraint. BilateralConstraintResolution inverse compliance
computation in the general case ( arbitrary number of lines ) using LDLT decomposition provided by Eigen library.
-
FIX: SofaMiscMapping. DistanceMapping to support cumulative write when
accumulating MapMapSparseMatrix of child dofs.
-
ADD: InextensiblePendulum which is inspired by the CompliantPendulum
example from the CompliantPlugin. It shows that the formulation which uses a linearisation of the constraint force during the time step offers superior stability.
-
[SofaConstraint] UPDATE MINOR: Renamed GeometricStiffnessForceField
component into MappingGeometricStiffnessForceField to be consistent with the filename
-
[SofaCore] CHANGE: LinearSolver buildComplianceMatrix API method requ…
…ires a ConstraintParams so that it can retrieve MatrixDerivID which specifies for each state the location of the constraint jacobian (in a MatrixDeriv form) to use to build the compliance matrix.
-
[SofaCore] CHANGE: BaseMechanicalState API
resetConstraint and getConstraintJacobian must be passed a ConstraintParams which is used internally to retrieve which allocated MatrixDeriv to use.
-
[SofaSimulationCore] UPDATE: Reflect API changes in visitors.
Essentially it means that MechanicalResetConstraintVisitor and MechanicalGetConstraintJacobianVisitor must be passed a pointer to a ConstraintParams object.
-
[SofaBaseLinearSolver] UPDATE: reflect API change in MatrixLinearSolver.
MechanicalGetConstraintJacobianVisitor must be constructed with the ConstraintParams object that the buildComplianceMatrix receives as a parameter.
-
[SofaBaseMechanics] UPDATE: Reflect API changes in MechanicalObject.
resetConstraint and getConstraintJacobian method are passed a ConstraintParams which must be used to know which allocated MatrixDeriv to use internally by these methods. This contrast with the previous implementation whereby a fixed MatrixDerivId was used.
-
[SofaConstraint] UPDATE: Reflect changes in API.
- buildComplianceMatrix must be passed a ConstraintParams object which has the MatrixDerivId that can be used to retrieve which allocated MatrixDeriv contains the jacobian of the constraints. - MechanicalResetConstraintVisitor uses the ConstraintParams to know which allocated MatrixDeriv to clear.
-
[SofaGeneralAnimationLoop] UPDATE: MechanicalResetConstraintVisitor m…
…ust be constructed with a ConstraintParams.
-
UPDATE: ConstraintParams define the location of the constraint jacobi…
…an by the means of a MultiMatrixDerivId instead of a ConstMultiMatrixDerivId since some visitors can need to have a write access to this location. Accumulation of the constraint directions towards independant dofs being the main reason for this change.
-
-
[SofaConstraint] UPDATE: The id of the state vector which contains the
constraint direction can be retrieved from the ConstraintParams.
-
[SofaCore] UPDATE: ConstraintParams default constructor uses the thread
local default instance of ExecParams.
-
[SofaConstraint] UPDATE: FreeMotionAnimationLoop to leave the
ConstraintParams constraint jacobian location to its default value.
-
[SofaConstraint] UPDATE: Remove references to MatrixDerivId::holonomi…
…cC(). The MatrixDerivId for the constraint jacobian must be retrieved through a ConstraintParams object.
Commits on Feb 9, 2018
-
Merge remote-tracking branch 'sofa-framework/master' into insimo_free…
…motion # Conflicts: # modules/SofaConstraint/GenericConstraintCorrection.cpp # modules/SofaConstraint/GenericConstraintCorrection.h
-
Commits on Feb 13, 2018
Commits on Apr 13, 2018
Commits on May 10, 2018
Commits on May 18, 2018
-
FIX one crash and the added warnings
One scene was crashing in SensableEmulation plugin : testOmniDriverEmu.scn I fixed it by adding the option : solveVelocityConstraintFirst="true" Fixed added warnings - in GenericConstraintSolver.cpp line 368 none of the function parameter (cParams, res1 and res2) were unused. - in GenericConstraintCorrection.cpp line 277 the complianceFactor is not used.
-