git-svn-id: svn://svn.icms.temple.edu/lammps-ro/trunk@13616 f3b2605a-c512-4ea7-a41b-209d697bcdaa
This commit is contained in:
186
doc/compute_saed.html
Normal file
186
doc/compute_saed.html
Normal 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
173
doc/compute_saed.txt
Normal 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
210
doc/compute_xrd.html
Normal 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
196
doc/compute_xrd.txt
Normal 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).
|
||||
|
||||
|
||||
@ -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>
|
||||
|
||||
@ -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
191
doc/fix_saed_vtk.html
Normal 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
181
doc/fix_saed_vtk.txt
Normal 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).
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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");
|
||||
|
||||
|
||||
@ -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);
|
||||
|
||||
@ -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:
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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;
|
||||
|
||||
@ -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)
|
||||
|
||||
@ -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;
|
||||
|
||||
|
||||
@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user