Alessandro MIRONE
mirone@esrf.fr
Amarcord is a suite of programs to calculate absortpion spectra and
fluorescence in the framework of the Theo Thole model.
The physical approximation are the same as in the Theo Thole works.
On the other hand the numerical implementation has been done without
using group theory and the Hamiltonian is directly diagonalized
without preliminary decompositions.
It means that the resulting program is more expensive in CPU time,
on one hand, but it is on the other hand much easier to use.
The principle of Amarcord is explained on Alessandro Mirone,
Maurizio Sacchi, Susanna Gota : PRB , Vol 61, No 20, page
13540
blas-1.0.tar.gz
lapack-1.0.tar.gz
nMatrix-1.1.tar.gz
Sparsa-1.1.tar.gz
amarcordSparsa-1.1.tar.gz
What's that??
You can use the programs contained in the amarcord packages
as black boxes, but if you wonder what all those files are, I will explain
that for you personal information :
blas and lapack are the very famous linear algebra packages
from www.netlib.org. Your system
might already have them, in this case it is not necessary to download these
two packages.
nMatrix is a C++ packages that specifies a matrix class to be
used as a front-end to lapack. It is a package originally written
by Dave Weber, The
original package was called uMatrix. I did some modification because
uMatrix stored matrices line by line and I wanted to have them stored
columns by colum in order to be faster to manipulate eigenvector that are
given column by column. by certain routines... But do not worry : you do
not need to know all these details...
Sparsa is a c++ package that I have written to manipulate,
invert and diagonalise sparse matrice. It implements conjugate gradient
method for matrix inversion and the Lanczos method with thick
restart for the diagonalization. I followed the paper by
Kesheng Wu and Horst Simon
Amarcord finally, is the packages containing several programs
whose utilisation is explained in the section Examples.
How do I install all the packages??
You need a c++ and a fortran compiler.
dezip and detar the archives. Then for each packages in ( blas-1.0,
lapack-1.0, nMatrix-1.1, Sparsa-1.1, amarcordSparsa-1.1 ) cd to the directory
package and :
./configure
make
su to root
make install
This is the normal procedure to install everything in /usr/local
If you want to do a personal installation in your home directory, you can pass the right prefix to ./configure. For example supposing that you live in /home/alex like me , and using bash
export CPPFLAGS=-I/home/alex/include
export LDFLAGS =-L/home/alex/lib
mkdir /home/alex/lib /home/alex/include /home/alex/bin
Then for each package
cd to the package directory
./configure --prefix=/home/alex
make
make install
Then all the programs are available if /home/alex/bin is in the PATH and if you configure LD_LIBRARY_PATH
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/alex/lib
I provide you with two examples:
one for the calculation of absorption profiles AmarcordExample1.tar.gz
and another for fluorescence that will be available on your demand.
You can run the example following the INSTRUCTIONS
The form of the 5X5 matrix describing the interaction of the neighbooring
atoms on a d shell is well known in many cases like cubic symmetry.
However if you need this matrix for non usual geometries I provide
you with this utility to build up the cristalline potential matrix for
arbitrary geometry, as described in my paper.
To you use it you will have to change four lines in the code
(
yes, it is very primitive) where the neighbooring atoms position are given,
recompile following the usual .configure, make path
and finally run the program. You can read how to use the program in
this README