# plate_cam.mbd
#-----------------------------------------------------------------------------
# [Data Block]
begin: data;
problem: initial value;
end: data;
#-----------------------------------------------------------------------------
# [<Problem> Block]
begin: initial value;
initial time: 0.;
final time: 5.;
time step: 1.e-4;
max iterations: 10;
tolerance: 1.e-7;
end: initial value;
#-----------------------------------------------------------------------------
# [Control Data Block]
begin: control data;
output frequency: 100;
structural nodes: 3;
rigid bodies: 2;
joints: 5;
forces: 1;
gravity;
end: control data;
#-----------------------------------------------------------------------------
# Design Variables
set: real M_Cam = 0.1; #[kg] Mass of Cam
set: real M_Follower = 0.1; #[kg] Mass of Follower
set: real I_Cam = 5e-4; #[kgm^2] Moment of Inertia of Cam
set: real K_Cam_Follower = 100000.; # Stiffness Coefficient of Contact
#-----------------------------------------------------------------------------
# Node Labels
set: integer Node_Ground = 1;
set: integer Node_Cam = 2;
set: integer Node_Follower = 3;
# Body Labels
set: integer Body_Cam = 1;
set: integer Body_Follower = 2;
# Joint Labels
set: integer JoClamp_Ground = 1;
set: integer JoRevp_Cam = 2;
set: integer JoInlin_Ground_Follower = 3;
set: integer JoPrism_Ground_Follower = 4;
set: integer JoTotp_Cam_Input = 5;
# Force Labels
set: integer FoStrin_Follower_Cam = 1;
#-----------------------------------------------------------------------------
# Scalar Functions
scalar function: "Fun_Cam_Shape",
cubicspline,
-3.1416, 0.1500,
-2.9805, 0.1481,
-2.8194, 0.1427,
-2.6583, 0.1346,
-2.4972, 0.1249,
-2.3361, 0.1147,
-2.1749, 0.1048,
-2.0138, 0.0955,
-1.8527, 0.0871,
-1.6916, 0.0798,
-1.5305, 0.0735,
-1.3694, 0.0682,
-1.2083, 0.0637,
-1.0472, 0.0600,
-0.8861, 0.0570,
-0.7250, 0.0546,
-0.5639, 0.0527,
-0.4028, 0.0514,
-0.2417, 0.0505,
-0.0806, 0.0501,
0.0806, 0.0501,
0.2417, 0.0505,
0.4028, 0.0514,
0.5639, 0.0527,
0.7250, 0.0546,
0.8861, 0.0570,
1.0472, 0.0600,
1.2083, 0.0637,
1.3694, 0.0682,
1.5305, 0.0735,
1.6916, 0.0798,
1.8527, 0.0871,
2.0138, 0.0955,
2.1749, 0.1048,
2.3361, 0.1147,
2.4972, 0.1249,
2.6583, 0.1346,
2.8194, 0.1427,
2.9805, 0.1481,
3.1416, 0.1500;
#-----------------------------------------------------------------------------
# [Nodes Block]
begin: nodes;
#-----------------------------------------------------------------------------
# Nodes
structural: Node_Ground, static,
null, # absolute position
eye, # absolute orientation
null, # absolute velocity
null; # absolute angular velocity
structural: Node_Cam, dynamic,
null, # absolute position
euler, pi/2., 0., 0., # absolute orientation
null, # absolute velocity
null; # absolute angular velocity
structural: Node_Follower, dynamic,
0., 0., 0.075, # absolute position
eye, # absolute orientation
null, # absolute velocity
null; # absolute angular velocity
end: nodes;
#-----------------------------------------------------------------------------
# [Elements Block]
begin: elements;
#-----------------------------------------------------------------------------
# Bodies
body: Body_Cam, Node_Cam,
M_Cam, # mass
null, # relative center of mass
diag, 1., 1., I_Cam; # inertia matrix
body: Body_Follower, Node_Follower,
M_Follower, # mass
null, # relative center of mass
diag, 1., 1., 1.; # inertia matrix
#-----------------------------------------------------------------------------
# Joints
joint: JoClamp_Ground,
clamp,
Node_Ground,
null, # absolute position
eye; # absolute orientation
joint: JoRevp_Cam,
revolute pin,
Node_Cam,
null, # relative offset
hinge, eye, # relative orientation
null, # absolute pin position
hinge, euler, pi/2., 0., 0.; # absolute pin orientation
joint: JoInlin_Ground_Follower,
in line,
Node_Ground,
null, # relative line position
eye, # relative orientation
Node_Follower;
joint: JoPrism_Ground_Follower,
prismatic,
Node_Ground,
Node_Follower;
joint: JoTotp_Cam_Input,
total pin joint,
Node_Cam,
position, null, # relative offset
position, null, # absolute position
rotation orientation, euler, pi/2., 0., 0., # absolute rotation orientation
position constraint,
inactive, inactive, inactive,
null,
orientation constraint,
inactive, inactive, active,
single, 0., 0., 1., string, "2*pi*Time";
#-----------------------------------------------------------------------------
# Plugin Variables
set: [element, AZ_Cam, JoRevp_Cam, joint, string="rz"];
set: [node, Z_Follower, Node_Follower, structural, string="X[3]"];
#-----------------------------------------------------------------------------
# Forces
force: FoStrin_Follower_Cam,
follower internal,
Node_Follower,
position, null, # relative arm
Node_Cam,
position, null, # relative arm
single, 0., 0., 1., string, "-K_Cam_Follower*(Z_Follower\
-model::sf::Fun_Cam_Shape(atan2(sin(pi/2.-AZ_Cam),cos(pi/2.-AZ_Cam))))";
#-----------------------------------------------------------------------------
# Gravity
gravity: 0., 0., -1., const, 9.81;
end: elements;