コンテキスト:私はある種のテストに特定のFortranサブルーチンを入れて何が間違っているかを知る予定です。これは数値シミュレーションであり、結果は理論と一致しません。 write文を使って簡単なデバッグを行います。ファイルが開いているときにFortranが画面に書き込まない
問題:ファイルは私のメインルーチンで開いている間、私は画面には何も書くように見えることはできません(私は間違っての特定のチェーンに渡されているものをチェックすることはできませんサブルーチンなど)。私はファイルを開く前にすべてをうまく書きますが、ファイルを開く前と閉じた後ではありません。ただ、WRITE
の文を見て
WRITE(*,*) 'BLA !<---------------------------------------
WRITE(*,*) 'BLA BLA' !<---------------------------------------
do p=1,N !open files
write(posvel, "(a,i0,a)") "1Dposveldatacomelasticaxy1", p, ".dat"
OPEN(unit=p, file=trim(posvel), status="unknown")
end do
WRITE(*,*) 'bla' !<---------------------------------------
t = tmin
cont = 0
do while ((t + dt) < (tmax))
t = t+dt
cont = cont+1
do i = 1, N
forcax(i) = 0.0d0
forcay(i) = flagy(i)*gravidade(m(i))
do j = 1, N
call coefficients(m(i), m(j), gama_n, k_n)
Fx_elastica(j,i) = 0.0d0
Fy_elastica(j,i) = 0.0d0
Fx_viscosa(j,i) = 0.0d0
Fy_viscosa(j,i) = 0.0d0
WRITE(*,*) 'inside j loop' !<---------------------------------------
if (i .NE. j) then
if ((abs(sqrt(((xold(i)-xold(j))**2)+(yold(i)-yold(j))**2))).LE. (a(i)+a(j))) then
WRITE(*,*) 'inside collision' !<---------------------------------------
call forca_elastica(k_n, a(i), a(j), xold(i), xold(j), yold(i), yold(j), Fx_elastica(j,i),&
Fy_elastica(j,i))
if (Fx_elastica(j,i) .GT. 0.0d0) then
Fx_elastica(i,j) = -Fx_elastica(j,i)
WRITE(*,*) 'elastic x is being passed' !<---------------------------------------
end if
if (Fy_elastica(j,i) .GT. 0.0d0) then
Fy_elastica(i,j) = -Fy_elastica(j,i)
WRITE(*,*) 'elastic y is being passed' !<---------------------------------------
end if
forcax(i) = forcax(i) + flagex(i)*Fx_elastica(j,i)
forcay(i) = forcay(i) + flagey(i)*Fy_elastica(j,i)
end do
call integracao_Euler_xy (xold(i),xnew(i),vxold(i),vxnew(i),forcax(i),yold(i),ynew(i),vyold(i),vynew(i),forcay(i),m(i))
if (mod (cont,5000).eq. 0) then
WRITE(p, *) int(cont/5000), t, xold(i), yold(i), forcax(i), forcay(i) !<---------------------------------------
end if
end do
end do
do p = 1,N !close files
close(unit=p)
end do
:ここ
は、私が参照しているコードです。最初の2つは画面に表示されます。OPEN
の後にファイルを作成していますが...それはしません。条件に依存する
WRITE
の文は私が見たいものですが、Fortranは
であり、それらの条件に依存しないものも書いていません。また、最後の
WRITE
ステートメントを見てください。
ファイルに問題なく書き込みます。
この問題を解決する方法については、どのようなアイデアですか?
私はFortran 90を使用しています。
からの代わりに使用するという事実を言うことがある場合、あなたはおそらく、またはコンパイラにはない、少なくとも、とにかく使用していないのFortran 90(古くなった古いバージョンではありません)、あなたが使っているコンパイラを知ることがより有益です。 –