File: fix_wall_reflect.html

package info (click to toggle)
liggghts 3.0.3%2Brepack-2
  • links: PTS, VCS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 106,076 kB
  • ctags: 34,406
  • sloc: cpp: 363,723; python: 21,138; ansic: 9,146; perl: 3,687; sh: 2,841; fortran: 2,802; xml: 788; makefile: 485; objc: 238; lisp: 169; f90: 145; csh: 16; awk: 14
file content (174 lines) | stat: -rw-r--r-- 7,234 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A> 
</CENTER>






<HR>

<H3>fix wall/reflect command 
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID wall/reflect face arg ... keyword value ... 
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command 

<LI>wall/reflect = style name of this fix command 

<LI>one or more face/arg pairs may be appended 

<LI>face = <I>xlo</I> or <I>xhi</I> or <I>ylo</I> or <I>yhi</I> or <I>zlo</I> or <I>zhi</I> 

<PRE>  <I>xlo</I>,<I>ylo</I>,<I>zlo</I> arg = EDGE or constant or variable
    EDGE = current lo edge of simulation box
    constant = number like 0.0 or -30.0 (distance units)
    variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle
  <I>xhi</I>,<I>yhi</I>,<I>zhi</I> arg = EDGE or constant or variable
    EDGE = current hi edge of simulation box
    constant = number like 50.0 or 100.3 (distance units)
    variable = <A HREF = "variable.html">equal-style variable</A> like v_x or v_wiggle 
</PRE>
<LI>zero or more keyword/value pairs may be appended 

<LI>keyword = <I>units</I> 

<PRE>  <I>units</I> value = <I>lattice</I> or <I>box</I>
    <I>lattice</I> = the wall position is defined in lattice units
    <I>box</I> = the wall position is defined in simulation box units 
</PRE>

</UL>
<P><B>Examples:</B>
</P>
<PRE>fix xwalls all wall/reflect xlo EDGE xhi EDGE
fix walls all wall/reflect xlo 0.0 ylo 10.0 units box
fix top all wall/reflect zhi v_pressdown 
</PRE>
<P><B>Description:</B>
</P>
<P>Bound the simulation with one or more walls which reflect particles
in the specified group when they attempt to move thru them. 
</P>
<P>Reflection means that if an atom moves outside the wall on a timestep
by a distance delta (e.g. due to <A HREF = "fix_nve.html">fix nve</A>), then it is
put back inside the face by the same delta, and the sign of the
corresponding component of its velocity is flipped.
</P>
<P>When used in conjunction with <A HREF = "fix_nve.html">fix nve</A> and <A HREF = "run_style.html">run_style
verlet</A>, the resultant time-integration algorithm is
equivalent to the primitive splitting algorithm (PSA) described by
<A HREF = "#Bond">Bond</A>.  Because each reflection event 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.
</P>
<P>Up to 6 walls or faces can be specified in a single command: <I>xlo</I>,
<I>xhi</I>, <I>ylo</I>, <I>yhi</I>, <I>zlo</I>, <I>zhi</I>.  A <I>lo</I> face reflects particles
that move to a coordinate less than the wall position, back in the
<I>hi</I> direction.  A <I>hi</I> face reflects particles that move to a
coordinate higher than the wall position, back in the <I>lo</I> direction.
</P>
<P>The position of each wall can be specified in one of 3 ways: as the
EDGE of the simulation box, as a constant value, or as a variable.  If
EDGE is used, then the corresponding boundary of the current
simulation box is used.  If a numeric constant is specified then the
wall is placed at that position in the appropriate dimension (x, y, or
z).  In both the EDGE and constant cases, the wall will never move.
If the wall position is a variable, it should be specified as v_name,
where name is an <A HREF = "variable.html">equal-style variable</A> name.  In this
case the variable is evaluated each timestep and the result becomes
the current position of the reflecting wall.  Equal-style variables
can specify formulas with various mathematical functions, and include
<A HREF = "thermo_style.html">thermo_style</A> command keywords for the simulation
box parameters and timestep and elapsed time.  Thus it is easy to
specify a time-dependent wall position.
</P>
<P>The <I>units</I> keyword determines the meaning of the distance units used
to define a wall position, but only when a numeric constant or
variable is used.  It is not relevant when EDGE is used to specify a
face position.  In the variable case, the variable is assumed to
produce a value compatible with the <I>units</I> setting you specify.
</P>
<P>A <I>box</I> value selects standard distance units as defined by the
<A HREF = "units.html">units</A> command, e.g. Angstroms for units = real or metal.
A <I>lattice</I> value means the distance units are in lattice spacings.
The <A HREF = "lattice.html">lattice</A> command must have been previously used to
define the lattice spacings.
</P>
<HR>

<P>Here are examples of variable definitions that move the wall position
in a time-dependent fashion using equal-style
<A HREF = "variable.html">variables</A>.
</P>
<PRE>variable ramp equal ramp(0,10)
fix 1 all wall/reflect xlo v_ramp 
</PRE>
<PRE>variable linear equal vdisplace(0,20)
fix 1 all wall/reflect xlo v_linear 
</PRE>
<PRE>variable wiggle equal swiggle(0.0,5.0,3.0)
fix 1 all wall/reflect xlo v_wiggle  
</PRE>
<PRE>variable wiggle equal cwiggle(0.0,5.0,3.0)
fix 1 all wall/reflect xlo v_wiggle 
</PRE>
<P>The ramp(lo,hi) function adjusts the wall position linearly from lo to
hi over the course of a run.  The vdisplace(c0,velocity) function does
something similar using the equation position = c0 + velocity*delta,
where delta is the elapsed time.
</P>
<P>The swiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, where omega = 2 PI
/ period:
</P>
<PRE>position = c0 + A sin(omega*delta) 
</PRE>
<P>The cwiggle(c0,A,period) function causes the wall position to
oscillate sinusoidally according to this equation, which will have an
initial wall velocity of 0.0, and thus may impose a gentler
perturbation on the particles:
</P>
<PRE>position = c0 + A (1 - cos(omega*delta)) 
</PRE>
<HR>

<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
files</A>.  None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.  No global or per-atom quantities are stored
by this fix for access by various <A HREF = "Section_howto.html#howto_15">output
commands</A>.  No parameter of this fix can
be used with the <I>start/stop</I> keywords of the <A HREF = "run.html">run</A> command.
This fix is not invoked during <A HREF = "minimize.html">energy minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>Any dimension (xyz) that has a reflecting wall must be non-periodic.
</P>
<P>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
displaces atoms directly rather than exerts a force on them.  For
rigid bodies, use a soft wall instead, such as <A HREF = "fix_wall.html">fix
wall/lj93</A>.  LAMMPS will flag the use of a rigid
fix with fix wall/reflect with a warning, but will not generate an
error.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_wall.html">fix wall/lj93</A> command
</P>
<P><B>Default:</B> none
</P>
<HR>

<A NAME = "Bond"></A>

<P><B>(Bond)</B> Bond and Leimkuhler, SIAM J Sci Comput, 30, p 134 (2007).
</P>
</HTML>