fix move/mesh command
Warning
GPU support for this command has not been tested and may not work as expected.Syntax
fix ID group-ID move/mesh mesh mesh-ID style args keyword values ...
ID is documented in fix command, group-ID is ignored
move/mesh = style name of this fix command
mesh = obligatory keyword
mesh-ID = ID for the fix mesh that the fix move/mesh is applied to
style = linear or linear/variable or wiggle or riggle or rotate or rotate/variable or viblin or vibrot or file
linear args = Vx Vy Vz Vx,Vy,Vz = components of velocity vector (velocity units) linear/variable args = var_Vx var_Vy var_Vz var_Vx,var_Vy,var_Vz = variables specifying components of velocity vector (velocity units) wiggle args = amplitude Ax Ay Az period per amplitude = obligatory keyword Ax,Ay,Az = components of amplitude vector (distance units) period = obligatory keyword per = period of oscillation (time units) riggle args = origin Px Py Pz axis ax ay az period per amplitude ampl origin = obligatory keyword Px,Py,Pz = origin point of axis of rotation (distance units) axis = obligatory keyword ax,ay,az = axis of rotation vector (distance units) period = obligatory keyword per = period of rotation (time units)# amplitude = obligatory keyword ampl = amplitude of riggle movement (grad) rotate args = origin Px Py Pz axis ax ay az period per origin = obligatory keyword Px,Py,Pz = origin point of axis of rotation (distance units) axis = obligatory keyword ax,ay,az = axis of rotation vector (distance units) period = obligatory keyword or omega = obligatory keyword per = period of rotation (time units) or omega = angular velocity of rotation (rad / time units) rotate/variable args = origin Px Py Pz axis ax ay az omega var_omega origin = obligatory keyword Px,Py,Pz = origin point of axis of rotation (distance units) axis = obligatory keyword ax,ay,az = axis of rotation vector (distance units) omega = obligatory keyword var_omega = variable specifying angular velocity (rad / time units) viblin args = axis ax ay az order n amplitude C1 ... Cn phase p1 ... pn period per axis = obligatory keyword ax,ay,az = components of moving direction vector (distance units)(origin 0 0 0) order= obligatory keyword n= order of trigonometric series n (from 1 to 30) amplitude = obligatory keyword C1, ..., Cn = amplitude (distance units) phase = obligatory keyword p1, ...,pn = phase of functionterm (rad) (number of terms is equivalent to order n) period = obligatory keyword per_1, ..., per_n = period of rotation (time units) vibrot args = origin Px Py Pz axis ax ay az order n amplitude C1 ... Cn phase p1 ... pn period per origin = obligatory keyword Px,Py,Pz = origin point of axis of rotation (distance units) axis = obligatory keyword ax,ay,az = axis of rotation vector order= obligatory keyword n= order of trigonometric series (from 1 to 30) amplitude = obligatory keyword C1, ..., Cn = amplitude (rad) phase = obligatory keyword p1, ...,pn = phase of functionterm (rad) (number of terms is equivalent to order n) period = obligatory keyword per_1, ..., per_n = period of rotation (time units) excenter args = origin Px Py Pz start_point Sx Sy Sz axis ax ay az period per origin = obligatory keyword Px,Py,Pz = origin point of axis of linear motion (distance units) start_point = obligatory keyword Sx,Sy,Sz = start point of linear motion axis = obligatory keyword ax,ay,az = axis of rotation vector period = obligatory keyword per = period of rotation (time units) coin args = origin Px Py Pz axis ax ay az tilting_axis tx ty tz period per angle phi origin = obligatory keyword Px,Py,Pz = origin point of axis of linear motion (distance units) axis = obligatory keyword ax,ay,az = axis of rotation vector tilting_axis = obligatory keyword tx,ty,tz = start point of linear motion period = obligatory keyword per = period of rotation (time units) angle = obligatory keyword phi = tilting angle (degrees)
file args = discussed on fix move/mesh file doc page (might not be available) follow/6dof args = discussed on fix move/mesh follow/6dof doc page (might not be available)
Examples
fix move all move/mesh mesh cad1 wiggle amplitude -0.1 0. 0. period 0.02
fix move all move/mesh mesh cad1 rotate origin 0. 0. 0. axis 0. 0. 1. period 0.05
fix move all move/mesh mesh cad1 linear 5. 5. 0.
fix move all move/mesh mesh cad1 viblin axis 0. 0. 1 order 5 amplitude 0.4 0.1 0.3 0.1 0.1 phase 1.3 2 0.4 0.1 0 period 0.02 0.07 0.035 0.023 0.0175
fix move all move/mesh mesh cad1 vibrot origin 0. 0. 0 axis 0. 0. 1 order 2 amplitude 0.4 0.1 phase 1.3 0 period 0.02 0.04
Description
Perform updates of position and velocity for mesh elements which are part of the fix_mesh_surface with ID mesh-ID using the specified settings or formulas. The fix group is ignored for this command.
The linear style moves mesh elements at a constant velocity, so that their position X = (x,y,z) as a function of time is given in vector notation as
X(t) = X0 + V * delta
where X0 = (x0,y0,z0) is their position at the time the fix is specified, V is the specified velocity vector with components (Vx,Vy,Vz), and delta is the time elapsed since the fix was specified. This style also sets the velocity of each atom to V = (Vx,Vy,Vz).
The linear/variable style does the same as the linear style, but uses three variables so that the velocity can be time-dependant.
The wiggle style moves atoms in an oscillatory fashion, so that their position X = (x,y,z) as a function of time is given in vector notation as
X(t) = X0 + A sin(omega*delta)
where X0 = (x0,y0,z0) is their position at the time the fix is specified, A is the specified amplitude vector with components (Ax,Ay,Az), omega is 2 PI / period, and delta is the time elapsed since the fix was specified. This style also sets the velocity of each element to the time derivative of this expression.
The rotate style rotates around a rotation axis R = (Rx,Ry,Rz) that goes thru a point P = (Px,Py,Pz). Either the period of the rotation or the angular frequency omega have to be specified by the user. This style also sets the velocity of each element to (omega cross Rperp) where omega is its angular velocity around the rotation axis and Rperp is a perpendicular vector from the rotation axis to the atom. Note that the direction of rotation around the rotation axis is consistent with the right-hand rule: if your right-hand’s thumb points along R, then your fingers wrap around the axis in the direction of rotation.
The rotate/variable style does the same as the rotate style, but uses a variable for the angular velocity so that the angular velocity can be time-dependant. IMPORTANT NOTE: style rotate takes the period of the rotation as input, rotate/variable takes angular velocity as input.
The riggle style imposes an oscillatory rotation around a rotation axis R = (Rx,Ry,Rz) that goes thru a point P = (Px,Py,Pz). The period of the oscillation is specified as well as the amplitude in degrees. This style also sets the velocity of each element accordingly.
The viblin style moves meshes in an oscillatory fashion with an vibration function of higher order, so that their position X = (x,y,z) as a function of time is given in vector notation as
where X0 = (x0,y0,z0) is their position at the time the fix is specified, n represents the order of the trigonometric series, Cn is the specified amplitude along the direction given by axis = (ax,ay,az). The vector D is the unit vector of axis. The angular velocity omega n is 2 PI / period n, and delta is the time elapsed since the fix was specified. This style also sets the velocity of each element to the time derivative of this expression.
The vibrot style generates an oscillatory rotation around a rotation axis = (ax,ay,az) that goes thru a point origin = (Px,Py,Pz). The period of the oscillation is used to calculate omega, the amplitudes Cn and the phase phase n are given in rad. The change of rotation angle per time gamma(t) is described by trigonometric series of order n. The formula for this change is
This style also sets the velocity of each element accordingly
The excenter style allows a linear motion (pure translation) of a mesh around a mesh defined by origin and axis. Since it is not recommendable to make huge mesh motions the used fix mesh/surface should already be placed to the initial motion. The motion is defined by start_point. Finally, period defines the time for one full rotation.
The coin style motion pattern describes the motion of coin falling down. The coin is rolling on its perimeter. Thus a point on the perimeter of the coin performs only linear up and down motion, but no rotation around the axis. This is defined by a center axis (origin, axis). The motion can be described by a tilting_axis that is rotating around the center axis. Therefore, tilting_axis should show into the direction of the initial tilting (vector in plane with the un-tilted mesh). angle defines the tilting angle and period the time of one full round.
Note
If a dangerous tri neighbor list build is detected, this may be due to the fact that the geometry is moved too close to a region where particle insertion is taking place so that initial interpenetration happens when the particles are inserted.
Note
When moving a mesh element, not only the node positions are moved but also a couple of other vectors. So moving one mesh element is more costly as one particle.
Superposition of multiple fix move/mesh commands:
It is possible to superpose multiple fix move/mesh commands. In this case, the reference frame for the second move command moves along as the mesh is moved by the first move command etc. E.g. for style rotate, the origin of the rotation axis would be in local reference frame.
Example: A mesh should rotate around a central axis and additionally revolve around its center of mass. The first move command should be the rotation around the central axis, the second move command the revolution around the center of mass of the mesh.
Note, because of this the order of these fixes is important. A rotate mover that comes before a linear mover would have a fixed center of rotation, whereas in the opposite case the center of rotation would move linearly with the object.
Restart, fix_modify, output, run start/stop
This fix writes the original coordinates of moving elements to binary restart files, so that the motion can be continuous in a restarted simulation. See the read_restart command for info on how to re-specify a fix in an input script that reads a restart file, so that the operation of the fix continues in an uninterrupted fashion.
None of the fix_modify options are relevant to this fix.
No parameter of this fix can be used with the start/stop keywords of the run command.
Restrictions
If multiple fix move/mesh movements are superposed onto one mesh, they have to be deleted in reverse order of their creation Mesh elements may not be deleted in case due to leaving the simulation box for a fixed boundary. In this case, an error is generated. See boundary command for details.