Draft examples, patches, clarify interface reconstruct in RHEO

This commit is contained in:
jtclemm
2024-05-19 11:22:52 -06:00
parent 343f8afbf6
commit 8d25c510c1
32 changed files with 1265 additions and 274 deletions

View File

@ -134,6 +134,8 @@ Lowercase directories
+-------------+------------------------------------------------------------------+
| rerun | use of rerun and read_dump commands |
+-------------+------------------------------------------------------------------+
| rheo | RHEO simulations of fluid flows and phase transitions |
+-------------+------------------------------------------------------------------+
| rigid | rigid bodies modeled as independent or coupled |
+-------------+------------------------------------------------------------------+
| shear | sideways shear applied to 2d solid, with and without a void |

View File

@ -10,8 +10,12 @@ particles can dynamically change between a fluid and solid state, e.g. during
melting/solidification, which determines how they interact and their physical
behavior. The package is designed with modularity in mind, so one can easily
turn various features on/off, adjust physical details of the system, or
develop new capabilities. Additional numerical details can be found in
:ref:`(Palermo) <howto_rheo_palermo>` and :ref:`(Clemmer) <howto_rheo_clemmer>`.
develop new capabilities. For instance, the numerics associated with
calculating gradients, reproducing kernels, etc. are separated into distinct
classes to simplify the development of new integration schemes which can call
these calculations. Additional numerical details can be found in
:ref:`(Palermo) <howto_rheo_palermo>` and
:ref:`(Clemmer) <howto_rheo_clemmer>`.
----------
@ -29,12 +33,17 @@ other RHEO fixes.
Typically, RHEO requires atom style rheo. In addition to typical atom
properties like positions and forces, particles store a local density,
viscosity, pressure, and status. If thermal evolution is modeled, one must
use atom style rheo/thermal which also include a local temperature and
conductivity. The status variable uses bitmasking to track various
properties of a particle such as its current state of matter (fluid or solid)
and its location relative to a surface. Many of these properties (and others)
can be easily accessed using
:doc:`compute rheo/property/atom <fix_rheo_property_atom>`.
use atom style rheo/thermal which also includes a local energy, temperature, and
conductivity. Note that the temperature is always derived from the energy.
This implies the *temperature* attribute of :doc:`the set command <set>` does not
affect particles. Instead, one should use the *sph/e* attribute.
The status variable uses bitmasking to track various properties of a particle
such as its current state of matter (fluid or solid) and its location relative
to a surface. Some of these properties (and others) can be accessed using
:doc:`compute rheo/property/atom <fix_rheo_property_atom>`. The *status* attribute
in :doc:`the set command <set>` only allows control over the first bit which sets
the state of matter, 0 is fluid and 1 is solid.
Fluid interactions, including pressure forces, viscous forces, and heat exchange,
are calculated using :doc:`pair rheo <pair_rheo>`. Unlike typical pair styles,
@ -61,7 +70,8 @@ in the same elastic body.
In systems with thermal evolution, fix rheo/thermal can optionally set a
melting/solidification temperature allowing particles to dynamically swap their
state between fluid and solid. Using the *react* option, one can specify a maximum
state between fluid and solid when the temperature exceeds or drops below the
critical temperature, respectively. Using the *react* option, one can specify a maximum
bond length and a bond type. Then, when solidifying, particles will search their
local neighbors and automatically create bonds with any neighboring solid particles
in range. For BPM bond styles, bonds will then use the immediate position of the two

View File

@ -65,7 +65,7 @@ the setup of a run. Data is then preserved across run commands and is
written to :doc:`binary restart files <restart>` such that restarting
the system will not reset the reference state of a bond or the timer.
This bond style is based on a model described in Ref.
This bond style is based on a model described in
:ref:`(Clemmer) <howto_rheo_clemmer>`. The force has a magnitude of
.. math::

View File

@ -16,19 +16,18 @@ Syntax
.. parsed-literal::
possible attributes = phase, chi, surface, surface/r,
possible attributes = phase, surface, surface/r,
surface/divr, surface/n/x, surface/n/y,
surface/n/z, coordination, cv, shift/v/x,
shift/v/y, shift/v/z, energy, temperature, heatflow,
conductivity, cv, viscosity, pressure,
status, rho, grad/v/xx, grad/v/xy, grad/v/xz,
rho, grad/v/xx, grad/v/xy, grad/v/xz,
grad/v/yx, grad/v/yy/, grad/v/yz, grad/v/zx,
grad/v/zy, grad/v/zz
.. parsed-literal::
*phase* = atom phase state
*chi* = atom local phase metric
*surface* = atom surface status
*surface/r* = atom distance from the surface
*surface/divr* = divergence of position at atom position
@ -42,7 +41,6 @@ Syntax
*cv* = atom specific heat
*viscosity* = atom viscosity
*pressure* = atom pressure
*status* = atom full status
*rho* = atom density
*grad/v/\** = atom velocity gradient
*nbond/shell* = number of oxide bonds
@ -70,14 +68,32 @@ computes as inputs. See for example, the
:doc:`fix ave/chunk <fix_ave_chunk>`, and
:doc:`atom-style variable <variable>` commands.
The possible attributes are described in more detail in other RHEO doc
pages including :doc:`the RHEO howto page <Howto_rheo>`. Many
properties require their respective fixes, listed below in related
commands, be defined.
Many properties require their respective fixes, listed below in related
commands, be defined. For instance, the *viscosity* attribute is the
viscosity of a particle calculated by
:doc:`fix rheo/viscous <fix_rheo_viscosity>`. The meaning of less obvious
properties is described below.
The *phase* property indicates whether the particle is in a fluid state,
a value of 0, or a solid state, a value of 1.
The *surface* property indicates the surface designation produced by
the *interface/reconstruct* option of :doc:`fix rheo <fix_rheo>`. Bulk
particles have a value of 0, surface particles have a value of 1, and
splash particles have a value of 2. The *surface/r* property is the
distance from the surface, up to the kernel cutoff length. Surface particles
have a value of 0. The *surface/n* properties are the components of the
surface normal vector.
The *shift/v* properties are the components of the shifting velocity
produced by the *shift* option of :doc:`fix rheo <fix_rheo>`.
The *surface/n/\** and *shift/v/\** attributes are vectors that require
specification of the *x*, *y*, or *z* component, e.g. *surface/n/x*.
The *nbond/shell* property is the number of shell bonds that have been
activated from :doc:`bond style rheo/shell <bond_rheo_shell>`.
The *grad/v/\** attribute is a tensor and requires specification of
the *xx*, *yy*, *zz*, *xy*, *xz*, *yx*, *yz*, *zx*, or *zy* component,
e.g. *grad/v/xy*.

View File

@ -92,7 +92,8 @@ Shifting is then disabled in the direction away from the free surface to
prevent it from diffusing particles away from the bulk fluid. Surface
detection can also be used to control surface-nucleated effects like
oxidation when used in combination with
:doc:`fix rheo/oxidation <fix_rheo_oxidation>`.
:doc:`fix rheo/oxidation <fix_rheo_oxidation>`. Surface detection is not
performed on solid bodies.
The *surface/detection* keyword takes three arguments: *sdstyle*, *limit*,
and *limi/splash*. The first, *sdstyle*, specifies whether surface particles

View File

@ -35,10 +35,12 @@ for use with bond style :doc:`bond rheo/shell <bond_rheo_shell>`.
Every timestep, particles check neighbors within a distance of *cut*.
This distance must be smaller than the kernel length defined in
:doc:`fix rheo <fix_rheo>`. If both particles are on the fluid surface,
or within a distance of *rsurf* from the surface, a bond of type
*btype* is created between the two particles. This process is
further described in Ref. :ref:`(Clemmer) <howto_rheo_clemmer>`.
:doc:`fix rheo <fix_rheo>`. Bonds of type *btype* are created between
pairs of particles that satisfy one of two conditions. First, if both
particles are on the fluid surface, or within a distance of *rsurf*
from the surface. Secondly, if one particle is on the fluid surface
and the other bond is solid. This process is further described in
:ref:`(Clemmer) <howto_rheo_clemmer>`.
If used in conjunction with solid bodies, such as those generated
by the *react* option of :doc:`fix rheo/thermal <fix_rheo_thermal>`,

View File

@ -55,12 +55,20 @@ rheo/thermal. In addition, it defines multiple thermal properties of
particles and handles melting/solidification, if applicable. For more details
on phase transitions in RHEO, see :doc:`the RHEO howto <Howto_rheo>`.
Note that the temperature of a particle is always derived from the energy.
This implies the *temperature* attribute of :doc:`the set command <set>` does
not affect particles. Instead, one should use the *sph/e* attribute.
For each atom type, one can define attributes for the *conductivity*,
*specific/heat*, *latent/heat*, and critical temperature (*Tfreeze*).
The conductivity and specific heat must be defined for all atom types.
The latent heat and critical temperature are optional. However, a
critical temperature must be defined to specify a latent heat.
Note, if shifting is turned on in :doc:`fix rheo <fix_rheo>`, the gradient
of the energy is used to shift energies. This may be inappropriate in systems
with multiple atom types with different specific heats.
For each property, one must first define a list of atom types. A wild-card
asterisk can be used in place of or in conjunction with the *types* argument
to set the coefficients for multiple pairs of atom types. This takes the

View File

@ -717,7 +717,7 @@ of analysis.
* - rheo
- atom-ID atom-type status rho x y z
* - rheo/thermal
- atom-ID atom-type status rho temperature x y z
- atom-ID atom-type status rho energy x y z
* - smd
- atom-ID atom-type molecule volume mass kradius cradius x0 y0 z0 x y z
* - sph