[petsc-dev] For Fortran users of PETSc development version

Gautam Bisht gbisht at lbl.gov
Thu May 11 11:24:39 CDT 2017


Hi Barry,

I'm wondering if these changes will be a part of future 3.8.0 release or
4.0.0 release. And, do you have a tentative timeline when such a release
tag would be made?

-Gautam.

On Sun, Dec 4, 2016 at 11:13 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:

>
>   Jed noticed a small mistake in my description. It is type(tXXX) not
> type(iXXX) if you chose to declare your variables that way. Note that
> declaring them via type(tXXX) or XXX is identical (XXX is just a macro for
> type(tXXX)).
>
>    Barry
>
>
> > On Dec 4, 2016, at 11:57 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:
> >
> >
> >    For Fortran users of the PETSc development (git master branch) version
> >
> >
> >    I have updated and simplified the Fortran usage of PETSc in the past
> few weeks. I will put the branch barry/fortran-update into the master
> branch on Monday. The usage changes are
> >
> > A)  for each Fortran function (and main) use the following
> >
> >       subroutine mysubroutine(.....)
> > #include <petsc/finclude/petscxxx.h>
> >       use petscxxx
> >       implicit none
> >
> >     For example if you are using SNES in your code you would have
> >
> > #include <petsc/finclude/petscsnes.h>
> >       use petscsnes
> >       implicit none
> >
> > B) Instead of PETSC_NULL_OBJECT you must pass PETSC_NULL_XXX (for
> example PETSC_NULL_VEC) using the specific object type XXX that the
> function call is expecting.
> >
> > C) Objects can be declared either as XXX  a  or  type(iXXX) a, for
> example Mat a or type(iMat) a.  (Note that previously for those who used
> types it was type(Mat) but that can no longer be used.
> >
> > Notes:
> >
> > 1)   There are no longer any .h90 files that may be included
> >
> > 2)    Like C the include files are now nested so you no longer need to
> include for example
> >
> > #include <petsc/finclude/petscsys.h>
> > #include <petsc/finclude/petscvec.h>
> > #include <petsc/finclude/petscmat.h>
> > #include <petsc/finclude/petscpc.h>
> > #include <petsc/finclude/petscksp.h>
> >
> > you can just include
> >
> > #include <petsc/finclude/petscksp.h>
> >
> > 3) there is now type checking of most function calls. This will help
> eliminate bugs due to incorrect calling sequences. Note that Fortran
> distinguishes between a argument that is a scalar (zero dimensional array),
> a one dimensional array and a two dimensional array (etc). So you may get
> compile warnings because you are passing in an array when PETSc expects a
> scalar or vis-versa. If you get these simply fix your declaration of the
> variable to match what is expected. In some routines like MatSetValues()
> and friends you can pass either scalars, one dimensional arrays or two
> dimensional arrays, if you get errors here please send mail to
> petsc-maint at mcs.anl.gov and include enough of your code so we can see the
> dimensions of all your variables so we can fix the problems.
> >
> > 4) You can continue to use either fixed (.F extension) or free format
> (.F90 extension) for your source
> >
> > 5) All the examples in PETSc have been updated so consult them for
> clarifications.
> >
> >
> >  Please report any problems to petsc-maint at mcs.anl.gov
> >
> >   Thanks
> >
> >   Barry
> >
> >
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20170511/0b1dd4b9/attachment.html>


More information about the petsc-dev mailing list