50 lines
2.2 KiB
Plaintext
50 lines
2.2 KiB
Plaintext
This program simulates the action of atoms of a single element (typically of
|
|
an inert gas) under the influence of a pairwise Lennard-Jones potential of
|
|
the form
|
|
|
|
U = 4 epsilon ((sigma / r)^12 - (sigma / r)^6)
|
|
|
|
between all atoms, where r is the distance between any two atoms. At each
|
|
time step, for each point, the velocity of each atom is updated by computing
|
|
the force from all other atoms in the simulation. The effects of collections
|
|
of distant atoms are approximated from the position fo their centroid. This
|
|
algorithm is unpublished.
|
|
|
|
Compile with fl-build main
|
|
|
|
Run with ./main to implement the simulation on a default set of test data, or
|
|
specify an input file using --data to give the program a set of
|
|
three-dimensional atom coordinates to begin from. All initial velocities are
|
|
zero.
|
|
|
|
Options:
|
|
|
|
double --dt specifies the size of the time step takne, in nanoseconds. Default
|
|
is 10e-3.
|
|
|
|
double --tf specifies the duration fo the simulation, in nanoseconds. Default
|
|
is 10e0.
|
|
|
|
double --param/eps specifies the value of epsilon, governing the overall
|
|
magnitude of the potential energy. It is in units of electronvolts. Default
|
|
value is .0104 eV, corresponding to the empirically determined value for Argon.
|
|
|
|
double --param/sig specifies the value of sigma in units of Angstroms,
|
|
dictating the length scale at which the potential will switch from attractive
|
|
to repulsive in nature. Default value is 2.74 A, corresponding to the
|
|
empirically determined value for Argon.
|
|
|
|
double --param/mass gives the mass of each atom, in atomic mass units. Its
|
|
default value, 40, corresponds to the most common isotope of Argon.
|
|
|
|
double --param/r_max gives the range, in Angstroms, at which the simulation
|
|
will begin approximating the effect of distant clusters of atoms, rather
|
|
than calculating their effects exactly.
|
|
|
|
boolean --check will run a naive (all-pairs) version of the simulation, and
|
|
compute the rms-deviation between the naive and tree-based implementations.
|
|
|
|
The positions of all atoms at the end of the simulation are recorded in the
|
|
file out_tree.dat. If the 'check' function is used, the positions of all
|
|
atoms according to the naive simulation are recorded in the file out_naive.dat.
|