[petsc-users] FORTRAN 90 with PETSc

Frank fangxingjun0319 at gmail.com
Fri Aug 16 18:37:05 CDT 2013


Hi,

I am using PETSc to iterate a problem, that is to say I call KSPSolve 
repeatedly.
Firstly, I write all the PETSc components in one subroutine, including 
"MatCreate", "VecCreateMPI", etc. Everything works fine.
Then, I want to only initialize ksp once outside the loop, and the 
matrix and rhs is changed within the loop repeatedly. Here are my problem:

1. I tried to use COMMON to transfer the following variables. I include 
"petsc.var" in the solver subroutine.  It cannot be compiled.
"petsc.var"
Vec         x,b
Mat         A
KSP         ksp
PC          pc
COMMON /MYPETSC/x, b, A,ksp,pc

2. I defined the following in the main program:
PROGRAM MAIN
#include <finclude/petscsys.h>
#include <finclude/petscvec.h>
#include <finclude/petscmat.h>
#include <finclude/petscpc.h>
#include <finclude/petscksp.h>
Vec         x,b
Mat         A
KSP         ksp
PC          pc
......
CALL INIT_PETSC(ksp,pc,A,x,b)
......
CALL LOOP(ksp,pc,A,x,b)

END PROGRAM
!---------------------------------------------------
SUBROUTINE LOOP(ksp,pc,A,x,b)
Vec         x,b
Mat         A
KSP         ksp
PC          pc
......
CALL SOLVE(ksp,pc,A,x,b)
.......
END SUBROUTINE
!---------------------------------------------------
SUBROUTINE SOLVE(ksp,pc,A,x,b)
Vec         x,b
Mat         A
KSP         ksp
PC          pc

......
CALL (ksp, b,x,ierr)
END SUBROUTINE

It can be compiled, but ksp does not iterate.

Could you please explain to me the reason and solution for this problem.

Thank you very much.















More information about the petsc-users mailing list