Fortran通过指示其名称来选择向量

时间:2013-12-11 18:32:25

标签: arrays fortran

在用F90编码的程序中,我有一组11个向量,每个向量大小为(7),名称从“S1”到“S11”。 我需要能够通过给出后者的名称来从一个向量中读取多个元素。 虽然这个问题看起来很简单,但对于我的初学者级别,我无法找到一种编码方式......

任何帮助?

1 个答案:

答案 0 :(得分:4)

当Fortran程序执行时,它实际上没有可用的信息来根据包含变量名称的字符串的值来标识变量。您可以编写一系列if语句,例如

if (mystr=='S1') x = s1
if (mystr=='S2') x = s2
...

您可以使用select case构造

来实现这一点
select case (mystr)
case ('S1')
    x = s1
case ('S2')
    x = s2
...

但这可能不会吸引更多。

到目前为止,更好的方法是将向量声明为rank-2数组的元素:

real, dimension(11,7) :: s

然后你可以在运行时进行各种计算,以选择你想要的矢量

myrow = an_expression_returning_an_integer_between_1_and_11_inclusive
x = s(myrow,:)