next up previous contents
Next: Computing Atomic Transitions Up: ATSP2K manual Previous: Contents   Contents

Subsections


Compiling and testing

Downloading and compiling the source code

The source code can be downloaded from:
www.vuse.vanderbilt.edu/cff/mchf_collection/html_doc/Elements/CompMeth/atsp2K.tar.gz. The file atsp2Kp.tar.gz should be gun-zipped and untarred in a separate directory.
%gunzip atsp2Kp.tar.gz
%tar -xvf atsp2Kp.tar

The last command will create a directory atsp2K and four sub-directories, atsp2Kp/bin, atsp2Kp/lib, atsp2Kp/run and atsp2Kp/src.

Note: In order to use GNU programs on IBM/SP seaborg, such as gzip, gunzip the user may need to load the module gnu:

module load gnu

All make files require a number of global environmental variables, FFLAGS, FC, MALLOC, LDFLAGS, ATSP, lapack, blas, which need to be initialized prior to compilation. The following list shows each variable and its meaning.

  1. FC is initialized to a FORTRAN 90 compiler.
  2. FC_MPI is initialized to a FORTRAN 90 MPI compiler. The following values should be used: Linux:
     setenv FC_MPI mpif90
    
    seaborg (IBM/SP):
     setenv FC_MPI mpxlf
    

  3. FFLAGS is initialized to desired optimization or debugging level. Code can be optimized by using -O2, -O3 flags, and the user should consult the f90 man pages for description. As a general guideline, the flags below can be tried, they have been used in production code:
    1. OSF1, DEC
       setenv FFLAGS -O3 -r8 -static -align dcommon -non_shared -convert big_endian
      
    2. Sun
       setenv FFLAGS -O3
      
    3. Linux
       setenv FFLAGS -O2
      
    4. IBM/SP
       setenv FFLAGS -O5
      
    5. Cray T3e
       setenv FFLAGS -O3 -dp -e0
      
    The debugging flags are -g and they can be used instead of -On when debugging is needed.
  4. MALLOC is a global environmental variable initialized to a string which indicates to the make system the appropriate memory allocation routine. While most of the major operating systems adhere to the SUN operating system, and use malloc() for memory allocation, IBM AIX and Cray implementations differ. IBM AIX, also uses malloc(), however the arguments are passed by value (called with MALLOC(%VAL(NBYTES)))). Sun, Linux, Dec Alpha use a call to malloc() by reference. Calls to malloc() return a NULL pointer if the memory request is greater than memory available on the heap. On the other hand, Cray T3E uses hpalloc(), a "heap allocating routine", which takes four arguments, the third one of which is set to -2 if no memory is available. Memory allocation/deallocation is the only system dependent fragment of code in the atsp2K package. Therefore, the memory allocation/deallocation routines have been encoded as library routines specific to each target system. In order to resolve which routine to compile, make relies on the global variable $MALLOC. Thus, $MALLOC may be set equal to one of the following four values: dec, ibmSP, sun, t3e, make sellects the appropriate file depending on the value of $MALLOC. For example, the corresponding section of the Makefile for system dependent files is:
    DYNOBJ $=$ alloc_$(MALLOC).o dalloc_$(MALLOC).o realloc_$(MALLOC).o,
    if $MALLOC is set equal to sun, make will substitute $MALLOC with sun and the files which have the string sun will be compiled:
    alloc_sun.f, dalloc_sun.f, realloc_sun.f
    Since Linux adheres to the SUN system, the value of tt $(MALLOC) for the Linux OS is also sun. Note: The user needs to be aware that some GNU programs, for example gcc, utilize an $MALLOC variable during their compilation process. The user may have to consider either "unset MALLOC" and set this variable only on compiling the atsp2K package. Alternatively, a different name can be used, however this will require editing the makefiles.

  5. LDFLAGS contains the linker flags, normally no special flags are required for this version, except for Cray T3E. Cray T3E uses this flag when linking atsp programs with LAPACK routines. The linker substitutes all double precision Lapack routines used in the atsp2K package correspondingly with single precision routines. File atsp2K/lib/d2s.cld contains directives to the linker:
    equiv(DAXPY)=SAXPY
    equiv(DCOPY)=SCOPY
    equiv(DDOT)=SDOT
    equiv(DGEMV)=SGEMV
    equiv(DLAMCH)=SLAMCH
    equiv(DNRM2)=SNRM2
    equiv(DSCAL)=SSCAL
    equiv(DSPEVX)=SSPEVX
    equiv(DSWAP)=SSWAP
    equiv(IDAMAX)=ISAMAX
    

    Thus, for Cray T3E, the variable LDFLAGS is set to: "-Wl ../../...lib/d2s.cld".

  6. ATSP is set to the root atsp2K directory, this variable is not required for compilation. However, all test scripts expect to find the executables in the directory $ATSP/bin. Using a variable for the ATSP root directory allows different versions of the atsp package to be used without modifying any of the scripts. For this purpose, the variable $ATSP need to be reset to point to the desired version.

  7. lapack and blas are set to the location of the lapack and blas libraries, provided that they are preinstalled on the system. Additionally, atsp2K provides the required routines as a small subset of the standard LAPACK and BLAS libraries. The routines used in atsp2K are collected in libnet.a. The following values are recommended:
    1. For The Linux cluster the libraries are provided with the PGI compiler and the values are:
      setenv lapack "/usr/pgi/linux86/lib/liblapack.a"
      setenv blas "/usr/pgi/linux86/lib/libblas.a"
      
    2. IBM/SP seaborg combines both LAPACK and BLAS in a single library which is accessed by:
      setenv lapack "/usr/common/usg/LAPACK/3.0a/lapack_SP.a"
      

    3. If there are no lapack or blas libraries on the system, the user may link with the library provided by the atsp2K package, libnet.a, by setting lapack to:
      setenv lapack "${ATSP}/lin/libnet.a"
      

The PGI F90 compiler, pgf90 is available on node hf5. The code can be compiled using the -byteswapio. This option allows to convert from/to big-endian to/from little endian representation for reading writing binary files (little endian is used mostly on atsp2K for Sun and SGI platforms).


MPI installation on Linux

The following lines should be placed in the user configuration file, .cshrc, or alternatively set on the command prompt:
setenv FC "pgf90"
setenv FC_MPI "mpif90"
setenv FFLAGS "-O2 -byteswapio"
setenv MALLOC sun
setenv MPI_FFLAGS     # not used
setenv CC "g++"
setenv LDFLAGS        # not used
setenv ATSP ${HOME}/atsp2K
setenv lapack "/usr/pgi/linux86/lib/liblapack.a"
setenv blas "/usr/pgi/linux86/lib/libblas.a"

MPI installation on IBM/SP

The installation on IBM/SP seaborg requires the following lines to be placed in the file .cshrc.ext (or set on the command prompt):
source /usr/common/usg/Modules/3.1.1/init/csh
module load gnu KCC 
setenv FC "xlf"
setenv FC_MPI "mpxlf"
setenv FFLAGS "-O5 -qalign=4k "
setenv MALLOC ibmSP
setenv MPI_FFLAGS     # not used
setenv LDFLAGS        # not used
setenv CC KCC
setenv CCFLAGS "-O3"
setenv lapack "/usr/common/usg/LAPACK/3.0a/lapack_SP.a"
setenv blas           # not used
setenv ATSP ${HOME}/atsp2K
#setenv XLFRTEOPTS "buffering=disable_all"
Note: All user modifications of the .cshrc file should be placed in a .cshrc.ext file instead of making direct changes to .cshrc.

After proper initialization, the user can cd to atsp2Kp/src and type "make". make supports two targets; the default is install, it compiles, links and installs the atsp2K package. make will recurse in libraries, applications and utilities and it will create executables which are located in atsp2Kp/bin. The second target, make clean can be used to recursively erase all .o files. Upon successful compilation the directiory will contain the following executables:

-rw-------    1 georgio  mp52          504 Aug 30 01:05 Makefile
-rwx------    1 georgio  mp52       737871 Aug 30 01:36 biotr
-rwx------    1 georgio  mp52      1227799 Aug 30 01:17 bp_ang
-rwx------    1 georgio  mp52       716050 Aug 30 07:40 bp_ang_mpi
-rwx------    1 georgio  mp52       527610 Aug 30 01:13 bp_eiv
-rwx------    1 georgio  mp52       472077 Aug  2 08:59 bp_eiv_mpi
-rwx------    1 georgio  mp52       172955 Aug 30 01:17 bp_mat
-rwx------    1 georgio  mp52       181151 Aug 30 01:43 bp_mat_mpi
-rwx------    1 georgio  mp52      1618518 Aug 30 01:23 bpci
-rwx------    1 georgio  mp52      1198774 Aug 30 03:02 breit_mpi
-rwx------    1 georgio  mp52        27603 Aug 30 01:48 comp
-rwx------    1 georgio  mp52        35020 Aug 30 01:48 condens
-rwx------    1 georgio  mp52       100463 Aug 30 01:49 gencl
-rwx------    1 georgio  mp52       289489 Aug 30 01:48 hf
-rwx------    1 georgio  mp52       600635 Aug 30 01:24 hfs
-rwx------    1 georgio  mp52       675510 Aug 30 01:26 iso
-rwx------    1 georgio  mp52        26098 Aug 30 01:48 levels
-rwx------    1 georgio  mp52        19693 Aug 30 01:48 lines
-rwx------    1 georgio  mp52       240704 Aug 30 01:48 lsgen
-rwx------    1 georgio  mp52       354333 Aug 30 01:48 lsgenf
-rwx------    1 georgio  mp52       685741 Aug 30 01:28 lsreduce
-rwx------    1 georgio  mp52       451418 Aug  2 16:20 mchf
-rwx------    1 georgio  mp52       438366 Aug  1 13:32 mchf_mpi
-rwx------    1 georgio  mp52       673763 Aug 30 01:32 nonh
-rwx------    1 georgio  mp52       691936 Aug 30 01:47 nonh_mpi
-rwx------    1 georgio  mp52        27172 Aug 30 01:48 plotw
-rwx------    1 georgio  mp52         8818 Aug 30 01:48 printw
-rwx------    1 georgio  mp52         9463 Aug 30 01:48 relabel
-rwx------    1 georgio  mp52          437 Aug 30 01:05 sh_Repl
-rwx------    1 georgio  mp52          625 Aug 30 01:05 sh_cat
-rwx------    1 georgio  mp52          831 Aug 30 01:05 sh_format
-rwx------    1 georgio  mp52          858 Aug 30 01:05 sh_unformat
-rwx------    1 georgio  mp52        85700 Aug 30 01:49 tables
-rwx------    1 georgio  mp52       550267 Aug 30 01:33 trans
-rwx------    1 georgio  mp52         9459 Aug 30 01:49 w_format
-rwx------    1 georgio  mp52         9873 Aug 30 01:49 w_unformat

Testing the installation

After succesfull installation, the user may test the installation by running a small test case. The example shows how to compute a portion of the N-like electronic sequence. The case can be started by cd atsp2K/run/N_like/ and executing the main script ./sh_ALL from the command prompt. The script recourses in each sub-directory E1, O1, LS, LSJ and performs steps of computing the N-like electronic sequence (Z=8,9). This calculation will test under work load some major features for the most applications. The results from the tests can be compared with previously computed data supplied in the same directories and this can serve for verifying the correct installation, for detecting errors, and for testing the accurateness of the program. In general, atsp2K performs calculations with the following sequence:

  1. nonh and mchf compute wave functions and LS eigenvectors and save the data in *.w and *.l files correspondingly
  2. bp_ang, bp_mat and bp_eiv compute requested LSJ eigenvectors saving them in *.j files
  3. biotr and trans compute the LS and LSJ transitions and save the transitions as .ls and .lsj files.

The main scripts implements that sequence calling other scripts:

.sh_ALL
E1/sh_hf      # Hartree - Fock program for initial estimates E1
E1/sh_mchf_E1 # mchf method computing the wave functions of group E1
O1/sh_hf      # Hartree - Fock program for initial estimates O1
O1/sh_mchf_O1 # mchf method computing the wave functions of group O1
LS/sh_LS_D    # computing the LS transitions: Doublets
LS/sh_LS_Q    # computing LS Quartet transitions
LSJ/sh_bp     # Breit-Pauli calculations
LSJ/sh_biotr  # LSJ transition calculation
LSJ/sh_for    # forbidden transitions
LSJ/sh_tables # program for tabulating energies, lifetimes, lines

The calculation starts with sh_mchf_E1 and sh_mchf_O1 which compute the corresponding wave functions for the initial and final states E1 and O1. In addition, to the wave functions, (saved in *.w files), the eigenvectors are computed and saved in *.l files. Then, sh_LS_D and sh_LS_Q which are located in the directory LS compute the LS transitions using the *.w and *.l files from the previous step. The next step is to compute the LSJ energies, eigenvectors (saved as *.j files) and transitions (saved as *.lsj files). This step includes the forbidden LSJ transitions. The scripts can be used interactively, they are a learning tool for a user not familiar with the specifics of the input expected by the program. The entire set of tests takes a few hours to complete on i686.

The results can be compared with previously computed data, which reside in the same directories using the same files but with a "_" appended as a prefix to the file name:

_N8-lev.dat
_N8-lin.dat
_N9-lev.dat
_N9-lin.dat

Serial

Wave function files and LS Eigenvectors

The script descends in E1 and O1 and computes the wave function of the initial and final states. Upon successful completion of the script the wave functions are saved in *.w files. For each n, E1 and O1 will contain the following *.w files:
ls -l E1/*.w O1/*.w
(georgio@hf7)143% ls -l E1/*.w O1/*.w
-rw-r--r--    1 georgio  users        3593 Aug 18 23:17 E1/E1.8_2.w
-rw-r--r--    1 georgio  georgio     11211 Aug 18 23:17 E1/E1.8_3.w
-rw-r--r--    1 georgio  georgio     12358 Aug 18 23:23 E1/E1.8_4.w
-rw-r--r--    1 georgio  users        3545 Aug 18 23:17 E1/E1.9_2.w
-rw-r--r--    1 georgio  georgio     10843 Aug 18 23:18 E1/E1.9_3.w
-rw-r--r--    1 georgio  georgio     11870 Aug 18 23:34 E1/E1.9_4.w
-rw-r--r--    1 georgio  georgio      3585 Aug 18 23:55 O1/O1.8_2.w
-rw-r--r--    1 georgio  georgio      8301 Aug 18 23:55 O1/O1.8_3.w
-rw-r--r--    1 georgio  georgio     11838 Aug 19 00:10 O1/O1.8_4.w
-rw-r--r--    1 georgio  georgio      3537 Aug 18 23:55 O1/O1.9_2.w
-rw-r--r--    1 georgio  georgio      8205 Aug 18 23:55 O1/O1.9_3.w
-rw-r--r--    1 georgio  georgio     11686 Aug 19 00:27 O1/O1.9_4.w
The LS eigenvectors for each term are saved in a separate files and the following *.l files will be created after the mchf calculation is completed:
ls -l E1/*.l O1/*.l
(georgio@hf7)144% ls -l E1/*.l O1/*.l
-rw-r--r--    1 georgio  georgio       378 Aug 18 23:17 E1/2D1.8_3.l
-rw-r--r--    1 georgio  georgio     12000 Aug 18 23:23 E1/2D1.8_4.l
-rw-r--r--    1 georgio  georgio       378 Aug 18 23:18 E1/2D1.9_3.l
-rw-r--r--    1 georgio  georgio     12000 Aug 18 23:34 E1/2D1.9_4.l
-rw-r--r--    1 georgio  georgio       713 Aug 18 23:17 E1/2P1.8_3.l
-rw-r--r--    1 georgio  georgio     20947 Aug 18 23:23 E1/2P1.8_4.l
-rw-r--r--    1 georgio  georgio       713 Aug 18 23:18 E1/2P1.9_3.l
-rw-r--r--    1 georgio  georgio     20947 Aug 18 23:34 E1/2P1.9_4.l
-rw-r--r--    1 georgio  georgio       267 Aug 18 23:17 E1/2S1.8_3.l
-rw-r--r--    1 georgio  georgio      4312 Aug 18 23:23 E1/2S1.8_4.l
-rw-r--r--    1 georgio  georgio       267 Aug 18 23:18 E1/2S1.9_3.l
-rw-r--r--    1 georgio  georgio      4312 Aug 18 23:34 E1/2S1.9_4.l
-rw-r--r--    1 georgio  georgio       289 Aug 18 23:17 E1/4P1.8_3.l
-rw-r--r--    1 georgio  georgio      7566 Aug 18 23:23 E1/4P1.8_4.l
-rw-r--r--    1 georgio  georgio       289 Aug 18 23:18 E1/4P1.9_3.l
-rw-r--r--    1 georgio  georgio      7566 Aug 18 23:34 E1/4P1.9_4.l
-rw-r--r--    1 georgio  georgio       326 Aug 18 23:55 O1/2Do1.8_3.l
-rw-r--r--    1 georgio  georgio     10042 Aug 19 00:10 O1/2Do1.8_4.l
-rw-r--r--    1 georgio  georgio       326 Aug 18 23:55 O1/2Do1.9_3.l
-rw-r--r--    1 georgio  georgio     10042 Aug 19 00:27 O1/2Do1.9_4.l
-rw-r--r--    1 georgio  georgio       370 Aug 18 23:55 O1/2Po1.8_3.l
-rw-r--r--    1 georgio  georgio      9864 Aug 19 00:10 O1/2Po1.8_4.l
-rw-r--r--    1 georgio  georgio       370 Aug 18 23:55 O1/2Po1.9_3.l
-rw-r--r--    1 georgio  georgio      9864 Aug 19 00:27 O1/2Po1.9_4.l
-rw-r--r--    1 georgio  georgio       237 Aug 18 23:55 O1/4So1.8_3.l
-rw-r--r--    1 georgio  georgio      2855 Aug 19 00:10 O1/4So1.8_4.l
-rw-r--r--    1 georgio  georgio       237 Aug 18 23:55 O1/4So1.9_3.l
-rw-r--r--    1 georgio  georgio      2855 Aug 19 00:27 O1/4So1.9_4.l

LS transitions

All LS transitions are computed from complete sets of *.c *.w and *.l files for both: the initial and final state. Each LS transition is saved in a separate *.ls file in the directory named LS. The following table shows the LS convergence with respect to n:
Z=8
--------------------------------------------------------------------------------
 Z  n       EL            EU        SL(v)     SL(V)     gf(L)    gf(V)   Error
--------------------------------------------------------------------------------

2s(2).2p(3)2D3_2D             2s.2p(4)1D2_2D                
 8 4 -74.36936886 -73.73180871 3.916e+00 3.929e+00 1.664e+00 1.670e+00 0.003

2s(2).2p(3)2D3_2D             2s(2).2p(2)3P2_3P.3s_2P       
 8 4 -74.36936886 -73.62656680 2.296e+00 2.460e+00 1.137e+00 1.218e+00 0.067

2s(2).2p(3)2P1_2P             2s.2p(4)1D2_2D                
 8 4 -74.30709760 -73.73180871 5.514e-01 6.070e-01 2.114e-01 2.328e-01 0.092

2s(2).2p(3)2P1_2P             2s.2p(4)1S0_2S                
 8 4 -74.30709760 -73.59232421 1.435e+00 1.390e+00 6.839e-01 6.624e-01 0.031

2s(2).2p(3)2P1_2P             2s(2).2p(2)3P2_3P.3s_2P       
 8 4 -74.30709760 -73.62656680 4.413e-01 5.628e-01 2.002e-01 2.553e-01 0.216
--------------------------------------------------------------------------------
5 LS transitions.
--------------------------------------------------------------------------------

Z=9
--------------------------------------------------------------------------------
 Z  n       EL            EU        SL(v)     SL(V)     gf(L)    gf(V)   Error
--------------------------------------------------------------------------------

2s(2).2p(3)2D3_2D             2s.2p(4)1D2_2D                
 9 4 -97.57488622 -96.77120502 2.842e+00 2.856e+00 1.523e+00 1.530e+00 0.005

2s(2).2p(3)2D3_2D             2s.2p(4)3P2_2P                
 9 4 -97.57488622 -96.50868555 3.469e+00 3.519e+00 2.466e+00 2.501e+00 0.014

2s(2).2p(3)2P1_2P             2s.2p(4)1D2_2D                
 9 4 -97.49544906 -96.77120502 4.893e-01 5.212e-01 2.363e-01 2.517e-01 0.061

2s(2).2p(3)2P1_2P             2s.2p(4)1S0_2S                
 9 4 -97.49544906 -96.59546337 9.783e-01 9.638e-01 5.869e-01 5.783e-01 0.015

2s(2).2p(3)2P1_2P             2s.2p(4)3P2_2P                
 9 4 -97.49544906 -96.50868555 8.834e-01 9.426e-01 5.811e-01 6.201e-01 0.063
--------------------------------------------------------------------------------
5 LS transitions.
--------------------------------------------------------------------------------

The LS convergence may considerably improve upon increasing n (provided that the computational model is accurate). A complete set of LS results which include n=4,5,6,7 can be found at: www.vuse.vanderbilt.edu/cff/mchf_collection

LSJ Energies

The LSJ Eigenvectors are computed using a set of 3 programs. bp_ang computes the non-relativistic angular data which is invariant with Z. Next, for each Z bp_mat computes the interaction matrix and bp_eiv computes the eigenvector.

LSJ Transitions

The LSJ transitions require a complete set of *.c *.w and *.j files for both: the initial and final state. Each transition is saved in a separate *.ls file in the directory LSJ.
-rw-r--r--    1 georgio  georgio     11738 Aug 19 19:15 LSJ/E1.O1.8.lsj
-rw-r--r--    1 georgio  georgio     11738 Aug 19 19:15 LSJ/E1.O1.9.lsj

Forbidden Transitions

Either of biotr or trans may be used to compute the forbidden transition. biotr uses a newer method for storing the angular data and executes faster. After completion biotr will leave the following *.lsj files in the directory LSJ.
-rw-r--r--    1 georgio  users        9407 Sep 25 00:01 F_E2_E1.E1.8.lsj
-rw-r--r--    1 georgio  users       16733 Sep 25 00:01 F_E2_E1.E1.9.lsj
-rw-r--r--    1 georgio  users        6743 Sep 25 00:02 F_E2_O1.O1.8.lsj
-rw-r--r--    1 georgio  users        6743 Sep 25 00:02 F_E2_O1.O1.9.lsj
-rw-r--r--    1 georgio  users        7409 Sep 25 00:03 F_M1_E1.E1.8.lsj
-rw-r--r--    1 georgio  users       14735 Sep 25 00:03 F_M1_E1.E1.9.lsj
-rw-r--r--    1 georgio  users        6077 Sep 25 00:05 F_M1_O1.O1.8.lsj
-rw-r--r--    1 georgio  users        6077 Sep 25 00:05 F_M1_O1.O1.9.lsj
-rw-r--r--    1 georgio  users        9407 Sep 25 00:08 F_M2_O1.E1.8.lsj
-rw-r--r--    1 georgio  users       12404 Sep 25 00:09 F_M2_O1.E1.9.lsj

Finally, sh_tables tabulates the computed data in several files: Energy data and lifetimes are stored in *-lev.dat and the transition data, which is tabulated from the *.j and *.lsj is stored in *-lin.dat. The table below shows the excitation energies and the lifetimes after the last script sh_tables.

Z = 8  Energy levels and lifetimes for O II : N-like  (7 electrons).
  Rydberg constant is = 109733.5522
--------------------------------------------------------------------------------
Configuration                 Term J   Energy Total  Levels Splitting  Lifetimes
                                          (a.u.)      cm^-1   cm^-1        s    
--------------------------------------------------------------------------------

2s(2).2p(3)              4S  3/2  -74.54466851   
2s(2).2p(3)              2D  5/2  -74.41892491    27596.58          1.0823E+04 
                             3/2  -74.41882951    27617.52   20.94  2.9088E+03 
2s(2).2p(3)              2P  3/2  -74.35654274    41287.42          2.2079E+00 
                             1/2  -74.35652224    41291.92    4.50  2.8168E+00 
2s.2p(4)3P2              4P  5/2  -73.99552981   120517.88          1.1329E-09 
                             3/2  -73.99479693   120678.72  160.84  1.1278E-09 
                             1/2  -73.99442941   120759.38  241.50  1.1253E-09 
2s.2p(4)1D2              2D  5/2  -73.77952143   167924.61          4.1398E-10 
                             3/2  -73.77948918   167931.69    7.08  4.1311E-10 
2s.2p(4)1S0              2S  1/2  -73.64006121   198531.54          1.7691E-10 

--------------------------------------------------------------------------------

The result are at n = 4 and they are less accurate compared to calculation using the same computational model but considerably larger expansions of the configuration lists n = 7  [*] and  [*].

Z = 8  Energy levels and lifetimes for O II : N-like  (7 electrons).
  Rydberg constant is = 109733.5522
--------------------------------------------------------------------------------
Configuration                 Term J   Energy Total  Levels Splitting  Lifetimes
                                          (a.u.)      cm^-1   cm^-1        s    
--------------------------------------------------------------------------------

2s(2).2p(3)4S3              4S   3/2 -74.551394060                     

2s(2).2p(3)2D3              2D   5/2 -74.428265260  27022.72          1.3391e+05
                                 3/2 -74.428175520  27042.42    19.69 6.9843e+03

2s(2).2p(3)2P1              2P   3/2 -74.366517290  40574.37          1.2375e+01
                                 1/2 -74.366505540  40576.95     2.58 3.0891e+01

2s.2p(4)3P2                 4P   5/2 -74.004265810  120076.7          1.1684e-09
                                 3/2 -74.003535020  120237.0   160.38 1.1631e-09
                                 1/2 -74.003168170  120317.5   240.90 1.1604e-09

2s.2p(4)1D2                 2D   5/2 -73.792071530  166646.3          4.4290e-10
                                 3/2 -73.792039970  166653.2     6.93 4.4192e-10

2s.2p(4)1S0                 2S   1/2 -73.655737500  196567.2          1.8842e-10

--------------------------------------------------------------------------------

For Z = 9 the calculated energies at n=4 are:

  Energy levels and lifetimes for  N-like  F (Z  =  9). 
  Rydberg constant is  109734.14635
--------------------------------------------------------------------------------
Configuration             Term J    Energy Total   Levels  Splitting  Lifetimes
                                     (a.u.)       (cm^-1)  (cm^-1)      (s) 
--------------------------------------------------------------------------------

2s(2).2p(3)              4S  3/2  -97.81761021   
2s(2).2p(3)              2D  5/2  -97.65839985    34941.63          2.7467E+03 
                             3/2  -97.65824209    34976.25   34.62  4.7914E+02 
2s(2).2p(3)              2P  3/2  -97.57872612    52427.48          7.6882E-01 
                             1/2  -97.57870049    52433.11    5.63  1.3035E+00 
2s.2p(4)3P2              4P  5/2  -97.12234620   152588.41          7.5663E-10 
                             3/2  -97.12082933   152921.31  332.91  7.5126E-10 
                             1/2  -97.12004810   153092.77  504.36  7.4851E-10 
2s.2p(4)1D2              2D  5/2  -96.85121653   212092.77          2.7818E-10 
                             3/2  -96.85114662   212108.11   15.34  2.7719E-10 
2s.2p(4)1S0              2S  1/2  -96.67541751   250675.08          1.2962E-10 
2s.2p(4)3P2              2P  3/2  -96.58900785   269639.26          5.4901E-11 
                             1/2  -96.58727430   270019.72  380.46  5.4858E-11 

--------------------------------------------------------------------------------

A comparison with accurately computed data (posted on the MCHF Web site), shows that at n=4, the results for Z=9 are slightly better than the same for Z = 8, which shows higher sensitivity of the lower atomic number to the computational model:

Z = 9  Energy levels and lifetimes for F III : N-like  (7 electrons).
  Rydberg constant is = 109734.1464
--------------------------------------------------------------------------------
Configuration                 Term J   Energy Total  Levels Splitting  Lifetimes
                                          (a.u.)      cm^-1   cm^-1        s    
--------------------------------------------------------------------------------

2s(2).2p(3)4S3              4S   3/2 -97.824624380                     

2s(2).2p(3)2D3              2D   5/2 -97.668142190  34342.88          2.4569e+04
                                 3/2 -97.667992890  34375.65    32.77 1.0642e+03

2s(2).2p(3)2P1              2P   3/2 -97.589097640  51690.65          2.2677e+00
                                 1/2 -97.589084120  51693.62     2.97 5.6544e+00

2s.2p(4)3P2                 4P   5/2 -97.130993260  152230.0          7.7098e-10
                                 3/2 -97.129480130  152562.1   332.08 7.6548e-10
                                 1/2 -97.128700850  152733.1   503.11 7.6264e-10

2s.2p(4)1D2                 2D   5/2 -96.862946820  211057.7          2.8708e-10
                                 3/2 -96.862883060  211071.7    13.99 2.8603e-10

2s.2p(4)1S0                 2S   1/2 -96.688982340  249237.4          1.3445e-10

2s.2p(4)3P2                 2P   3/2 -96.603193650  268065.3          5.6987e-11
                                 1/2 -96.601469960  268443.6   378.30 5.6929e-11
--------------------------------------------------------------------------------

The user can accomplish higher accuracy by performing extended runs which will include n=5,6,7. However, this would place considerable demands with respect to time and memory because of 5-fold increase of the number of configurations. (Configuration lists are included for up to n=7 and the original data shown in the second table is at n=7). It is appropriate to use the MPI version for n < 4, and scripts for extending this calculation up to n=7 are included.

MPI tests

In addition to scripts for serial tests, the corresponding tests are described for the parallel version of the programs. The scripts for parallel calculation have "mpi" in the scriptname, they test atsp2K on larger cases, n=4,5,6,7

E1/sh_mchf_E1_mpi_ibmSP # mchf in parallel on ibm/SP
E1/sh_mchf_E1_mpi_linux #mchf in parallel on Linux
O1/sh_mchf_O1_mpi_ibmSP  #  IBM/SP
O1/sh_mchf_O1_mpi_linux  #  Linux:
LSJ/sh_bp_mpi_ibmSP      # IBM/SP: BP calculation in parallel
LSJ/sh_bp_mpi_linux      # Linux: BP calculation in parallel

MPI tests are provided for nonh_mpi, mchf_mpi, bp_ang_mpi, bp_mat_mpi, and bp_eiv_mpi. The test repeat the serial calculation previously described and includes n=5,6,7.

Because of different system requirements, there is a significant difference between seaborg and linux in using the MPI programs. Computing in parallel also shows significant difference compared to the serial versions. Thus, a separate set of scripts is provided for computing on seaborg and the Linux cluster.

Linux cluster.

The linux cluster has 4 nodes: hf5, hf6, hf7, hf8. Each node has a user partition /home, on which the user keeps permanent files, and a temporary partition /tmp, which may be used for processing large temporary files. The users are expected to store data files in a /tmp/$USER directory. The files are created with a mode 744, which allows any user to erase any files upon need without being the owner or root. The MPI runs can be started from any directory, but it is preferable to have the starting directory in the home directory. The important files, which may be needed in further stages of the atsp calculation should reside in a permanent location. Files, containing only temporary data and related only to the current calculation, are stored on /tmp/$USER. An MPI run can be started on each node, however the scripts which are provided with the installation, require hf7 to be the starting (master) node and hf6 as a slave. Nodes hf5 and hf8 can be included after a proper modification of the process files. Other node can be used as a starting node, but this also require modification of the process files.

Directory E1 and O1 provide sh_mchf_E1_mpi_linux and sh_mchf_O1_mpi_linux which may used to compute the first even and odd groups (E1, O1). The MPI calculations on the linux cluster are started by:

cd atsp2K/run/N_like/
./sh_ALL_mpi_linux

IBM/SP:

seaborg is different in that it has very large scratch storage space located in: /scratch/scratchdirs. Each user is expected to create a $USER subdirectory in the temporary space. The temporary space allows for very fast disk access. All extensive I/O calculations are recommended to be processed there. The MPI programs create a subdirectory tmp_mpi in the starting directory and keep in this location all temporary files.

After compiling the sources the user can test the installation with the script ll_bp which is in directory atsp2K/run/N_like. The script can be started interactively :

% ./ll_bp
or, alternatively submitted to the batch processing system with:
% llsubmit ll_bp
subfilter: default repo mp52 will be charged
llsubmit: Processed command file through Submit Filter: "/usr/common/nsg/etc/subfilter".
llsubmit: The job "s03513.nersc.gov.531" has been submitted.
It is prfereable to use the batch system. Please note that the batch job is submitted with a "premium" priority and the job will run immediately on the next available nodes. This is only for testing purposes and "regular" priority should be used for mass production.
next up previous contents
Next: Computing Atomic Transitions Up: ATSP2K manual Previous: Contents   Contents
2001-10-11