yifanxing1992 发表于 2015-4-14 20:13:35

关于循环输出文件,和循环改变初值的提问

主程序如下:
program main   
use m_rk_ods   
implicit real*8(a-z)   
integer::N   
real*8::px0,py0,pz0,x0,yy0,z0   
real*8:: y(6),y0(6)
open (unit=11,file='dat1.txt')   
open (unit=12,file='dat2.txt')   
N=6   
px0=5.   
py0=0.   
pz0=50.   
x0=-2500.   
yy0=0.   
z0=-25000.   
t0=0.   
tt=100000.   
y0=(/px0,py0,pz0,x0,yy0,z0/)   
call solve(fun1,t0,tt,y0,N)
end
各位大神们,作为初学fortran循环这部分确实很难做,尤其是循环输出到文件。
对我来讲第一个技术难点:我希望达到的目标是这样的,就是初值条件z0从-25200到-24800以步长为0.5变化,而z0=-25200时,x0从-2520到-2500,而z0+1的时候,x0从-2519到-2499以此类推,当z0循环到-24800时,x0的循环从-2500到-2480.这个样子。然后求助这个循环需要怎么做??一共做800*20=16000次计算。
第二个比较重要的问题是,我希望每一个初值的结果对应输出到一个文件,一共输出16000个文件。。?这个循环输出的指令要怎么写?



楚香饭 发表于 2015-4-14 21:05:57

文件名可以用字符串表示。
字符串可以由整数或浮点数转换。
这都不是问题。

问题是,我看不懂你的循环规则。
z0 在 -25200到-24800,400个数值之间变化。
而 x0 从 -2520到-2500,直到 -2500到-2480。只有20个变化。

yifanxing1992 发表于 2015-4-14 21:22:22

楚香饭 发表于 2015-4-14 21:05
文件名可以用字符串表示。
字符串可以由整数或浮点数转换。
这都不是问题。


循环规则是,z0做外层循环,z0循环范围从-25200到-24800,这个范围内每次变化增加1,即z0从-25200,-25199,-25198……这样子。
然后z0=-25200时,内层循环由x0完成,x0从-2520到-2500,然后z0+1变成-25199,内层循环x0从-2519到-2499.。。
然后z0再加1,变成-25198,这是x0循环从-2518到-2498

楚香饭 发表于 2015-4-14 21:30:09

对啊。那当 z0 变化到 -24800 时,x0 应该循环从 -2120 到 -2100 啊。
怎么可能还从 -2500到-2480 ?

yifanxing1992 发表于 2015-4-14 21:31:52

楚香饭 发表于 2015-4-14 21:30
对啊。那当 z0 变化到 -24800 时,x0 应该循环从 -2120 到 -2100 啊。
怎么可能还从 -2500到-2480 ? ...

哦,那估计是我X0的后面范围写错了。。。应该是x0从-2120到-2100.。。。。。规则应该是我之前写的那种。

楚香饭 发表于 2015-4-14 21:39:16

Program www_fcode_cn
Implicit None
character(len=10) :: c1 , c2
integer z0 , x0 , k
k = -2520
Do z0 = -25200 , -24800
    write( c1 , '(g0)' ) z0
    Do x0 = k , k + 20
      !//计算代码
      write( c2 , '(g0)' ) x0
      Open( 12 , File = trim(adjustl(c1))//"-"//trim(adjustl(c2))//".txt")
      !// 输出代码
      Close( 12 )
    End Do
    k = k + 1
End Do
End Program www_fcode_cn

yifanxing1992 发表于 2015-4-14 21:53:13

楚香饭 发表于 2015-4-14 21:39
Program www_fcode_cn
Implicit None
character(len=10) :: c1 , c2


Open( 12 , File = trim(adjustl(c1))//"-"//trim(adjustl(c2))//".txt")
这句编译的时候提示trim函数没有值~~

楚香饭 发表于 2015-4-14 21:56:41

我给代码都是自己亲自验证过的,可以编译链接的。

如果你提示有错误,请给出英文的,原版的错误提示,而不是自己翻译的。

yifanxing1992 发表于 2015-4-14 21:59:59

楚香饭 发表于 2015-4-14 21:56
我给代码都是自己亲自验证过的,可以编译链接的。

如果你提示有错误,请给出英文的,原版的错误提示,而不 ...

我手打敲错了,不好意思啦。。。添麻烦啦。问题基本解决了,谢谢您~~

pasuka 发表于 2015-4-15 08:24:02

写入16000个文件可不是好主意,为啥不是一个文件一次性写入16000个计算结果?
页: [1] 2
查看完整版本: 关于循环输出文件,和循环改变初值的提问