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

This commit is contained in:
sjplimp
2015-07-16 22:30:07 +00:00
parent e4e7165fd2
commit 6295fc6908
17 changed files with 1187 additions and 21 deletions

186
doc/compute_saed.html Normal file
View File

@ -0,0 +1,186 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute saed command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID saed lambda type1 type2 ... typeN keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>saed = style name of this compute command
<LI>lambda = wavelength of incident radiation (length units)
<LI>type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>Kmax</I> or <I>Zone</I> or <I>dR_Ewald</I> or <I>c</I> or <I>manual</I> or <I>echo</I>
<PRE> <I>Kmax</I> value = Maximum distance explored from reciprocal space origin
(inverse length units)
<I>Zone</I> values = z1 z2 z3
z1,z2,z3 = Zone axis of incident radiation. If z1=z2=z3=0 all
reciprocal space will be meshed up to <I>Kmax</I>
<I>dR_Ewald</I> value = Thickness of Ewald sphere slice intercepting
reciprocal space (inverse length units)
<I>c</I> values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
<I>manual</I> = flag to use manual spacing of reciprocal lattice points
based on the values of the <I>c</I> parameters
<I>echo</I> = flag to provide extra output for debugging purposes
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<P>compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
</P>
<PRE>fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates electron diffraction intensity as
described in <A HREF = "#Coleman">(Coleman)</A> on a mesh of reciprocal lattice nodes
defined by the entire simulation domain (or manually) using simulated
radiation of wavelength lambda.
</P>
<P>The electron diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
</P>
<CENTER><IMG SRC = "Eqs/compute_saed1.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_saed2.jpg">
</CENTER>
<P>Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors.
</P>
<P>Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I) by
the entire simulation domain or (II) manually using selected values.
</P>
<P>For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing <I>c</I>*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
</P>
<P>If the <I>manual</I> flag is included, the mesh of reciprocal lattice nodes
will defined using the <I>c</I> values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters <B><0.05 Angstrom^(-1)</B> are implemented.
Meshes with manual spacing do not require a periodic boundary.
</P>
<P>The limits of the reciprocal lattice mesh are determined by the use of
the <I>Kmax</I>, <I>Zone</I>, and <I>dR_Ewald</I> parameters. The rectilinear mesh
created about the origin of reciprocal space is terminated at the
boundary of a sphere of radius <I>Kmax</I> centered at the origin. If
<I>Zone</I> parameters z1=z2=z3=0 are used, diffraction intensities are
computed throughout the entire spherical volume - note this can greatly
increase the cost of computation. Otherwise, <I>Zone</I> parameters will
denote the z1=h, z2=k, and z3=l (in a global since) zone axis of an
intersecting Ewald sphere. Diffraction intensities will only be
computed at the intersection of the reciprocal lattice mesh and a
<I>dR_Ewald</I> thick surface of the Ewald sphere.
</P>
<P>The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute saed uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
<A HREF = "#Brown">(Brown)</A>:
</P>
<CENTER><IMG SRC = "Eqs/compute_saed3.jpg">
</CENTER>
<P>Coefficients parameterized by <A HREF = "#Fox">(Fox)</A> are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute saed are:
</P>
<P> H: He: Li: Be: B:
C: N: O: F: Ne:
Na: Mg: Al: Si: P:
S: Cl: Ar: K: Ca:
Sc: Ti: V: Cr: Mn:
Fe: Co: Ni: Cu: Zn:
Ga: Ge: As: Se: Br:
Kr: Rb: Sr: Y: Zr:
Nb: Mo: Tc: Ru: Rh:
Pd: Ag: Cd: In: Sn:
Sb: Te: I: Xe: Cs:
Ba: La: Ce: Pr: Nd:
Pm: Sm: Eu: Gd: Tb:
Dy: Ho: Er: Tm: Yb:
Lu: Hf: Ta: W: Re:
Os: Ir: Pt: Au: Hg:
Tl: Pb: Bi: Po: At:
Rn: Fr: Ra: Ac: Th:
Pa: U: Np: Pu: Am:
Cm: Bk: Cf:
</P>
<P>If the <I>echo</I> keyword is specified, compute saed will provide extra
reporting information to the screen.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global vector. The length of the vector is
the number of reciprocal lattice nodes that are explored by the mesh.
The entries of the global vector are the computed diffraction
intensities as described above.
</P>
<P>The vector can be accessed by any command that uses global values
from a compute as input. See <A HREF = "Section_howto.html#howto_15">this
section</A> for an overview of LAMMPS output
options.
</P>
<P>All array values calculated by this compute are "intensive".
</P>
<P><B>Restrictions:</B>
</P>
<P>The compute_saed command does not work for triclinic cells.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "fix_saed_vtk.html">fix saed_vtk</A>
<A HREF = "compute_xrd.html">compute xrd</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are Kmax = 1.70, Zone 1 0 0, c 1 1 1, dR_Ewald = 0.01
</P>
<HR>
<A NAME = "Coleman"></A>
<P><B>(Coleman)</B> Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
</P>
<A NAME = "Brown"></A>
<P><B>(Brown)</B> Brown et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 554-95 (2004).
</P>
<A NAME = "Fox"></A>
<P><B>(Fox)</B> Fox, O'Keefe, Tabbernor, Acta Crystallogr. A, 45, 786-93
(1989).
</P>
</HTML>

173
doc/compute_saed.txt Normal file
View File

@ -0,0 +1,173 @@
"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 saed command :h3
[Syntax:]
compute ID group-ID saed lambda type1 type2 ... typeN keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
saed = style name of this compute command :l
lambda = wavelength of incident radiation (length units) :l
type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below) :l
zero or more keyword/value pairs may be appended :l
keyword = {Kmax} or {Zone} or {dR_Ewald} or {c} or {manual} or {echo} :l
{Kmax} value = Maximum distance explored from reciprocal space origin
(inverse length units)
{Zone} values = z1 z2 z3
z1,z2,z3 = Zone axis of incident radiation. If z1=z2=z3=0 all
reciprocal space will be meshed up to {Kmax}
{dR_Ewald} value = Thickness of Ewald sphere slice intercepting
reciprocal space (inverse length units)
{c} values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
{manual} = flag to use manual spacing of reciprocal lattice points
based on the values of the {c} parameters
{echo} = flag to provide extra output for debugging purposes :pre
:ule
[Examples:]
compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed :pre
[Description:]
Define a computation that calculates electron diffraction intensity as
described in "(Coleman)"_#Coleman on a mesh of reciprocal lattice nodes
defined by the entire simulation domain (or manually) using simulated
radiation of wavelength lambda.
The electron diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
:c,image(Eqs/compute_saed1.jpg)
:c,image(Eqs/compute_saed2.jpg)
Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors.
Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I) by
the entire simulation domain or (II) manually using selected values.
For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing {c}*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
If the {manual} flag is included, the mesh of reciprocal lattice nodes
will defined using the {c} values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters [<0.05 Angstrom^(-1)] are implemented.
Meshes with manual spacing do not require a periodic boundary.
The limits of the reciprocal lattice mesh are determined by the use of
the {Kmax}, {Zone}, and {dR_Ewald} parameters. The rectilinear mesh
created about the origin of reciprocal space is terminated at the
boundary of a sphere of radius {Kmax} centered at the origin. If
{Zone} parameters z1=z2=z3=0 are used, diffraction intensities are
computed throughout the entire spherical volume - note this can greatly
increase the cost of computation. Otherwise, {Zone} parameters will
denote the z1=h, z2=k, and z3=l (in a global since) zone axis of an
intersecting Ewald sphere. Diffraction intensities will only be
computed at the intersection of the reciprocal lattice mesh and a
{dR_Ewald} thick surface of the Ewald sphere.
The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute saed uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
"(Brown)"_#Brown:
:c,image(Eqs/compute_saed3.jpg)
Coefficients parameterized by "(Fox)"_#Fox are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute saed are:
H: He: Li: Be: B:
C: N: O: F: Ne:
Na: Mg: Al: Si: P:
S: Cl: Ar: K: Ca:
Sc: Ti: V: Cr: Mn:
Fe: Co: Ni: Cu: Zn:
Ga: Ge: As: Se: Br:
Kr: Rb: Sr: Y: Zr:
Nb: Mo: Tc: Ru: Rh:
Pd: Ag: Cd: In: Sn:
Sb: Te: I: Xe: Cs:
Ba: La: Ce: Pr: Nd:
Pm: Sm: Eu: Gd: Tb:
Dy: Ho: Er: Tm: Yb:
Lu: Hf: Ta: W: Re:
Os: Ir: Pt: Au: Hg:
Tl: Pb: Bi: Po: At:
Rn: Fr: Ra: Ac: Th:
Pa: U: Np: Pu: Am:
Cm: Bk: Cf:
If the {echo} keyword is specified, compute saed will provide extra
reporting information to the screen.
[Output info:]
This compute calculates a global vector. The length of the vector is
the number of reciprocal lattice nodes that are explored by the mesh.
The entries of the global vector are the computed diffraction
intensities as described above.
The vector can be accessed by any command that uses global values
from a compute as input. See "this
section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
All array values calculated by this compute are "intensive".
[Restrictions:]
The compute_saed command does not work for triclinic cells.
[Related commands:]
"fix saed_vtk"_fix_saed_vtk.html
"compute xrd"_compute_xrd.html
[Default:]
The option defaults are Kmax = 1.70, Zone 1 0 0, c 1 1 1, dR_Ewald = 0.01
:line
:link(Coleman)
[(Coleman)] Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
:link(Brown)
[(Brown)] Brown et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 554-95 (2004).
:link(Fox)
[(Fox)] Fox, O'Keefe, Tabbernor, Acta Crystallogr. A, 45, 786-93
(1989).

210
doc/compute_xrd.html Normal file
View File

@ -0,0 +1,210 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>compute xrd command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>compute ID group-ID xrd lambda type1 type2 ... typeN keyword value ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "compute.html">compute</A> command
<LI>xrd = style name of this compute command
<LI>lambda = wavelength of incident radiation (length units)
<LI>type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below)
<LI>zero or more keyword/value pairs may be appended
<LI>keyword = <I>2Theta</I> or <I>c</I> or <I>LP</I> or <I>manual</I> or <I>echo</I>
<PRE> <I>2Theta</I> values = Min2Theta Max2Theta
Min2Theta,Max2Theta = minimum and maximum 2 theta range to explore
(radians or degrees)
<I>c</I> values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
<I>LP</I> value = switch to apply Lorentz-polarization factor
0/1 = off/on
<I>manual</I> = flag to use manual spacing of reciprocal lattice points
based on the values of the <I>c</I> parameters
<I>echo</I> = flag to provide extra output for debugging purposes
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<P>compute 1 all xrd 1.541838 Al O 2Theta 0.087 0.87 c 1 1 1 LP 1 echo
compute 2 all xrd 1.541838 Al O 2Theta 10 100 c 0.05 0.05 0.05 LP 1 manual
</P>
<P>fix 1 all ave/histo 1 1 1 0.087 0.87 250 c_1<B>1</B> mode vector weights c_1<B>2</B> file Rad2Theta.xrd
fix 2 all ave/histo 1 1 1 10 100 250 c_2<B>1</B> mode vector weights c_2<B>2</B> file Deg2Theta.xrd
</P>
<PRE>
</PRE>
<P><B>Description:</B>
</P>
<P>Define a computation that calculates x-ray diffraction intensity as described
in <A HREF = "#Coleman">(Coleman)</A> on a mesh of reciprocal lattice nodes defined
by the entire simulation domain (or manually) using simulated radiation
of wavelength lambda.
</P>
<P>The x-ray diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
</P>
<CENTER><IMG SRC = "Eqs/compute_xrd1.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_xrd2.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_xrd3.jpg">
</CENTER>
<CENTER><IMG SRC = "Eqs/compute_xrd4.jpg">
</CENTER>
<P>Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors, LP is the
Lorentz-polarization factor, and theta is the scattering angle of
diffraction. The Lorentz-polarization factor can be turned off using
the <I>LP</I> switch.
</P>
<P>Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I)
by the entire simulation domain or (II) manually using selected values.
</P>
<P>For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing <I>c</I>*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
</P>
<P>If the <I>manual</I> flag is included, the mesh of reciprocal lattice nodes
will defined using the <I>c</I> values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters <B><0.05 Angstrom^(-1)</B> are implemented.
Meshes with manual spacing do not require a periodic boundary.
</P>
<P>The limits of the reciprocal lattice mesh are determined by range of
scattering angles explored. The <I>2Theta</I> parameters allows the user to
reduce the scattering angle range to only the region of interest which
reduces the cost of the computation.
</P>
<P>The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute xrd uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
<A HREF = "#Colliex">(Colliex)</A>:
</P>
<CENTER><IMG SRC = "Eqs/compute_xrd5.jpg">
</CENTER>
<P>Coefficients parameterized by <A HREF = "#Peng">(Peng)</A> are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute xrd are:
</P>
<P> H: He1-: He: Li: Li1+:
Be: Be2+: B: C: Cval:
N: O: O1-: F: F1-:
Ne: Na: Na1+: Mg: Mg2+:
Al: Al3+: Si: Sival: Si4+:
P: S: Cl: Cl1-: Ar:
K: Ca: Ca2+: Sc: Sc3+:
Ti: Ti2+: Ti3+: Ti4+: V:
V2+: V3+: V5+: Cr: Cr2+:
Cr3+: Mn: Mn2+: Mn3+: Mn4+:
Fe: Fe2+: Fe3+: Co: Co2+:
Co: Ni: Ni2+: Ni3+: Cu:
Cu1+: Cu2+: Zn: Zn2+: Ga:
Ga3+: Ge: Ge4+: As: Se:
Br: Br1-: Kr: Rb: Rb1+:
Sr: Sr2+: Y: Y3+: Zr:
Zr4+: Nb: Nb3+: Nb5+: Mo:
Mo3+: Mo5+: Mo6+: Tc: Ru:
Ru3+: Ru4+: Rh: Rh3+: Rh4+:
Pd: Pd2+: Pd4+: Ag: Ag1+:
Ag2+: Cd: Cd2+: In: In3+:
Sn: Sn2+: Sn4+: Sb: Sb3+:
Sb5+: Te: I: I1-: Xe:
Cs: Cs1+: Ba: Ba2+: La:
La3+: Ce: Ce3+: Ce4+: Pr:
Pr3+: Pr4+: Nd: Nd3+: Pm:
Pm3+: Sm: Sm3+: Eu: Eu2+:
Eu3+: Gd: Gd3+: Tb: Tb3+:
Dy: Dy3+: Ho: Ho3+: Er:
Er3+: Tm: Tm3+: Yb: Yb2+:
Yb3+: Lu: Lu3+: Hf: Hf4+:
Ta: Ta5+: W: W6+: Re:
Os: Os4+: Ir: Ir3+: Ir4+:
Pt: Pt2+: Pt4+: Au: Au1+:
Au3+: Hg: Hg1+: Hg2+: Tl:
Tl1+: Tl3+: Pb: Pb2+: Pb4+:
Bi: Bi3+: Bi5+: Po: At:
Rn: Fr: Ra: Ra2+: Ac:
Ac3+: Th: Th4+: Pa: U:
U3+: U4+: U6+: Np: Np3+:
Np4+: Np6+: Pu: Pu3+: Pu4+:
Pu6+: Am: Cm: Bk: Cf:
</P>
<P>If the <I>echo</I> keyword is specified, compute xrd will provide extra
reporting information to the screen.
</P>
<P><B>Output info:</B>
</P>
<P>This compute calculates a global array. The number of rows in the
array is the number of reciprocal lattice nodes that are explored
which by the mesh. The global array has 2 columns.
</P>
<P>The first column contains the diffraction angle in the units (radians
or degrees) provided with the <I>2Theta</I> values. The second column contains
the computed diffraction intensities as described above.
</P>
<P>The array can be accessed by any command that uses global values
from a compute as input. See <A HREF = "Section_howto.html#howto_15">this section</A> for an overview of LAMMPS output
options.
</P>
<P>All array values calculated by this compute are "intensive".
</P>
<P><B>Restrictions:</B>
</P>
<P>The compute_xrd command does not work for triclinic cells.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_ave_histo.html">fix ave/histo</A>
<A HREF = "compute_saed.html">compute saed</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are 2Theta = 1 179 (degrees), c = 1 1 1, LP = 1, no manual flag, no echo flag
</P>
<HR>
<A NAME = "Coleman"></A>
<P><B>(Coleman)</B> Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
</P>
<A NAME = "Colliex"></A>
<P><B>(Colliex)</B> Colliex et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 249-429 (2004).
</P>
<A NAME = "Peng"></A>
<P><B>(Peng)</B> Peng, Ren, Dudarev, Whelan, Acta Crystallogr. A, 52, 257-76
(1996).
</P>
</HTML>

196
doc/compute_xrd.txt Normal file
View File

@ -0,0 +1,196 @@
"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 xrd command :h3
[Syntax:]
compute ID group-ID xrd lambda type1 type2 ... typeN keyword value ... :pre
ID, group-ID are documented in "compute"_compute.html command :ulb,l
xrd = style name of this compute command :l
lambda = wavelength of incident radiation (length units) :l
type1 type2 ... typeN = chemical symbol of each atom type (see valid
options below) :l
zero or more keyword/value pairs may be appended :l
keyword = {2Theta} or {c} or {LP} or {manual} or {echo} :l
{2Theta} values = Min2Theta Max2Theta
Min2Theta,Max2Theta = minimum and maximum 2 theta range to explore
(radians or degrees)
{c} values = c1 c2 c3
c1,c2,c3 = parameters to adjust the spacing of the reciprocal
lattice nodes in the h, k, and l directions respectively
{LP} value = switch to apply Lorentz-polarization factor
0/1 = off/on
{manual} = flag to use manual spacing of reciprocal lattice points
based on the values of the {c} parameters
{echo} = flag to provide extra output for debugging purposes :pre
:ule
[Examples:]
compute 1 all xrd 1.541838 Al O 2Theta 0.087 0.87 c 1 1 1 LP 1 echo
compute 2 all xrd 1.541838 Al O 2Theta 10 100 c 0.05 0.05 0.05 LP 1 manual
fix 1 all ave/histo 1 1 1 0.087 0.87 250 c_1[1] mode vector weights c_1[2] file Rad2Theta.xrd
fix 2 all ave/histo 1 1 1 10 100 250 c_2[1] mode vector weights c_2[2] file Deg2Theta.xrd
:pre
[Description:]
Define a computation that calculates x-ray diffraction intensity as described
in "(Coleman)"_#Coleman on a mesh of reciprocal lattice nodes defined
by the entire simulation domain (or manually) using simulated radiation
of wavelength lambda.
The x-ray diffraction intensity I at each reciprocal lattice point
is computed from the structure factor F using the equations:
:c,image(Eqs/compute_xrd1.jpg)
:c,image(Eqs/compute_xrd2.jpg)
:c,image(Eqs/compute_xrd3.jpg)
:c,image(Eqs/compute_xrd4.jpg)
Here, K is the location of the reciprocal lattice node, rj is the
position of each atom, fj are atomic scattering factors, LP is the
Lorentz-polarization factor, and theta is the scattering angle of
diffraction. The Lorentz-polarization factor can be turned off using
the {LP} switch.
Diffraction intensities are calculated on a three-dimensional mesh of
reciprocal lattice nodes. The mesh spacing is defined either (I)
by the entire simulation domain or (II) manually using selected values.
For a mesh defined by the simulation domain, a rectilinear grid is
constructed with spacing {c}*inv(A) along each reciprocal lattice
axis. Where A are the vectors corresponding to the edges of the
simulation cell. If one or two directions has non-periodic boundary
conditions, then the spacing in these directions is defined from the
average of the (inversed) box lengths with periodic boundary conditions.
Meshes defined by the simulation domain must contain at least one periodic
boundary.
If the {manual} flag is included, the mesh of reciprocal lattice nodes
will defined using the {c} values for the spacing along each reciprocal
lattice axis. Note that manual mapping of the reciprocal space mesh is
good for comparing diffraction results from multiple simulations; however
it can reduce the likelihood that Bragg reflections will be satisfied
unless small spacing parameters [<0.05 Angstrom^(-1)] are implemented.
Meshes with manual spacing do not require a periodic boundary.
The limits of the reciprocal lattice mesh are determined by range of
scattering angles explored. The {2Theta} parameters allows the user to
reduce the scattering angle range to only the region of interest which
reduces the cost of the computation.
The atomic scattering factors, fj, accounts for the reduction in
diffraction intensity due to Compton scattering. Compute xrd uses
analytical approximations of the atomic scattering factors that vary
for each atom type (type1 type2 ... typeN) and angle of diffraction.
The analytic approximation is computed using the formula
"(Colliex)"_#Colliex:
:c,image(Eqs/compute_xrd5.jpg)
Coefficients parameterized by "(Peng)"_#Peng are assigned for each
atom type designating the chemical symbol and charge of each atom
type. Valid chemical symbols for compute xrd are:
H: He1-: He: Li: Li1+:
Be: Be2+: B: C: Cval:
N: O: O1-: F: F1-:
Ne: Na: Na1+: Mg: Mg2+:
Al: Al3+: Si: Sival: Si4+:
P: S: Cl: Cl1-: Ar:
K: Ca: Ca2+: Sc: Sc3+:
Ti: Ti2+: Ti3+: Ti4+: V:
V2+: V3+: V5+: Cr: Cr2+:
Cr3+: Mn: Mn2+: Mn3+: Mn4+:
Fe: Fe2+: Fe3+: Co: Co2+:
Co: Ni: Ni2+: Ni3+: Cu:
Cu1+: Cu2+: Zn: Zn2+: Ga:
Ga3+: Ge: Ge4+: As: Se:
Br: Br1-: Kr: Rb: Rb1+:
Sr: Sr2+: Y: Y3+: Zr:
Zr4+: Nb: Nb3+: Nb5+: Mo:
Mo3+: Mo5+: Mo6+: Tc: Ru:
Ru3+: Ru4+: Rh: Rh3+: Rh4+:
Pd: Pd2+: Pd4+: Ag: Ag1+:
Ag2+: Cd: Cd2+: In: In3+:
Sn: Sn2+: Sn4+: Sb: Sb3+:
Sb5+: Te: I: I1-: Xe:
Cs: Cs1+: Ba: Ba2+: La:
La3+: Ce: Ce3+: Ce4+: Pr:
Pr3+: Pr4+: Nd: Nd3+: Pm:
Pm3+: Sm: Sm3+: Eu: Eu2+:
Eu3+: Gd: Gd3+: Tb: Tb3+:
Dy: Dy3+: Ho: Ho3+: Er:
Er3+: Tm: Tm3+: Yb: Yb2+:
Yb3+: Lu: Lu3+: Hf: Hf4+:
Ta: Ta5+: W: W6+: Re:
Os: Os4+: Ir: Ir3+: Ir4+:
Pt: Pt2+: Pt4+: Au: Au1+:
Au3+: Hg: Hg1+: Hg2+: Tl:
Tl1+: Tl3+: Pb: Pb2+: Pb4+:
Bi: Bi3+: Bi5+: Po: At:
Rn: Fr: Ra: Ra2+: Ac:
Ac3+: Th: Th4+: Pa: U:
U3+: U4+: U6+: Np: Np3+:
Np4+: Np6+: Pu: Pu3+: Pu4+:
Pu6+: Am: Cm: Bk: Cf:
If the {echo} keyword is specified, compute xrd will provide extra
reporting information to the screen.
[Output info:]
This compute calculates a global array. The number of rows in the
array is the number of reciprocal lattice nodes that are explored
which by the mesh. The global array has 2 columns.
The first column contains the diffraction angle in the units (radians
or degrees) provided with the {2Theta} values. The second column contains
the computed diffraction intensities as described above.
The array can be accessed by any command that uses global values
from a compute as input. See "this section"_Section_howto.html#howto_15 for an overview of LAMMPS output
options.
All array values calculated by this compute are "intensive".
[Restrictions:]
The compute_xrd command does not work for triclinic cells.
[Related commands:]
"fix ave/histo"_compute_ave_histo.html
"compute saed"_compute_saed.html
[Default:]
The option defaults are 2Theta = 1 179 (degrees), c = 1 1 1, LP = 1, no manual flag, no echo flag
:line
:link(Coleman)
[(Coleman)] Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
:link(Colliex)
[(Colliex)] Colliex et al. International Tables for Crystallography
Volume C: Mathematical and Chemical Tables, 249-429 (2004).
:link(Peng)
[(Peng)] Peng, Ren, Dudarev, Whelan, Acta Crystallogr. A, 52, 257-76
(1996).

View File

@ -42,7 +42,7 @@
</PRE>
<LI>zero or more keyword/arg pairs may be appended
<LI>keyword = <I>mode</I> or <I>file</I> or <I>ave</I> or <I>start</I> or <I>beyond</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I>
<LI>keyword = <I>mode</I> or <I>file</I> or <I>ave</I> or <I>start</I> or <I>beyond</I> or <I>overwrite</I> or <I>title1</I> or <I>title2</I> or <I>title3</I> or <I>weights</I>
<PRE> <I>mode</I> arg = <I>scalar</I> or <I>vector</I>
scalar = all input values are scalars
@ -66,6 +66,12 @@
string = text to print as 2nd line of output file
<I>title3</I> arg = string
string = text to print as 3rd line of output file, only for vector mode
<I>weights</I> arg = c_ID, c_ID[N], f_ID, f_ID[N], v_name
c_ID = scalar or vector calculated by a compute with ID
c_ID[I] = Ith component of vector or Ith column of array calculated by a compute with ID
f_ID = scalar or vector calculated by a fix with ID
f_ID[I] = Ith component of vector or Ith column of array calculated by a fix with ID
v_name = value(s) calculated by an equal-style or atom-style variable with name
</PRE>
</UL>
@ -74,6 +80,7 @@
<PRE>fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running
fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press[2] c_thermo_press[3] title1 "My output values"
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra
fix 1 all ave/histo 1 1 1 10 100 2000 c_XRD<B>1</B> mode vector weights c_XRD<B>2</B>
</PRE>
<P><B>Description:</B>
</P>
@ -287,6 +294,15 @@ describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in
the histogram.
</P>
<P>If the <I>weights</I> keyword is specified, the fix will compute a weighted
histogram using per-bin weights specified by the <I>weights</I> argument. As
normal, the bin locations will be will be generated based off value1.
However, instead of each binned value contributing 1 to the bin
location, the contributing ammount is assigned the weights
argument. Only a single value1 and weights argument pair can be can be
used for each fix ave/histo. The length of value1 must match the
lenght of the weights arguemnt.
</P>
<HR>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>

View File

@ -29,7 +29,7 @@ value = x, y, z, vx, vy, vz, fx, fy, fz, c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_nam
v_name = value(s) calculated by an equal-style or atom-style variable with name :pre
zero or more keyword/arg pairs may be appended :l
keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {title1} or {title2} or {title3} :l
keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {title1} or {title2} or {title3} or {weights} :l
{mode} arg = {scalar} or {vector}
scalar = all input values are scalars
vector = all input values are vectors
@ -51,14 +51,21 @@ keyword = {mode} or {file} or {ave} or {start} or {beyond} or {overwrite} or {ti
{title2} arg = string
string = text to print as 2nd line of output file
{title3} arg = string
string = text to print as 3rd line of output file, only for vector mode :pre
string = text to print as 3rd line of output file, only for vector mode
{weights} arg = c_ID, c_ID\[N\], f_ID, f_ID\[N\], v_name
c_ID = scalar or vector calculated by a compute with ID
c_ID\[I\] = Ith component of vector or Ith column of array calculated by a compute with ID
f_ID = scalar or vector calculated by a fix with ID
f_ID\[I\] = Ith component of vector or Ith column of array calculated by a fix with ID
v_name = value(s) calculated by an equal-style or atom-style variable with name :pre
:ule
[Examples:]
fix 1 all ave/histo 100 5 1000 0.5 1.5 50 c_myTemp file temp.histo ave running
fix 1 all ave/histo 100 5 1000 -5 5 100 c_thermo_press\[2\] c_thermo_press\[3\] title1 "My output values"
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra :pre
fix 1 all ave/histo 1 100 1000 -2.0 2.0 18 vx vy vz mode vector ave running beyond extra
fix 1 all ave/histo 1 1 1 10 100 2000 c_XRD[1] mode vector weights c_XRD[2] :pre
[Description:]
@ -272,6 +279,15 @@ describes the six values that are printed at the first of each section
of output. The third describes the 4 values printed for each bin in
the histogram.
If the {weights} keyword is specified, the fix will compute a weighted
histogram using per-bin weights specified by the {weights} argument. As
normal, the bin locations will be will be generated based off value1.
However, instead of each binned value contributing 1 to the bin
location, the contributing ammount is assigned the weights
argument. Only a single value1 and weights argument pair can be can be
used for each fix ave/histo. The length of value1 must match the
lenght of the weights arguemnt.
:line
[Restart, fix_modify, output, run start/stop, minimize info:]

191
doc/fix_saed_vtk.html Normal file
View File

@ -0,0 +1,191 @@
<HTML>
<CENTER><A HREF = "http://lammps.sandia.gov">LAMMPS WWW Site</A> - <A HREF = "Manual.html">LAMMPS Documentation</A> - <A HREF = "Section_commands.html#comm">LAMMPS Commands</A>
</CENTER>
<HR>
<H3>fix saed/vtk command
</H3>
<P><B>Syntax:</B>
</P>
<PRE>fix ID group-ID saed/vtk Nevery Nrepeat Nfreak c_ID attribute args ... keyword args ...
</PRE>
<UL><LI>ID, group-ID are documented in <A HREF = "fix.html">fix</A> command
<LI>ave/time/saed = style name of this fix command
<LI>Nevery = use input values every this many timesteps
<LI>Nrepeat = # of times to use input values for calculating averages
<LI>Nfreq = calculate averages every this many timesteps
<LI>c_ID = saed compute ID
<PRE>keyword = <I>file</I> or <I>ave</I> or <I>start</I> or <I>file</I> or <I>overwrite</I>:l
<I>ave</I> args = <I>one</I> or <I>running</I> or <I>window M</I>
one = output a new average value every Nfreq steps
running = output cumulative average of all previous Nfreq steps
window M = output average of M most recent Nfreq steps
<I>start</I> args = Nstart
Nstart = start averaging on this timestep
<I>file</I> arg = filename
filename = name of file to output time averages to
<I>overwrite</I> arg = none = overwrite output file with only latest output
</PRE>
</UL>
<P><B>Examples:</B>
</P>
<P>compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
</P>
<PRE>fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed
</PRE>
<P><B>Description:</B>
</P>
<P>Time average computed intensities from <A HREF = "compute_saed.txt">compute_saed</A> and
write output to a file in the 3rd generation vtk image data format for
visualization directly in parallelized visualization software packages
like ParaView and VisIt. Note that if no time averaging is done, this
command can be used as a convenient way to simply output diffraction
intensities at a single snapshot.
</P>
<P>To produce output in the image data vtk format ghost data is added
outside the <I>Kmax</I> range assigned in the compute saed. The ghost data is
assigned a value of -1 and can be removed setting a minimum isovolume
of 0 within the vizualiziton software. SAED images can be created by
visualizing a spherical slice of the data that is centered at
R_Ewald*<B>h k l</B>/norm(<B>h k l</B>), where R_Ewald=1/lambda.
</P>
<P>The group specified within this command is ignored. However, note that
specified values may represent calculations performed by saed computes
which store their own "group" definitions.
</P>
<P>Fix saed/vtk is designed to work only with <A HREF = "compute_saed.txt">compute_saed</A>
values.
</P>
<P>compute 3 top saed 0.0251 Al O
fix saed/vtk 1 1 1 c_3 file Al2O3_001.saed
</P>
<HR>
<P>The <I>Nevery</I>, <I>Nrepeat</I>, and <I>Nfreq</I> arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of <I>Nfreq</I>. The average is over <I>Nrepeat</I>
quantities, computed in the preceding portion of the simulation every
<I>Nevery</I> timesteps. <I>Nfreq</I> must be a multiple of <I>Nevery</I> and
<I>Nevery</I> must be non-zero even if <I>Nrepeat</I> is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
</P>
<P>For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
</P>
<HR>
<P>The output for fix ave/time/saed is a file writen with the 3rd generation
vtk image data formatting. The filename assigned by the <I>file</I> keyword is
appended with _N.vtk where N is an index (0,1,2...) to account for multiple
diffraction intensity outputs.
</P>
<P>By default the header contains the following information (with example data):
</P>
<P># vtk DataFile Version 3.0 c_SAED
Image data set
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 337 219 209
ASPECT_RATIO 0.00507953 0.00785161 0.00821458
ORIGIN -0.853361 -0.855826 -0.854316 \n POINT_DATA 15424827
SCALARS intensity float
LOOKUP_TABLE default
...data
</P>
<HR>
<P>Additional optional keywords also affect the operation of this fix.
</P>
<P>The <I>ave</I> keyword determines how the values produced every <I>Nfreq</I>
steps are averaged with values produced on previous steps that were
multiples of <I>Nfreq</I>, before they are accessed by another output
command or written to a file.
</P>
<P>If the <I>ave</I> setting is <I>one</I>, then the values produced on timesteps
that are multiples of <I>Nfreq</I> are independent of each other; they are
output as-is without further averaging.
</P>
<P>If the <I>ave</I> setting is <I>running</I>, then the values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged in a
cumulative sense before being output. Each output value is thus the
average of the value produced on that timestep with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the <A HREF = "unfix.html">unfix</A>
command, or by re-defining the fix by re-specifying it.
</P>
<P>If the <I>ave</I> setting is <I>window</I>, then the values produced on
timesteps that are multiples of <I>Nfreq</I> are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
</P>
<P>The <I>start</I> keyword specifies what timestep averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
setting <I>start</I> to a larger value can avoid including a 0.0 in a
running or windowed average.
</P>
<P>The <I>file</I> keyword allows a filename to be specified. Every <I>Nfreq</I>
steps, the vector of saed intensity data is written to a new file using
the 3rd generation vtk format. The base of each file is assigned by
the <I>file</I> keyword and this string is appended with _N.vtk where N is
an index (0,1,2...) to account for situations with multiple diffraction
intensity outputs.
</P>
<P>The <I>overwrite</I> keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the <I>ave running</I> setting.
</P>
<P><B>Restart, fix_modify, output, run start/stop, minimize info:</B>
</P>
<P>No information about this fix is written to <A HREF = "restart.html">binary restart
files</A>. None of the <A HREF = "fix_modify.html">fix_modify</A> options
are relevant to this fix.
</P>
<P>No parameter of this fix can be used with the <I>start/stop</I> keywords of
the <A HREF = "run.html">run</A> command. This fix is not invoked during <A HREF = "minimize.html">energy
minimization</A>.
</P>
<P><B>Restrictions:</B>
</P>
<P>The attributes for fix_saed_vtk must match the values assigned in the
associated <A HREF = "compute_saed.txt">compute_saed</A> command.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "compute_saed.html">compute_saed</A>
</P>
<P><B>Default:</B>
</P>
<P>The option defaults are ave = one, start = 0, no file output.
</P>
<HR>
<A NAME = "Coleman"></A>
<P><B>(Coleman)</B> Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).
</P>
</HTML>

181
doc/fix_saed_vtk.txt Normal file
View File

@ -0,0 +1,181 @@
"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 saed/vtk command :h3
[Syntax:]
fix ID group-ID saed/vtk Nevery Nrepeat Nfreak c_ID attribute args ... keyword args ... :pre
ID, group-ID are documented in "fix"_fix.html command :ulb,l
ave/time/saed = style name of this fix command :l
Nevery = use input values every this many timesteps :l
Nrepeat = # of times to use input values for calculating averages :l
Nfreq = calculate averages every this many timesteps :l
c_ID = saed compute ID :l
keyword = {file} or {ave} or {start} or {file} or {overwrite}:l
{ave} args = {one} or {running} or {window M}
one = output a new average value every Nfreq steps
running = output cumulative average of all previous Nfreq steps
window M = output average of M most recent Nfreq steps
{start} args = Nstart
Nstart = start averaging on this timestep
{file} arg = filename
filename = name of file to output time averages to
{overwrite} arg = none = overwrite output file with only latest output :pre
:ule
[Examples:]
compute 1 all saed 0.0251 Al O Kmax 1.70 Zone 0 0 1 dR_Ewald 0.01 c 0.5 0.5 0.5
compute 2 all saed 0.0251 Ni Kmax 1.70 Zone 0 0 0 c 0.05 0.05 0.05 manual echo
fix saed/vtk 1 1 1 c_1 file Al2O3_001.saed
fix saed/vtk 1 1 1 c_2 file Ni_000.saed :pre
[Description:]
Time average computed intensities from "compute_saed"_compute_saed.txt and
write output to a file in the 3rd generation vtk image data format for
visualization directly in parallelized visualization software packages
like ParaView and VisIt. Note that if no time averaging is done, this
command can be used as a convenient way to simply output diffraction
intensities at a single snapshot.
To produce output in the image data vtk format ghost data is added
outside the {Kmax} range assigned in the compute saed. The ghost data is
assigned a value of -1 and can be removed setting a minimum isovolume
of 0 within the vizualiziton software. SAED images can be created by
visualizing a spherical slice of the data that is centered at
R_Ewald*[h k l]/norm([h k l]), where R_Ewald=1/lambda.
The group specified within this command is ignored. However, note that
specified values may represent calculations performed by saed computes
which store their own "group" definitions.
Fix saed/vtk is designed to work only with "compute_saed"_compute_saed.txt
values.
compute 3 top saed 0.0251 Al O
fix saed/vtk 1 1 1 c_3 file Al2O3_001.saed
:line
The {Nevery}, {Nrepeat}, and {Nfreq} arguments specify on what
timesteps the input values will be used in order to contribute to the
average. The final averaged quantities are generated on timesteps
that are a multiple of {Nfreq}. The average is over {Nrepeat}
quantities, computed in the preceding portion of the simulation every
{Nevery} timesteps. {Nfreq} must be a multiple of {Nevery} and
{Nevery} must be non-zero even if {Nrepeat} is 1. Also, the timesteps
contributing to the average value cannot overlap, i.e. Nfreq >
(Nrepeat-1)*Nevery is required.
For example, if Nevery=2, Nrepeat=6, and Nfreq=100, then values on
timesteps 90,92,94,96,98,100 will be used to compute the final average
on timestep 100. Similarly for timesteps 190,192,194,196,198,200 on
timestep 200, etc. If Nrepeat=1 and Nfreq = 100, then no time
averaging is done; values are simply generated on timesteps
100,200,etc.
:line
The output for fix ave/time/saed is a file writen with the 3rd generation
vtk image data formatting. The filename assigned by the {file} keyword is
appended with _N.vtk where N is an index (0,1,2...) to account for multiple
diffraction intensity outputs.
By default the header contains the following information (with example data):
# vtk DataFile Version 3.0 c_SAED
Image data set
ASCII
DATASET STRUCTURED_POINTS
DIMENSIONS 337 219 209
ASPECT_RATIO 0.00507953 0.00785161 0.00821458
ORIGIN -0.853361 -0.855826 -0.854316 \n POINT_DATA 15424827
SCALARS intensity float
LOOKUP_TABLE default
...data
:line
Additional optional keywords also affect the operation of this fix.
The {ave} keyword determines how the values produced every {Nfreq}
steps are averaged with values produced on previous steps that were
multiples of {Nfreq}, before they are accessed by another output
command or written to a file.
If the {ave} setting is {one}, then the values produced on timesteps
that are multiples of {Nfreq} are independent of each other; they are
output as-is without further averaging.
If the {ave} setting is {running}, then the values produced on
timesteps that are multiples of {Nfreq} are summed and averaged in a
cumulative sense before being output. Each output value is thus the
average of the value produced on that timestep with all preceding
values. This running average begins when the fix is defined; it can
only be restarted by deleting the fix via the "unfix"_unfix.html
command, or by re-defining the fix by re-specifying it.
If the {ave} setting is {window}, then the values produced on
timesteps that are multiples of {Nfreq} are summed and averaged within
a moving "window" of time, so that the last M values are used to
produce the output. E.g. if M = 3 and Nfreq = 1000, then the output
on step 10000 will be the average of the individual values on steps
8000,9000,10000. Outputs on early steps will average over less than M
values if they are not available.
The {start} keyword specifies what timestep averaging will begin on.
The default is step 0. Often input values can be 0.0 at time 0, so
setting {start} to a larger value can avoid including a 0.0 in a
running or windowed average.
The {file} keyword allows a filename to be specified. Every {Nfreq}
steps, the vector of saed intensity data is written to a new file using
the 3rd generation vtk format. The base of each file is assigned by
the {file} keyword and this string is appended with _N.vtk where N is
an index (0,1,2...) to account for situations with multiple diffraction
intensity outputs.
The {overwrite} keyword will continuously overwrite the output file
with the latest output, so that it only contains one timestep worth of
output. This option can only be used with the {ave running} setting.
[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 parameter of this fix can be used with the {start/stop} keywords of
the "run"_run.html command. This fix is not invoked during "energy
minimization"_minimize.html.
[Restrictions:]
The attributes for fix_saed_vtk must match the values assigned in the
associated "compute_saed"_compute_saed.txt command.
[Related commands:]
"compute_saed"_compute_saed.html
[Default:]
The option defaults are ave = one, start = 0, no file output.
:line
:link(Coleman)
[(Coleman)] Coleman, Spearot, Capolungo, MSMSE, 21, 055020
(2013).

View File

@ -211,8 +211,8 @@ void DumpAtomMPIIO::init_style()
strcat(format,"\n");
} else {
char *str;
if (image_flag == 0) str = (char *) "%d %d %g %g %g";
else str = (char *) "%d %d %g %g %g %d %d %d";
if (image_flag == 0) str = (char *) TAGINT_FORMAT " %d %g %g %g";
else str = (char *) TAGINT_FORMAT " %d %g %g %g %d %d %d";
int n = strlen(str) + 2;
format = new char[n];
strcpy(format,str);

View File

@ -60,7 +60,7 @@ FixWallSRD::FixWallSRD(LAMMPS *lmp, int narg, char **arg) :
else if (strcmp(arg[iarg],"zlo") == 0) newwall = ZLO;
else if (strcmp(arg[iarg],"zhi") == 0) newwall = ZHI;
for (int m = 0; m < nwall; m++)
for (int m = 0; (m < nwall) && (m < 6); m++)
if (newwall == wallwhich[m])
error->all(FLERR,"Wall defined twice in fix wall/srd command");

View File

@ -361,7 +361,7 @@ int MPI_Cart_rank(MPI_Comm comm, int *coords, int *rank)
int MPI_Type_contiguous(int count, MPI_Datatype oldtype,
MPI_Datatype *newtype)
{
if (nextra_datatype = MAXEXTRA_DATATYPE) return -1;
if (nextra_datatype == MAXEXTRA_DATATYPE) return -1;
ptr_datatype[nextra_datatype] = newtype;
index_datatype[nextra_datatype] = -(nextra_datatype + 1);
size_datatype[nextra_datatype] = count * stubtypesize(oldtype);

View File

@ -43,6 +43,10 @@ using namespace LAMMPS_NS;
using namespace FixConst;
using std::string;
#ifdef LAMMPS_BIGBIG
#error "The USER-ATC package is not compatible with -DLAMMPS_BIGBIG"
#endif
// main page of doxygen documentation
/*! \mainpage AtC : Atom-to-Continuum methods
fix commands:

View File

@ -88,12 +88,8 @@ void FixNVEAwpmd::initial_integrate(int vflag)
double *erforce = atom->erforce;
double *vforce=atom->vforce;
double *ervelforce=atom->ervelforce;
double *cs=atom->cs;
double *csforce=atom->csforce;
double *mass = atom->mass;
int *spin = atom->spin;
int *type = atom->type;
int *mask = atom->mask;
int nlocal = atom->nlocal;

View File

@ -74,8 +74,8 @@ PairAWPMDCut::~PairAWPMDCut()
struct cmp_x{
double tol;
double **xx;
double tol;
cmp_x(double **xx_=NULL, double tol_=1e-12):xx(xx_),tol(tol_){}
bool operator()(const pair<int,int> &left, const pair<int,int> &right) const {
if(left.first==right.first){
@ -116,8 +116,6 @@ void PairAWPMDCut::compute(int eflag, int vflag)
double **x = atom->x;
double **f = atom->f;
double *q = atom->q;
double *erforce = atom->erforce;
double *eradius = atom->eradius;
int *spin = atom->spin;
int *type = atom->type;
int *etag = atom->etag;
@ -128,7 +126,6 @@ void PairAWPMDCut::compute(int eflag, int vflag)
int ntot=nlocal+nghost;
int newton_pair = force->newton_pair;
double qqrd2e = force->qqrd2e;
int inum = list->inum;
int *ilist = list->ilist;

View File

@ -29,7 +29,7 @@ inline std::ostream & operator<< (std::ostream &out, const commdata &cd)
out << " (" << cd.tag << "/" << cd.type << ": "
<< cd.x << ", " << cd.y << ", " << cd.z << ") ";
return out;
};
}
/// \brief Communication between colvars and LAMMPS
/// (implementation of \link colvarproxy \endlink)

View File

@ -557,7 +557,7 @@ void PairTersoffTable::deallocateGrids()
void PairTersoffTable::allocateGrids(void)
{
int i, j, l;
int i, j, k, l;
int numGridPointsExponential, numGridPointsGtetaFunction, numGridPointsOneCutoffFunction;
int numGridPointsNotOneCutoffFunction, numGridPointsCutoffFunction, numGridPointsBetaZetaPower;
@ -634,9 +634,9 @@ void PairTersoffTable::allocateGrids(void)
zeta_max = MAX(zeta_max,numGridPointsBetaZetaPower);
for (j=0; j<nelements; j++) {
for (j=0; j<nelements; j++) {
for (k=0; k<nelements; k++) {
int ijparam = elem2param[i][j][j];
int ijparam = elem2param[i][j][k];
double cutoffR = params[ijparam].cutoffR;
double cutoffS = params[ijparam].cutoffS;

View File

@ -262,7 +262,7 @@ void ComputeCNAAtom::compute_peratom()
firstflag = 1;
ncommon = 0;
for (inear = 0; inear < nnearest[i]; inear++)
for (jnear = 0; jnear < n; jnear++)
for (jnear = 0; (jnear < n) && (n < MAXNEAR); jnear++)
if (nearest[i][inear] == onenearest[jnear]) {
if (ncommon < MAXCOMMON) common[ncommon++] = nearest[i][inear];
else if (firstflag) {