写入文件,保留更改并追加



我有一个为矩阵u创建值的程序,它在每次迭代f时都会改变,我想写出u(2,2)在每次迭代f时的值。例如u(2,2)=5 f=1, u(2,2)=9 f=2,等等

现在test(u,n,f)只写最后一个值。当它满足我的条件时停止do循环。我不希望我的子例程每次都覆盖文件plot.txt,我希望它在每次迭代中都保持u(2,2)。我想让它看起来像这样

5  1
9  2
10 3

但不是它只写

15 25

如何解决这个问题?

subroutine test(u,n,f)
!input
integer :: n,f,write_unit
real(8) :: u(n+2,n+2)
!lokale
integer :: i,j
real(8) :: vek_x,vek_y

!Skriver vektor verdier til fil som gnuplot skal bruke
open(newunit=write_unit,access='sequential',file='plot.txt',status='unknown')
write(write_unit,*)'# x y vx vy'

vek_x=u(2,2)

!write(write_unit,*) vek_x,f
write(write_unit,*) vek_x,f
write(write_unit,*)''

close(write_unit,status='keep')

u创建不同值的"程序"

do f=1,1000
do j=2,n+1
  do i=2,n+1
u(i,j)=(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1))/4

!u(i,j)=(1-omega)*u(i,j)+omega*1/4*(u(i+1,j)+u(i-1,j)+u(i,j+1)+u(i,j-1))

  end do
end do

if (u(2,2) .eq. 15) then
exit
end if
call test(u,n,f)


end do

打开文件添加

open(newunit=write_unit,access='sequential',file='plot.txt',position='append',status='old',action='write')

如果这是你想要的。

第一次可能想要创建空的

open(newunit=write_unit,access='sequential',file='plot.txt',status='replace')
close(write_unit)

最新更新