Home > リソース > MBDynモデル集 > 13. 板カム
MBDynモデル集

## 13. 板カム

### 入力ファイル

```# 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;
```