我想寫出一個矩陣來使用4個模塊.txt文件的模塊有:讀取輸入,然後寫入文件
- input.f90從.txt文件
- navierstokes_loser讀取輸入.F90創建矩陣(我將在這裏補充一些做循環,而且,第一次我只需要它來打印)
- resultatplot.f90採取從navierstokes_loser矩陣然後打印到.txt文件
- main.f90時將所有模塊並運行程序
當我運行程序時,我得到程序接收到的信號SIGSEGV:分段錯誤 - 無效的內存引用。
我在做什麼錯?
input.f90
module input
implicit none
contains
subroutine lesinput(n,omega)
!Output
integer :: n
real(8) :: omega
!Åpner fil og gir variable verdier
open(1, file='input.txt',status='old',action='read')
read(1,*), n
read(1,*), omega
close(1)
end subroutine lesinput
end module input
navierstokes_loser.f90
module navierstokes_loser
implicit none
contains
subroutine los_navier(n,omega,u)
!input
integer :: n
real(8) :: omega
!lokal
real(8) :: u(n+1,n+1)
integer :: i,j
u(n+1,n+1)=0.0d0
end subroutine los_navier
end module navierstokes_loser
resultatplot.f90
module resultatplot
implicit none
contains
subroutine vektorplot(n,u)
!input
integer :: n
real(8) :: u(n+1,n+1)
!lokale
integer :: i,j
real(8) :: vek_x
!Skriver vektor verdier til fil som gnuplot skal bruke
open(2,access='sequential',file='vekdata.txt',status='unknown')
write(2,*)'# x y vx vy'
do i=1,n+1
do j=1,n+1
vek_x=u(j,i)
write(2,*) i, j, vek_x
end do
write(2,*)''
end do
close(2,status='keep')
end subroutine vektorplot
end module resultatplot
main.f90時
program main
use input
use navierstokes_loser
use resultatplot
implicit none
integer :: n
real(8) :: omega
real(8), dimension (:,:), allocatable :: u
call lesinput(n,omega)
allocate(u(n+1,n+1))
call los_navier(n,omega,u)
call vektorplot(n,u)
end program main
你可以試着一步一步來。首先閱讀輸入信息,以確保你做得對。添加矩陣的計算,確保它能夠正常工作,然後將矩陣的打印添加到文件中。等待人們做所有事情都不是很明智。 – innoSPG
它在main.f90和navierstokes_loser.f90中正確讀取輸入,但是當我添加矩陣時,它會出現錯誤。 – ursmooth
所以我的問題是存儲矩陣u,然後將它傳遞給vektorplot – ursmooth