"LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c

:link(lws,http://lammps.sandia.gov)
:link(ld,Manual.html)
:link(lc,Section_commands.html#comm)

:line

compute ti command :h3 

[Syntax:]

compute ID group ti keyword args ... :pre

ID, group-ID are documented in "compute"_compute.html command :ulb,l
ti = style name of this compute command :l
one or more attribute/arg pairs may be appended :l
keyword = pair style (lj/cut, gauss, born, etc) or {tail} or {kspace} :l
  pair style args = v_name1 v_name2
    v_name1 = variable with name1 that is energy scale factor and function of lambda
    v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
  {tail} args = v_name1 v_name2
    v_name1 = variable with name1 that is energy tail correction scale factor and function of lambda
    v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
  {kspace} args = v_name1 v_name2
    v_name1 = variable with name1 that is K-Space scale factor and function of lambda
    v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda :pre
:ule

[Examples:]

compute 1 all ti lj/cut v_lj v_dlj coul/long v_c v_dc kspace v_ks v_dks :pre

[Description:] 

Define a computation that calculates the derivative of the interaction
potential with respect to {lambda}, the coupling parameter used in a
thermodynamic integration.  This derivative can be used to infer a
free energy difference resulting from an alchemical simulation, as
described in "Eike"_#Eike.

Typically this compute will be used in conjunction with the "fix
adapt"_fix_adapt.html command which can perform alchemical
transformations by adusting the strength of an interaction potential
as a simulation runs, as defined by one or more
"pair_style"_pair_style.html or "kspace_style"_kspace_style.html
commands.  This scaling is done via a prefactor on the energy, forces,
virial calculated by the pair or K-Space style.  The prefactor is
often a function of a {lambda} parameter which may be adjusted from 0
to 1 (or vice versa) over the course of a "run"_run.html.  The
time-dependent adjustment is what the "fix adapt"_fix_adapt.html
command does.

Assume that the unscaled energy of a pair_style or kspace_style is
given by U.  Then the scaled energy is

Us = f(lambda) U :pre

where f() is some function of lambda.  What this compute calculates is

dUs / d(lambda) = U df(lambda)/dlambda = Us / f(lambda) df(lambda)/dlambda :pre

which is the derivative of the system's scaled potential energy Us
with respect to {lambda}.

To do this calculation, you provide two functions, as "equal-style
variables"_variable.html.  The first is specified as {v_name1}, where
{name1} is the name of the variable, and is f(lambda) in the notation
above.  The second is specified as {v_name2}, where {name2} is the
name of the variable, and is df(lambda) / dlambda in the notation
above.  I.e. it is the analytic derivative of f() with respect to
lambda.  Note that the {name1} variable is also typically given as an
argument to the "fix adapt"_fix_adapt.html command.

An alchemical simulation may use several pair potentials together,
invoked via the "pair_style hybrid or hybrid/overlay"_pair_hybrid.html
command.  The total dUs/dlambda for the overall system is calculated
as the sum of each contributing term as listed by the keywords in the
compute ti command.  Individual pair potentials can be listed, which
will be sub-styles in the hybrid case.  You can also include a K-space
term via the {kspace} keyword.  You can also include a pairwise
long-range tail correction to the energy via the {tail} keyword.

For each term you can specify a different (or the same) scale factor
by the two variables that you list.  Again, these will typically
correspond toe the scale factors applied to these various potentials
and the K-Space contribution via the "fix_adapt"_fix_adapt.html
command.

More details about the exact functional forms for the computation of
du/dl can be found in the paper by "Eike"_#Eike.

[Output info:] 

This compute calculates a global scalar, namely dUs/dlambda.  This
value can be used by any command that uses a global scalar value from
a compute as input.  See "Section_howto
15"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.

The scalar value calculated by this compute is "extensive".

The scalar value will be in energy "units"_units.html.

[Restrictions:] none

[Related commands:]

"fix adapt"_fix_adapt.html

[Default:] none

:link(Eike)
[(Eike)] Eike and Maginn, Journal of Chemical Physics, 124, 164503 (2006).
