first commit: added SDPD
This commit is contained in:
@ -94,6 +94,7 @@ OPT.
|
||||
"lineforce"_fix_lineforce.html,
|
||||
"manifoldforce"_fix_manifoldforce.html,
|
||||
"meso"_fix_meso.html,
|
||||
"meso/move"_fix_meso_move.html,
|
||||
"meso/stationary"_fix_meso_stationary.html,
|
||||
"momentum (k)"_fix_momentum.html,
|
||||
"move"_fix_move.html,
|
||||
@ -172,6 +173,7 @@ OPT.
|
||||
"restrain"_fix_restrain.html,
|
||||
"rhok"_fix_rhok.html,
|
||||
"rigid (o)"_fix_rigid.html,
|
||||
"rigid/meso"_fix_rigid_meso.html,
|
||||
"rigid/nph (o)"_fix_rigid.html,
|
||||
"rigid/nph/small"_fix_rigid.html,
|
||||
"rigid/npt (o)"_fix_rigid.html,
|
||||
|
||||
@ -198,6 +198,7 @@ OPT.
|
||||
"reax/c (ko)"_pair_reaxc.html,
|
||||
"rebo (io)"_pair_airebo.html,
|
||||
"resquared (go)"_pair_resquared.html,
|
||||
"sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html,
|
||||
"smd/hertz"_pair_smd_hertz.html,
|
||||
"smd/tlsph"_pair_smd_tlsph.html,
|
||||
"smd/tri_surface"_pair_smd_triangulated_surface.html,
|
||||
|
||||
@ -95,6 +95,7 @@ as contained in the file name.
|
||||
"USER-QUIP"_#PKG-USER-QUIP,
|
||||
"USER-REAXC"_#PKG-USER-REAXC,
|
||||
"USER-SCAFACOS"_#PKG-USER-SCAFACOS,
|
||||
"USER-SDPD"_#PKG-USER-SDPD,
|
||||
"USER-SMD"_#PKG-USER-SMD,
|
||||
"USER-SMTBQ"_#PKG-USER-SMTBQ,
|
||||
"USER-SPH"_#PKG-USER-SPH,
|
||||
@ -1916,6 +1917,31 @@ examples/USER/scafacos :ul
|
||||
|
||||
:line
|
||||
|
||||
USER-SDPD package :link(PKG-USER-SDPD),h4
|
||||
|
||||
[Contents:]
|
||||
|
||||
A pair style for smoothed dissipative particle dynamics (SDPD), which
|
||||
is an extension of smoothed particle hydrodynamics (SPH) to mesoscale
|
||||
where thermal fluctuations are important (see the
|
||||
"USER-SPH package"_#PKG-USER-SPH).
|
||||
Also two fixes for moving and rigid body integration of SPH/SDPD particles
|
||||
(particles of atom_style meso).
|
||||
|
||||
[Author:] Morteza Jalalvand (Institute for Advanced Studies in Basic
|
||||
Sciences, Iran).
|
||||
|
||||
[Supporting info:]
|
||||
|
||||
src/USER-SDPD: filenames -> commands
|
||||
src/USER-SDPD/README
|
||||
"pair_style sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html
|
||||
"fix meso/move"_fix_meso_move.html
|
||||
"fix rigid/meso"_fix_rigid_meso.html
|
||||
examples/USER/sdpd :ul
|
||||
|
||||
:line
|
||||
|
||||
USER-SMD package :link(PKG-USER-SMD),h4
|
||||
|
||||
[Contents:]
|
||||
|
||||
@ -68,6 +68,7 @@ Package, Description, Doc page, Example, Library
|
||||
"USER-QUIP"_Packages_details.html#PKG-USER-QUIP, QUIP/libatoms interface,"pair_style quip"_pair_quip.html, USER/quip, ext
|
||||
"USER-REAXC"_Packages_details.html#PKG-USER-REAXC, ReaxFF potential (C/C++) ,"pair_style reaxc"_pair_reaxc.html, reax, no
|
||||
"USER-SCAFACOS"_Packages_details.html#PKG-USER-SCAFACOS, wrapper on ScaFaCoS solver,"kspace_style scafacos"_kspace_style.html, USER/scafacos, ext
|
||||
"USER-SDPD"_Packages_details.html#PKG-USER-SDPD, smoothed dissipative particle dynamics,"pair_style sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal, USER/sdpd, no
|
||||
"USER-SMD"_Packages_details.html#PKG-USER-SMD, smoothed Mach dynamics,"SMD User Guide"_PDF/SMD_LAMMPS_userguide.pdf, USER/smd, ext
|
||||
"USER-SMTBQ"_Packages_details.html#PKG-USER-SMTBQ, second moment tight binding QEq potential,"pair_style smtbq"_pair_smtbq.html, USER/smtbq, no
|
||||
"USER-SPH"_Packages_details.html#PKG-USER-SPH, smoothed particle hydrodynamics,"SPH User Guide"_PDF/SPH_LAMMPS_userguide.pdf, USER/sph, no
|
||||
|
||||
@ -237,6 +237,7 @@ accelerated styles exist.
|
||||
"lineforce"_fix_lineforce.html - constrain atoms to move in a line
|
||||
"manifoldforce"_fix_manifoldforce.html -
|
||||
"meso"_fix_meso.html -
|
||||
"meso"_fix_meso_move.html - move mesoscopic SPH/SDPD particles in a prescribed fashion
|
||||
"meso/stationary"_fix_meso_stationary.html -
|
||||
"momentum"_fix_momentum.html - zero the linear and/or angular momentum of a group of atoms
|
||||
"move"_fix_move.html - move atoms in a prescribed fashion
|
||||
@ -331,6 +332,7 @@ accelerated styles exist.
|
||||
"rigid/small/npt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NPT integration
|
||||
"rigid/small/nve"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with alternate NVE integration
|
||||
"rigid/small/nvt"_fix_rigid.html - constrain many small clusters of atoms to move as a rigid body with NVT integration
|
||||
"rigid/meso"_fix_rigid_meso.html - constrain clusters of mesoscopic SPH/SDPD particles to move as a rigid body
|
||||
"rx"_fix_rx.html -
|
||||
"saed/vtk"_fix_saed_vtk.html -
|
||||
"setforce"_fix_setforce.html - set the force on each atom
|
||||
|
||||
233
doc/src/fix_meso_move.txt
Normal file
233
doc/src/fix_meso_move.txt
Normal file
@ -0,0 +1,233 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands_all.html)
|
||||
|
||||
:line
|
||||
|
||||
fix meso/move command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID meso/move style args keyword values ... :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
meso/move = style name of this fix command :l
|
||||
style = {linear} or {wiggle} or {rotate} or {variable} :l
|
||||
{linear} args = Vx Vy Vz
|
||||
Vx,Vy,Vz = components of velocity vector (velocity units), any component can be specified as NULL
|
||||
{wiggle} args = Ax Ay Az period
|
||||
Ax,Ay,Az = components of amplitude vector (distance units), any component can be specified as NULL
|
||||
period = period of oscillation (time units)
|
||||
{rotate} args = Px Py Pz Rx Ry Rz period
|
||||
Px,Py,Pz = origin point of axis of rotation (distance units)
|
||||
Rx,Ry,Rz = axis of rotation vector
|
||||
period = period of rotation (time units)
|
||||
{variable} args = v_dx v_dy v_dz v_vx v_vy v_vz
|
||||
v_dx,v_dy,v_dz = 3 variable names that calculate x,y,z displacement as function of time, any component can be specified as NULL
|
||||
v_vx,v_vy,v_vz = 3 variable names that calculate x,y,z velocity as function of time, any component can be specified as NULL :pre
|
||||
|
||||
zero or more keyword/value pairs may be appended :l
|
||||
keyword = {units} :l
|
||||
{units} value = {box} or {lattice} :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
fix 1 boundary meso/move wiggle 3.0 0.0 0.0 1.0 units box
|
||||
fix 2 boundary meso/move rotate 0.0 0.0 0.0 0.0 0.0 1.0 5.0
|
||||
fix 2 boundary meso/move variable v_myx v_myy NULL v_VX v_VY NULL :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Perform updates of position, velocity, internal energy and local
|
||||
density for mesoscopic particles in the group each timestep using the
|
||||
specified settings or formulas, without regard to forces on the
|
||||
particles. This can be useful for boundary, solid bodies or other
|
||||
particles, whose movement can influence nearby particles.
|
||||
|
||||
The operation of this fix is exactly like that described by the
|
||||
"fix move"_fix_move.html command, except that particles' density,
|
||||
internal energy and extrapolated velocity are also updated.
|
||||
|
||||
NOTE: The particles affected by this fix should not be time integrated
|
||||
by other fixes (e.g. "fix meso"_fix_meso.html, "fix
|
||||
meso/stationary"_fix_meso_stationary.html), since that will change their
|
||||
positions and velocities twice.
|
||||
|
||||
NOTE: As particles move due to this fix, they will pass thru periodic
|
||||
boundaries and be remapped to the other side of the simulation box,
|
||||
just as they would during normal time integration (e.g. via the "fix
|
||||
meso"_fix_meso.html command). It is up to you to decide whether periodic
|
||||
boundaries are appropriate with the kind of particle motion you are
|
||||
prescribing with this fix.
|
||||
|
||||
NOTE: As dicsussed below, particles are moved relative to their initial
|
||||
position at the time the fix is specified. These initial coordinates
|
||||
are stored by the fix in "unwrapped" form, by using the image flags
|
||||
associated with each particle. See the "dump custom"_dump.html command
|
||||
for a discussion of "unwrapped" coordinates. See the Atoms section of
|
||||
the "read_data"_read_data.html command for a discussion of image flags
|
||||
and how they are set for each particle. You can reset the image flags
|
||||
(e.g. to 0) before invoking this fix by using the "set image"_set.html
|
||||
command.
|
||||
|
||||
:line
|
||||
|
||||
The {linear} style moves particles 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 :pre
|
||||
|
||||
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 particle to V =
|
||||
(Vx,Vy,Vz). If any of the velocity components is specified as NULL,
|
||||
then the position and velocity of that component is time integrated
|
||||
the same as the "fix meso"_fix_meso.html command would perform, using
|
||||
the corresponding force component on the particle.
|
||||
|
||||
Note that the {linear} style is identical to using the {variable}
|
||||
style with an "equal-style variable"_variable.html that uses the
|
||||
vdisplace() function. E.g.
|
||||
|
||||
variable V equal 10.0
|
||||
variable x equal vdisplace(0.0,$V)
|
||||
fix 1 boundary move variable v_x NULL NULL v_V NULL NULL :pre
|
||||
|
||||
The {wiggle} style moves particles 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) :pre
|
||||
|
||||
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 particle to the time derivative of this expression.
|
||||
If any of the amplitude components is specified as NULL, then the
|
||||
position and velocity of that component is time integrated the same as
|
||||
the "fix meso"_fix_meso.html command would perform, using the
|
||||
corresponding force component on the particle.
|
||||
|
||||
Note that the {wiggle} style is identical to using the {variable}
|
||||
style with "equal-style variables"_variable.html that use the
|
||||
swiggle() and cwiggle() functions. E.g.
|
||||
|
||||
variable A equal 10.0
|
||||
variable T equal 5.0
|
||||
variable omega equal 2.0*PI/$T
|
||||
variable x equal swiggle(0.0,$A,$T)
|
||||
variable v equal v_omega*($A-cwiggle(0.0,$A,$T))
|
||||
fix 1 boundary move variable v_x NULL NULL v_v NULL NULL :pre
|
||||
|
||||
The {rotate} style rotates particles around a rotation axis {R} =
|
||||
(Rx,Ry,Rz) that goes thru a point {P} = (Px,Py,Pz). The {period} of
|
||||
the rotation is also specified. The direction of rotation for the
|
||||
particles around the rotation axis is consistent with the right-hand
|
||||
rule: if your right-hand thumb points along {R}, then your fingers wrap
|
||||
around the axis in the direction of rotation.
|
||||
|
||||
This style also sets the velocity of each particle 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 particle.
|
||||
|
||||
The {variable} style allows the position and velocity components of
|
||||
each particle to be set by formulas specified via the
|
||||
"variable"_variable.html command. Each of the 6 variables is
|
||||
specified as an argument to the fix as v_name, where name is the
|
||||
variable name that is defined elsewhere in the input script.
|
||||
|
||||
Each variable must be of either the {equal} or {atom} style.
|
||||
{Equal}-style variables compute a single numeric quantity, that can be
|
||||
a function of the timestep as well as of other simulation values.
|
||||
{Atom}-style variables compute a numeric quantity for each particle, that
|
||||
can be a function per-atom quantities, such as the particle's position, as
|
||||
well as of the timestep and other simulation values. Note that this
|
||||
fix stores the original coordinates of each particle (see note below) so
|
||||
that per-atom quantity can be used in an atom-style variable formula.
|
||||
See the "variable"_variable.html command for details.
|
||||
|
||||
The first 3 variables (v_dx,v_dy,v_dz) specified for the {variable}
|
||||
style are used to calculate a displacement from the particle's original
|
||||
position at the time the fix was specified. The second 3 variables
|
||||
(v_vx,v_vy,v_vz) specified are used to compute a velocity for each
|
||||
particle.
|
||||
|
||||
Any of the 6 variables can be specified as NULL. If both the
|
||||
displacement and velocity variables for a particular x,y,z component
|
||||
are specified as NULL, then the position and velocity of that
|
||||
component is time integrated the same as the "fix meso"_fix_meso.html
|
||||
command would perform, using the corresponding force component on the
|
||||
particle. If only the velocity variable for a component is specified as
|
||||
NULL, then the displacement variable will be used to set the position
|
||||
of the particle, and its velocity component will not be changed. If only
|
||||
the displacement variable for a component is specified as NULL, then
|
||||
the velocity variable will be used to set the velocity of the particle,
|
||||
and the position of the particle will be time integrated using that
|
||||
velocity.
|
||||
|
||||
The {units} keyword determines the meaning of the distance units used
|
||||
to define the {linear} velocity and {wiggle} amplitude and {rotate}
|
||||
origin. This setting is ignored for the {variable} style. A {box}
|
||||
value selects standard units as defined by the "units"_units.html
|
||||
command, e.g. velocity in Angstroms/fmsec and amplitude and position
|
||||
in Angstroms for units = real. A {lattice} value means the velocity
|
||||
units are in lattice spacings per time and the amplitude and position
|
||||
are in lattice spacings. The "lattice"_lattice.html command must have
|
||||
been previously used to define the lattice spacing. Each of these 3
|
||||
quantities may be dependent on the x,y,z dimension, since the lattice
|
||||
spacings can be different in x,y,z.
|
||||
|
||||
:line
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
This fix writes the original coordinates of moving particles to "binary
|
||||
restart files"_restart.html, as well as the initial timestep, so that
|
||||
the motion can be continuous in a restarted simulation. See the
|
||||
"read_restart"_read_restart.html 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.
|
||||
|
||||
NOTE: Because the move positions are a function of the current
|
||||
timestep and the initial timestep, you cannot reset the timestep to a
|
||||
different value after reading a restart file, if you expect a fix move
|
||||
command to work in an uninterrupted fashion.
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix.
|
||||
|
||||
This fix produces a per-atom array which can be accessed by various
|
||||
"output commands"_Howto_output.html. The number of columns for each
|
||||
atom is 3, and the columns store the original unwrapped x,y,z coords
|
||||
of each particle. The per-atom values can be accessed on any timestep.
|
||||
|
||||
No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command.
|
||||
|
||||
This fix is not invoked during "energy minimization"_minimize.html.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the USER-SDPD package. It is only enabled if
|
||||
LAMMPS was built with that package. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
This fix requires that atoms store density and internal energy as
|
||||
defined by the "atom_style meso"_atom_style.html command.
|
||||
|
||||
All particles in the group must be mesoscopic SPH/SDPD particles.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"fix move"_fix_move.html, "fix meso"_fix_meso.html,
|
||||
"displace_atoms"_displace_atoms.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The option default is units = lattice.
|
||||
349
doc/src/fix_rigid_meso.txt
Normal file
349
doc/src/fix_rigid_meso.txt
Normal file
@ -0,0 +1,349 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands_all.html)
|
||||
|
||||
:line
|
||||
|
||||
fix rigid/meso command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
fix ID group-ID rigid/meso bodystyle args keyword values ... :pre
|
||||
|
||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||
rigid/meso = style name of this fix command :l
|
||||
bodystyle = {single} or {molecule} or {group} :l
|
||||
{single} args = none
|
||||
{molecule} args = none
|
||||
{custom} args = {i_propname} or {v_varname}
|
||||
i_propname = an integer property defined via fix property/atom
|
||||
v_varname = an atom-style or atomfile-style variable
|
||||
{group} args = N groupID1 groupID2 ...
|
||||
N = # of groups
|
||||
groupID1, groupID2, ... = list of N group IDs :pre
|
||||
|
||||
zero or more keyword/value pairs may be appended :l
|
||||
keyword = {reinit} or {force} or {torque} or {infile} :l
|
||||
{reinit} = {yes} or {no}
|
||||
{force} values = M xflag yflag zflag
|
||||
M = which rigid body from 1-Nbody (see asterisk form below)
|
||||
xflag,yflag,zflag = off/on if component of center-of-mass force is active
|
||||
{torque} values = M xflag yflag zflag
|
||||
M = which rigid body from 1-Nbody (see asterisk form below)
|
||||
xflag,yflag,zflag = off/on if component of center-of-mass torque is active
|
||||
{infile} filename
|
||||
filename = file with per-body values of mass, center-of-mass, moments of inertia :pre
|
||||
:ule
|
||||
|
||||
[Examples:]
|
||||
|
||||
fix 1 ellipsoid rigid/meso single
|
||||
fix 1 rods rigid/meso molecule
|
||||
fix 1 spheres rigid/meso single force 1 off off on
|
||||
fix 1 particles rigid/meso molecule force 1*5 off off off force 6*10 off off on
|
||||
fix 2 spheres rigid/meso group 3 sphere1 sphere2 sphere3 torque * off off off :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
Treat one or more sets of mesoscopic SPH/SDPD particles as independent
|
||||
rigid bodies. This means that each timestep the total force and torque
|
||||
on each rigid body is computed as the sum of the forces and torques on
|
||||
its constituent particles. The coordinates and velocities of the
|
||||
particles in each body are then updated so that the body moves and
|
||||
rotates as a single entity using the methods described in the paper by
|
||||
"(Miller)"_#Miller. Density and internal energy of the particles will
|
||||
also be updated. This is implemented by creating internal data structures
|
||||
for each rigid body and performing time integration on these data
|
||||
structures. Positions and velocities of the constituent particles are
|
||||
regenerated from the rigid body data structures in every time step. This
|
||||
restricts which operations and fixes can be applied to rigid bodies. See
|
||||
below for a detailed discussion.
|
||||
|
||||
The operation of this fix is exactly like that described by the
|
||||
"fix rigid/nve"_fix_rigid.html command, except that particles' density,
|
||||
internal energy and extrapolated velocity are also updated.
|
||||
|
||||
NOTE: You should not update the particles in rigid bodies via other
|
||||
time-integration fixes (e.g. "fix meso"_fix_meso.html,
|
||||
"fix meso/stationary"_fix_meso_stationary.html), or you will have conflicting
|
||||
updates to positions and velocities resulting in unphysical behavior in most
|
||||
cases. When performing a hybrid simulation with some atoms in rigid bodies,
|
||||
and some not, a separate time integration fix like "fix meso"_fix_meso.html
|
||||
should be used for the non-rigid particles.
|
||||
|
||||
NOTE: These fixes are overkill if you simply want to hold a collection
|
||||
of particles stationary or have them move with a constant velocity. To
|
||||
hold particles stationary use "fix
|
||||
meso/stationary"_fix_meso_stationary.html instead. If you would like to
|
||||
move particles with a constant velocity use "fix
|
||||
meso/move"_fix_meso_move.html.
|
||||
|
||||
IMPORTANT NOTE: The aggregate properties of each rigid body are
|
||||
calculated at the start of a simulation run and are maintained in
|
||||
internal data structures. The properties include the position and
|
||||
velocity of the center-of-mass of the body, its moments of inertia, and
|
||||
its angular momentum. This is done using the properties of the
|
||||
constituent particles of the body at that point in time (or see the {infile}
|
||||
keyword option). Thereafter, changing these properties of individual
|
||||
particles in the body will have no effect on a rigid body's dynamics, unless
|
||||
they effect any computation of per-particle forces or torques. If the
|
||||
keyword {reinit} is set to {yes} (the default), the rigid body data
|
||||
structures will be recreated at the beginning of each {run} command;
|
||||
if the keyword {reinit} is set to {no}, the rigid body data structures
|
||||
will be built only at the very first {run} command and maintained for
|
||||
as long as the rigid fix is defined. For example, you might think you
|
||||
could displace the particles in a body or add a large velocity to each particle
|
||||
in a body to make it move in a desired direction before a 2nd run is
|
||||
performed, using the "set"_set.html or
|
||||
"displace_atoms"_displace_atoms.html or "velocity"_velocity.html
|
||||
commands. But these commands will not affect the internal attributes
|
||||
of the body unless {reinit} is set to {yes}. With {reinit} set to {no}
|
||||
(or using the {infile} option, which implies {reinit} {no}) the position
|
||||
and velocity of individual particles in the body will be reset when time
|
||||
integration starts again.
|
||||
|
||||
:line
|
||||
|
||||
Each rigid body must have two or more particles. A particle can belong
|
||||
to at most one rigid body. Which particles are in which bodies can be
|
||||
defined via several options.
|
||||
|
||||
For bodystyle {single} the entire fix group of particles is treated as
|
||||
one rigid body.
|
||||
|
||||
For bodystyle {molecule}, particles are grouped into rigid bodies by their
|
||||
respective molecule IDs: each set of particles in the fix group with the
|
||||
same molecule ID is treated as a different rigid body. Note that particles
|
||||
with a molecule ID = 0 will be treated as a single rigid body. For a
|
||||
system with solvent (typically this is particles with molecule ID = 0)
|
||||
surrounding rigid bodies, this may not be what you want. Thus you
|
||||
should be careful to use a fix group that only includes particles you
|
||||
want to be part of rigid bodies.
|
||||
|
||||
Bodystyle {custom} is similar to bodystyle {molecule} except that it
|
||||
is more flexible in using other per-atom properties to define the sets
|
||||
of particles that form rigid bodies. An integer vector defined by the
|
||||
"fix property/atom"_fix_property_atom.html command can be used. Or an
|
||||
"atom-style or atomfile-style variable"_variable.html can be used; the
|
||||
floating-point value produced by the variable is rounded to an
|
||||
integer. As with bondstyle {molecule}, each set of particles in the fix
|
||||
groups with the same integer value is treated as a different rigid
|
||||
body. Since fix property/atom vectors and atom-style variables
|
||||
produce values for all particles, you should be careful to use a fix group
|
||||
that only includes particles you want to be part of rigid bodies.
|
||||
|
||||
For bodystyle {group}, each of the listed groups is treated as a
|
||||
separate rigid body. Only particles that are also in the fix group are
|
||||
included in each rigid body.
|
||||
|
||||
NOTE: To compute the initial center-of-mass position and other
|
||||
properties of each rigid body, the image flags for each particle in the
|
||||
body are used to "unwrap" the particle coordinates. Thus you must
|
||||
insure that these image flags are consistent so that the unwrapping
|
||||
creates a valid rigid body (one where the particles are close together)
|
||||
, particularly if the particles in a single rigid body straddle a
|
||||
periodic boundary. This means the input data file or restart file must
|
||||
define the image flags for each particle consistently or that you have
|
||||
used the "set"_set.html command to specify them correctly. If a
|
||||
dimension is non-periodic then the image flag of each particle must be
|
||||
0 in that dimension, else an error is generated.
|
||||
|
||||
By default, each rigid body is acted on by other particles which induce
|
||||
an external force and torque on its center of mass, causing it to
|
||||
translate and rotate. Components of the external center-of-mass force
|
||||
and torque can be turned off by the {force} and {torque} keywords.
|
||||
This may be useful if you wish a body to rotate but not translate, or
|
||||
vice versa, or if you wish it to rotate or translate continuously
|
||||
unaffected by interactions with other particles. Note that if you
|
||||
expect a rigid body not to move or rotate by using these keywords, you
|
||||
must insure its initial center-of-mass translational or angular
|
||||
velocity is 0.0. Otherwise the initial translational or angular
|
||||
momentum the body has will persist.
|
||||
|
||||
An xflag, yflag, or zflag set to {off} means turn off the component of
|
||||
force or torque in that dimension. A setting of {on} means turn on
|
||||
the component, which is the default. Which rigid body(s) the settings
|
||||
apply to is determined by the first argument of the {force} and
|
||||
{torque} keywords. It can be an integer M from 1 to Nbody, where
|
||||
Nbody is the number of rigid bodies defined. A wild-card asterisk can
|
||||
be used in place of, or in conjunction with, the M argument to set the
|
||||
flags for multiple rigid bodies. This takes the form "*" or "*n" or
|
||||
"n*" or "m*n". If N = the number of rigid bodies, then an asterisk
|
||||
with no numeric values means all bodies from 1 to N. A leading
|
||||
asterisk means all bodies from 1 to n (inclusive). A trailing
|
||||
asterisk means all bodies from n to N (inclusive). A middle asterisk
|
||||
means all bodies from m to n (inclusive). Note that you can use the
|
||||
{force} or {torque} keywords as many times as you like. If a
|
||||
particular rigid body has its component flags set multiple times, the
|
||||
settings from the final keyword are used.
|
||||
|
||||
For computational efficiency, you should typically define one fix
|
||||
rigid/meso command which includes all the desired rigid bodies. LAMMPS
|
||||
will allow multiple rigid/meso fixes to be defined, but it is more
|
||||
expensive.
|
||||
|
||||
:line
|
||||
|
||||
The keyword/value option pairs are used in the following ways.
|
||||
|
||||
The {reinit} keyword determines, whether the rigid body properties
|
||||
are re-initialized between run commands. With the option {yes} (the
|
||||
default) this is done, with the option {no} this is not done. Turning
|
||||
off the re-initialization can be helpful to protect rigid bodies against
|
||||
unphysical manipulations between runs or when properties cannot be
|
||||
easily re-computed (e.g. when read from a file). When using the {infile}
|
||||
keyword, the {reinit} option is automatically set to {no}.
|
||||
|
||||
:line
|
||||
|
||||
The {infile} keyword allows a file of rigid body attributes to be read
|
||||
in from a file, rather then having LAMMPS compute them. There are 5
|
||||
such attributes: the total mass of the rigid body, its center-of-mass
|
||||
position, its 6 moments of inertia, its center-of-mass velocity, and
|
||||
the 3 image flags of the center-of-mass position. For rigid bodies
|
||||
consisting of point particles or non-overlapping finite-size
|
||||
particles, LAMMPS can compute these values accurately. However, for
|
||||
rigid bodies consisting of finite-size particles which overlap each
|
||||
other, LAMMPS will ignore the overlaps when computing these 4
|
||||
attributes. The amount of error this induces depends on the amount of
|
||||
overlap. To avoid this issue, the values can be pre-computed
|
||||
(e.g. using Monte Carlo integration).
|
||||
|
||||
The format of the file is as follows. Note that the file does not
|
||||
have to list attributes for every rigid body integrated by fix rigid.
|
||||
Only bodies which the file specifies will have their computed
|
||||
attributes overridden. The file can contain initial blank lines or
|
||||
comment lines starting with "#" which are ignored. The first
|
||||
non-blank, non-comment line should list N = the number of lines to
|
||||
follow. The N successive lines contain the following information:
|
||||
|
||||
ID1 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz vxcm vycm vzcm lx ly lz ixcm iycm izcm
|
||||
ID2 masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz vxcm vycm vzcm lx ly lz ixcm iycm izcm
|
||||
...
|
||||
IDN masstotal xcm ycm zcm ixx iyy izz ixy ixz iyz vxcm vycm vzcm lx ly lz ixcm iycm izcm :pre
|
||||
|
||||
The rigid body IDs are all positive integers. For the {single}
|
||||
bodystyle, only an ID of 1 can be used. For the {group} bodystyle,
|
||||
IDs from 1 to Ng can be used where Ng is the number of specified
|
||||
groups. For the {molecule} bodystyle, use the molecule ID for the
|
||||
atoms in a specific rigid body as the rigid body ID.
|
||||
|
||||
The masstotal and center-of-mass coordinates (xcm,ycm,zcm) are
|
||||
self-explanatory. The center-of-mass should be consistent with what
|
||||
is calculated for the position of the rigid body with all its atoms
|
||||
unwrapped by their respective image flags. If this produces a
|
||||
center-of-mass that is outside the simulation box, LAMMPS wraps it
|
||||
back into the box.
|
||||
|
||||
The 6 moments of inertia (ixx,iyy,izz,ixy,ixz,iyz) should be the
|
||||
values consistent with the current orientation of the rigid body
|
||||
around its center of mass. The values are with respect to the
|
||||
simulation box XYZ axes, not with respect to the principal axes of the
|
||||
rigid body itself. LAMMPS performs the latter calculation internally.
|
||||
|
||||
The (vxcm,vycm,vzcm) values are the velocity of the center of mass.
|
||||
The (lx,ly,lz) values are the angular momentum of the body. The
|
||||
(vxcm,vycm,vzcm) and (lx,ly,lz) values can simply be set to 0 if you
|
||||
wish the body to have no initial motion.
|
||||
|
||||
The (ixcm,iycm,izcm) values are the image flags of the center of mass
|
||||
of the body. For periodic dimensions, they specify which image of the
|
||||
simulation box the body is considered to be in. An image of 0 means
|
||||
it is inside the box as defined. A value of 2 means add 2 box lengths
|
||||
to get the true value. A value of -1 means subtract 1 box length to
|
||||
get the true value. LAMMPS updates these flags as the rigid bodies
|
||||
cross periodic boundaries during the simulation.
|
||||
|
||||
NOTE: If you use the {infile} keyword and write restart
|
||||
files during a simulation, then each time a restart file is written,
|
||||
the fix also write an auxiliary restart file with the name
|
||||
rfile.rigid, where "rfile" is the name of the restart file,
|
||||
e.g. tmp.restart.10000 and tmp.restart.10000.rigid. This auxiliary
|
||||
file is in the same format described above. Thus it can be used in a
|
||||
new input script that restarts the run and re-specifies a rigid fix
|
||||
using an {infile} keyword and the appropriate filename. Note that the
|
||||
auxiliary file will contain one line for every rigid body, even if the
|
||||
original file only listed a subset of the rigid bodies.
|
||||
|
||||
:line
|
||||
|
||||
[Restart, fix_modify, output, run start/stop, minimize info:]
|
||||
|
||||
No information is written to "binary restart files"_restart.html.
|
||||
If the {infile} keyword is used, an auxiliary file is written out
|
||||
with rigid body information each time a restart file is written, as
|
||||
explained above for the {infile} keyword.
|
||||
|
||||
None of the "fix_modify"_fix_modify.html options are relevant to this
|
||||
fix.
|
||||
|
||||
This fix computes a global array of values which can be accessed by
|
||||
various "output commands"_Howto_output.html.
|
||||
|
||||
The number of rows in the array is equal to the number of rigid
|
||||
bodies. The number of columns is 28. Thus for each rigid body, 28
|
||||
values are stored: the xyz coords of the center of mass (COM), the xyz
|
||||
components of the COM velocity, the xyz components of the force acting
|
||||
on the COM, the components of the 4-vector quaternion representing the
|
||||
orientation of the rigid body, the xyz components of the angular momentum
|
||||
of the body around its COM, the xyz components of the torque acting on the
|
||||
COM, the 3 principal components of the moment of inertia and the xyz image
|
||||
flags of the COM.
|
||||
|
||||
The center of mass (COM) for each body is similar to unwrapped
|
||||
coordinates written to a dump file. It will always be inside (or
|
||||
slightly outside) the simulation box. The image flags have the same
|
||||
meaning as image flags for particle positions (see the "dump" command).
|
||||
This means you can calculate the unwrapped COM by applying the image
|
||||
flags to the COM, the same as when unwrapped coordinates are written
|
||||
to a dump file.
|
||||
|
||||
The force and torque values in the array are not affected by the
|
||||
{force} and {torque} keywords in the fix rigid command; they reflect
|
||||
values before any changes are made by those keywords.
|
||||
|
||||
The ordering of the rigid bodies (by row in the array) is as follows.
|
||||
For the {single} keyword there is just one rigid body. For the
|
||||
{molecule} keyword, the bodies are ordered by ascending molecule ID.
|
||||
For the {group} keyword, the list of group IDs determines the ordering
|
||||
of bodies.
|
||||
|
||||
The array values calculated by this fix are "intensive", meaning they
|
||||
are independent of the number of particles in the simulation.
|
||||
|
||||
No parameter of this fix can be used with the {start/stop} keywords of
|
||||
the "run"_run.html command.
|
||||
|
||||
This fix is not invoked during "energy minimization"_minimize.html.
|
||||
|
||||
:line
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This fix is part of the USER-SDPD package and also depends on the RIGID
|
||||
package. It is only enabled if LAMMPS was built with both packages. See
|
||||
the "Build package"_Build_package.html doc page for more info.
|
||||
|
||||
This fix requires that atoms store density and internal energy as
|
||||
defined by the "atom_style meso"_atom_style.html command.
|
||||
|
||||
All particles in the group must be mesoscopic SPH/SDPD particles.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"fix meso/move"_fix_meso_move.html, "fix rigid"_fix_rigid.html,
|
||||
"neigh_modify exclude"_neigh_modify.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The option defaults are force * on on on and torque * on on on,
|
||||
meaning all rigid bodies are acted on by center-of-mass force and
|
||||
torque. Also reinit = yes.
|
||||
|
||||
:line
|
||||
|
||||
:link(Miller)
|
||||
[(Miller)] Miller, Eleftheriou, Pattnaik, Ndirango, and Newns,
|
||||
J Chem Phys, 116, 8649 (2002).
|
||||
@ -73,6 +73,7 @@ Fixes :h1
|
||||
fix_lineforce
|
||||
fix_manifoldforce
|
||||
fix_meso
|
||||
fix_meso_move
|
||||
fix_meso_stationary
|
||||
fix_momentum
|
||||
fix_move
|
||||
@ -137,6 +138,7 @@ Fixes :h1
|
||||
fix_restrain
|
||||
fix_rhok
|
||||
fix_rigid
|
||||
fix_rigid_meso
|
||||
fix_rx
|
||||
fix_saed_vtk
|
||||
fix_setforce
|
||||
|
||||
@ -293,6 +293,7 @@ fix_lb_viscous.html
|
||||
fix_lineforce.html
|
||||
fix_manifoldforce.html
|
||||
fix_meso.html
|
||||
fix_meso_move.html
|
||||
fix_meso_stationary.html
|
||||
fix_momentum.html
|
||||
fix_move.html
|
||||
@ -356,6 +357,7 @@ fix_reaxc_species.html
|
||||
fix_recenter.html
|
||||
fix_restrain.html
|
||||
fix_rigid.html
|
||||
fix_rigid_meso.html
|
||||
fix_rhok.html
|
||||
fix_rx.html
|
||||
fix_saed_vtk.html
|
||||
@ -615,6 +617,7 @@ pair_reax.html
|
||||
pair_reaxc.html
|
||||
pair_resquared.html
|
||||
pair_sdk.html
|
||||
pair_sdpd_taitwater_isothermal.html
|
||||
pair_smd_hertz.html
|
||||
pair_smd_tlsph.html
|
||||
pair_smd_triangulated_surface.html
|
||||
|
||||
108
doc/src/pair_sdpd_taitwater_isothermal.txt
Normal file
108
doc/src/pair_sdpd_taitwater_isothermal.txt
Normal file
@ -0,0 +1,108 @@
|
||||
"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
|
||||
|
||||
:link(lws,http://lammps.sandia.gov)
|
||||
:link(ld,Manual.html)
|
||||
:link(lc,Commands_all.html)
|
||||
|
||||
:line
|
||||
|
||||
pair_style sdpd/taitwater/isothermal command :h3
|
||||
|
||||
[Syntax:]
|
||||
|
||||
pair_style sdpd/taitwater/isothermal temperature viscosity seed
|
||||
:pre
|
||||
|
||||
temperature = temperature of the fluid (temperature units)
|
||||
viscosity = dynamic viscosity of the fluid (mass*distance/time units)
|
||||
seed = random number generator seed (positive integer, optional) :ul
|
||||
|
||||
[Examples:]
|
||||
|
||||
pair_style sdpd/taitwater/isothermal 300. 1. 28681
|
||||
pair_coeff * * 1000.0 1430.0 2.4 :pre
|
||||
|
||||
[Description:]
|
||||
|
||||
The sdpd/taitwater/isothermal style computes forces between mesoscopic
|
||||
particles according to the Smoothed Dissipative Particle Dynamics model
|
||||
described in this paper by "(Español and Revenga)"_#Español_Revenga under
|
||||
the following assumptions:
|
||||
|
||||
:olb
|
||||
The temperature is constant and uniform. :l
|
||||
The shear viscosity is constant and uniform. :l
|
||||
The volume viscosity is negligible before the shear viscosity. :l
|
||||
The Boltzmann constant is negligible before the heat capacity of a
|
||||
single mesoscopic particle of fluid. :ole,l
|
||||
|
||||
The third assumption is true for water in nearly incompressible flows.
|
||||
The fourth holds true for water for any reasonable size one can
|
||||
imagine for a mesoscopic particle.
|
||||
|
||||
The pressure forces between particles will be computed according to
|
||||
Tait's equation of state:
|
||||
|
||||
:c,image(Eqs/pair_sph_tait.jpg)
|
||||
|
||||
where gamma = 7 and B = c_0^2 rho_0 / gamma, with rho_0 being the
|
||||
reference density and c_0 the reference speed of sound.
|
||||
|
||||
The laminar viscosity and the random forces will be computed according
|
||||
to formulas described in "(Español and Revenga)"_#Español_Revenga.
|
||||
|
||||
IMPORTANT NOTE: Similar to "brownian"_pair_brownian.html and
|
||||
"dpd"_pair_dpd.html styles, the "newton"_newton.html setting for
|
||||
pairwise interactions needs to be on when running LAMMPS in parallel
|
||||
if you want to ensure linear momentum conservation. Otherwise random
|
||||
forces generated for pairs straddling processor boundary will not be
|
||||
equal and opposite.
|
||||
|
||||
NOTE: The actual random seed used will be a mix of what you specify
|
||||
and other parameters like the MPI ranks. This is to ensure that
|
||||
different MPI tasks have distinct seeds.
|
||||
|
||||
The following coefficients must be defined for each pair of atoms
|
||||
types via the "pair_coeff"_pair_coeff.html command as in the examples
|
||||
above.
|
||||
|
||||
rho0 reference density (mass/volume units)
|
||||
c0 reference soundspeed (distance/time units)
|
||||
h kernel function cutoff (distance units) :ul
|
||||
|
||||
:line
|
||||
|
||||
[Mixing, shift, table, tail correction, restart, rRESPA info]:
|
||||
|
||||
This style does not support mixing. Thus, coefficients for all
|
||||
I,J pairs must be specified explicitly.
|
||||
|
||||
This style does not support the "pair_modify"_pair_modify.html
|
||||
shift, table, and tail options.
|
||||
|
||||
This style does not write information to "binary restart
|
||||
files"_restart.html. Thus, you need to re-specify the pair_style and
|
||||
pair_coeff commands in an input script that reads a restart file.
|
||||
|
||||
This style can only be used via the {pair} keyword of the "run_style
|
||||
respa"_run_style.html command. It does not support the {inner},
|
||||
{middle}, {outer} keywords.
|
||||
|
||||
[Restrictions:]
|
||||
|
||||
This pair style is part of the USER-SDPD package. It is only enabled
|
||||
if LAMMPS was built with that package. See the "Build
|
||||
package"_Build_package.html doc page for more info.
|
||||
|
||||
[Related commands:]
|
||||
|
||||
"pair coeff"_pair_coeff.html, "pair sph/rhosum"_pair_sph_rhosum.html
|
||||
|
||||
[Default:]
|
||||
|
||||
The default seed is 0 (before mixing).
|
||||
|
||||
:line
|
||||
|
||||
:link(Español_Revenga)
|
||||
[(Español and Revenga)] Español, Revenga, Physical Review E, 67, 026705 (2003).
|
||||
@ -268,6 +268,7 @@ pair"_Commands_pair.html doc page are followed by one or more of
|
||||
"reax/c"_pair_reaxc.html - ReaxFF potential in C
|
||||
"rebo"_pair_airebo.html - 2nd generation REBO potential of Brenner
|
||||
"resquared"_pair_resquared.html - Everaers RE-Squared ellipsoidal potential
|
||||
"sdpd/taitwater/isothermal"_pair_sdpd_taitwater_isothermal.html - smoothed dissipative particle dynamics for water at isothermal conditions
|
||||
"smd/hertz"_pair_smd_hertz.html -
|
||||
"smd/tlsph"_pair_smd_tlsph.html -
|
||||
"smd/tri_surface"_pair_smd_triangulated_surface.html -
|
||||
|
||||
@ -86,6 +86,7 @@ Pair Styles :h1
|
||||
pair_reaxc
|
||||
pair_resquared
|
||||
pair_sdk
|
||||
pair_sdpd_taitwater_isothermal
|
||||
pair_smd_hertz
|
||||
pair_smd_tlsph
|
||||
pair_smd_triangulated_surface
|
||||
|
||||
Reference in New Issue
Block a user