[petsc-users] variable declaration in Fortran90

Matthew Knepley knepley at gmail.com
Wed Aug 29 10:30:49 CDT 2012


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>


More information about the petsc-users mailing list