13

動的配列を割り当てるために使用しようとしましforallたが、gfortran はそれを好みませんでした。また、ブロック内でwriteステートメントが禁止されていることもわかりました。ステートメントも禁止されているのではないかと思います。forallread

forallブロック内で許可されていないその他の機能/操作は?

do順序が重要でない場合にループを置き換えること以外に、この構造は正確には何のためにあるのでしょうか? 特に操作の順序が重要ではない場合を示すことで、コーディングがより読みやすくエレガントになると思いましたが、 内で実行できる操作はかなり制限されているようforallです。

これらの制限の理由は何ですか?つまり、ユーザーが混乱するのを防ぐ/防止するものは何ですか? を使用することをお勧めしますforallか? もしそうなら、どのような目的で?

現在、私が取り組んでいるコードにはforallブロックが 1 つしかなく、それをすべてdoループに変換すると、ネストされた 4 つのループができてしまいます。どちらの方法が良いですか?

4

2 に答える 2

8

Forallconstruct は非常に制限的であることが証明されており、ほとんどの場合、配列操作にのみ役立ちます。正確な制限については、IBM Fortran - FORALLを参照してください。do concurrentFortran 2008の構文は、より制限が緩いものです。ここでは、 readandwriteステートメントも使用できます。Intel Fortran-DO CONCURRENTおよびFortran 2008 の新機能を参照してください。

于 2011-12-22T11:01:09.017 に答える