On Wed, Aug 29, 2012 at 10:28 AM, Roc Wang <pengxwang at hotmail.com> wrote:
> Thanks for the kindly reply. > > By saying petscdef files, do you mean petscXXXdef, where XXX is the > corresponding component of PETSc, such as vec, mat, et. al.? > > I tried the following approach, but it still doesn't work. The errors > come out since there are some PETSc variables defined in Module > MyParameter. The compiler cannot find PETSc datatype. The conflict is that > some PESTs variables have to defined in Module MyParameter, and other PETSc > variables and PETSc subroutines are defined and called in another Module > MySub. Any hints and suggestions would be appreciated very much. Thanks. > It is done this way here: http://www.mcs.anl.gov/petsc/petsc-current/src/snes/examples/tutorials/ex5f90.F.html and works fine. Matt > !--------------the way I declared the PETSc files > > Module MyParameter > Implicit none > #include "finclude/petscsysdef.h" ! Put all petscXXXdef,h in the > module > #include "finclude/petscvecdef.h" > #include "finclude/petscmatdef.h" > #include "finclude/petscpcdef.h" > #include "finclude/petsckspdef.h" > > > Integer:: ... ... > Real:: ... ... ! There are some PETSc variables defined in this > Module > > > End Module MyParameter > > Module MySub > Use Myparameter > Contains > ... ... > Subroutine MyPETSc_APP() > #include "finclude/petscsys.h" > #include "finclude/petscvec.h" > #include "finclude/petscmat.h" > #include "finclude/petscpc.h" > #include "finclude/petscksp.h" > > #include "finclude/petscsys.h90" > #include "finclude/petscmat.h90" > #include "finclude/petscvec.h90" > Implicit none > ... ... > Call MatSetType(A_Mat, MATAIJ, ierr) > ... ... > End Subroutine MyPETSc_APP > ... ... > EndModule MySub > > Main Program > Use MyParameter > Use MySub > ... ... > ... ... > End > > ------------------------------ > Date: Tue, 28 Aug 2012 16:00:58 -0500 > From: dharmareddy84 at gmail.com > To: petsc-users at mcs.anl.gov > Subject: Re: [petsc-users] variable declaration in Fortran90 > > From what i understand, you should #include the corresponding petscdef > files in the module and the petsc headers in the subroutine. > > petsc version installed on machine is petsc-3.2-p5 > I use a single include file: #include "finclude/petscdef.h" in the module > and in the subroutines (including the ones that are defined after contains > in the module) and program. > #include "finclude/petsc.h" > you can use #include "finclude/petsc.h90" if you are using the things > such as vecgetArrayF90 > > On Tue, Aug 28, 2012 at 3:45 PM, Roc Wang <pengxwang at hotmail.com> wrote: > > Hello, > > > I am developing Fortran90 code with PETSc. Several Modules are defined > in the code. Such as > > Module MyParameter > Implicit none > #include "finclude/petscsys.h" > #include "finclude/petscvec.h" > #include "finclude/petscmat.h" > #include "finclude/petscpc.h" > #include "finclude/petscksp.h" > #include "finclude/petscvec.h90" > #include "finclude/petscmat.h90" > > Integer:: ... ... > Real:: ... ... > > > End Module MyParameter > > Module MySub > Use Myparameter > Contains > ... ... > Call MatSetType(A_Mat, MATAIJ, ierr) > ... ... > EndModule MySub > > > Main Program > Use MyParameter > Use MySub > ... ... > ... ... > End > > If I put all the modules in a single .F90 file, the compilation can be > done successfully. However, If I put the modules in separated files, the > following error information comes out: > > Error: Symbol 'mataij' at (1) has no IMPLICIT type. > > In addition, if I use PetscInt, PetscErrorCode to declare variables in > Module MySub, the similar errors come out. How declare the variable with > PETSc type in separate files? Thanks. > > > > > > > > > > > > -- > ----------------------------------------------------- > Dharmendar Reddy Palle > Graduate Student > Microelectronics Research center, > University of Texas at Austin, > 10100 Burnet Road, Bldg. 160 > MER 2.608F, TX 78758-4445 > e-mail: dharmareddy84 at gmail.com > Phone: +1-512-350-9082 > United States of America. > > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20120829/481bb2a9/attachment.html>
