Main Help → All Commands → MPM Boundary Conditions → Velocity
The Velocity
command sets velocity conditions to all nodes near the line specified by the GridBC Command that encloses it or creates a moving wall boundary near those nodes:
Velocity (dir),(style),<(value)>>,<(time)>
where
(dir)
is x
, y
, or z
(or 1
, 2
, or 3
or R
or Z
if axisymmetric) to specify the direction of the applied velocity. You can also set velocity in a direction that is not along an axis. For details see help on skewed velocity conditions.(style)
specifies the style of the applied velocity. Each velocity depends on two parameters specified by arguments (value)
and (time)
. If either argument is not supplied, they are set to zero. The standard units are velocity units for (value)
and alt time units for (time)
(but the units may change depending on the (style) setting).(style)="gradient"
chooses a different type of velocity boundary condition modeling a wall normal to x
, y
, or z
axis. For details see help on moving wall velocity conditions.A moving wall boundary condition models a wall moving through the grid normal to the x
, y
, or z
axis with any provided velocity. This condition sets velocity on the wall surface and will include as many nodes on either side of wall as needed for optimal results. This condition can also set velocity gradient at the wall. These conditions are created
with the Velocity
command but using more arguments:
Velocity (dir),"gradient",(velFxn),0,(depth),<(gradFxn)>,<(dispFxn)>
where
(dir)
is x
, y
, or z
for wall normal to that axis. Moving walls could potentially be oriented in any direction or even curved, but only straight walls normal to a grid axis are implemented now.(style)
must be the text "gradient" to indicate this Velocity
command is creating a moving wall boundary condition.(velFxn)
is a user-defined function of time (t
in alt time units) and initial nodal point position (in length units). The function should evaluate to the wall velocity in velocity units.(depth)
has two functions. The sign of (depth)
determines if the wall is at minimum edge (if minus) or positive edge (if plus) of material points along the selected axis. Walls are expected to be outside all material points and this parameter determines where the wall is relative to all material points.(depth)
determines how many nodes will get velocity boundary conditions. A moving wall boundary conditions applies velocity to all active nodes outside the wall and all nodes inside the wall less than or equal to |(depth)|
cells from the wall. Experience suggests the (depth)
should be at least 1 and maybe 1.5 when using spline shape functions. It can be adjusted for optimal results.(gradFxn)
is a user-defined function of time (t
in alt time units) and current wall position (in length units). The function should evaluate to a velocity gradient in the wall-axis direction in (velocity units)/(length units). If (dv/dx)
is the function result (for wall in x
direction), the velocities on nodes near the wall will be set to:v(xi) = vwall + (dv/dx)(xi-xwall)
(gradFxn)="mirror"
, the gradient (dv/dx)
will be calculated from velocities extrapolated to the grid by interpolating from two active nodes near (depth)
grid cells from the wall to the current wall position and velocity. A "mirror" gradient can improve boundary conditions in problems where you do not know the velocity gradient, but you do know it should not be zero.
(dispFxn)
is a user-defined function of time (t
in alt time units) and initial nodal point position (in length units). The function should evaluate to the current wall displacement from its initial position in length units. Often this function is integral of (velFxn)
, but may differ, such as to change initial position. If omitted, the displacement is zero or the wall is fixed on the initial node.Setting the velocity along two direction is not the same as setting the velocity in a direction of that resultant vector. To set a single velocity in a direction that is not along a cartesian axes, you can use:
Velocity (skewDir),(style),(value),(time),(angle1),<(angle2)>
where
(skewDir)
defines two or three axes. It can only be skewxy
(or 12
or skewrz
) in 2D or axisymmetric, but can be skewxy
, skewxz
, skewyz
, or skewxyz
(12
, 13
, 23
, or 123
) in 3D. The two axes define the plane of the direction or the combination skewxyz
means velocity in any arbitrary polar direction.(style)
,(value)
, and (time)
are the same as above and all are needed for alignment to the (angle)
parameters.(angle1)
defines the normal vector for the velocity which is rotated clockwise by (angle1)
degrees from the first axis in a skew pair. In other words, skewxy
applies velocity in the direction (cos(angle1), -sin(angle1), 0)
, skewxy
applies velocity in the direction (cos(angle1), 0, -sin(angle1))
, and skewyz
applies velocity in the direction (0, cos(angle1), -sin(angle1))
. For skewxyz
, (angle1)
is a polar angle as explained next.(angle2)
is only used for skewxyz
and it is the azimuthal angle. The normal vector will be (cos(angle2) sin((angle1), sin(angle2) sin(angle1), cos(angle1))
.When using more than one velocity boundary condition on a node, you should create non-skewed conditions first and then create skewed ones. Skewed conditions are only allowed if they are orthogonal to other velocity condition on that node.
ID
and use that ID
in the GlobalArchive command for reaction forces.