これが他の言語を要求するのを見たことがありますが、Fortranが配列をいかにうまく処理できるかがわかったところで、ループなしでこれを行う簡単な方法があるのではないかと思いました。
現在、私は「最も近い隣人」を見て3D配列を検索し、それらに「n」の文字が含まれているかどうかを確認しています。この値が見つかるたびに、何らかのclusterLabel割り当てを実行します(これはこの質問には関係ありません)。 )
私はif(lastNeighArray.eq."n") then...<rest of code>
を使用したかったのですが、明らかな理由により、配列を値に対してチェックするのは好きではありません。また、各要素を1つずつチェックしたいのですが、lastNeighArray(:)
を使用するのも好きではありません。 whereループ内にcaseステートメントがあり、エラー_WHERE statements and constructs must not be nested.
_が発生するため、where(lastNeighArray.eq."n")
は機能しません
だから私は少し行き詰まっています。私が本当に欲しいのはwhen(lastNeighArray.eq."n")
のようなものですが、それは存在しません。
any
とforall
も調べましたが、それらは正しい選択のようには見えません。
ANYは実際には正しい選択です
if ( ANY( lastNeighArray=="n" ) ) then
配列全体にその値を含める場合は、ALLもあります。