問題タブ [fortran2003]
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.
gdb - gdb を使用した Fortran での割り当て可能な配列の出力: 未処理のドワーフ式オペコード 0x97
gdb をデバッガーとして使用して、Cygwin と Eclipse で次のコードをデバッグしました。
gdb を実行しているときに、割り当てに続いて割り当て可能な配列「ベクトル」を出力しようとしましたが、最終的には次のようになりました。
Stack Overflow と Google を精査しましたが、問題の核心に迫るものは見つかりませんでした。以下を調べてみましたが、
- http://numericalnoob.blogspot.be/2012/08/fortran-allocatable-arrays-and-pointers.html
- 未処理の矮星式
- Fortran は、gdb の割り当て可能な配列を出力します
しかし、私はまだ問題が何であるか、またはそれを修正する方法を理解していません。派生型の内容を印刷/表示しようとすると、Eclipse (Mars.1 リリース、4.5.1) の gdb から同じ苦情を受けました。私のマシン/コンパイラ/デバッガに関する現在の仕様は次のとおりです。
- Windows 8.1
- gfortran バージョン: GNU Fortran (GCC) 4.9.3
- gdb バージョン: GNU gdb (GDB) 7.8
どんな助けでも大歓迎です。
fortran - Fortran: 複数のプロシージャが同じプロシージャ インターフェイスを共有する方法
次のようなコードがあります
ただし、2 つのサブルーチンsub1
とsub2
両方は、ダミー関数に対して同一のインターフェイスを使用しますf
。これら 2 つのプロシージャが同じインターフェイスを共有するようにするにはどうすればよいですか (たとえば、モジュールを使用して)? プロシージャ ポインタを使用する必要がありますか?
oop - シンプルな物理シミュレーションで意味のあるオブジェクトとそれらの関係を設計する方法
OOP パラダイムを使用して、いくつかの単純なライブ シミュレーションを設計しようとしています。私が直面している問題は、このアプローチの経験が不足しているため、「正しい」オブジェクトとそれらの関係を自然な方法で定義する方法がわからないことです。したがって、私の質問は、より技術的な「これまたはあれをどのように達成できるか」というよりも、ソフトウェア アーキテクチャに近いものです。私がこの演習を行っているのは、まさにこのプログラミング パラダイムについて学ぶためであることに注意してください。
シミュレーションは、空の 2D 空間で粒子間の相互作用 (衝突、引力など) を解決しようとします。私の頭に浮かぶ最初のオブジェクトは ですParticle
。位置、速度、質量などを指定してこのクラスを実装しました。それらを開始したり、位置を更新したり (物理的なルールに従って)、キャンバスに描画したりするメソッドを作成しました。ここで、物理定数またはプロット パラメータ (キャンバス サイズ、ウィンドウ数、1 秒あたりのフレーム数など) を設定するときに問題が発生します。現在、重力やキャンバス サイズなどのグローバル変数を使用しています。これは、非 OOP アプローチで行うことであり、それははるかに機能します。しかし、純粋な OOP がこの粒子間で共有されるパラメーターをどのように処理するかを考えるのに苦労しました。いろいろな選択肢が予想できます。
Canvas
グラフィック パラメーターと、Universe
重力などの定数を使用して、クラスを作成できます。次に、クラスParticle
は拡張クラスになります。しかし、私はどちらから継承する必要がありますか?それでも、クラスは拡張されますが、オブジェクト自体は拡張されません...Universe
別のオプションとして、 andParticle
を独立したクラスとして作成することもできます。次に、一意のユニバース オブジェクトを作成してそれらを関連付けます。各パーティクルにはそのようなユニバース オブジェクトへのポインタが含まれるため、物理パラメータにアクセスできます。このポインターアプローチがOOPであるかどうかはわかりません...
いろいろな方法があることは承知していますが、少なくともアカデミックな観点からは、より直感的で「標準的」な方法があるのではないでしょうか。私が提案するソリューションには含まれていないと思いますので、このタイプの単純なシミュレーションで構造を設計する方法についてのヒントは大歓迎です.
fortran - 暗黙の do ループを使用してファイルに書き込む
Fortran の暗黙の do ループについて助けが必要です。これは私の簡単なコードです:
これはファイルですFirst.txt
:
このプログラムを実行しようとすると、次のメッセージが表示されました。
write ステートメントで整数変数 N と M の名前を保持したい。それらの値を宣言部分からも保持する方法はありますか?
oop - 派生型と拡張型の構築
私は Fortran OOP の初心者であり、親および派生型の初期化でいくつかの問題に直面しています。object
親の型(単語の使いすぎで申し訳ありません..) とその派生型を含む 1 つのモジュールがありcircle
、これには余分なradius
フィールドがあります。
型を初期化する必要がある方法ではobject
、半径に仮引数を使用する必要がありますが、これは避けたいと思います。現時点では私が持っているものはうまくいきますが、将来さらに派生型が必要になった場合、それはあまり実用的ではないように見えるので、これを行うためのより洗練された方法を知りたいと思いobject
ます。
抽象的な親型として使用するobject
と、この意味で役立つと思いますか? または一般的な手順を使用しますが、その方法がよくわかりません。
コードは以下です。
fortran - 警告「ここの基本組み込み関数は整数型または文字型です」
コードに行がありました
私はそれをコンパイルしifort /stand:03
、それは私に警告します
fortran-learning.f90(3): 警告 #6009: Fortran 2003 では、ここでの基本組み込み関数は整数型または文字型であり、各引数は整数型または文字型の初期化 expr でなければならないことが指定されています。[日焼け]
これは何を意味するのでしょうか?
oop - Fortran で行列を派生型として宣言することは可能ですか?
Fortran で行列を派生型として宣言することは可能ですか? たとえば、呼び出しが
有効ですか?inv
のプロシージャとして宣言されている場所はどこfour_by_four_matrix
ですか?
fortran - Fortran での派生型の配列の破棄
gcc 5.2.0 および 6.1.0 を使用して次のコードを実行すると、セグメンテーション違反が発生します。
私が得た結果は、
Intel でコードをコンパイルすると、実行されます。しかし、結果は私が期待したものではありません。
型 b のデストラクタが呼び出されないのはなぜですか?
これらすべてのテストで最適化は無効になっています。