-
Notifications
You must be signed in to change notification settings - Fork 299
/
PendulumSpringsDistanceMapping.scn
78 lines (64 loc) · 4.59 KB
/
PendulumSpringsDistanceMapping.scn
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
<?xml version="1.0"?>
<!-- A pendulum made of a string of particles connected by distance constraints -->
<!-- Inspired by the CompliantPendulum.scn from the Compliant plugin -->
<Node name="Root" gravity="0 -10 0" time="0" animate="0" dt="0.01">
<Node name="plugins">
<RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
<RequiredPlugin name="Sofa.Component.Engine.Select"/> <!-- Needed to use components [PointsFromIndices] -->
<RequiredPlugin name="Sofa.Component.Engine.Transform"/> <!-- Needed to use components [TransformEngine] -->
<RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [StringMeshCreator] -->
<RequiredPlugin name="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [EigenSimplicialLDLT] -->
<RequiredPlugin name="Sofa.Component.LinearSystem"/> <!-- Needed to use components [MatrixLinearSystem] -->
<RequiredPlugin name="Sofa.Component.Mapping.NonLinear"/> <!-- Needed to use components [DistanceMapping] -->
<RequiredPlugin name="Sofa.Component.Mass"/> <!-- Needed to use components [DiagonalMass] -->
<RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
<RequiredPlugin name="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [RestShapeSpringsForceField] -->
<RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
<RequiredPlugin name="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [EdgeSetGeometryAlgorithms EdgeSetTopologyContainer] -->
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [TrailRenderer VisualStyle] -->
</Node>
<DefaultVisualManagerLoop/>
<VisualStyle displayFlags="showVisualModels showBehaviorModels showMappings showForceFields" />
<DefaultAnimationLoop/>
<StringMeshCreator name="loader" resolution="20" scale3d="1 1 1" />
<Node name="springsWithGeometricStiffness" >
<TransformEngine name="translate" input_position="@../loader.position" translation="0 0 0" />
<EulerImplicitSolver />
<MatrixLinearSystem template="CompressedRowSparseMatrixd" name="system"/>
<EigenSimplicialLDLT template="CompressedRowSparseMatrixd" linearSystem="@system"/>
<EdgeSetTopologyContainer name="topology" position="@translate.output_position" edges="@../loader.edges" />
<MechanicalObject name="defoDOF" template="Vec3" />
<EdgeSetGeometryAlgorithms drawEdges="true" />
<FixedProjectiveConstraint indices="0" />
<DiagonalMass name="mass" totalMass="1e-3"/>
<Node name="extensionsNode" >
<MechanicalObject template="Vec1" name="extensionsDOF" />
<DistanceMapping name="distanceMapping" topology="@../topology" input="@../defoDOF" output="@extensionsDOF" geometricStiffness="1"/>
<RestShapeSpringsForceField template="Vec1" stiffness="1000"/>
</Node>
<Node name="visual">
<PointsFromIndices name="points" position="@../defoDOF.position" indices="19"/>
<TrailRenderer template="Vec3" position="@points.indices_position" nbSteps="50"/>
</Node>
</Node>
<Node name="springsWithoutGeometricStiffness" >
<TransformEngine name="translate" input_position="@../loader.position" translation="0 0 -2" />
<EulerImplicitSolver />
<MatrixLinearSystem template="CompressedRowSparseMatrixd" name="system"/>
<EigenSimplicialLDLT template="CompressedRowSparseMatrixd" linearSystem="@system"/>
<EdgeSetTopologyContainer name="topology" position="@translate.output_position" edges="@../loader.edges" />
<MechanicalObject name="defoDOF" template="Vec3" />
<EdgeSetGeometryAlgorithms drawEdges="true" />
<FixedProjectiveConstraint indices="0" />
<DiagonalMass name="mass" totalMass="1e-3"/>
<Node name="extensionsNode" >
<MechanicalObject template="Vec1" name="extensionsDOF" />
<DistanceMapping name="distanceMapping" topology="@../topology" input="@../defoDOF" output="@extensionsDOF" geometricStiffness="0"/>
<RestShapeSpringsForceField template="Vec1" stiffness="1000"/>
</Node>
<Node name="visual">
<PointsFromIndices name="points" position="@../defoDOF.position" indices="19"/>
<TrailRenderer template="Vec3" position="@points.indices_position" nbSteps="50"/>
</Node>
</Node>
</Node>