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

This commit is contained in:
sjplimp
2011-10-13 13:31:47 +00:00
parent d2a730bc40
commit d8df399c7f
2 changed files with 236 additions and 152 deletions

View File

@ -142,44 +142,49 @@ features that can be added in the manner just described:
<A NAME = "mod_1"></A><H4>10.1 Atom styles <A NAME = "mod_1"></A><H4>10.1 Atom styles
</H4> </H4>
<P>Classes that define an atom style are derived from the Atom class. <P>Classes that define an atom style are derived from the AtomVec class
The atom style determines what quantities are associated with an atom. and managed by the Atom class. The atom style determines what
A new atom style can be created if one of the existing atom styles quantities are associated with an atom. A new atom style can be
does not define all the arrays you need to store and communicate with created if one of the existing atom styles does not define all
atoms. the arrays you need to store and communicate with atoms.
</P> </P>
<P>Atom_vec_atomic.cpp is a simple example of an atom style. <P>Atom_vec_atomic.cpp is a simple example of an atom style.
</P> </P>
<P>Here is a brief description of methods you define in your new derived <P>Here is a brief description of methods you define in your new derived
class. See atom.h for details. class. See atom_vec.h for details.
</P> </P>
<DIV ALIGN=center><TABLE BORDER=1 > <DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >grow</TD><TD > re-allocate atom arrays to longer lengths</TD></TR> <TR><TD >init</TD><TD > one time setup (optional)</TD></TR>
<TR><TD >copy</TD><TD > copy info for one atom to another atom's array locations</TD></TR> <TR><TD >grow</TD><TD > re-allocate atom arrays to longer lengths (required)</TD></TR>
<TR><TD >pack_comm</TD><TD > store an atom's info in a buffer communicated every timestep</TD></TR> <TR><TD >grow_reset</TD><TD > make array pointers in Atom and AtomVec classes consistent (required)</TD></TR>
<TR><TD >pack_comm_vel</TD><TD > add velocity info to buffer</TD></TR> <TR><TD >copy</TD><TD > copy info for one atom to another atom's array locations (required)</TD></TR>
<TR><TD >pack_comm_one</TD><TD > store extra info unique to this atom style</TD></TR> <TR><TD >pack_comm</TD><TD > store an atom's info in a buffer communicated every timestep (required)</TD></TR>
<TR><TD >unpack_comm</TD><TD > retrieve an atom's info from the buffer</TD></TR> <TR><TD >pack_comm_vel</TD><TD > add velocity info to communication buffer (required)</TD></TR>
<TR><TD >unpack_comm_vel</TD><TD > also retrieve velocity info</TD></TR> <TR><TD >pack_comm_hybrid</TD><TD > store extra info unique to this atom style (optional)</TD></TR>
<TR><TD >unpack_comm_one</TD><TD > retreive extra info unique to this atom style</TD></TR> <TR><TD >unpack_comm</TD><TD > retrieve an atom's info from the buffer (required)</TD></TR>
<TR><TD >pack_reverse</TD><TD > store an atom's info in a buffer communicating partial forces</TD></TR> <TR><TD >unpack_comm_vel</TD><TD > also retrieve velocity info (required)</TD></TR>
<TR><TD >pack_reverse_one</TD><TD > store extra info unique to this atom style</TD></TR> <TR><TD >unpack_comm_hybrid</TD><TD > retreive extra info unique to this atom style (optional)</TD></TR>
<TR><TD >unpack_reverse</TD><TD > retrieve an atom's info from the buffer</TD></TR> <TR><TD >pack_reverse</TD><TD > store an atom's info in a buffer communicating partial forces (required)</TD></TR>
<TR><TD >unpack_reverse_one</TD><TD > retreive extra info unique to this atom style</TD></TR> <TR><TD >pack_reverse_hybrid</TD><TD > store extra info unique to this atom style (optional)</TD></TR>
<TR><TD >pack_border</TD><TD > store an atom's info in a buffer communicated on neighbor re-builds</TD></TR> <TR><TD >unpack_reverse</TD><TD > retrieve an atom's info from the buffer (required)</TD></TR>
<TR><TD >pack_border_vel</TD><TD > add velocity info to buffer</TD></TR> <TR><TD >unpack_reverse_hybrid</TD><TD > retreive extra info unique to this atom style (optional)</TD></TR>
<TR><TD >pack_border_one</TD><TD > store extra info unique to this atom style</TD></TR> <TR><TD >pack_border</TD><TD > store an atom's info in a buffer communicated on neighbor re-builds (required)</TD></TR>
<TR><TD >unpack_border</TD><TD > retrieve an atom's info from the buffer</TD></TR> <TR><TD >pack_border_vel</TD><TD > add velocity info to buffer (required)</TD></TR>
<TR><TD >unpack_border_vel</TD><TD > also retrieve velocity info</TD></TR> <TR><TD >pack_border_hybrid</TD><TD > store extra info unique to this atom style (optional)</TD></TR>
<TR><TD >unpack_border_one</TD><TD > retreive extra info unique to this atom style</TD></TR> <TR><TD >unpack_border</TD><TD > retrieve an atom's info from the buffer (required)</TD></TR>
<TR><TD >pack_exchange</TD><TD > store all an atom's info to migrate to another processor</TD></TR> <TR><TD >unpack_border_vel</TD><TD > also retrieve velocity info (required)</TD></TR>
<TR><TD >unpack_exchange</TD><TD > retrieve an atom's info from the buffer</TD></TR> <TR><TD >unpack_border_hybrid</TD><TD > retreive extra info unique to this atom style (optional)</TD></TR>
<TR><TD >size_restart</TD><TD > number of restart quantities associated with proc's atoms</TD></TR> <TR><TD >pack_exchange</TD><TD > store all an atom's info to migrate to another processor (required)</TD></TR>
<TR><TD >pack_restart</TD><TD > pack atom quantities into a buffer</TD></TR> <TR><TD >unpack_exchange</TD><TD > retrieve an atom's info from the buffer (required)</TD></TR>
<TR><TD >unpack_restart</TD><TD > unpack atom quantities from a buffer</TD></TR> <TR><TD >size_restart</TD><TD > number of restart quantities associated with proc's atoms (required)</TD></TR>
<TR><TD >create_atom</TD><TD > create an individual atom of this style</TD></TR> <TR><TD >pack_restart</TD><TD > pack atom quantities into a buffer (required)</TD></TR>
<TR><TD >data_atom</TD><TD > parse an atom line from the data file</TD></TR> <TR><TD >unpack_restart</TD><TD > unpack atom quantities from a buffer (required)</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory allocated by atom arrays <TR><TD >create_atom</TD><TD > create an individual atom of this style (required)</TD></TR>
<TR><TD >data_atom</TD><TD > parse an atom line from the data file (required)</TD></TR>
<TR><TD >data_atom_hybrid</TD><TD > parse additional atom info unique to this atom style (optional)</TD></TR>
<TR><TD >data_vel</TD><TD > parse one line of velocity information from data file (optional)</TD></TR>
<TR><TD >data_vel_hybrid</TD><TD > parse additional velocity data unique to this atom style (optional)</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory allocated by atom arrays (required)
</TD></TR></TABLE></DIV> </TD></TR></TABLE></DIV>
<P>The constructor of the derived class sets values for several variables <P>The constructor of the derived class sets values for several variables
@ -200,16 +205,21 @@ add new potentials to LAMMPS.
the harmonic forms of the angle, dihedral, and improper style the harmonic forms of the angle, dihedral, and improper style
commands. commands.
</P> </P>
<P>Here is a brief description of methods you define in your new derived <P>Here is a brief description of common methods you define in your
bond class. See bond.h, angle.h, dihedral.h, and improper.h for new derived class. See bond.h, angle.h, dihedral.h, and improper.h
details. for details and specific additional methods.
</P> </P>
<DIV ALIGN=center><TABLE BORDER=1 > <DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >compute</TD><TD > compute the molecular interactions</TD></TR> <TR><TD >init</TD><TD > check if all coefficients are set, calls <I>init_style</I> (optional)</TD></TR>
<TR><TD >coeff</TD><TD > set coefficients for one bond type</TD></TR> <TR><TD >init_style</TD><TD > check if style specific conditions are met (optional)</TD></TR>
<TR><TD >equilibrium_distance</TD><TD > length of bond, used by SHAKE</TD></TR> <TR><TD >compute</TD><TD > compute the molecular interactions (required)</TD></TR>
<TR><TD >write & read_restart</TD><TD > writes/reads coeffs to restart files</TD></TR> <TR><TD >settings</TD><TD > apply global settings for all types (optional)</TD></TR>
<TR><TD >single</TD><TD > force and energy of a single bond <TR><TD >coeff</TD><TD > set coefficients for one type (required)</TD></TR>
<TR><TD >equilibrium_distance</TD><TD > length of bond, used by SHAKE (required, bond only)</TD></TR>
<TR><TD >equilibrium_angle</TD><TD > opening of angle, used by SHAKE (required, angle only)</TD></TR>
<TR><TD >write & read_restart</TD><TD > writes/reads coeffs to restart files (required)</TD></TR>
<TR><TD >single</TD><TD > force and energy of a single bond or angle (required, bond or angle only)</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory allocated by the style (optional)
</TD></TR></TABLE></DIV> </TD></TR></TABLE></DIV>
<HR> <HR>
@ -230,14 +240,21 @@ per-atom kinetic energy.
class. See compute.h for details. class. See compute.h for details.
</P> </P>
<DIV ALIGN=center><TABLE BORDER=1 > <DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >compute_scalar</TD><TD > compute a scalar quantity</TD></TR> <TR><TD >init</TD><TD > perform one time setup (required)</TD></TR>
<TR><TD >compute_vector</TD><TD > compute a vector of quantities</TD></TR> <TR><TD >init_list</TD><TD > neighbor list setup, if needed (optional)</TD></TR>
<TR><TD >compute_peratom</TD><TD > compute one or more quantities per atom</TD></TR> <TR><TD >compute_scalar</TD><TD > compute a scalar quantity (optional)</TD></TR>
<TR><TD >pack_comm</TD><TD > pack a buffer with items to communicate</TD></TR> <TR><TD >compute_vector</TD><TD > compute a vector of quantities (optional)</TD></TR>
<TR><TD >unpack_comm</TD><TD > unpack the buffer</TD></TR> <TR><TD >compute_peratom</TD><TD > compute one or more quantities per atom (optional)</TD></TR>
<TR><TD >pack_reverse</TD><TD > pack a buffer with items to reverse communicate</TD></TR> <TR><TD >compute_local</TD><TD > compute one or more quantities per processor (optional)</TD></TR>
<TR><TD >unpack_reverse</TD><TD > unpack the buffer</TD></TR> <TR><TD >pack_comm</TD><TD > pack a buffer with items to communicate (optional)</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory usage <TR><TD >unpack_comm</TD><TD > unpack the buffer (optional)</TD></TR>
<TR><TD >pack_reverse</TD><TD > pack a buffer with items to reverse communicate (optional)</TD></TR>
<TR><TD >unpack_reverse</TD><TD > unpack the buffer (optional)</TD></TR>
<TR><TD >remove_bias</TD><TD > remove velocity bias from one atom (optional)</TD></TR>
<TR><TD >remove_bias_all</TD><TD > remove velocity bias from all atoms in group (optional)</TD></TR>
<TR><TD >restore_bias</TD><TD > restore velocity bias for one atom after remove_bias (optional)</TD></TR>
<TR><TD >restore_bias_all</TD><TD > same as before, but for all atoms in group (optional)</TD></TR>
<TR><TD >memory_usage</TD><TD > tally memory usage (optional)
</TD></TR></TABLE></DIV> </TD></TR></TABLE></DIV>
<HR> <HR>
@ -295,34 +312,59 @@ implement.
derived class. See fix.h for details. derived class. See fix.h for details.
</P> </P>
<DIV ALIGN=center><TABLE BORDER=1 > <DIV ALIGN=center><TABLE BORDER=1 >
<TR><TD >setmask</TD><TD > determines when the fix is called during the timestep</TD></TR> <TR><TD >setmask</TD><TD > determines when the fix is called during the timestep (required)</TD></TR>
<TR><TD >init</TD><TD > initialization before a run</TD></TR> <TR><TD >init</TD><TD > initialization before a run (optional)</TD></TR>
<TR><TD >setup</TD><TD > called immediately before the 1st timestep</TD></TR> <TR><TD >setup_pre_exchange</TD><TD > called before atom exchange in setup (optional)</TD></TR>
<TR><TD >initial_integrate</TD><TD > called at very beginning of each timestep</TD></TR> <TR><TD >setup_pre_force</TD><TD > called before force computation in setup (optional)</TD></TR>
<TR><TD >pre_exchange</TD><TD > called before atom exchange on re-neighboring steps</TD></TR> <TR><TD >setup</TD><TD > called immediately before the 1st timestep and after forces are computed (optional)</TD></TR>
<TR><TD >pre_neighbor</TD><TD > called before neighbor list build</TD></TR> <TR><TD >min_setup_pre_force</TD><TD > like setup_pre_force, but for minimizations instead of MD runs (optional)</TD></TR>
<TR><TD >post_force</TD><TD > called after pair & molecular forces are computed</TD></TR> <TR><TD >min_setup</TD><TD > like setup, but for minimizations instead of MD runs (optional)</TD></TR>
<TR><TD >final_integrate</TD><TD > called at end of each timestep</TD></TR> <TR><TD >initial_integrate</TD><TD > called at very beginning of each timestep (optional)</TD></TR>
<TR><TD >end_of_step</TD><TD > called at very end of timestep</TD></TR> <TR><TD >pre_exchange</TD><TD > called before atom exchange on re-neighboring steps (optional)</TD></TR>
<TR><TD >write_restart</TD><TD > dumps fix info to restart file</TD></TR> <TR><TD >pre_neighbor</TD><TD > called before neighbor list build (optional)</TD></TR>
<TR><TD >restart</TD><TD > uses info from restart file to re-initialize the fix</TD></TR> <TR><TD >pre_force</TD><TD > called after pair & molecular forces are computed (optional)</TD></TR>
<TR><TD >grow_arrays</TD><TD > allocate memory for atom-based arrays used by fix</TD></TR> <TR><TD >post_force</TD><TD > called after pair & molecular forces are computed and communicated (optional)</TD></TR>
<TR><TD >copy_arrays</TD><TD > copy atom info when an atom migrates to a new processor</TD></TR> <TR><TD >final_integrate</TD><TD > called at end of each timestep (optional)</TD></TR>
<TR><TD >memory_usage</TD><TD > report memory used by fix</TD></TR> <TR><TD >end_of_step</TD><TD > called at very end of timestep (optional)</TD></TR>
<TR><TD >pack_exchange</TD><TD > store atom's data in a buffer</TD></TR> <TR><TD >write_restart</TD><TD > dumps fix info to restart file (optional)</TD></TR>
<TR><TD >unpack_exchange</TD><TD > retrieve atom's data from a buffer</TD></TR> <TR><TD >restart</TD><TD > uses info from restart file to re-initialize the fix (optional)</TD></TR>
<TR><TD >pack_restart</TD><TD > store atom's data for writing to restart file</TD></TR> <TR><TD >grow_arrays</TD><TD > allocate memory for atom-based arrays used by fix (optional)</TD></TR>
<TR><TD >unpack_restart</TD><TD > retrieve atom's data from a restart file buffer</TD></TR> <TR><TD >copy_arrays</TD><TD > copy atom info when an atom migrates to a new processor (optional)</TD></TR>
<TR><TD >size_restart</TD><TD > size of atom's data</TD></TR> <TR><TD >pack_exchange</TD><TD > store atom's data in a buffer (optional)</TD></TR>
<TR><TD >maxsize_restart</TD><TD > max size of atom's data</TD></TR> <TR><TD >unpack_exchange</TD><TD > retrieve atom's data from a buffer (optional)</TD></TR>
<TR><TD >initial_integrate_respa</TD><TD > same as initial_integrate, but for rRESPA</TD></TR> <TR><TD >pack_restart</TD><TD > store atom's data for writing to restart file (optional)</TD></TR>
<TR><TD >post_force_respa</TD><TD > same as post_force, but for rRESPA</TD></TR> <TR><TD >unpack_restart</TD><TD > retrieve atom's data from a restart file buffer (optional)</TD></TR>
<TR><TD >final_integrate_respa</TD><TD > same as final_integrate, but for rRESPA</TD></TR> <TR><TD >size_restart</TD><TD > size of atom's data (optional)</TD></TR>
<TR><TD >pack_comm</TD><TD > pack a buffer to communicate a per-atom quantity</TD></TR> <TR><TD >maxsize_restart</TD><TD > max size of atom's data (optional)</TD></TR>
<TR><TD >unpack_comm</TD><TD > unpack a buffer to communicate a per-atom quantity</TD></TR> <TR><TD >setup_pre_force_respa</TD><TD > same as setup_pre_force, but for rRESPA (optional)</TD></TR>
<TR><TD >pack_reverse_comm</TD><TD > pack a buffer to reverse communicate a per-atom quantity</TD></TR> <TR><TD >initial_integrate_respa</TD><TD > same as initial_integrate, but for rRESPA (optional)</TD></TR>
<TR><TD >unpack_reverse_comm</TD><TD > unpack a buffer to reverse communicate a per-atom quantity</TD></TR> <TR><TD >post_integrate_respa</TD><TD > called after the first half integration step is done in rRESPA (optional)</TD></TR>
<TR><TD >thermo</TD><TD > compute quantities for thermodynamic output <TR><TD >pre_force_respa</TD><TD > same as pre_force, but for rRESPA (optional)</TD></TR>
<TR><TD >post_force_respa</TD><TD > same as post_force, but for rRESPA (optional)</TD></TR>
<TR><TD >final_integrate_respa</TD><TD > same as final_integrate, but for rRESPA (optional)</TD></TR>
<TR><TD >min_pre_force</TD><TD > called after pair & molecular forces are computed in minimizer (optional)</TD></TR>
<TR><TD >min_post_force</TD><TD > called after pair & molecular forces are computed and communicated in minmizer (optional)</TD></TR>
<TR><TD >min_store</TD><TD > store extra data for linesearch based minimization on a LIFO stack (optional)</TD></TR>
<TR><TD >min_pushstore</TD><TD > push the minimization LIFO stack one element down (optional)</TD></TR>
<TR><TD >min_popstore</TD><TD > pop the minimization LIFO stack one element up (optional)</TD></TR>
<TR><TD >min_clearstore</TD><TD > clear minimization LIFO stack (optional)</TD></TR>
<TR><TD >min_step</TD><TD > reset or move forward on line search minimization (optional)</TD></TR>
<TR><TD >min_dof</TD><TD > report number of degrees of freedom <I>added</I> by this fix in minimization (optional)</TD></TR>
<TR><TD >max_alpha</TD><TD > report maximum allowed step size during linesearch minimization (optional)</TD></TR>
<TR><TD >pack_comm</TD><TD > pack a buffer to communicate a per-atom quantity (optional)</TD></TR>
<TR><TD >unpack_comm</TD><TD > unpack a buffer to communicate a per-atom quantity (optional)</TD></TR>
<TR><TD >pack_reverse_comm</TD><TD > pack a buffer to reverse communicate a per-atom quantity (optional)</TD></TR>
<TR><TD >unpack_reverse_comm</TD><TD > unpack a buffer to reverse communicate a per-atom quantity (optional)</TD></TR>
<TR><TD >dof</TD><TD > report number of degrees of freedom <I>removed</I> by this fix during MD (optional)</TD></TR>
<TR><TD >compute_scalar</TD><TD > return a global scalar property that the fix computes (optional)</TD></TR>
<TR><TD >compute_vector</TD><TD > return a component of a vector property that the fix computes (optional)</TD></TR>
<TR><TD >compute_array</TD><TD > return a component of an array property that the fix computes (optional)</TD></TR>
<TR><TD >deform</TD><TD > called when the box size is changed (optional)</TD></TR>
<TR><TD >reset_target</TD><TD > called when a change of the target temperature is requested during a run (optional)</TD></TR>
<TR><TD >reset_dt</TD><TD > is called when a change of the time step is requested during a run (optional)</TD></TR>
<TR><TD >modify_param</TD><TD > called when a fix_modify request is executed (optional)</TD></TR>
<TR><TD >memory_usage</TD><TD > report memory used by fix (optional)</TD></TR>
<TR><TD >thermo</TD><TD > compute quantities for thermodynamic output (optional)
</TD></TR></TABLE></DIV> </TD></TR></TABLE></DIV>
<P>Typically, only a small fraction of these methods are defined for a <P>Typically, only a small fraction of these methods are defined for a

View File

@ -140,43 +140,48 @@ features that can be added in the manner just described:
10.1 Atom styles :link(mod_1),h4 10.1 Atom styles :link(mod_1),h4
Classes that define an atom style are derived from the Atom class. Classes that define an atom style are derived from the AtomVec class
The atom style determines what quantities are associated with an atom. and managed by the Atom class. The atom style determines what
A new atom style can be created if one of the existing atom styles quantities are associated with an atom. A new atom style can be
does not define all the arrays you need to store and communicate with created if one of the existing atom styles does not define all
atoms. the arrays you need to store and communicate with atoms.
Atom_vec_atomic.cpp is a simple example of an atom style. Atom_vec_atomic.cpp is a simple example of an atom style.
Here is a brief description of methods you define in your new derived Here is a brief description of methods you define in your new derived
class. See atom.h for details. class. See atom_vec.h for details.
grow: re-allocate atom arrays to longer lengths init: one time setup (optional)
copy: copy info for one atom to another atom's array locations grow: re-allocate atom arrays to longer lengths (required)
pack_comm: store an atom's info in a buffer communicated every timestep grow_reset: make array pointers in Atom and AtomVec classes consistent (required)
pack_comm_vel: add velocity info to buffer copy: copy info for one atom to another atom's array locations (required)
pack_comm_one: store extra info unique to this atom style pack_comm: store an atom's info in a buffer communicated every timestep (required)
unpack_comm: retrieve an atom's info from the buffer pack_comm_vel: add velocity info to communication buffer (required)
unpack_comm_vel: also retrieve velocity info pack_comm_hybrid: store extra info unique to this atom style (optional)
unpack_comm_one: retreive extra info unique to this atom style unpack_comm: retrieve an atom's info from the buffer (required)
pack_reverse: store an atom's info in a buffer communicating partial forces unpack_comm_vel: also retrieve velocity info (required)
pack_reverse_one: store extra info unique to this atom style unpack_comm_hybrid: retreive extra info unique to this atom style (optional)
unpack_reverse: retrieve an atom's info from the buffer pack_reverse: store an atom's info in a buffer communicating partial forces (required)
unpack_reverse_one: retreive extra info unique to this atom style pack_reverse_hybrid: store extra info unique to this atom style (optional)
pack_border: store an atom's info in a buffer communicated on neighbor re-builds unpack_reverse: retrieve an atom's info from the buffer (required)
pack_border_vel: add velocity info to buffer unpack_reverse_hybrid: retreive extra info unique to this atom style (optional)
pack_border_one: store extra info unique to this atom style pack_border: store an atom's info in a buffer communicated on neighbor re-builds (required)
unpack_border: retrieve an atom's info from the buffer pack_border_vel: add velocity info to buffer (required)
unpack_border_vel: also retrieve velocity info pack_border_hybrid: store extra info unique to this atom style (optional)
unpack_border_one: retreive extra info unique to this atom style unpack_border: retrieve an atom's info from the buffer (required)
pack_exchange: store all an atom's info to migrate to another processor unpack_border_vel: also retrieve velocity info (required)
unpack_exchange: retrieve an atom's info from the buffer unpack_border_hybrid: retreive extra info unique to this atom style (optional)
size_restart: number of restart quantities associated with proc's atoms pack_exchange: store all an atom's info to migrate to another processor (required)
pack_restart: pack atom quantities into a buffer unpack_exchange: retrieve an atom's info from the buffer (required)
unpack_restart: unpack atom quantities from a buffer size_restart: number of restart quantities associated with proc's atoms (required)
create_atom: create an individual atom of this style pack_restart: pack atom quantities into a buffer (required)
data_atom: parse an atom line from the data file unpack_restart: unpack atom quantities from a buffer (required)
memory_usage: tally memory allocated by atom arrays :tb(s=:) create_atom: create an individual atom of this style (required)
data_atom: parse an atom line from the data file (required)
data_atom_hybrid: parse additional atom info unique to this atom style (optional)
data_vel: parse one line of velocity information from data file (optional)
data_vel_hybrid: parse additional velocity data unique to this atom style (optional)
memory_usage: tally memory allocated by atom arrays (required) :tb(s=:)
The constructor of the derived class sets values for several variables The constructor of the derived class sets values for several variables
that you must set when defining a new atom style, which are documented that you must set when defining a new atom style, which are documented
@ -196,15 +201,20 @@ Bond_harmonic.cpp is the simplest example of a bond style. Ditto for
the harmonic forms of the angle, dihedral, and improper style the harmonic forms of the angle, dihedral, and improper style
commands. commands.
Here is a brief description of methods you define in your new derived Here is a brief description of common methods you define in your
bond class. See bond.h, angle.h, dihedral.h, and improper.h for new derived class. See bond.h, angle.h, dihedral.h, and improper.h
details. for details and specific additional methods.
compute: compute the molecular interactions init: check if all coefficients are set, calls {init_style} (optional)
coeff: set coefficients for one bond type init_style: check if style specific conditions are met (optional)
equilibrium_distance: length of bond, used by SHAKE compute: compute the molecular interactions (required)
write & read_restart: writes/reads coeffs to restart files settings: apply global settings for all types (optional)
single: force and energy of a single bond :tb(s=:) coeff: set coefficients for one type (required)
equilibrium_distance: length of bond, used by SHAKE (required, bond only)
equilibrium_angle: opening of angle, used by SHAKE (required, angle only)
write & read_restart: writes/reads coeffs to restart files (required)
single: force and energy of a single bond or angle (required, bond or angle only)
memory_usage: tally memory allocated by the style (optional) :tb(s=:)
:line :line
@ -223,14 +233,21 @@ per-atom kinetic energy.
Here is a brief description of methods you define in your new derived Here is a brief description of methods you define in your new derived
class. See compute.h for details. class. See compute.h for details.
compute_scalar: compute a scalar quantity init: perform one time setup (required)
compute_vector: compute a vector of quantities init_list: neighbor list setup, if needed (optional)
compute_peratom: compute one or more quantities per atom compute_scalar: compute a scalar quantity (optional)
pack_comm: pack a buffer with items to communicate compute_vector: compute a vector of quantities (optional)
unpack_comm: unpack the buffer compute_peratom: compute one or more quantities per atom (optional)
pack_reverse: pack a buffer with items to reverse communicate compute_local: compute one or more quantities per processor (optional)
unpack_reverse: unpack the buffer pack_comm: pack a buffer with items to communicate (optional)
memory_usage: tally memory usage :tb(s=:) unpack_comm: unpack the buffer (optional)
pack_reverse: pack a buffer with items to reverse communicate (optional)
unpack_reverse: unpack the buffer (optional)
remove_bias: remove velocity bias from one atom (optional)
remove_bias_all: remove velocity bias from all atoms in group (optional)
restore_bias: restore velocity bias for one atom after remove_bias (optional)
restore_bias_all: same as before, but for all atoms in group (optional)
memory_usage: tally memory usage (optional) :tb(s=:)
:line :line
@ -283,34 +300,59 @@ implement.
Here is a brief description of methods you can define in your new Here is a brief description of methods you can define in your new
derived class. See fix.h for details. derived class. See fix.h for details.
setmask: determines when the fix is called during the timestep setmask: determines when the fix is called during the timestep (required)
init: initialization before a run init: initialization before a run (optional)
setup: called immediately before the 1st timestep setup_pre_exchange: called before atom exchange in setup (optional)
initial_integrate: called at very beginning of each timestep setup_pre_force: called before force computation in setup (optional)
pre_exchange: called before atom exchange on re-neighboring steps setup: called immediately before the 1st timestep and after forces are computed (optional)
pre_neighbor: called before neighbor list build min_setup_pre_force: like setup_pre_force, but for minimizations instead of MD runs (optional)
post_force: called after pair & molecular forces are computed min_setup: like setup, but for minimizations instead of MD runs (optional)
final_integrate: called at end of each timestep initial_integrate: called at very beginning of each timestep (optional)
end_of_step: called at very end of timestep pre_exchange: called before atom exchange on re-neighboring steps (optional)
write_restart: dumps fix info to restart file pre_neighbor: called before neighbor list build (optional)
restart: uses info from restart file to re-initialize the fix pre_force: called after pair & molecular forces are computed (optional)
grow_arrays: allocate memory for atom-based arrays used by fix post_force: called after pair & molecular forces are computed and communicated (optional)
copy_arrays: copy atom info when an atom migrates to a new processor final_integrate: called at end of each timestep (optional)
memory_usage: report memory used by fix end_of_step: called at very end of timestep (optional)
pack_exchange: store atom's data in a buffer write_restart: dumps fix info to restart file (optional)
unpack_exchange: retrieve atom's data from a buffer restart: uses info from restart file to re-initialize the fix (optional)
pack_restart: store atom's data for writing to restart file grow_arrays: allocate memory for atom-based arrays used by fix (optional)
unpack_restart: retrieve atom's data from a restart file buffer copy_arrays: copy atom info when an atom migrates to a new processor (optional)
size_restart: size of atom's data pack_exchange: store atom's data in a buffer (optional)
maxsize_restart: max size of atom's data unpack_exchange: retrieve atom's data from a buffer (optional)
initial_integrate_respa: same as initial_integrate, but for rRESPA pack_restart: store atom's data for writing to restart file (optional)
post_force_respa: same as post_force, but for rRESPA unpack_restart: retrieve atom's data from a restart file buffer (optional)
final_integrate_respa: same as final_integrate, but for rRESPA size_restart: size of atom's data (optional)
pack_comm: pack a buffer to communicate a per-atom quantity maxsize_restart: max size of atom's data (optional)
unpack_comm: unpack a buffer to communicate a per-atom quantity setup_pre_force_respa: same as setup_pre_force, but for rRESPA (optional)
pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity initial_integrate_respa: same as initial_integrate, but for rRESPA (optional)
unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity post_integrate_respa: called after the first half integration step is done in rRESPA (optional)
thermo: compute quantities for thermodynamic output :tb(s=:) pre_force_respa: same as pre_force, but for rRESPA (optional)
post_force_respa: same as post_force, but for rRESPA (optional)
final_integrate_respa: same as final_integrate, but for rRESPA (optional)
min_pre_force: called after pair & molecular forces are computed in minimizer (optional)
min_post_force: called after pair & molecular forces are computed and communicated in minmizer (optional)
min_store: store extra data for linesearch based minimization on a LIFO stack (optional)
min_pushstore: push the minimization LIFO stack one element down (optional)
min_popstore: pop the minimization LIFO stack one element up (optional)
min_clearstore: clear minimization LIFO stack (optional)
min_step: reset or move forward on line search minimization (optional)
min_dof: report number of degrees of freedom {added} by this fix in minimization (optional)
max_alpha: report maximum allowed step size during linesearch minimization (optional)
pack_comm: pack a buffer to communicate a per-atom quantity (optional)
unpack_comm: unpack a buffer to communicate a per-atom quantity (optional)
pack_reverse_comm: pack a buffer to reverse communicate a per-atom quantity (optional)
unpack_reverse_comm: unpack a buffer to reverse communicate a per-atom quantity (optional)
dof: report number of degrees of freedom {removed} by this fix during MD (optional)
compute_scalar: return a global scalar property that the fix computes (optional)
compute_vector: return a component of a vector property that the fix computes (optional)
compute_array: return a component of an array property that the fix computes (optional)
deform: called when the box size is changed (optional)
reset_target: called when a change of the target temperature is requested during a run (optional)
reset_dt: is called when a change of the time step is requested during a run (optional)
modify_param: called when a fix_modify request is executed (optional)
memory_usage: report memory used by fix (optional)
thermo: compute quantities for thermodynamic output (optional) :tb(s=:)
Typically, only a small fraction of these methods are defined for a Typically, only a small fraction of these methods are defined for a
particular fix. Setmask is mandatory, as it determines when the fix particular fix. Setmask is mandatory, as it determines when the fix