git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@2591 f3b2605a-c512-4ea7-a41b-209d697bcdaa

This commit is contained in:
sjplimp 2009-02-17 14:58:00 +00:00
parent 94ddc19477
commit aa6e50fada
2 changed files with 62 additions and 62 deletions

View File

@ -443,10 +443,11 @@ evaluated later.
evaluation is performed. Depending on what is included in the
formula, this may require invoking a <A HREF = "compute.html">compute</A>, either
directly or indirectly via a thermo keyword, or accessing a value
calculated and stored by a <A HREF = "fix.html">fix</A>. If the compute is one that
calculates the pressure or energy of the system, then these quantities
need to be tallied during the evaluation of the interatomic potentials
(pair, bond, etc) on timesteps that the variable will need the values.
previously calculated by a compute, or accessing a value calculated
and stored by a <A HREF = "fix.html">fix</A>. If the compute is one that calculates
the pressure or energy of the system, then these quantities need to be
tallied during the evaluation of the interatomic potentials (pair,
bond, etc) on timesteps that the variable will need the values.
</P>
<P>LAMMPS keeps track of all of this during a <A HREF = "run.html">run</A> or <A HREF = "minimize.html">energy
minimization</A>. An error will be generated if you
@ -455,29 +456,29 @@ accurate values. For example, if a <A HREF = "thermo_style.html">thermo_style
custom</A> command prints a variable which accesses
values stored by a <A HREF = "fix_ave_time.html">fix ave/time</A> command and the
timesteps on which thermo output is generated are not multiples of the
averaging frequency used in the fix command, then it is an error.
averaging frequency used in the fix command, then an error will occur.
</P>
<P>However, your input script can also require variables to be evaluated
before or after or inbetween runs. In this case, one of three things
may happen.
<P>An input script can also request variables be evaluated before or
after or in between runs, e.g. by including them in a
<A HREF = "print.html">print</A> command. In this case, if a compute is needed to
evaluate a variable (either directly or indirectly), LAMMPS will not
invoke the compute, but it will use a value previously calculated by
the compute if it is current. Fixes will always provide a quantity
needed by a variable, but the quantity may or may not be current.
This leads to one of three kinds of behavior:
</P>
<P>(1) The variable may be evaluated accurately. If it contains
references to a compute or fix, and these values were calculated and
stored on the last timestep of a preceeding run, then they can be
accessed and used by the variable.
references to a compute or fix, and these values were calculated on
the last timestep of a preceeding run, then they will be accessed and
used by the variable and the result will be accurate.
</P>
<P>(2) LAMMPS may not be able to evaluate the variable and generate an
error. For example, if the variable formula requires a
<A HREF = "compute.html">compute</A> to be invoked, either directly or indirectly
via a thermo keyword, then the variable cannot be evaluated before the
first run has occurred. The general rule is that if a variable uses a
value calculated by a compute, and the variable is not being evaluated
during a run, then the variable will not invoke the compute. Instead,
it can only use the value stored by the compute, which for accuracy
requires that the compute was already invoked on the same timestep
during a preceeding run.
error. For example, if the variable requires a quantity from a
<A HREF = "compute.html">compute</A> that is not current, LAMMPS will not do it.
This means, for example, that such a variable then the variable cannot
be evaluated before the first run has occurred.
</P>
<P>Thus the way to get around this error is to perform a 0-timestep run
<P>One way to get around this problem is to perform a 0-timestep run
before using the variable. For example, these commands
</P>
<PRE>variable t equal temp
@ -500,21 +501,20 @@ the one for temperature, so that the value it stores is current and
can be accessed by the variable "t" after the run has completed. Note
that a 0-timestep run does not alter the state of the system, so it
does not change the input state for the 1000-timestep run that
follows. Also note, that the 0-timestep run must actually use and
follows. Also note that the 0-timestep run must actually use and
invoke the compute in question (e.g. via <A HREF = "thermo_style.html">thermo</A> or
<A HREF = "dump.html">dump</A> output) in order for it to enable the compute to be
used in a variable after the run.
</P>
<P>Note that unlike computes, <A HREF = "fix.html">fixes</A> will never generate an
error if their values are accessed by a variable in between runs.
They always return some value to the variable. However, this value
may not be what you expect if the fix has not yet calculated the
quantity of interest. For example, the <A HREF = "fix_indent.html">fix indent</A>
<P>Unlike computes, <A HREF = "fix.html">fixes</A> will never generate an error if
their values are accessed by a variable in between runs. They always
return some value to the variable. However, the value may not be what
you expect if the fix has not yet calculated the quantity of interest
or it is not current. For example, the <A HREF = "fix_indent.html">fix indent</A>
command stores the force on the indenter. But this is not computed
until a run is performed. Thus if a variable attempts to print this
value before the first run, values of zero will be output. Again,
performing a 0-timestep run before printing the variable has the
desired effect.
value before the first run, zeroes will be output. Again, performing
a 0-timestep run before printing the variable has the desired effect.
</P>
<P>(3) The variable may be evaluated incorrectly. And LAMMPS may have
no way to detect this has occurred. Consider the following sequence
@ -540,7 +540,7 @@ could alter the state of the system between runs, causing a variable
to evaluate incorrectly.
</P>
<P>The solution to this issue is the same as for case (2) above, namely
to perform a 0-timestep run before the variable is evaluated to insure
perform a 0-timestep run before the variable is evaluated to insure
the system is up-to-date. For example, this sequence of commands
would print a potential energy that reflected the changed pairwise
coefficient:

View File

@ -434,10 +434,11 @@ Obviously, LAMMPS attempts to evaluate variables containing formulas
evaluation is performed. Depending on what is included in the
formula, this may require invoking a "compute"_compute.html, either
directly or indirectly via a thermo keyword, or accessing a value
calculated and stored by a "fix"_fix.html. If the compute is one that
calculates the pressure or energy of the system, then these quantities
need to be tallied during the evaluation of the interatomic potentials
(pair, bond, etc) on timesteps that the variable will need the values.
previously calculated by a compute, or accessing a value calculated
and stored by a "fix"_fix.html. If the compute is one that calculates
the pressure or energy of the system, then these quantities need to be
tallied during the evaluation of the interatomic potentials (pair,
bond, etc) on timesteps that the variable will need the values.
LAMMPS keeps track of all of this during a "run"_run.html or "energy
minimization"_minimize.html. An error will be generated if you
@ -446,29 +447,29 @@ accurate values. For example, if a "thermo_style
custom"_thermo_style.html command prints a variable which accesses
values stored by a "fix ave/time"_fix_ave_time.html command and the
timesteps on which thermo output is generated are not multiples of the
averaging frequency used in the fix command, then it is an error.
averaging frequency used in the fix command, then an error will occur.
However, your input script can also require variables to be evaluated
before or after or inbetween runs. In this case, one of three things
may happen.
An input script can also request variables be evaluated before or
after or in between runs, e.g. by including them in a
"print"_print.html command. In this case, if a compute is needed to
evaluate a variable (either directly or indirectly), LAMMPS will not
invoke the compute, but it will use a value previously calculated by
the compute if it is current. Fixes will always provide a quantity
needed by a variable, but the quantity may or may not be current.
This leads to one of three kinds of behavior:
(1) The variable may be evaluated accurately. If it contains
references to a compute or fix, and these values were calculated and
stored on the last timestep of a preceeding run, then they can be
accessed and used by the variable.
references to a compute or fix, and these values were calculated on
the last timestep of a preceeding run, then they will be accessed and
used by the variable and the result will be accurate.
(2) LAMMPS may not be able to evaluate the variable and generate an
error. For example, if the variable formula requires a
"compute"_compute.html to be invoked, either directly or indirectly
via a thermo keyword, then the variable cannot be evaluated before the
first run has occurred. The general rule is that if a variable uses a
value calculated by a compute, and the variable is not being evaluated
during a run, then the variable will not invoke the compute. Instead,
it can only use the value stored by the compute, which for accuracy
requires that the compute was already invoked on the same timestep
during a preceeding run.
error. For example, if the variable requires a quantity from a
"compute"_compute.html that is not current, LAMMPS will not do it.
This means, for example, that such a variable then the variable cannot
be evaluated before the first run has occurred.
Thus the way to get around this error is to perform a 0-timestep run
One way to get around this problem is to perform a 0-timestep run
before using the variable. For example, these commands
variable t equal temp
@ -491,21 +492,20 @@ the one for temperature, so that the value it stores is current and
can be accessed by the variable "t" after the run has completed. Note
that a 0-timestep run does not alter the state of the system, so it
does not change the input state for the 1000-timestep run that
follows. Also note, that the 0-timestep run must actually use and
follows. Also note that the 0-timestep run must actually use and
invoke the compute in question (e.g. via "thermo"_thermo_style.html or
"dump"_dump.html output) in order for it to enable the compute to be
used in a variable after the run.
Note that unlike computes, "fixes"_fix.html will never generate an
error if their values are accessed by a variable in between runs.
They always return some value to the variable. However, this value
may not be what you expect if the fix has not yet calculated the
quantity of interest. For example, the "fix indent"_fix_indent.html
Unlike computes, "fixes"_fix.html will never generate an error if
their values are accessed by a variable in between runs. They always
return some value to the variable. However, the value may not be what
you expect if the fix has not yet calculated the quantity of interest
or it is not current. For example, the "fix indent"_fix_indent.html
command stores the force on the indenter. But this is not computed
until a run is performed. Thus if a variable attempts to print this
value before the first run, values of zero will be output. Again,
performing a 0-timestep run before printing the variable has the
desired effect.
value before the first run, zeroes will be output. Again, performing
a 0-timestep run before printing the variable has the desired effect.
(3) The variable may be evaluated incorrectly. And LAMMPS may have
no way to detect this has occurred. Consider the following sequence
@ -531,7 +531,7 @@ could alter the state of the system between runs, causing a variable
to evaluate incorrectly.
The solution to this issue is the same as for case (2) above, namely
to perform a 0-timestep run before the variable is evaluated to insure
perform a 0-timestep run before the variable is evaluated to insure
the system is up-to-date. For example, this sequence of commands
would print a potential energy that reflected the changed pairwise
coefficient: