In this chapter, we construct a simulation model of a spring-mass-damper system that is equivalent to the one in the previous chapter but using a "deformable displacement joint" instead of the structural internal force to express a spring-damper.
Joints usually add hard constraints on a system and decrease its degrees of freedom. But the following three "deformable" joints are exceptional.
As the name "deformable" suggests, these joints connect two nodes with elastic or viscous force. You may imagine a rubber piece that connects two rigid bodies. Deformable displacement joint can apply translational forces, deformable hinge can apply rotational forces (torques), and deformable joint can apply both translational and rotational forces. The properties such as elasticity and viscosity of deformable joints are defined by "constitutive law." Many constitutive laws are available. Refer to the official Input manual for details.
This joint can apply translational elastic and/or viscous forces between two nodes (or the points offset by <relative offset>). The basic syntax for the statement that defines a deformable displacement joint is as follows.
joint: <label>
deformable displacement joint,
<node 1>,
<relative offset 1>,
[ hinge, <relative orientation matrix 1>, ]
<node 2>,
<relative offset 2>,
[ hinge, <relative orientation matrix 2>, ]
<constitutive law>;
Here, <constitutive law> refers to the coordinate frame of node1.
Generally, a spring-damper can be expressed by a deformable displacement joint. In our current example problem, we define the deformable displacement joint as follows. (See also Figure 1)
set: integer JoDfmd_SpringDamper = 4;
joint: JoDfmd_SpringDamper,
deformable displacement joint,
Node_Ground,
null, # relative offset
Node_Mass,
null, # relative offset
linear viscoelastic isotropic,
K, # stiffness
C, # viscosity coefficient
prestrain, single, 0., 0., -1, const, L;
Here, we use "linear viscoelastic isotropic" constitutive law because our spring-damper is a linear one. Also, since the spring has the natural length L>0, we define it with the keyword "prestrain."
Code 1 shows an example input file of a spring-mass-damper system for Problem 8 in the case where a spring-damper is expressed by a deformable displacement joint.
# spring_mass_damper_2.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-3;
max iterations: 10;
tolerance: 1.e-6;
end: initial value;
#-----------------------------------------------------------------------------
# [Control Data Block]
begin: control data;
skip initial joint assembly;
output frequency: 10;
structural nodes: 2;
rigid bodies: 1;
joints: 4;
gravity;
end: control data;
#-----------------------------------------------------------------------------
# Design Variables
set: real M = 1.; #[kg] Mass
set: real L = 1.; #[m] Spring Natural Length
set: real K = 20.; #[N/m] Spring Stiffness Coefficient
set: real C = 1; #[Ns/m] Damper Damping Coefficient
#-----------------------------------------------------------------------------
# Node Labels
set: integer Node_Ground = 1;
set: integer Node_Mass = 2;
# Body Labels
set: integer Body_Mass = 1;
# Joint Labels
set: integer JoClamp_Ground = 1;
set: integer JoInLin_Ground_Mass = 2;
set: integer JoPrism_Ground_Mass = 3;
set: integer JoDfmd_SpringDamper = 4;
#-----------------------------------------------------------------------------
# [Nodes Block]
begin: nodes;
#-----------------------------------------------------------------------------
# Nodes
structural: Node_Ground, static,
null, # absolute position
eye, # absolute orientation
null, # absolute velocity
null; # absolute angular velocity
structural: Node_Mass, dynamic,
0., 0., -L, # absolute position
eye, # absolute orientation
null, # absolute velocity
null; # absolute angular velocity
end: nodes;
#-----------------------------------------------------------------------------
# [Elements Block]
begin: elements;
#-----------------------------------------------------------------------------
# Bodies
body: Body_Mass, Node_Mass,
M, # mass
null, # relative center of mass
eye; # inertia matrix
#-----------------------------------------------------------------------------
# Joints
joint: JoClamp_Ground,
clamp,
Node_Ground,
null, # absolute position
eye; # absolute orientation
joint: JoInLin_Ground_Mass,
in line,
Node_Ground,
null, # relative line position
eye, # relative line orientation
Node_Mass;
joint: JoPrism_Ground_Mass,
prismatic,
Node_Ground,
Node_Mass;
joint: JoDfmd_SpringDamper,
deformable displacement joint,
Node_Ground,
null, # relative offset
Node_Mass,
null, # relative offset
linear viscoelastic isotropic,
K, # stiffness
C, # viscosity coefficient
prestrain, single, 0., 0., -1, const, L;
#-----------------------------------------------------------------------------
# Gravity
gravity: 0., 0., -1., const, 9.81;
end: elements;
Figure 2 shows a comparison of the simulation results of the two spring-mass-damper models constructed in the previous chapter and this chapter using "structural internal force" and "deformable displacement joint." From this figure we can comfirm that the two models are actually equivalent.