2017-10-20 10 views
-2

私は一連のサブルーチンを実行するfortranプログラムを持っています。最初のものは、.txtファイルからデータの読み込みを読み込みます。すべての変数は、プログラムと各サブルーチンの 'インクルード'に含まれている別のファイルで定義されています。さまざまなサブルーチン間で変数を渡すのに最適な方法を教えてください。fortran 08の​​ 'グローバル変数'ですか?

+2

適切な派生型を使用して、引数リストで変数を渡します。グローバル変数は悪い考えです。 –

+0

[ask]をお読みください。あなたは唯一のコードを表示する必要があります。あなたが何をしているのか、何をしたいのか、私には分かりません。 [mcve]も参照してください。 –

+1

つまり、サブルーチンで変更できる変数はありますか?または定数ですか?あなたの問題は何ですか?問題設計?またはそれをコード化する方法?私たちのコードを見たいですか?はいの場合は、まずコードを見る必要があります。また、[ツアー]を取る、それは有用である、正直言って、私はちょうどジャークであるためにみんなをバッチンではないです。 –

答えて

2

COMMONブロックをモジュールに変換し、実際に使用する変数のみをuse some_module, only: var1, var3, var6でインポートすることを検討してください。いろいろな理由から、includeファイルは悪い考えです。あなたがそれらを変更したときに、それが依存しているソースファイルを再構築するためにmakeを起動しないからです。他のひどいF77ismでそれらを残すことがベスト...

+3

* "それらは再構築するためにトリガーされません" *あなたはmoern buidシステムを使用しないか、依存関係リストを正しく設定しないように見えます。 –

+0

おかげで助けのために、ここで(すべてのイニシャライズ後の)メインプログラムの最初の部分なし 暗黙の が!「variables.f08」 コールのread_data 印刷*を含める 変数を含める 'プログラムshear_3d'があり、 "データを読む" コールderive_variables(NX) 印刷*、 "派生変数" コールinit_matrices 印刷*、 "初期化行列" コールinitial_conditionsの ' と変数ファイルは、このようなものです: '整数I、J 、k、t 0123ここでコードを読み取ることが完全に不可能である@TomJ整数NX、NY、ネタ、NZ、 整数read_nxをNT、read_nyは、100本の程度の線 – TomJ

+2

と ' dtは、 倍精度DX、DETA、DZをread_nz。関連する情報を含めるためにあなたの質問を編集してください。本当にそれらのリンクを読んでください。 –