Fortran Fortran 90: dinamic matrix valued function as argument

AI Thread Summary
The discussion revolves around writing a Fortran 90 program that includes a subroutine capable of handling array-valued functions with different dimensions. The user encountered a compiler error related to the module file "sub_mod.mod" not being found. Suggestions provided include rearranging the code to place modules before the main program, using a prototype header with the "interface" keyword, or separating the modules into different files. The corrected code structure is shared, emphasizing the need to maintain proper order and formatting for better readability. Additionally, a tip is given to use code tags for preserving formatting in future posts.
Taff
Messages
1
Reaction score
0
hello, I'm trying to write a program with a subroutine that can handle array valued functions of different dimensions, I'm new to fortran 90 so i have some troubles.
Here's what i tried:

program passing
use functions
use sub_mod
implicit none
integer, dimension(2,2):: a2
integer, dimension(3,3):: a3
call prova(a2,g2)
!print*,a2
call prova(a3,g3)
!print*,a3
end program passing

module functions
implicit none
contains
function g2(x)
implicit none
!result
integer,dimension(2,2) :: g2
!dummy
integer x
g2(1,1)=x+2
g2(1,2)=x+2
g2(2,1)=x+2
g2(2,2)=x+2
end function g2

function g3(x)
implicit none
!result
integer,dimension(3,3) :: g3
!dummy
integer x
g3(1,1)=x+3
g3(1,2)=x+3
g3(2,1)=x+3
g3(2,2)=x+3
end function g3

end module functions

module sub_mod
implicit none
contains
subroutine prova(a,f)
!dummy
integer,dimension(:,:) :: a
integer,dimension(size(a,1),size(a,2)) :: f
external f
a=f(0)
end subroutine prova
end module sub_modi got 1 compiler error "can't open module file sub_mod.mod..."
 
Technology news on Phys.org
Hi Taff. I'm a pretty infrequent Fortran user, but I think that you have three options with modules

1. Put them ahead of the code that uses them.

2. Put a "prototype" header before the code that uses them. (I think it's the "interface" keyword, but I can't remember the exact syntax).

3. Put them is a separate file.

So the easiest fix for you is to just put them ahead of the main program, Eg

Code:
module functions
implicit none
contains
function g2(x)
implicit none
!result
integer,dimension(2,2) :: g2
!dummy
integer x
g2(1,1)=x+2
g2(1,2)=x+2
g2(2,1)=x+2
g2(2,2)=x+2
end function g2

function g3(x)
implicit none
!result
integer,dimension(3,3) :: g3
!dummy
integer x
g3(1,1)=x+3
g3(1,2)=x+3
g3(2,1)=x+3
g3(2,2)=x+3
end function g3

end module functions

module sub_mod
implicit none
contains
subroutine prova(a,f)
!dummy
integer,dimension(:,:) :: a
integer,dimension(size(a,1),size(a,2)) :: f
external f
a=f(0)
end subroutine prova
end module sub_mod

program passing
use functions
use sub_mod
implicit none
integer, dimension(2,2):: a2
integer, dimension(3,3):: a3
call prova(a2,g2)
!print*,a2
call prova(a3,g3)
!print*,a3
end program passing

BTW. Please note that you can use "code" tag to preserve formatting (indentation). I didn't put any indentation into your code because I just cut and pasted it and am too lazy. But next time you post code, using the code tag will greatly increase the chance that someone will bother reading it. :)
 
Dear Peeps I have posted a few questions about programing on this sectio of the PF forum. I want to ask you veterans how you folks learn program in assembly and about computer architecture for the x86 family. In addition to finish learning C, I am also reading the book From bits to Gates to C and Beyond. In the book, it uses the mini LC3 assembly language. I also have books on assembly programming and computer architecture. The few famous ones i have are Computer Organization and...
I have a quick questions. I am going through a book on C programming on my own. Afterwards, I plan to go through something call data structures and algorithms on my own also in C. I also need to learn C++, Matlab and for personal interest Haskell. For the two topic of data structures and algorithms, I understand there are standard ones across all programming languages. After learning it through C, what would be the biggest issue when trying to implement the same data...

Similar threads

Replies
4
Views
2K
Replies
4
Views
2K
Replies
12
Views
3K
Replies
8
Views
4K
Replies
5
Views
8K
Back
Top