Output uit subroutine in fortran
Geplaatst: ma 05 okt 2009, 17:09
Hoe kan ik de variabele 'B' uit mijn subroutine laten komen. Het allocaten wil niet lukken. Ideetjes zijn een beetje op.
De personen na mij die moeten namelijk gebruik maken van de 4D matrix 'B' die uit mijn subroutine zou moeten komen, maar tijdens het compilen blijft ie maar om de input 'B' vragen... :eusa_whistle:
Hieronder één van mijn probeerseltjes. Ik hoop dat het idee duidelijk is.
De personen na mij die moeten namelijk gebruik maken van de 4D matrix 'B' die uit mijn subroutine zou moeten komen, maar tijdens het compilen blijft ie maar om de input 'B' vragen... :eusa_whistle:
Hieronder één van mijn probeerseltjes. Ik hoop dat het idee duidelijk is.
Code: Selecteer alles
program wrapper
implicit none
double precision :: h, current, B_p, H_p
integer :: num_wires, B_path, L_path, H_path
real :: start, finish
double precision, allocatable, dimension (:,:,:,:) :: B
write(*,*) '- h - voer de stapgrootte in mm in: '
read(*,*) h
write(*,*) '- num_wires - voer het aantal draden in: '
read(*,*) num_wires
write(*,*) '- I - voer de stroomsterkte door de spoel in (in ampère): '
read(*,*) current
write(*,*) '- B_p - voer de breedte van het pad in (in meter): '
read(*,*) B_p
write(*,*) '- H_p - voer de hoogte van het pad in (in meter): '
read(*,*) H_p
B_path = B_p/(h/1000)+1
L_path = 1.2/(h/1000)+1
H_path = H_p/(h/1000)+1
allocate( B(L_path, B_path, H_path, 3) )
B = 0.0
call cpu_time(start)
call Calc_B (h, num_wires, current, B_p, H_p, B)
call cpu_time(finish)
write(*,*) 'REKENTIJD: ', finish - start, ' seconden'
end program wrapper
subroutine Calc_B (h, num_wires, current, B_p, H_p, B)
blablabla...