fortran中的方位平均值



我正在fortran中处理一个特征值问题。我已经使用Lapack来解决这个问题,并得到特征值和特征向量。这是针对201x101波数(由于对称性,仅为波空间的一半)以及大域(海洋中)中的每个网格点进行的。我正在搜索每个网格点的最大特征值,我不仅想在201x101特征值矩阵中选择绝对最大值,还想在波空间中执行方位角平均,然后选择最大平均值。我正忙于看如何做这件事。

起初我是这样编码的:

波数域

dx=4000.
pi = 4.*atan(1.)
DO m=1,ktot 
    kx(m) = -(2.*pi)/(dx) + ((m-1)*2.*pi)/(100.*dx)
END DO
DO l=1,ltot
    ly(l)= ((l-1)*2.*pi)/(100.*dx)
END DO

径向距离

DO m=1,ktot
DO l=1,ltot
    raddist(m,l)=sqrt(kx(m)**2+ly(l)**2)
END DO
END DO

方位平均值(omegai是我发现的特征值,一个ktot*ltot大矩阵)

DO i=1,ltot-1   
    ind=(raddist(:,i).GE.ly(i).AND.raddist(:,i).LT.ly(i+1))
    length=count(ind)
    WHERE (ind) average_omegai = sum(omegai)/length
END DO

但我似乎在对y(I)和ly(I+1)之间的k方向上的所有波数的水平块求和。我需要在波空间中做一个半圆来求和其间的所有omegai值。有人能帮忙吗?提前感谢!!

首先,位于环内的格点数量不是半径的简单函数。见高斯圆问题http://mathworld.wolfram.com/GausssCircleProblem.html

其次,Fortran 90确实有一个类似于Matlab中find函数的命令。它被称为where

希望能有所帮助。

相关内容

  • 没有找到相关文章

最新更新