# double_rigid_pendulum_2.mbd
begin: data;
problem: initial value;
end: data;
begin: initial value;
initial time: 0.;
final time: 5.;
time step: 1.e-3;
max iterations: 10;
tolerance: 1.e-6;
end: initial value;
begin: control data;
structural nodes: 2;
rigid bodies: 2;
joints: 2;
gravity;
end: control data;
# Design Variables
set: real M = 1.; # Mass of Link1 and Link2
set: real L = 1.; # Length of Link1 and Link2
set: real theta1 = pi/6.; # Initial angle of Link1 w.r.t vertical line
set: real theta2 = pi/6.; # Initial angle of Link2 w.r.t Link1
# Reference Labels
set: integer Ref_Link1 = 1;
set: integer Ref_Link2 = 2;
# Node Labels
set: integer Node_Link1 = 1;
set: integer Node_Link2 = 2;
# Body Labels
set: integer Body_Link1 = 1;
set: integer Body_Link2 = 2;
# Joint Labels
set: integer JoRevp_Link1 = 1;
set: integer JoRevh_Link1_Link2 = 2;
# Reference
reference: Ref_Link1,
null, # absolute position
euler, 0., pi/2.-theta1, 0., # absolute orientation
null, # absolute velocity
null; # absolute angular velocity
reference: Ref_Link2,
reference, Ref_Link1, L, 0., 0., # absolute position
reference, Ref_Link1, euler, 0., -theta2, 0., # absolute orientation
reference, Ref_Link1, null, # absolute velocity
reference, Ref_Link1, null; # absolute angular velocity
begin: nodes;
structural: Node_Link1, dynamic,
reference, Ref_Link1, 1./2.*L, 0., 0., # absolute position
reference, Ref_Link1, eye, # absolute orientation
reference, Ref_Link1, null, # absolute velocity
reference, Ref_Link1, null; # absolute angular velocity
structural: Node_Link2, dynamic,
reference, Ref_Link2, 1./2.*L, 0., 0., # absolute position
reference, Ref_Link2, eye, # absolute orientation
reference, Ref_Link2, null, # absolute velocity
reference, Ref_Link2, null; # absolute angular velocity
end: nodes;
begin: elements;
body: Body_Link1, Node_Link1,
M, # mass
null, # relative center of mass
diag, 0., M*L^2./12., M*L^2./12.; # inertia matrix
body: Body_Link2, Node_Link2,
M, # mass
null, # relative center of mass
diag, 0., M*L^2./12., M*L^2./12.; # inertia matrix
joint: JoRevp_Link1,
revolute pin,
Node_Link1,
reference, Ref_Link1, null, # relative offset
hinge, reference, Ref_Link1, 1, 1., 0., 0., 3, 0., 1., 0., # relative axis orientation
reference, Ref_Link1, null, # absolute pin position
hinge, reference, Ref_Link1, 1, 1., 0., 0., 3, 0., 1., 0.; # absolute pin orientation
joint: JoRevh_Link1_Link2,
revolute hinge,
Node_Link1,
reference, Ref_Link2, null, # relative offset
hinge, reference, Ref_Link2, 1, 1., 0., 0., 3, 0., 1., 0., # relative axis orientation
Node_Link2,
reference, Ref_Link2, null, # relative offset
hinge, reference, Ref_Link2, 1, 1., 0., 0., 3, 0., 1., 0.; # relative axis orientation
gravity: 0., 0., -1., const, 9.81;
end: elements;