HYPRE_IJMatrixRead and HYPRE_IJVectorRead functionality now exposed to testing

This commit is contained in:
lambda 2001-06-25 20:39:35 +00:00
parent 82f0b581c5
commit 3d7d74ce28

View File

@ -42,6 +42,7 @@ c-----------------------------------------------------------------------
integer maxiter, num_iterations integer maxiter, num_iterations
integer generate_matrix, generate_rhs integer generate_matrix, generate_rhs
character matfile(32), vecfile(32) character matfile(32), vecfile(32)
character*31 matfile_str, vecfile_str
double precision tol, pc_tol, convtol double precision tol, pc_tol, convtol
parameter (pc_tol = 0.0) parameter (pc_tol = 0.0)
@ -151,8 +152,17 @@ c write(6,*) 'Generate matrix? !0 yes, 0 no (from file)'
read(5,*) generate_matrix read(5,*) generate_matrix
if (generate_matrix .eq. 0) then if (generate_matrix .eq. 0) then
c write(6,*) 'What file to use for matrix (<= 32 chars)?' c write(6,*) 'What file to use for matrix (<= 31 chars)?'
read(5,*) matfile read(5,*) matfile_str
i = 1
100 if (matfile_str(i:i) .ne. ' ') then
matfile(i) = matfile_str(i:i)
else
goto 200
endif
i = i + 1
goto 100
200 matfile(i) = char(0)
endif endif
c write(6,*) 'Generate right-hand side? !0 yes, 0 no (from file)' c write(6,*) 'Generate right-hand side? !0 yes, 0 no (from file)'
@ -160,8 +170,17 @@ c write(6,*) 'Generate right-hand side? !0 yes, 0 no (from file)'
if (generate_rhs .eq. 0) then if (generate_rhs .eq. 0) then
c write(6,*) c write(6,*)
c & 'What file to use for right-hand side (<= 32 chars)?' c & 'What file to use for right-hand side (<= 31 chars)?'
read(5,*) vecfile read(5,*) vecfile_str
i = 1
300 if (vecfile_str(i:i) .ne. ' ') then
vecfile(i) = vecfile_str(i:i)
else
goto 400
endif
i = i + 1
goto 300
400 vecfile(i) = char(0)
endif endif
c write(6,*) 'What solver_id?' c write(6,*) 'What solver_id?'
@ -256,7 +275,19 @@ c-----------------------------------------------------------------------
if (nz .gt. 1) values(1) = values(1) + 2d0*cz if (nz .gt. 1) values(1) = values(1) + 2d0*cz
c Generate a Dirichlet Laplacian c Generate a Dirichlet Laplacian
if (generate_matrix .gt. 0) then if (generate_matrix .eq. 0) then
call HYPRE_IJMatrixRead(matfile, MPI_COMM_WORLD,
& HYPRE_PARCSR, A, ierr)
call HYPRE_IJMatrixGetObject(A, A_storage, ierr)
call HYPRE_ParCSRMatrixGetLocalRange(A_storage,
& first_local_row, last_local_row,
& first_local_col, last_local_col, ierr)
else
c call HYPRE_ParCSRMatrixCreate(MPI_COMM_WORLD, gnrows, gncols, c call HYPRE_ParCSRMatrixCreate(MPI_COMM_WORLD, gnrows, gncols,
c & rstarts, cstarts, ncoloffdg, nonzsdg, nonzsoffdg, c & rstarts, cstarts, ncoloffdg, nonzsdg, nonzsoffdg,
c & A_storage, ierr) c & A_storage, ierr)
@ -279,11 +310,6 @@ c call HYPRE_ParCSRMatrixInitialize(A_storage, ierr)
call HYPRE_IJMatrixSetObjectType(A, HYPRE_PARCSR, ierr) call HYPRE_IJMatrixSetObjectType(A, HYPRE_PARCSR, ierr)
else
call HYPRE_IJMatrixRead(matfile, MPI_COMM_WORLD,
& HYPRE_PARCSR, A, ierr)
endif endif
matfile(1) = 'd' matfile(1) = 'd'
@ -308,7 +334,14 @@ c-----------------------------------------------------------------------
c Set up the rhs and initial guess c Set up the rhs and initial guess
c----------------------------------------------------------------------- c-----------------------------------------------------------------------
if (generate_rhs .gt. 0) then if (generate_rhs .eq. 0) then
call HYPRE_IJVectorRead(vecfile, MPI_COMM_WORLD,
& HYPRE_PARCSR, b, ierr)
call HYPRE_IJVectorGetObject(b, b_storage, ierr)
else
call HYPRE_IJVectorCreate(MPI_COMM_WORLD, first_local_col, call HYPRE_IJVectorCreate(MPI_COMM_WORLD, first_local_col,
& last_local_col, b, ierr) & last_local_col, b, ierr)
@ -342,11 +375,6 @@ c Set up a Dirichlet 0 problem
call HYPRE_IJVectorPrint(b, vecfile, ierr) call HYPRE_IJVectorPrint(b, vecfile, ierr)
else
call HYPRE_IJVectorRead(vecfile, MPI_COMM_WORLD,
& HYPRE_PARCSR, b, ierr)
endif endif
call HYPRE_IJVectorCreate(MPI_COMM_WORLD, first_local_col, call HYPRE_IJVectorCreate(MPI_COMM_WORLD, first_local_col,
@ -603,7 +631,6 @@ c & ierr)
endif endif
call HYPRE_ParCSRGMRESDestroy(solver, ierr) call HYPRE_ParCSRGMRESDestroy(solver, ierr)
print *, 'gmres destruction: ',ierr
endif endif