2016-10-11 7 views
0

У меня есть программа, которая создает значения для матрицы 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 

ответ

0

Просто откройте файл для добавления

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)