Parallel platforms
Cray T3E supercomputer running Unix
COMPS network of workstations running Unix
Sequential platforms
Cray J90 supercomputer running Unix
Sun workstations running Unix
PC Windows DOS system
Macintosh Power PC
Other platforms
On other platform, you may write your own userxxxx.cpp file.
Instructions for creating your own userxxxx.cpp file are provided
here.
Disk space requirement
The final binaries of the package require 3 to 10 megabytes of hard
disk space, depending on platform and compiling options.
Memory space requirement
The memory requirement depends on the cluster size, multiple scattering
order and Rehr-Albers approximation order. To perform an accurate
calculation (cluster size around 100, multiple scattering order
8, Rehr-Albers approximation order 4, pathcut 0.01), about 20
megabytes of memory space are needed.
Calculation time
The calculation time is very dependent on machine and problem size.
We offer free download of our MSCD package, containing the source code.
To unzip the downloaded package on a PC Windows system:
winzip
To unzip the downloaded package on a Unix system:
unzip
To unzip the downloaded package on a Macintosh OS system:
unzip
More information about unzip can be found elsewhere on the internet
To compile the source code on a PC under Windows DOS system:
make -f mscdpc.mak
To compile the source code on a Sun Workstation under Unix:
make -f mscdsun.mak
To compile the source code on a Cray J90 sequential
supercomputer under Unix:
make -f mscdj90.mak
To compile the source code on a Cray T3E parallel
supercomputer under Unix:
make -f mscdt3e.mak
To compile the source code on a COMPS network of workstations
under Unix in parallel mode:
make -f mscdcomp.mak
To compile the source code on another platform:
Typically, you need to create a project which includes program
names and their needed source files. Here is the list:
calchi
userinfo.cpp userutil.cpp cartesia.cpp polation.cpp
curvefit.cpp pdinten.cpp pdintena.cpp
calchi.cpp
calnox
userinfo.cpp userutil.cpp cartesia.cpp polation.cpp
curvefit.cpp pdinten.cpp pdintena.cpp
calnox.cpp
calnox
userinfo.cpp userutil.cpp cartesia.cpp polation.cpp
curvefit.cpp pdinten.cpp pdintena.cpp
calnox.cpp
caldif
userinfo.cpp userutil.cpp cartesia.cpp polation.cpp
curvefit.cpp pdinten.cpp pdintena.cpp
caldif.cpp
calfac
userinfo.cpp userutil.cpp polation.cpp phase.cpp
msfuncs.cpp rotamat.cpp fcomplex.cpp scatter.cpp
calfac.cpp
poconv
userinfo.cpp userutil.cpp potentia.cpp poconv.cpp
psconv
userinfo.cpp userutil.cpp fcomplex.cpp phase.cpp psconv.cpp
rmconv
userinfo.cpp userutil.cpp radmat.cpp rmconv.cpp
calmfp
userinfo.cpp userutil.cpp meanpath.cpp calmfp.cpp
calvib
userinfo.cpp userutil.cpp vibrate.cpp calvib.cpp
mscd
userinfo.cpp userutil.cpp cartesia.cpp polation.cpp
curvefit.cpp pdinten.cpp pdintena.cpp fcomplex.cpp
msfuncs.cpp pdchifit.cpp vibrate.cpp meanpath.cpp
phase.cpp radmat.cpp rotamat.cpp mscdrun.cpp
mscdruna.cpp mscdrunb.cpp mscdrunc.cpp mscdrund.cpp
mscdrune.cpp mscdjob.cpp mscdmain.cpp jobtime.cpp
userpc.cpp (for PC only)
usersun.cpp (for Sun workstation only)
usermac.cpp (for Macintosh only)
userj90.cpp (for Cray J90 only)
usert3e.cpp (for Cray T3E only)
usercomp.cpp (for COMPS network of workstations only)
For each platform, there is only one userxxxx.cpp file, which is platform dependent, e.g. userpc.cpp for a PC, usersun.cpp for a Sun Unix system, etc. If you have a platform that is not listed above, you may develop your own userxxxx.cpp file. You will need to implement the following 9 functions that are defined in the userutil.h header file:
27. int computer(char *name=NULL,int size=0) --- copy name of computer
into name with length limit of size, and return code of the
computer.
As minimum coding, you may copy this function from userpc.cpp
and replace the computer name "an IBM Personal Computer" with
your actual computer name.
28. long timeprocessor() --- return current CPU time in seconds
As minimum coding, you may make an empty code in this function
and return zero for CPU time.
29. int mpiinit(int *argc,char ***argv) --- initialization of
message passing interface for parallelization
As minimum coding, you may copy this function from userpc.cpp
without any change.
30. int mpigetmype() --- get id or rank of the current processor
element
As minimum coding, you may copy this function from userpc.cpp
without any change.
31. int mpigetnumpe() --- get total number of processor elements
As minimum coding, you may copy this function from userpc.cpp
without any change.
32. int mpisend(char *buffer,int bufsize,int destpe,int tag) --- send out a
memory buffer with size bufsize to the destination
processor destpe with message tag (tag)
As minimum coding, you may copy this function from userpc.cpp
without any change.
33. int mpireceive(char *buffer,int bufsize,int sourcepe,int tag)
--- receive from source processor element sourcepe a memory buffer with
size bufsize and put in buffer
As minimum coding, you may copy this function from userpc.cpp
without any change.
34. int mpiend() --- finalize the message passing interface
As minimum coding, you may copy this function from userpc.cpp
without any change.
35. int sendemail(char *mailpath,char *message,char *stamp,
char *fromaddress=NULL,char *toaddress=NULL,char *subject=NULL,
char *ccaddress=NULL,char *bccaddress=NULL,int stamp=1)
--- send email from fromaddress to toaddress, cc to ccaddress,
bcc to bccaddres, with subject, message and stamp if stamp != 0
As minimum coding, you may copy this function from userpc.cpp
without any change.
This program package was written by Yufeng Chen and Michel A. Van Hove at Lawrence Berkeley National Laboratory. We offer free download. You can freely copy, change and use it. However, the program package or its components may not be sold, leased, licensed or otherwise traded or commercialized in any way.
Please acknowledge use of this package, called
MSCD photoelectron diffraction program package, as: "Yufeng Chen and Michel A Van Hove,
private communication".
A useful reference is: Y. Chen, F.J. García
de Abajo, A. Chassé, R.X. Ynzunza, A.P. Kaduwela, M.A. Van Hove and C.S.
Fadley, Phys. Rev. B 58, 13121 (1998).
The authors do not guarantee that the calculation results obtained from this program package will be correct.
Return to Van Hove home page |
---|