【发布时间】:2020-01-19 09:16:21
【问题描述】:
我实际上想求解一个 n 变量汉密尔顿方程组。在fortran中,要定义一个函数,我们一般会这样做。
function H(x,p) result(s)
real::x,p,s
s=x**2+p**2
end function H
现在,如果我想求解一个 n 变量的汉密尔顿方程,我需要定义一个 n 变量 H(x(i),p(i)),其中 i 从 1 运行到 n。假设 p(i) 是变量,H 是 p(i)^2,对 i 从 1 到 n 求和。
用数组作为输入定义函数的可能方法是什么?不可能每次都手动写 H(x1,x2....x100...)。
【问题讨论】:
-
很快,写
real, dimension(:) :: x,p,s -
你能举一个明确的例子吗?
-
在fortran中,要定义一个函数,我们一般做如下操作。 .... s=x^2+p^2不是那些我们没有的有趣的小帽子符号。
-
@kvantour 也许
elemental会是更好的选择?但这很难说。 -
@HighPerformanceMark 如果
H(x,p)真的那么简单,那么elemental也是我的直接想法。花费一些时间来理解数组函数、副作用等。
标签: function variables fortran user-defined-functions