next up previous contents index
Next: Subroutine parse_line_io_es Up: Module atoms_module Previous: Subroutine get_lattice_params   Contents   Index

Subroutine directionality


\begin{boxedminipage}{\textwidth}
\begin{verbatim}call directionality(this,origin,list,evalues, &
evectors[,method])\end{verbatim}
\end{boxedminipage}

Given an origin atom and a list of other atoms, give information as to whether the other atoms are distributed roughly linearly, planar or spherically around the origin atom.

The most notable use is to check that the splines in adjustable potential will be able to reproduce a randomly oriented force difference well.

The information returned is the set of eigenvectors and associated eigenvalues of the directionality ellipsoid. One large e-value suggests roughly linear clustering, two similar and one small e-values suggest a planar distribution, while three similar e-values suggests almost spherical distribution (when copies of the atoms reflected through the origin atom are also considered).

To acheive a more spherical distribution, atoms along the e-vector(s) with the smallest e-value(s) should be added to the index list (See CosAngle_To_Line below).

The matrix which is diagonalised is an average of the outer products of the unit vectors from the origin atom to the other atoms.

An outer product has 1 eigenvector which is the vector it was constructed from with eigenvalue 1 and the other eigenvectors have eigenvalue 0.

The eigenvalues of the averaged matrix sum to 1.

this -- type(Atoms), intent(in)

The input atoms structure

origin -- integer, intent(in)

The origin atom

list -- type(table), intent(in)

Indices and shifts of the other atoms relative to origin

evalues -- real(dp), dimension(3), intent(out)

Eigenvalues of the directionality matrix

evectors -- real(dp), dimension(3,3), intent(out)

Eigenvectors of the directionality matrix

method -- integer, optional, intent(in)

METHOD = 1 Directionality ellipsoid method
METHOD = 2 Singular Value Decomposition method (default)

parse_line_io_es subroutine
next up previous contents index
Next: Subroutine parse_line_io_es Up: Module atoms_module Previous: Subroutine get_lattice_params   Contents   Index
gabor 2009-06-30