[petsc-users] [Fortran] subroutines inside modules?
Leo van Kampenhout
lvankampenhout at gmail.com
Fri Oct 1 04:05:11 CDT 2010
Thank you Stephan, it is working now. I forgot to add the correct files to
the makefile, for I put the module in a seperate file (grid.F). The correct
makefile rule for the main program (main.F) is:
main: grid.o main.o chkopts
-${FLINKER} -o main grid.o main.o ${PETSC_KSP_LIB}
${RM} main.o grid.o
Thanks again.
Leo
2010/10/1 Stephan Kramer <s.kramer at imperial.ac.uk>
> On 30/09/10 23:09, Leo van Kampenhout wrote:
>
>> Declaring it external in the program/subroutine that is using the module
>> results in
>>
>> main.F:65.43:
>> external gridtest
>> Error: Cannot change attributes of USE-associated symbol at (1)
>>
>> Thanks, Leo
>>
>
> Yes, as I said before :) - module subroutines should *not* be declared
> external. You do
> not need that line.
>
> Cheers
> Stephan
>
>
>
>>
>> 2010/9/30 Stephan Kramer <s.kramer at imperial.ac.uk
>> <mailto:s.kramer at imperial.ac.uk>>
>>
>>
>> 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
>>
>>
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20101001/603fe1cd/attachment-0001.htm>
More information about the petsc-users
mailing list