【问题标题】:Loop using variable that changes every loop-calculation with certain step-size使用以特定步长更改每个循环计算的变量进行循环
【发布时间】:2018-02-26 09:40:46
【问题描述】:

我正在使用一个循环,将一个值 (step) 添加到 dist。将step 添加到dist 后,我想在以下计算中使用它,它提供了值c。然后,distc 都应在输出文件中并排列在两列中。

如果我使用下面的代码,它至少可以在输出文件中列出dist 的值。

dist=0
  do while (dist < rim)
   dist=dist+step
   c=0.5*(cl-cr)*erfc((dist)/(2*sqrt(t*d)))+cr
   write(1,'(1f20.0)')dist*1E+06
  enddo

如果我将写入命令替换为下面的命令,它将不会列出两个不错的列,但会以某种方式混合两者。

  write(1,'(1f20.0,1f15.5)')dist*1E+06,c

这是与循环中写入命令的定位有关的问题,还是与被告知写入值的格式有关?

【问题讨论】:

  • “但不知何故将两者混合在一起。” 不知何故?请显示一个示例结束解释为什么它是错误的以及它应该是什么样子。您的问题是关于循环还是关于格式?

标签: loops fortran


【解决方案1】:

您应该在它们之间添加一个空格并重新检查:

write(*,'(F20.0,1X,F15.5)') dist*1E+06, c

还要考虑将结果写入文件的准确性。

【讨论】:

  • 抱歉,我希望您指的是1X 而不仅仅是X @VladimirF。
  • 是的,现在很好。
  • 感谢您的回答。我确实在现在之间添加了一个空格,但这没有帮助。我认为例程计算不止一个“c”值。 dist(um) c 2. 0.24047 0. 0.24047 0. 0.24047 0. 0.24047 0. 0.24047 0. 0.24047 0. 0.24047 0. 0.24047
  • 我现在发现了错误。我在代码的开头写了 allocate c(n),而 n 指的是另一个输入文件已经给出的某个数字。我可以通过将n 替换为1 来解决问题。谢谢你的想法
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-12-10
  • 1970-01-01
  • 2019-05-04
  • 2021-01-31
  • 2011-02-19
  • 1970-01-01
  • 2021-11-25
相关资源
最近更新 更多