20 #include "matrixlapack.h"    22 #include "wrapperMPI.h"    38   unsigned int j,k,nvec;
    40   double **tmpA, **tmpvec;
    44   d_malloc2(tmpA,ndim,ndim); 
    45   d_malloc2(tmpvec,ndim,ndim); 
    48 #pragma omp parallel for default(none) firstprivate(ndim) private(j,k) shared(tmpA)    49   for(k=0;k<=ndim-1;k++)
    50     for(j=0;j<=ndim-1;j++) tmpA[k][j]=0.0;
    51 #pragma omp parallel for default(none) firstprivate(ndim, nvec) private(j,k) shared(vec)    53     for(j=1;j<=ndim;j++) 
vec[k][j]=0.0;
    55 #pragma omp parallel for default(none) firstprivate(ndim, alpha, beta) private(j) shared(tmpA)    56   for(j=0;j<=ndim-2;j++){
    57     tmpA[j][j]=
alpha[j+1];
    58     tmpA[j][j+1]=
beta[j+1];
    59     tmpA[j+1][j]=
beta[j+1];
    61   tmpA[ndim-1][ndim-1]=
alpha[ndim];
    64   if(
X->Def.iCalcType==Lanczos && 
X->Def.iFlgCalcSpec == 0)
    65     fprintf(
stdoutMPI, 
"  Lanczos EigenValue in vec12 = %.10lf \n ",tmpr[0]);
    68     if (nvec < X->Def.LanczosTarget) nvec = 
X->Def.LanczosTarget;
    70 #pragma omp parallel for default(none) firstprivate(ndim, nvec) private(j,k) shared(tmpvec, vec, tmp_E, tmpr)    73       for (j = 1; j <= ndim; j++) 
vec[k][j] = tmpvec[k - 1][j - 1];
    77 #pragma omp parallel for default(none) firstprivate(ndim, nvec) private(j,k) shared(tmpvec, vec, tmp_E, tmpr)    80       for (j = 1; j <= ndim; j++) 
vec[k][j] = tmpvec[k - 1][j - 1];
 
int DSEVvector(int xNsize, double **A, double *r, double **vec)
obtain eigenvalues and eigenvectors of real symmetric A 
void vec12(double alpha[], double beta[], unsigned int ndim, double tmp_E[], struct BindStruct *X)
Diagonalize a tri-diagonal matrix and store eigenvectors into vec. 
FILE * stdoutMPI
File pointer to the standard output defined in InitializeMPI()