1

出力ファイルを生成する簡単なプログラムを作成しましたが、実行するたびに、ユニット番号に関係なく、コンパイラは常にエラーを返します。

Fortran runtime error: Text file busy

プログラムは次のとおりです。

program plottest
implicit none

integer :: z,k,m,j,i
double precision :: delta_Tem, deltax, deltaz, a
double precision, dimension(:,:), allocatable :: T_n, T_g_init
double precision, dimension(:), allocatable :: x
double precision, parameter :: pi = 3.141592653589793239d0
double precision, parameter :: T_hot = 300
double precision, parameter :: T_cold = 276
double precision, parameter :: D = 4 !height z (cm)
double precision, parameter :: L = 5 !length x (cm)
integer, parameter :: Nz = 9 !resolution in z
integer, parameter :: Nx = 6 !resolution in x
integer, parameter :: N = 10 !resolution in n

delta_Tem = T_hot-T_cold
deltaz = D/(Nz-1) !(cm)
deltax = L/(Nx-1) !(cm)
a = L/D

allocate(T_n(N,Nz))
allocate(T_g_init(Nx,Nz))
allocate(x(1:Nx))

z=0
T_n(1,1)=T_hot
do k=2,Nz
    T_n(1,k) = T_hot-((k-1)*delta_Tem)
end do

z=0
T_n(2,1)=0
do k=1,Nz
    do m=2,N
        T_n(m,k) = T_n(1,k)*sin(pi*(k-1)*deltaz)
    enddo
enddo

do j=1,Nx
    x(j) = x(j)+deltax
enddo

do k=1,Nz
    do j=1,Nx
        do m=1,N
            T_g_init(j,k)=T_g_init(j,k)+T_n(m,k)*cos(m*pi*x(j)/a)
        enddo
    enddo
enddo

open(unit = 15, file = "plottest")
do, i=1,n
    do, j=1,k
        write(15,"(F25.5)") T_g_init(i,j)   
        if (j==k) write(15,"(A1)") "X"
    enddo
enddo
close(15)

deallocate(T_n)
deallocate(T_g_init)
deallocate(x)

end program plottest

私の知る限り、他のプロセスは実行されておらず、他のテキスト ファイルも開いていません。私は困惑しています。

4

1 に答える 1

3

あなたの問題は、実行可能ファイルと同じものを出力ファイルに定義していることです: plottest. に設定すれplottest.datば問題ありません。

于 2013-10-20T02:57:51.913 に答える