Ticket #4122: DoubleMassVecLen.mo

File DoubleMassVecLen.mo, 1.0 KB (added by anonymous, 8 years ago)
Line 
1model DoubleMassVecLen
2  import Modelica.Math.Vectors;
3 
4  Real[3] x1(start = {0, 0, 0}, each fixed = true);
5  Real[3] x2(start = {len, 0, 0}, fixed = {true, true, false});
6  Real[3] v1(each start = 0, fixed = {true, true, true});
7  Real[3] v2(each start = 0, fixed = {true, true, false});
8  Real[3] fApplied1 = {0.0, 2.0, 0.0}, fApplied2 = {0.0, -2.0, 0.0};
9  Real fInternal (start = 0, fixed = false);
10  Real[3] fInternalVec;
11  Real[3] x1x2Unit;  // Unit vector from x1 to x2
12  parameter Real m1 = 0.8, m2 = 1.2, len =2.5;
13  Real lengthCheck;
14equation
15  // Basic ODE
16  der(x1) = v1;
17  der(x2) = v2;
18  der(v1) = (fApplied1 - fInternalVec) / m1;
19  der(v2) = (fApplied2 + fInternalVec) / m2;
20  fInternalVec = x1x2Unit * fInternal;
21 
22  // Computation of constraint information
23  x1x2Unit = Vectors.normalize(x2 - x1); // Unit vector from x1 to x2
24  Vectors.length(x1 - x2) = len;
25  lengthCheck = Vectors.length(x1 - x2);
26annotation(experiment(StartTime = 0, StopTime = 5, Tolerance = 1e-06, Interval = 0.006));
27end DoubleMassVecLen;