>From djh@ccl.net Thu Apr 13 17:17:27 1995
From: David Heisterberg
Date: Thu, 13 Apr 1995 17:17:25 -0400
Message-Id: <199504132117.RAA04145@xipe.ccl.net>
To: chemistry@ccl.net
Subject: fda: a C++ atomic code
FDA, a finite difference C++ atomic structure code is available from
the CCL ftp server in
pub/chemistry/software/SOURCES/Cpp/atomic-DF
FDA is an "object inclined" (it may be stretching it to call it
object oriented) program for density functional atomic structure
calculations. It bears a striking similarity to Herman and Skillman's
1963 code (and in its initial release doesn't push the level of
theory any farther).
However, FDA does have some nice features:
a simple input form, but one that allows for pretty complete
control of grid generation, convergence, functional calculation,
and orbital occupation;
a total energy and energy breakdown;
a simple dump file that can be used to extract additional
orbital-related quantities, or generate basis sets suitable
for Fenske-Hall or Ellis' DVXA;
a reasonably easy to follow source code that should build
without difficulty on most platforms.
--
Dave Heisterberg
The Ohio Supercomputer Center
Input for FDA version 0.10 (12-Apr-95)
by
David J. Heisterberg
Department of Chemistry
The Ohio State University
Line 1:
int np - number of grid points
double x0 - coordinate of first grid point
double xn - coordinate of last grid point
Line 2:
int niter - maximum number of iterations
double cnv - convergence criterion
double mix1 - initial density mixing
double mix2 - asymptotic density mixing
double alpha - X-alpha alpha parameter
double beta - Becke's beta parameter (not used but required)
Line 3:
double zn - nuclear charge
int no - number of orbitals
Line 4 (no times):
int n - principal quantum number
int l - angular quantum number
double alpha occ - alpha occupation
double beta occ - beta occupation
Notes:
If alpha is < 0, |alpha| is used, but no potential "tail" correction
is performed.
Beta is a place-holder for now. If gradient corrections are ever
implemented it should be set to 0.0042.
Alpha and beta occupations are checked but then added together as this
version isn't spin polarized.
General Description:
FDA is a knock-off of Herman and Skillman's 1963 code, sort of.
The Hamiltonian was supposed to be the same, yet fda gets
significantly different results, which, happily enough, are
much closer to those obtained with Froese Fischer's MCHF code.
FDA uses a different grid, with the spacing between grid points
growing by a constant factor.
FDA determines oribtals by finding eigenvectors of a tri-diagonal
operator matrix rather than using outward-inward integration.
Inverse iteration is used and sometimes eigenvectors will "collapse,"
especially for heavier atoms. Should that happen, turn down the
mixing factors and turn up the iterations.
FDA requires no initial guess as to potential or eigenvalues.
Rather, it starts from a bare nucleus guess.
FDA calculates a total energy as well as a virial ratio (that
still isn't where it ought to be).
Finally, FDA is written in C++, with the aim of making the overall
structure of the calculation clear.
Building and Running:
FDA compiles reasonably cleanly with g++ and CRI's CC. It should do
ok on most platforms, but you may need to change the .cxx extension
to .C (as on the Cray).
FDA will either read from stdin and write to stdout, or, if run as
fda name
will read from name.inp, write to name.out, and generate an ASCII
dump file, name.dmp. The contents of the dump file should be clear
from the source. The dump file will eventually find use in generating
basis sets for a molecular code. Eventually...
FDA is copyright 1995 by David J. Heisterberg. Permission is hereby
granted to freely use FDA and redistribute it so long as this copy-
rigth notice is maintained and you don't laugh at the author.
Part of the reason for doing FDA was as an exercise in learning C++,
but the intention is to turn it into a real, usable code someday, so
please direct comments and scathing criticisms to
djh@ccl.net or
heisterberg.1@osu.edu
|