1

限られた方法でしか説明できない問題を解決するには、いくつかの指針が必要です。上級科学者から f77 で書かれたコードをもらいました。所有権の問題について公開フォーラムでコードを提供することはできません。大きくはありませんが (750 行)、暗黙の宣言と goto ステートメントがあるため、非常に読みにくくなっています。したがって、エラーの原因を見つけるのに苦労しています。問題は次のとおりです。

ifort でコードをコンパイルすると、正常に実行され、適切な数値が得られますが、gfortran でコンパイルすると、正常にコンパイルされますが、正しい答えが得られません。このコードは、複雑なプラズマ物理問題の数値ルート ファインダーです。ifort でコンパイルされたバージョンはルートを見つけますが、gfortran でコンパイルされたバージョンはルートを見つけることができません。

解決策を探す方法についてのアイデアはありますか? 実際の問題が見つかったら、質問を更新して実際の問題を反映させます。

4

1 に答える 1

1

調査する必要があるいくつかのこと。必ずしも私が試す順序ではありません。

  1. コンパイラを使用して、特に配列境界 (実行時の信頼性のため) とサブルーチン引数の一致を含め、コンパイラがチェックできるすべてをチェックします。
  2. 初期化されていない変数の使用。
  3. 実変数、複素変数、整数変数の種類。コンパイラ (またはコンパイル オプション) によって、デフォルトで異なる種類が設定される場合があります。
  4. 共通ブロック、等価性、エントリ、... その他の非推奨または廃止された機能。

最後に、すぐに調査する必要はないかもしれませんが、遅かれ早かれ (正しい選択) または後で (間違った選択)、IMPLICIT NONEすべてのスコープで宣言し、すべてのエンティティに対して明示的な宣言を記述するように努力する必要があります。

于 2013-09-13T08:49:37.483 に答える