提问人:Elena Welch 提问时间:10/24/2023 更新时间:11/6/2023 访问量:71
Fortran 无法写入输出文件或打印到屏幕
Fortran not writing to output file or printing to screen
问:
我编写了这个简单的 Fortran 代码,目的是将答案写入输出文件。相反,输出文件是空白的,即使我尝试打印到屏幕上,它也不会这样做。
这是代码,它很短:
program FTCS
implicit none
integer :: m,n,i,j,a=1
real, allocatable :: P(:,:)
real :: r,l,t,delta_x,delta_t,g
open(20,file='input.txt')
open(30,file='outputFTCS.txt')
read(20,2)n ! reading these values from the input.txt file
read(20,3)r,t,delta_t,l ! reading these values from input.txt
2 format (T10,I6) ! I is for integers
3 format (T10,F15.8) ! F is for real (float)
delta_x = 1/(n-1) ! n = points
g = floor(t/delta_t)
m = g ! time
allocate (P(m,n))
P(1,:)=20 ! initial condition: indexing begins at 1
do i=2,m ! points
P(i,1)=100 ! boundary condition (left)
P(i,n)=0 ! boundary condition (right)
do j=2,n-1 ! time
P(i,j)=r*(P(i-1,j+1)+P(i-1,j-1))+(1-2*r)*(P(i-1,j)) ! T_i=r(T_i-1 + T_i+1) + (1-2r)T_i
print *,"hello"
end do
end do
do i=1,m
print *,'hello'
end do
10 format(10f10.2)
30 format (10f10.2)
close(10) ! do this last
close(30)
end program FTCS
我使用以下方法进行编译,然后尝试运行:或者,两者都没有产生输出。我也进行了编译以达到相同的结果。gfortran FTCS.f90
./FTCS
./a.out
gfortran FTCS.f90 -o
输入 .txt 文件只是
n=10
r=0.25
t=.03
delta_t=0.005
l=1
为什么不写入输出文件,甚至不写入屏幕?
答:
1赞
Jorge Luis Gálvez Vallejo
10/24/2023
#1
我认为这里有几个问题。首先,您的输入文件不仅有数字,还有字符。如果将输入文件更改为如下所示:
10
0.25
.03
0.005
1
您的代码如下所示:
program FTCS
implicit none
integer :: m,n,i,j,a=1
real, allocatable :: P(:,:)
real :: r,l,t,delta_x,delta_t,g
open(20,file='input.txt')
open(30,file='outputFTCS.txt')
read(20,*)n ! reading these values from the input.txt file
read(20, *) r, t, delta_t, l
write(*,*) n, r, t, delta_t, l
end program
您会注意到它现在可以工作了:
:~/work/random$ ./a.out
10 0.250000000 2.99999993E-02 4.99999989E-03 1.00000000
如果你想保留 你必须将该行作为字符阅读,然后进行一些拆分以准确提取您需要的内容。n=
评论
0赞
francescalus
10/24/2023
问题中的格式使用编辑描述符,其目的是跳过输入的字符部分。没有必要为“拆分提取”做任何特殊的事情,当然也不需要“将行作为字符阅读”。当然,必要的是跳过正确数量的字符。T
0赞
user22861891
11/6/2023
#2
T10 说明符从位置 10 及之后进行第一次读数。但是在您的文件输入 .txt 中,那里什么都没有。
评论
print *, n
print *, r ,t,delta_t,l
(T10,F15.8)