4

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

! 方位平均 (ωi は私が見つけた固有値、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

しかし、ly(i) と ly(i+1) の間の k 方向のすべての波数の水平方向のチャンクを合計しているようです。中間のすべてのオメガ値を合計するために、波空間で半円を作成する必要があります。誰でもこれを手伝ってもらえますか?前もって感謝します!!

4

1 に答える 1

0

まず、リング内にある格子点の数は、半径の単純な関数ではありません。ガウス円の問題を 参照してください http://mathworld.wolfram.com/GausssCircleProblem.html

find次に、Fortran 90 には、Matlabの関数に似たコマンドがあります。といいwhereます。

それが役立つことを願っています。

于 2015-04-16T05:55:05.213 に答える