首页 > 解决方案 > 如何在 Fortran 的代码中直接用“许多数字”设置向量的值?

问题描述

a这个问题可能看起来很尴尬,因为我们可以从外部文件而不是代码中读取向量的值(例如,下面)。下面是我尝试过的,但我想 Fortran 不能在一行中包含这么多字符。另外,恐怕该行不能“无休止地”分成几行。

Program main
  implicit none
  REAL(8),dimension(1500)::a = (/, , , , ... ,/)
End program

该变量a有 1500 个元素,我希望这些值直接包含在代码中。所以我不使用read()命令。我们是否需要手动将这条长线分成几行?

标签: fortran

解决方案


作为替代方案,您可以编写许多短行来写入数组的一小部分。

例子:

program main
  implicit none
  integer, parameter :: rk = selected_real_kind(15)
  real(kind=rk),dimension(30)::a

  a(1:3) = [0.25733572697493723_rk, 0.03225738644740617_rk, 0.5414564639489547_rk]
  a(4:6) = [0.19327589136191725_rk, 0.49311615953762833_rk, 0.6433831692863491_rk]
  a(7:9) = [0.6859277892633444_rk, 0.641803334817996_rk, 0.2699446411426851_rk]
  a(10:12) = [0.3734332997800017_rk, 0.6383656815065594_rk, 0.6497673624736408_rk]
  a(13:15) = [0.698560401584833_rk, 0.8550812707577452_rk, 0.2429165361432739_rk]
  a(16:18) = [0.8083661742072051_rk, 0.21096311180256644_rk, 0.4482114317600794_rk]
  a(19:21) = [0.4254204225869541_rk, 0.30299480014092506_rk, 0.18464410073699633_rk]
  a(22:24) = [0.2020883904853492_rk, 0.793469769164798_rk, 0.010725578232863464_rk]
  a(25:27) = [0.597774960426935_rk, 0.23743374381177218_rk, 0.6515133874064444_rk]
  a(28:30) = [0.9372245495970037_rk, 0.22530033395862548_rk, 0.9991480087266069_rk]

end program

该示例故意更短。


推荐阅读