#include #include #include #include "stimsyr.h" #include "read2.h" #undef __FUNCT__ #define __FUNCT__ "main" int main(int argc,char **argv) { Mat A; /* problem matrix */ EPS eps; /* eigenproblem solver context */ EPSType type; PetscReal error,tol,re,im; PetscReal norm=0.0; PetscReal normfin=0.0; PetscScalar kr,ki,value[700]; Vec xr,xi; PetscInt i,Istart,Iend,col[700],maxit,its,nconv,countcol; PetscInt nev, ncv, mpd; PetscLogDouble t1,t2,tt1,tt2; //PetscBool FirstBlock=PETSC_FALSE,LastBlock=PETSC_FALSE; PetscErrorCode ierr; //PetscScalar eigr; //PetscScalar eigi; int mpiid; int natomax=700, iaa2, iaa; int ideter[natomax]; int ideter2[natomax]; char const* const fileName = argv[1]; FILE* file = fopen(fileName, "r"); Data getdata; PetscInt nlocal; Data_new(file, &getdata); nlocal = getdata.n/getdata.npar; //printf("n=%ld\t nnz=%ld\t npar=%ld\t ntrou=%ld\t isz=%ld\n",getdata.n,getdata.nnz,getdata.npar,getdata.ntrou,getdata.isz); PetscScalar valxr[nlocal]; PetscInt indxr[nlocal]; //Vec Vr,Vi; char filename[PETSC_MAX_PATH_LEN]="FIL666"; PetscViewer viewer; PetscBool ishermitian; PetscInt kk,ll,iii2; long int iii; long int ii; long int tcountcol2,tcol[700],tcountcol[getdata.nnz]; double val[700]; double xmat=0.0; PetscReal xymat=0.0; PetscReal xymatfin=0.0; PetscReal XS = 0.0; int kko,kok,kkio; SlepcInitialize(&argc,&argv,(char*)0,NULL); ierr = PetscPrintf(PETSC_COMM_WORLD,"\n1-D t-J Eigenproblem, n=%D\n\n",getdata.n);CHKERRQ(ierr); ierr = MatCreate(PETSC_COMM_WORLD,&A);CHKERRQ(ierr); ierr = MatCreateAIJ(PETSC_COMM_WORLD,PETSC_DECIDE,PETSC_DECIDE,getdata.n,getdata.n,getdata.nnz*getdata.npar,NULL,getdata.nnz*getdata.npar,NULL,&A);CHKERRQ(ierr); ierr = MatMPIAIJSetPreallocation(A,getdata.nnz*getdata.npar,NULL,getdata.nnz*getdata.npar,NULL);CHKERRQ(ierr); //ierr = MatSetFromOptions(A);CHKERRQ(ierr); //ierr = MatSetUp(A);CHKERRQ(ierr); MPI_Comm_rank(MPI_COMM_WORLD,&mpiid); ierr = MatGetOwnershipRange(A,&Istart,&Iend);CHKERRQ(ierr); ierr = PetscTime(&tt1);CHKERRQ(ierr); for (i=Istart; i0) { /* Display eigenvalues && relative errors */ ierr = PetscPrintf(PETSC_COMM_WORLD, " k ||Ax-kx||/||kx||\n" " ----------------- ------------------\n");CHKERRQ(ierr); for (i=0;i0) { PetscViewerASCIIOpen(PETSC_COMM_WORLD,filename,&viewer); PetscViewerSetFormat(viewer,PETSC_VIEWER_ASCII_MATLAB); PetscViewerSetFormat(viewer,PETSC_VIEWER_ASCII_SYMMODU); EPSIsHermitian(eps,&ishermitian); for (i=0;i0) { for(i=0;i