2010-09-17 03:46:13 +08:00
|
|
|
"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
|
|
|
|
|
|
|
|
fix external command :h3
|
|
|
|
|
|
|
|
[Syntax:]
|
|
|
|
|
|
|
|
fix ID group-ID external :pre
|
|
|
|
|
|
|
|
ID, group-ID are documented in "fix"_fix.html command
|
|
|
|
external = style name of this fix command :ul
|
|
|
|
|
|
|
|
[Examples:]
|
|
|
|
|
|
|
|
fix 1 all external :pre
|
|
|
|
|
|
|
|
[Description:]
|
|
|
|
|
2010-11-22 23:58:11 +08:00
|
|
|
This fix makes a callback each timestep or minimization iteration to
|
|
|
|
an external driver program that is using LAMMPS as a library. This is
|
|
|
|
a way to let another program compute forces on atoms which LAMMPS will
|
|
|
|
include in its dynamics performed by the "run"_run.html command or its
|
|
|
|
iterations performed by the "minimize"_minimize.html command
|
2010-09-17 03:46:13 +08:00
|
|
|
|
2010-11-22 23:58:11 +08:00
|
|
|
The callback function "foo" will be invoked every timestep or
|
|
|
|
iteration as:
|
2010-09-17 03:46:13 +08:00
|
|
|
|
|
|
|
foo(ptr,timestep,nlocal,ids,x,fexternal); :pre
|
|
|
|
|
|
|
|
which has this prototype:
|
|
|
|
|
|
|
|
void foo(void *, int, int, int *, double **, double **);
|
|
|
|
|
|
|
|
The arguments are as follows:
|
|
|
|
|
|
|
|
ptr = pointer provided by and simply passed back to external driver
|
|
|
|
timestep = current LAMMPS timestep
|
|
|
|
nlocal = # of atoms on this processor
|
|
|
|
ids = list of atom IDs on this processor
|
|
|
|
x = coordinates of atoms on this processor
|
|
|
|
fexternal = forces on atoms on this processor :ul
|
|
|
|
|
|
|
|
Fexternal are the forces returned by the driver program,
|
|
|
|
which LAMMPS adds to the current force on each atom.
|
|
|
|
|
|
|
|
See the couple/lammps_quest/lmpqst.cpp file in the LAMMPS distribution
|
|
|
|
for an example of a coupling application that uses this fix, and how
|
|
|
|
it makes a call to the fix to specify what function the fix should
|
|
|
|
callback to. The sample application performs classical MD using
|
|
|
|
quantum forces computed by a density functional code "Quest"_quest.
|
|
|
|
|
|
|
|
:link(quest,http://dft.sandia.gov/Quest)
|
|
|
|
|
|
|
|
[Restart, fix_modify, output, run start/stop, minimize info:]
|
|
|
|
|
|
|
|
No information about this fix is written to "binary restart
|
|
|
|
files"_restart.html. None of the "fix_modify"_fix_modify.html options
|
|
|
|
are relevant to this fix. No global or per-atom quantities are stored
|
|
|
|
by this fix for access by various "output
|
|
|
|
commands"_Section_howto.html#4_15. No parameter of this fix can be
|
|
|
|
used with the {start/stop} keywords of the "run"_run.html command.
|
2010-11-22 23:58:11 +08:00
|
|
|
|
|
|
|
The forces due to this fix are imposed during an energy minimization,
|
|
|
|
invoked by the "minimize"_minimize.html command. However, LAMMPS
|
|
|
|
knows nothing about the energy associated with these forces. So you
|
|
|
|
should perform the minimization based on a force tolerance, not an
|
|
|
|
energy tolerance.
|
2010-09-17 03:46:13 +08:00
|
|
|
|
|
|
|
[Restrictions:] none
|
|
|
|
|
|
|
|
[Related commands:] none
|
|
|
|
|
|
|
|
[Default:] none
|