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()