[petsc-users] [Fortran] subroutines inside modules?

Stephan Kramer s.kramer at imperial.ac.uk
Thu Sep 30 12:52:24 CDT 2010


On 30/09/10 15:31, Leo van Kampenhout wrote:
> Hi all,
>
> since it is mandatory to declare all subroutines as "external" in
> Fortran, is it possible for Modules to have subroutines? I'm unable to
> declare the subroutine external inside the module itself, nor in the
> program which is using it. Not declaring it external at all results in
> the following compilation error:
>
> /net/users/csg/csg4035/master/workdir/src/main.F:97: undefined reference
> to `__grid_MOD_readgrid'
>
> (the module is here is named "grid", the subroutine "readgrid" )
>
> Thanks,
> Leo
>

If you put your subroutine in a module, it should not be declared
external. You can directly call it from within the module itself. When
calling it inside any other module/program you need to add "use grid" before
the "implicit none".

Putting subroutines inside a module is highly recommended as it automatically
provides an explicit interface so that the compiler can check the arguments in
your subroutine call.

Cheers
Stephan


More information about the petsc-users mailing list