問題タブ [fortran95]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
fortran - Fortran でディレクトリの内容を一覧表示する
Fortran 95 でディレクトリの内容を取得するにはどうすればよいですか?
fortran - パラメーターが長さを定義しているサブルーチン呼び出しにインラインで文字列を渡すと、予期しない結果が生じる
このコードが予期しない動作をすることがわかりました
このコードは、コンパイラに依存するガベージを出力します。
問題は、文字列引数を使用してルーチンをジャンプしているという事実でありlen=*
、文字列引数に指定された長さのルーチンに渡されます。
フードの下で正確に何が起こっているのですか? また、この動作は標準のどこに記述されていますか? 文字ルーチンの引数の長さを指定しないようにする必要がありますか?
fortran95 - 配列負のインデックスの Fortran でのデバッグ エラー
ここにテストプログラムがあります:
indpが負の数であるため、8行目では間違っています。しかし、コンパイル時に「ifort」または「gfortran」を使用すると、どちらもこのエラーを見つけることができません。valgrind を使用してこのプログラムをデバッグしても、このエラーは見つかりません。この種の問題を見つけるアイデアはありますか?
fortran - Fortranでのサブルーチンの呼び出し(セグメンテーション違反)
次のコードは、Linuxシステムでpgf90を使用してコンパイルするとセグメンテーションエラーが発生しますが、WindowsでIntelVisualFORTRANを使用すると正常に実行されます。
これについて何か説明はありますか?
compiler-errors - readステートメントの使用中にエラーが発生しました
私は現在、入力ファイルを読み取るためのFORTRANプログラムに取り組んでいます。入力ファイルを読み取ると、ファイルの最初の行には、ファイル内の行列の量を表す整数が含まれます。2行目には、各行列の行と列の数が含まれています。残りの行には、行列自体が含まれています。プログラムは、各行列を読み込んで出力ファイルに書き込み、すべての行列の合計を計算します。マトリックスデータを読み取るとき、私はこれらの2つのエラーを受け取り続けます
コード:READ(1、*、END = 99)(DIMENSIONS(I)、I = 1,2)
エラー:定数と式は読み取り専用I/Oリストでは無効です。
エラー2:このラベルは未定義です[99]
私のコードは次のとおりです。
fortran - Fortran:最大および最小の整数
Fortranは私にとってまったく新しいものですが、次の問題を解決するのを誰かが助けてくれますか?私のPCで、すべての整数の種類番号と、各種類番号の最大値と最小値を調べたいと思います。私は以下にリストされたコードを持っています:
私が得る整数の種類の数は:1、2、4、8です。
各種類の数値の最大の整数が同じであるのはなぜ
2147483647
ですか。そして、最小の整数の組み込み関数はありますか?サブルーチンが呼び出されたときに整数の種類番号を保持するにはどうすればよい
rang
ですか?それが最大の整数の鍵だと思います。
oop - Fortran の異なるモジュールで定義された型の接続
FORTRAN でかなり小さな pde 解決アプリケーションを作成しており、OOP を使用しようとしています。現在、いくつかのモジュールがあり、それらのいくつかは、対応する内部プロシージャで型を定義しています。
問題は、あるモジュールが別のモジュール内で定義された型で動作し、後のモデルも前者の型で動作する場合、どうすればよいですか? 例を挙げます。
たとえば、2 つのモジュールがあり、1 つはタイプMeshを定義し、もう 1 つはタイプNodeVariableを定義します。ここで、各NodeVariableを解決対象のメッシュに関連付けたいのでtype(Mesh) :: mesh
、タイプの定義にフィールドを追加します。これまでのところ、タイプmeshuse module-mesh
の定義にアクセスするために書くことは問題ありません。しかし、定義された変数をメッシュに認識させたいので、フィールドとして宣言し、その場でメッシュに変数を追加する手順を追加します。しかし、別のuseステートメントを使用する余裕がないため、今は行き詰まっています。これにより、モジュールがそれ自体を使用するようになり、すべてがクラッシュします。解決?type(NodeVariable), allocatable :: var(:)
syntax - これらのFortran(90)ステートメントは何をしますか?
次のコードに遭遇しましたが、理解できません。それは何をするためのものか?
fortran - Fortran 行列生成コード エラー
この fortran コードは、単純な行列テーブルからデータを txt ファイルにコピーし、各行と列の以前の成績に基づいて成績と平均を計算することになっています。なんらかの理由で、成績や平均を印刷することができません。空白または 0 や星が付いて表示されます。txt ファイルからマトリックス テーブルを出力した後、実行時にプログラムがクラッシュします。エラーはアクセス違反であると表示されます。あまり役に立ちません。これまでの私のコードは次のとおりです。
in1.txt ファイルの内容は次のとおりです。
fortran - OOP Fortran: インテント (IN) 変数へのポインターの保存
Fortran 2003 との互換性を維持しながら、可能な限り OOP の哲学に従って編成したい Fortran モジュールがあります。一部のデータで動作します。この関数 do_F はこれらの一時バッファーを使用しますが、いくつかの補助型にも依存します。
バッファを型に入れ、必要に応じて初期化/解放する必要があることは明らかです。ただし、do_F の各呼び出しには複数の引数が必要なため、どの設計戦略を使用するのが最適かは確信しています。
より具体的には、次の実装を検討してください。
do_F が呼び出されるたびに多数の型を渡す
/li>do_F が必要とする型へのポインターを保存します。
/li>
私の具体的な質問は次のとおりです。
- 実装 #2 は有効ですか? PGIコンパイラはそれについて文句を言いませんでしたが、関数が戻った後、intent(IN)が適切に定義されなくなったと聞きました
- このスキームをポインターで使用すると、パフォーマンスが低下しますか? これらの aux_ptr に書き込んでいない場合でも、コンパイラはケース 1 と同様にコードを最適化できますか?
いくつかのメモ:
- 関数 do_F は最大 100 回呼び出され、各呼び出しには数分かかり、大きな配列を操作します。
- do_F とは別に、同じデータを操作し、同じ補助変数を使用する do_G および do_H 関数もあります。そのため、そもそも関数に渡す変数の数を減らしたいと考えていました。
- すべての aux 変数を 1 つの型にまとめたくはありません。なぜなら、それらは大規模な HPC コードの残りの部分で使用されるからです。
ありがとう!