此代码的含义(可能在FORTRAN 90中)

时间:2018-04-16 06:50:45

标签: fortran fortran90

我在我们使用的一个框架中找到了以下代码:

Rem = max (50.0, gm*diamj(i)/vism)

我正在寻找Rem的结果。 gm,diamj,vism应该是其他公式或字母数字名称。

2 个答案:

答案 0 :(得分:2)

这是相当简单的:它只是从一个简单的公式计算Rem,然后使用max将结果限制为至少50的值,即

Rem = gm*diamj(i)/vism
if (Rem < 50.0)
    Rem = 50.0

答案 1 :(得分:1)

an answer给出了一个合理的想法,即问题中的线条意味着什么。但是,要理解的一件重要事情是,通常不可能在没有进一步背景的情况下隔离各行代码。

也就是说,从这一行你无法分辨将会发生什么

虽然有一个内部函数max返回两个参数的最大值,但我们不知道正在使用这个函数。

考虑案例

function max(a,b)
   intrinsic min
   max = min(a,b)
end function max

external max
Rem = max(1., 2.)
print*, Rem
end

这里使用了一个名为max的外部函数,而不是内在函数。

还有

type max
  real a,b
end type
type(max) Rem
Rem = max(1., 2.)
print*, Rem
end

这里使用了名为max的派生类型的默认结构构造函数。 max甚至可能是一般的,也可能是其他兴奋的特征。

现在,即使max是内在函数,我们也不理解问题中的第二个参数:diamj可以是数组或函数。参见

function diamj(i)
  error stop
end function

Rem = max(1.,diamj(2))
print*, Rem
end

我们可以肯定地说,max不是一个数组。但是,还有

integer :: max(2,2)=-1
Rem = max(1,2)
print*, Rem
end

非常不同
Rem = max(1,2)
print*, Rem
end

可以说你不应该做任何这些事情,但你也不应该假设其他人没有。