refactoring of code and doc files
This commit is contained in:
@ -21,13 +21,9 @@ Syntax
|
|||||||
|
|
||||||
.. parsed-literal::
|
.. parsed-literal::
|
||||||
|
|
||||||
*xlo*\ ,\ *ylo*\ ,\ *zlo* arg = EDGE or constant or variable
|
arg = EDGE or constant or variable
|
||||||
EDGE = current lo edge of simulation box
|
EDGE = current lo edge of simulation box
|
||||||
constant = number like 0.0 or -30.0 (distance units)
|
constant = number like 0.0 or 30.0 (distance units)
|
||||||
variable = :doc:`equal-style variable <variable>` like v_x or v_wiggle
|
|
||||||
*xhi*\ ,\ *yhi*\ ,\ *zhi* arg = EDGE or constant or variable
|
|
||||||
EDGE = current hi edge of simulation box
|
|
||||||
constant = number like 50.0 or 100.3 (distance units)
|
|
||||||
variable = :doc:`equal-style variable <variable>` like v_x or v_wiggle
|
variable = :doc:`equal-style variable <variable>` like v_x or v_wiggle
|
||||||
|
|
||||||
* zero or more keyword/value pairs may be appended
|
* zero or more keyword/value pairs may be appended
|
||||||
@ -62,11 +58,12 @@ by a distance delta (e.g. due to :doc:`fix nve <fix_nve>`), then it is
|
|||||||
put back inside the face by the same delta, and the sign of the
|
put back inside the face by the same delta, and the sign of the
|
||||||
corresponding component of its velocity is flipped.
|
corresponding component of its velocity is flipped.
|
||||||
|
|
||||||
When used in conjunction with :doc:`fix nve <fix_nve>` and :doc:`run\_style verlet <run_style>`, the resultant time-integration algorithm is
|
When used in conjunction with :doc:`fix nve <fix_nve>` and
|
||||||
equivalent to the primitive splitting algorithm (PSA) described by
|
:doc:`run\_style verlet <run_style>`, the resultant time-integration
|
||||||
:ref:`Bond <Bond1>`. Because each reflection event divides
|
algorithm is equivalent to the primitive splitting algorithm (PSA)
|
||||||
the corresponding timestep asymmetrically, energy conservation is only
|
described by :ref:`Bond <Bond1>`. Because each reflection event
|
||||||
satisfied to O(dt), rather than to O(dt\^2) as it would be for
|
divides the corresponding timestep asymmetrically, energy conservation
|
||||||
|
is only satisfied to O(dt), rather than to O(dt\^2) as it would be for
|
||||||
velocity-Verlet integration without reflective walls.
|
velocity-Verlet integration without reflective walls.
|
||||||
|
|
||||||
Up to 6 walls or faces can be specified in a single command: *xlo*\ ,
|
Up to 6 walls or faces can be specified in a single command: *xlo*\ ,
|
||||||
@ -156,17 +153,19 @@ perturbation on the particles:
|
|||||||
Styles with a *gpu*\ , *intel*\ , *kk*\ , *omp*\ , or *opt* suffix are
|
Styles with a *gpu*\ , *intel*\ , *kk*\ , *omp*\ , or *opt* suffix are
|
||||||
functionally the same as the corresponding style without the suffix.
|
functionally the same as the corresponding style without the suffix.
|
||||||
They have been optimized to run faster, depending on your available
|
They have been optimized to run faster, depending on your available
|
||||||
hardware, as discussed on the :doc:`Speed packages <Speed_packages>` doc
|
hardware, as discussed on the :doc:`Speed packages <Speed_packages>`
|
||||||
page. The accelerated styles take the same arguments and should
|
doc page. The accelerated styles take the same arguments and should
|
||||||
produce the same results, except for round-off and precision issues.
|
produce the same results, except for round-off and precision issues.
|
||||||
|
|
||||||
These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
|
These accelerated styles are part of the GPU, USER-INTEL, KOKKOS,
|
||||||
USER-OMP and OPT packages, respectively. They are only enabled if
|
USER-OMP and OPT packages, respectively. They are only enabled if
|
||||||
LAMMPS was built with those packages. See the :doc:`Build package <Build_package>` doc page for more info.
|
LAMMPS was built with those packages. See the :doc:`Build package
|
||||||
|
<Build_package>` doc page for more info.
|
||||||
|
|
||||||
You can specify the accelerated styles explicitly in your input script
|
You can specify the accelerated styles explicitly in your input script
|
||||||
by including their suffix, or you can use the :doc:`-suffix command-line switch <Run_options>` when you invoke LAMMPS, or you can use the
|
by including their suffix, or you can use the :doc:`-suffix
|
||||||
:doc:`suffix <suffix>` command in your input script.
|
command-line switch <Run_options>` when you invoke LAMMPS, or you can
|
||||||
|
use the :doc:`suffix <suffix>` command in your input script.
|
||||||
|
|
||||||
See the :doc:`Speed packages <Speed_packages>` doc page for more
|
See the :doc:`Speed packages <Speed_packages>` doc page for more
|
||||||
instructions on how to use the accelerated styles effectively.
|
instructions on how to use the accelerated styles effectively.
|
||||||
@ -177,11 +176,13 @@ instructions on how to use the accelerated styles effectively.
|
|||||||
|
|
||||||
**Restart, fix\_modify, output, run start/stop, minimize info:**
|
**Restart, fix\_modify, output, run start/stop, minimize info:**
|
||||||
|
|
||||||
No information about this fix is written to :doc:`binary restart files <restart>`. None of the :doc:`fix\_modify <fix_modify>` options
|
No information about this fix is written to :doc:`binary restart files
|
||||||
are relevant to this fix. No global or per-atom quantities are stored
|
<restart>`. None of the :doc:`fix\_modify <fix_modify>` options are
|
||||||
by this fix for access by various :doc:`output commands <Howto_output>`.
|
relevant to this fix. No global or per-atom quantities are stored by
|
||||||
|
this fix for access by various :doc:`output commands <Howto_output>`.
|
||||||
No parameter of this fix can be used with the *start/stop* keywords of
|
No parameter of this fix can be used with the *start/stop* keywords of
|
||||||
the :doc:`run <run>` command. This fix is not invoked during :doc:`energy minimization <minimize>`.
|
the :doc:`run <run>` command. This fix is not invoked during
|
||||||
|
:doc:`energy minimization <minimize>`.
|
||||||
|
|
||||||
Restrictions
|
Restrictions
|
||||||
""""""""""""
|
""""""""""""
|
||||||
@ -192,17 +193,18 @@ Any dimension (xyz) that has a reflecting wall must be non-periodic.
|
|||||||
A reflecting wall should not be used with rigid bodies such as those
|
A reflecting wall should not be used with rigid bodies such as those
|
||||||
defined by a "fix rigid" command. This is because the wall/reflect
|
defined by a "fix rigid" command. This is because the wall/reflect
|
||||||
displaces atoms directly rather than exerts a force on them. For
|
displaces atoms directly rather than exerts a force on them. For
|
||||||
rigid bodies, use a soft wall instead, such as :doc:`fix wall/lj93 <fix_wall>`. LAMMPS will flag the use of a rigid
|
rigid bodies, use a soft wall instead, such as :doc:`fix wall/lj93
|
||||||
fix with fix wall/reflect with a warning, but will not generate an
|
<fix_wall>`. LAMMPS will flag the use of a rigid fix with fix
|
||||||
error.
|
wall/reflect with a warning, but will not generate an error.
|
||||||
|
|
||||||
Related commands
|
Related commands
|
||||||
""""""""""""""""
|
""""""""""""""""
|
||||||
|
|
||||||
:doc:`fix wall/lj93 <fix_wall>`, :doc:`fix oneway <fix_oneway>`
|
:doc:`fix wall/lj93 <fix_wall>`, :doc:`fix oneway <fix_oneway>`
|
||||||
|
|
||||||
**Default:** none
|
**Default:**
|
||||||
|
|
||||||
|
The default for the units keyword is lattice.
|
||||||
|
|
||||||
----------
|
----------
|
||||||
|
|
||||||
|
|||||||
@ -1,98 +0,0 @@
|
|||||||
"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 wall/stochastic command :h3
|
|
||||||
|
|
||||||
[Syntax:]
|
|
||||||
|
|
||||||
fix ID group-ID wall/reflect/stochastic reflectionstyle seed face pos temp velx vely velz accomx accomy accomz ... :pre
|
|
||||||
|
|
||||||
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
|
||||||
wall/reflect/stochastic = style name of this fix command :l
|
|
||||||
one or more face/arg pairs may be appended :l
|
|
||||||
reflectionstyle = diffusive or maxwell or cercignanilampis :l
|
|
||||||
seed = random seed for stochastic wall (must be less than 900000000) :l
|
|
||||||
face = {xlo} or {xhi} or {ylo} or {yhi} or {zlo} or {zhi} :l
|
|
||||||
{xlo},{ylo},{zlo} pos = EDGE or constant
|
|
||||||
EDGE = current lo edge of simulation box
|
|
||||||
constant = number like 0.0 or -30.0 (distance units)
|
|
||||||
temp = wall temperature
|
|
||||||
velx, vely, velz = wall velocity along x, y, z directions
|
|
||||||
accomx, accomy, accomz = accommodation coefficients along x, y, z directions (only for maxwell and cercignanilampis reflection style)
|
|
||||||
{xhi},{yhi},{zhi} pos = EDGE or constant or variable
|
|
||||||
EDGE = current hi edge of simulation box
|
|
||||||
constant = number like 50.0 or 100.3 (distance units)
|
|
||||||
temp = wall temperature
|
|
||||||
velx, vely, velz = wall velocity along x, y, z directions
|
|
||||||
accomx, accomy, accomz = accommodation coefficients along x, y, z directions (only for maxwell and cercignanilampis style) :pre
|
|
||||||
zero or more keyword/value pairs may be appended :l
|
|
||||||
keyword = {units} :l
|
|
||||||
{units} value = {lattice} or {box}
|
|
||||||
{lattice} = the wall position is defined in lattice units
|
|
||||||
{box} = the wall position is defined in simulation box units :pre
|
|
||||||
:ule
|
|
||||||
|
|
||||||
[Examples:]
|
|
||||||
|
|
||||||
fix zwalls all wall/reflect/stochastic diffusive 23424 zlo EDGE 300 0.1 0.1 0 zhi EDGE 200 0.1 0.1 0
|
|
||||||
fix ywalls all wall/reflect/stochastic maxwell 345533 ylo 5.0 300 0.1 0.0 0.0 0.8 yhi 10.0 300 0.1 0.0 0.0 0.8
|
|
||||||
fix xwalls all wall/reflect/stochastic cercignanilampis 2308 xlo 0.0 300 0.0 0.1 0.9 0.8 0.7 xhi EDGE 300 0.0 0.1 0 0.9 0.8 0.7 units box :pre
|
|
||||||
|
|
||||||
[Description:]
|
|
||||||
|
|
||||||
This fix models the stochastic and inelastic collisions between fluid atoms and a solid boundary. The solid surface with finite temperature and moving speed can exchange energy with the fluid atoms. Different from the command fix wall/reflect which is equivalent to the mirror reflection, the post collision velocity of the fluid atoms in the stochastic wall model is random. The randomness can come from many sources: thermal motion of solid atoms, the surface roughness, etc... Three stochastic wall models are implemented.
|
|
||||||
|
|
||||||
Diffusive wall (reflectionstyle = diffusive): all the gas atoms are
|
|
||||||
reflected diffusively. Their velocity distribution corresponds to the
|
|
||||||
equilibrium distribution at the wall temperature.
|
|
||||||
|
|
||||||
Maxwell model (reflectionstyle = maxwell): the reflection is partially
|
|
||||||
diffusive and partially specular. The accommodation coefficient is the
|
|
||||||
portion of the diffusive reflection "Maxwell"_#Maxwell.
|
|
||||||
|
|
||||||
Cercignani/Lampis model: 3 accommodations coefficients are used, two
|
|
||||||
velocity accommodation coefficients and one normal kinetic energy
|
|
||||||
accommodation "CL"_#CL, "To"_#To. The code will recognize automatically
|
|
||||||
the normal direction of the wall and the other two tangential
|
|
||||||
directions. For example, if accomx = 0.5, accomy = 0.2, accomz = 0.3 and
|
|
||||||
the wall is normal to direction y, accomx and accomz are the tangential
|
|
||||||
velocity accommodation coefficients and accomy is the normal kinetic
|
|
||||||
energy accommodation coefficients.
|
|
||||||
|
|
||||||
The {units} keyword determines the distance units used to define a wall
|
|
||||||
position. A {box} value selects standard distance units as defined by
|
|
||||||
the "units"_units.html command, e.g. Angstroms for units = real or
|
|
||||||
metal. A {lattice} value means the distance units are in lattice
|
|
||||||
spacings. The "lattice"_lattice.html command must have been previously
|
|
||||||
used to define the lattice spacings.
|
|
||||||
|
|
||||||
:line
|
|
||||||
|
|
||||||
[Restrictions:]
|
|
||||||
|
|
||||||
Due to the similarities, this fix has the same limitation as the the
|
|
||||||
wall/reflect. Any dimension (xyz) that has a wall must be non-periodic. It
|
|
||||||
should not be used with rigid bodies such as those defined by a "fix rigid"
|
|
||||||
command. Furthermore, the wall velocity must lie on the same plane as the wall. Package USER-MISC is required to use this fix.
|
|
||||||
|
|
||||||
[Related commands:]
|
|
||||||
|
|
||||||
"fix wall/reflect"_fix_wall_reflect.html,
|
|
||||||
|
|
||||||
[Default:] none
|
|
||||||
|
|
||||||
:line
|
|
||||||
|
|
||||||
:link(Maxwell)
|
|
||||||
[(Maxwell)] J.C. Maxwell, Philos. Tans. Royal Soc. London, 157: 49-88 (1867).
|
|
||||||
|
|
||||||
:link(CL)
|
|
||||||
[(Cercignani)] C. Cercignani and M. Lampis. Trans. Theory Stat. Phys. 1, 2, 101 (1971).
|
|
||||||
|
|
||||||
:link(To)
|
|
||||||
[(To)] Q.D. To, V.H. Vu, G. Lauriat, and C. Leonard. J. Math. Phys. 56, 103101 (2015).
|
|
||||||
126
doc/txt/fix_wall_reflect_stochastic.txt
Normal file
126
doc/txt/fix_wall_reflect_stochastic.txt
Normal file
@ -0,0 +1,126 @@
|
|||||||
|
"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 wall/reflect/stochastic command :h3
|
||||||
|
|
||||||
|
[Syntax:]
|
||||||
|
|
||||||
|
fix ID group-ID wall/reflect/stochastic rstyle seed face args ... keyword value ... :pre
|
||||||
|
|
||||||
|
ID, group-ID are documented in "fix"_fix.html command :ulb,l
|
||||||
|
wall/reflect/stochastic = style name of this fix command :l
|
||||||
|
rstyle = diffusive or maxwell or ccl :l
|
||||||
|
seed = random seed for stochasticity (positive integer) :l
|
||||||
|
one or more face/args pairs may be appended :l
|
||||||
|
face = {xlo} or {xhi} or {ylo} or {yhi} or {zlo} or {zhi} :l
|
||||||
|
args = pos temp velx vely velz accomx accomy accomz
|
||||||
|
pos = EDGE or constant
|
||||||
|
EDGE = current lo or hi edge of simulation box
|
||||||
|
constant = number like 0.0 or 30.0 (distance units)
|
||||||
|
temp = wall temperature (temperature units)
|
||||||
|
velx,vely,velz = wall velocity in x,y,z directions (velocity units)
|
||||||
|
accomx,accomy,accomz = accommodation coeffs in x,y,z directions (unitless)
|
||||||
|
not specified for rstyle = diffusive
|
||||||
|
single accom coeff specified for rstyle maxwell
|
||||||
|
all 3 coeffs specified for rstyle cll :pre
|
||||||
|
zero or more keyword/value pairs may be appended :l
|
||||||
|
keyword = {units} :l
|
||||||
|
{units} value = {lattice} or {box}
|
||||||
|
{lattice} = the wall position is defined in lattice units
|
||||||
|
{box} = the wall position is defined in simulation box units :pre
|
||||||
|
:ule
|
||||||
|
|
||||||
|
[Examples:]
|
||||||
|
|
||||||
|
fix zwalls all wall/reflect/stochastic diffusive 23424 zlo EDGE 300 0.1 0.1 0 zhi EDGE 200 0.1 0.1 0
|
||||||
|
fix ywalls all wall/reflect/stochastic maxwell 345533 ylo 5.0 300 0.1 0.0 0.0 0.8 yhi 10.0 300 0.1 0.0 0.0 0.8
|
||||||
|
fix xwalls all wall/reflect/stochastic cercignanilampis 2308 xlo 0.0 300 0.0 0.1 0.9 0.8 0.7 xhi EDGE 300 0.0 0.1 0 0.9 0.8 0.7 units box :pre
|
||||||
|
|
||||||
|
[Description:]
|
||||||
|
|
||||||
|
Bound the simulation with one or more walls which reflect particles
|
||||||
|
in the specified group when they attempt to move through them.
|
||||||
|
|
||||||
|
Reflection means that if an atom moves outside the wall on a timestep
|
||||||
|
(e.g. due to the "fix nve"_fix_nve.html command), then it is put back
|
||||||
|
inside the wall with a changed velocity.
|
||||||
|
|
||||||
|
This fix models treats the wall as a moving solid boundary with a
|
||||||
|
finite temperature, which can exchange energy with particles that
|
||||||
|
collide with it. This is different than the simpler "fix
|
||||||
|
wall/reflect"_fix_wall_reflect.html command which models mirror
|
||||||
|
reflection. For this fix, the post collision velocity of each
|
||||||
|
particle is treated stochastically. The randomness can come from many
|
||||||
|
sources: thermal motion of the wall atoms, surface roughness, etc.
|
||||||
|
Three stochastic reflection models are currently implemented.
|
||||||
|
|
||||||
|
For rstyle {diffusive}, particles are reflected diffusively. Their
|
||||||
|
velocity distribution corresponds to an equilibrium distribution of
|
||||||
|
particles at the wall temperature. No accomondation coeffs are
|
||||||
|
specified.
|
||||||
|
|
||||||
|
For rstyle {maxwell}, particle reflection is Maxwellian which means
|
||||||
|
partially diffusive and partially specular ("Maxwell"_#Maxwell). A
|
||||||
|
single accommodation coeff is specified which must be between 0.0 and
|
||||||
|
1.0 inclusive. It determines the fraction of the collision which is
|
||||||
|
diffusive versus specular. An accomodation coeff of 1.0 is fully
|
||||||
|
diffusive; a coeff of 0.0 is fully specular.
|
||||||
|
|
||||||
|
For rstyle {cll}, particle collisons are computed by the
|
||||||
|
Cercignani/Lampis model. See "CL"_#CL and "To"_#To for details.
|
||||||
|
Three accommodations coefficient are specified. Each must be between
|
||||||
|
0.0 and 1.0 inclusive. Two are velocity accommodation coefficients;
|
||||||
|
one is a normal kinetic energy accommodation. The normal coeff is the
|
||||||
|
one corresponding to the normal of the wall itself. For example if
|
||||||
|
the wall is {ylo} or {yhi}, {accomx} and {accomz} are the tangential
|
||||||
|
velocity accommodation coefficients, and {accomy} is the normal
|
||||||
|
kinetic energy accommodation coefficient.
|
||||||
|
|
||||||
|
The optional {units} keyword determines the distance units used to
|
||||||
|
define a wall position. A {box} value selects standard distance units
|
||||||
|
as defined by the "units"_units.html command, e.g. Angstroms for units
|
||||||
|
= real or metal. A {lattice} value means the distance units are in
|
||||||
|
lattice spacings. The "lattice"_lattice.html command must have been
|
||||||
|
previously used to define the lattice spacings.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
[Restrictions:]
|
||||||
|
|
||||||
|
This fix has the same limitations as the "fix
|
||||||
|
wall/reflect"_fix_wall_reflect.html command. Any dimension (xyz) that
|
||||||
|
has a wall must be non-periodic. It should not be used with rigid
|
||||||
|
bodies such as those defined by the "fix rigid"_fix_rigid.html
|
||||||
|
command. The wall velocity must lie on the same plane as the wall
|
||||||
|
itself.
|
||||||
|
|
||||||
|
This fix is part of the USER-MISC 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:]
|
||||||
|
|
||||||
|
"fix wall/reflect"_fix_wall_reflect.html
|
||||||
|
|
||||||
|
[Default:]
|
||||||
|
|
||||||
|
The default for the units keyword is lattice.
|
||||||
|
|
||||||
|
:line
|
||||||
|
|
||||||
|
:link(Maxwell)
|
||||||
|
[(Maxwell)] J.C. Maxwell, Philos. Tans. Royal Soc. London, 157: 49-88
|
||||||
|
(1867).
|
||||||
|
|
||||||
|
:link(CL)
|
||||||
|
[(Cercignani)] C. Cercignani and M. Lampis. Trans. Theory
|
||||||
|
Stat. Phys. 1, 2, 101 (1971).
|
||||||
|
|
||||||
|
:link(To)
|
||||||
|
[(To)] Q.D. To, V.H. Vu, G. Lauriat, and
|
||||||
|
C. Leonard. J. Math. Phys. 56, 103101 (2015).
|
||||||
@ -29,7 +29,7 @@
|
|||||||
using namespace LAMMPS_NS;
|
using namespace LAMMPS_NS;
|
||||||
using namespace FixConst;
|
using namespace FixConst;
|
||||||
|
|
||||||
enum{NONE=0,DIFFUSIVE=1,MAXWELL=2,CERCIGNANILAMPIS=3};
|
enum{NONE,DIFFUSIVE,MAXWELL,CCL};
|
||||||
|
|
||||||
/* ---------------------------------------------------------------------- */
|
/* ---------------------------------------------------------------------- */
|
||||||
|
|
||||||
@ -51,16 +51,16 @@ FixWallReflectStochastic(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
|
|
||||||
nwall = 0;
|
nwall = 0;
|
||||||
int scaleflag = 1;
|
int scaleflag = 1;
|
||||||
reflectionstyle = NONE;
|
rstyle = NONE;
|
||||||
|
|
||||||
if (strcmp(arg[3],"diffusive") == 0) {
|
if (strcmp(arg[3],"diffusive") == 0) {
|
||||||
reflectionstyle = DIFFUSIVE;
|
rstyle = DIFFUSIVE;
|
||||||
arginc = 6;
|
arginc = 6;
|
||||||
} else if (strcmp(arg[3],"maxwell") == 0) {
|
} else if (strcmp(arg[3],"maxwell") == 0) {
|
||||||
reflectionstyle = MAXWELL;
|
rstyle = MAXWELL;
|
||||||
arginc = 7;
|
arginc = 7;
|
||||||
} else if (strcmp(arg[3],"cercignanilampis") == 0) {
|
} else if (strcmp(arg[3],"ccl") == 0) {
|
||||||
reflectionstyle = CERCIGNANILAMPIS;
|
rstyle = CCL;
|
||||||
arginc = 9;
|
arginc = 9;
|
||||||
} else error->all(FLERR,"Illegal fix wall/reflect/stochastic command");
|
} else error->all(FLERR,"Illegal fix wall/reflect/stochastic command");
|
||||||
|
|
||||||
@ -73,7 +73,7 @@ FixWallReflectStochastic(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) ||
|
if ((strcmp(arg[iarg],"xlo") == 0) || (strcmp(arg[iarg],"xhi") == 0) ||
|
||||||
(strcmp(arg[iarg],"ylo") == 0) || (strcmp(arg[iarg],"yhi") == 0) ||
|
(strcmp(arg[iarg],"ylo") == 0) || (strcmp(arg[iarg],"yhi") == 0) ||
|
||||||
(strcmp(arg[iarg],"zlo") == 0) || (strcmp(arg[iarg],"zhi") == 0)) {
|
(strcmp(arg[iarg],"zlo") == 0) || (strcmp(arg[iarg],"zhi") == 0)) {
|
||||||
if (iarg+2 > narg)
|
if (iarg+arginc > narg)
|
||||||
error->all(FLERR,"Illegal fix wall/reflect/stochastic command");
|
error->all(FLERR,"Illegal fix wall/reflect/stochastic command");
|
||||||
|
|
||||||
int newwall;
|
int newwall;
|
||||||
@ -109,13 +109,15 @@ FixWallReflectStochastic(LAMMPS *lmp, int narg, char **arg) :
|
|||||||
if ((wallvel[nwall][dir] !=0) & (dir == dim))
|
if ((wallvel[nwall][dir] !=0) & (dir == dim))
|
||||||
error->all(FLERR,"The wall velocity must be tangential");
|
error->all(FLERR,"The wall velocity must be tangential");
|
||||||
|
|
||||||
if (reflectionstyle == CERCIGNANILAMPIS) {
|
// DIFFUSIVE = no accomodation coeffs
|
||||||
|
// MAXWELL = one for all dimensions
|
||||||
|
// CLL = one for each dimension
|
||||||
|
|
||||||
|
if (rstyle == CCL)
|
||||||
wallaccom[nwall][dir]= force->numeric(FLERR,arg[iarg+dir+6]);
|
wallaccom[nwall][dir]= force->numeric(FLERR,arg[iarg+dir+6]);
|
||||||
} else if (reflectionstyle == MAXWELL) {
|
else if (rstyle == MAXWELL)
|
||||||
// one accommodation coefficient for all directions
|
|
||||||
wallaccom[nwall][dir]= force->numeric(FLERR,arg[iarg+6]);
|
wallaccom[nwall][dir]= force->numeric(FLERR,arg[iarg+6]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
nwall++;
|
nwall++;
|
||||||
iarg += arginc;
|
iarg += arginc;
|
||||||
@ -227,7 +229,7 @@ void FixWallReflectStochastic::wall_particle(int m, int which, double coord)
|
|||||||
|
|
||||||
// only needed for Maxwell model
|
// only needed for Maxwell model
|
||||||
|
|
||||||
if (reflectionstyle == MAXWELL) difftest = random->uniform();
|
if (rstyle == MAXWELL) difftest = random->uniform();
|
||||||
|
|
||||||
for (dir = 0; dir < 3; dir++) {
|
for (dir = 0; dir < 3; dir++) {
|
||||||
|
|
||||||
@ -237,14 +239,14 @@ void FixWallReflectStochastic::wall_particle(int m, int which, double coord)
|
|||||||
|
|
||||||
// diffusive reflection
|
// diffusive reflection
|
||||||
|
|
||||||
if (reflectionstyle == DIFFUSIVE) {
|
if (rstyle == DIFFUSIVE) {
|
||||||
if (dir != dim)
|
if (dir != dim)
|
||||||
v[i][dir] = wallvel[m][dir] + random->gaussian(0,factor);
|
v[i][dir] = wallvel[m][dir] + random->gaussian(0,factor);
|
||||||
else v[i][dir] = sign*random->rayleigh(factor);
|
else v[i][dir] = sign*random->rayleigh(factor);
|
||||||
|
|
||||||
// Maxwell reflection
|
// Maxwell reflection
|
||||||
|
|
||||||
} else if (reflectionstyle == MAXWELL) {
|
} else if (rstyle == MAXWELL) {
|
||||||
if (difftest < wallaccom[m][dir]) {
|
if (difftest < wallaccom[m][dir]) {
|
||||||
if (dir != dim)
|
if (dir != dim)
|
||||||
v[i][dir] = wallvel[m][dir] + random->gaussian(0,factor);
|
v[i][dir] = wallvel[m][dir] + random->gaussian(0,factor);
|
||||||
@ -255,7 +257,7 @@ void FixWallReflectStochastic::wall_particle(int m, int which, double coord)
|
|||||||
|
|
||||||
// Cercignani Lampis reflection
|
// Cercignani Lampis reflection
|
||||||
|
|
||||||
} else if (reflectionstyle == CERCIGNANILAMPIS) {
|
} else if (rstyle == CCL) {
|
||||||
if (dir != dim)
|
if (dir != dim)
|
||||||
v[i][dir] = wallvel[m][dir] +
|
v[i][dir] = wallvel[m][dir] +
|
||||||
random->gaussian((1-wallaccom[m][dir]) *
|
random->gaussian((1-wallaccom[m][dir]) *
|
||||||
|
|||||||
@ -33,7 +33,7 @@ class FixWallReflectStochastic : public FixWallReflect {
|
|||||||
private:
|
private:
|
||||||
int seedfix;
|
int seedfix;
|
||||||
double walltemp[6],wallvel[6][3],wallaccom[6][3];
|
double walltemp[6],wallvel[6][3],wallaccom[6][3];
|
||||||
int reflectionstyle;
|
int rstyle;
|
||||||
|
|
||||||
class RanMars *random;
|
class RanMars *random;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user