git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@16053 f3b2605a-c512-4ea7-a41b...
[lammps.git] / doc / src / compute_ti.txt
blob733954d146bc9ec9b90c821f45432115638db7fc
1 "LAMMPS WWW Site"_lws - "LAMMPS Documentation"_ld - "LAMMPS Commands"_lc :c
3 :link(lws,http://lammps.sandia.gov)
4 :link(ld,Manual.html)
5 :link(lc,Section_commands.html#comm)
7 :line
9 compute ti command :h3
11 [Syntax:]
13 compute ID group ti keyword args ... :pre
15 ID, group-ID are documented in "compute"_compute.html command :ulb,l
16 ti = style name of this compute command :l
17 one or more attribute/arg pairs may be appended :l
18 keyword = pair style (lj/cut, gauss, born, etc) or {tail} or {kspace} :l
19   pair style args = atype v_name1 v_name2
20     atype = atom type (see asterisk form below)
21     v_name1 = variable with name1 that is energy scale factor and function of lambda
22     v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
23   {tail} args = atype v_name1 v_name2
24     atype = atom type (see asterisk form below)
25     v_name1 = variable with name1 that is energy tail correction scale factor and function of lambda
26     v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda
27   {kspace} args = atype v_name1 v_name2
28     atype = atom type (see asterisk form below)
29     v_name1 = variable with name1 that is K-Space scale factor and function of lambda
30     v_name2 = variable with name2 that is derivative of v_name1 with respect to lambda :pre
31 :ule
33 [Examples:]
35 compute 1 all ti lj/cut 1 v_lj v_dlj coul/long 2 v_c v_dc kspace 1 v_ks v_dks
36 compute 1 all ti lj/cut 1*3 v_lj v_dlj coul/long * v_c v_dc kspace * v_ks v_dks :pre
38 [Description:]
40 Define a computation that calculates the derivative of the interaction
41 potential with respect to {lambda}, the coupling parameter used in a
42 thermodynamic integration.  This derivative can be used to infer a
43 free energy difference resulting from an alchemical simulation, as
44 described in "Eike"_#Eike.
46 Typically this compute will be used in conjunction with the "fix
47 adapt"_fix_adapt.html command which can perform alchemical
48 transformations by adusting the strength of an interaction potential
49 as a simulation runs, as defined by one or more
50 "pair_style"_pair_style.html or "kspace_style"_kspace_style.html
51 commands.  This scaling is done via a prefactor on the energy, forces,
52 virial calculated by the pair or K-Space style.  The prefactor is
53 often a function of a {lambda} parameter which may be adjusted from 0
54 to 1 (or vice versa) over the course of a "run"_run.html.  The
55 time-dependent adjustment is what the "fix adapt"_fix_adapt.html
56 command does.
58 Assume that the unscaled energy of a pair_style or kspace_style is
59 given by U.  Then the scaled energy is
61 Us = f(lambda) U :pre
63 where f() is some function of lambda.  What this compute calculates is
65 dUs / d(lambda) = U df(lambda)/dlambda = Us / f(lambda) df(lambda)/dlambda :pre
67 which is the derivative of the system's scaled potential energy Us
68 with respect to {lambda}.
70 To perform this calculation, you provide one or more atom types as
71 {atype}.  {Atype} can be specified in one of two ways.  An explicit
72 numeric values can be used, as in the 1st example above.  Or a
73 wildcard asterisk can be used in place of or in conjunction with the
74 {atype} argument to select multiple atom types.  This takes the form
75 "*" or "*n" or "n*" or "m*n".  If N = the number of atom types, then
76 an asterisk with no numeric values means all types from 1 to N.  A
77 leading asterisk means all types from 1 to n (inclusive).  A trailing
78 asterisk means all types from n to N (inclusive).  A middle asterisk
79 means all types from m to n (inclusive).
81 You also specify two functions, as "equal-style
82 variables"_variable.html.  The first is specified as {v_name1}, where
83 {name1} is the name of the variable, and is f(lambda) in the notation
84 above.  The second is specified as {v_name2}, where {name2} is the
85 name of the variable, and is df(lambda) / dlambda in the notation
86 above.  I.e. it is the analytic derivative of f() with respect to
87 lambda.  Note that the {name1} variable is also typically given as an
88 argument to the "fix adapt"_fix_adapt.html command.
90 An alchemical simulation may use several pair potentials together,
91 invoked via the "pair_style hybrid or hybrid/overlay"_pair_hybrid.html
92 command.  The total dUs/dlambda for the overall system is calculated
93 as the sum of each contributing term as listed by the keywords in the
94 compute ti command.  Individual pair potentials can be listed, which
95 will be sub-styles in the hybrid case.  You can also include a K-space
96 term via the {kspace} keyword.  You can also include a pairwise
97 long-range tail correction to the energy via the {tail} keyword.
99 For each term you can specify a different (or the same) scale factor
100 by the two variables that you list.  Again, these will typically
101 correspond toe the scale factors applied to these various potentials
102 and the K-Space contribution via the "fix adapt"_fix_adapt.html
103 command.
105 More details about the exact functional forms for the computation of
106 du/dl can be found in the paper by "Eike"_#Eike.
108 :line
110 [Output info:]
112 This compute calculates a global scalar, namely dUs/dlambda.  This
113 value can be used by any command that uses a global scalar value from
114 a compute as input.  See "Section
115 6.15"_Section_howto.html#howto_15 for an overview of LAMMPS output
116 options.
118 The scalar value calculated by this compute is "extensive".
120 The scalar value will be in energy "units"_units.html.
122 [Restrictions:]
124 This compute is part of the MISC package.  It is only enabled if
125 LAMMPS was built with that package.  See the "Making
126 LAMMPS"_Section_start.html#start_3 section for more info.
128 [Related commands:]
130 "fix adapt"_fix_adapt.html
132 [Default:] none
134 :line
136 :link(Eike)
137 [(Eike)] Eike and Maginn, Journal of Chemical Physics, 124, 164503 (2006).