next up previous contents
Next: Energy corrections Up: BP_EIV Previous: Introduction   Contents

Program Structure

The program starts with initializing basic constants in inita(), initr(). inp_case() prompts the user to supply the name of the case, type of calculation, relativistic or non-relativistic, and if the mass correction will be included. Then, the maximum and minimum eigenvalue to be computed need to be specified as a 2*J number, followed by a request for indices to be computed within each J. This data must be entered using the following format.

>Enter ATOM, relativistic (Y/N) with mass correction (Y/N)
A,y,y
>Gradient or Slater form? (G/S):
g
> Enter Maximum and minimum values of 2*J
4,2
>Enter eigenvalues: one line per term, eigenvalues separated by commas
2*J =  4
2,3,4
2*J =  2
1,2
.......

Figure 9.31: bp_eiv program structure.
\begin{figure}\begin{center}
\centerline{\psfig{figure=tex/fig/bp_eiv_main.epsi}}\end{center}\end{figure}

To compute the number of matrix elements, and respectively to allocate memory, alcmat() and alctab() rely on a call to jmem(), which in effect reads hnr.lst, hzeta.lst, hspin.lst and computes the number of nonzero elements in the interaction matrix. If the requested memory is larger than the what is available, the program continues the calculation, by allocating memory for the largest column. In this case the dvdson() performs matrix-vector multiplication (in dssbmv), keeping in memory only a single column.

The matrix elements are assembled in (hmx_lsj()), then the interaction matrix is diagonalized (lsjmat()). Next, dvdson() finds the requested eigenvalues. Finally, brci_zeeman(), computes the Zeman factor. The requested eigenvectors are saved in a <name>.j file.

Figure 9.32: Subroutine lsjmat().
\begin{figure}\begin{center}
\centerline{\psfig{figure=tex/fig/bp_eiv_lsjmat.epsi}}\end{center}\end{figure}


next up previous contents
Next: Energy corrections Up: BP_EIV Previous: Introduction   Contents
2001-10-11