問題タブ [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.
function - Fortran ポリモーフィズム、関数、割り当て
私は Fortran を使用した OOP の初心者であり、多相変数を引数として処理するプロシージャを使用してプログラムを作成しようとしています。私の元のコードははるかに複雑ですが (多くのプロシージャ、いくつかの派生型など)、問題の単純な例を分離できます。たとえば、ポリモーフィック変数をコピーし、このコピーをわずかに変更するプロシージャがあります。
サブルーチンを使用して、テスト プログラムを正常に作成できました。
これは、予想される結果とメモリの割り当て/割り当て解除の両方に関してうまく機能します。
しかし、同じ仕事をする Fortran関数を動作させるために、私は何日も戦ってきました。
サブルーチンと同様の方法で定義された関数 (後述) は、単純に次のように使用できないようです。
私のgfortranコンパイラ(v5.0.0)は文句を言います:
私はあちこちで、実際にそのような割り当てが私のコンパイラでサポートされていないことを読みました。それを待って、独自の代入演算子 (=) を定義して回避しようとしました。次のコードが機能します。
実際、 のコピーがx
として作成されるという意味で機能しy
ます。ただし、この単純なテスト プログラム (私はOS X でInstrumentソフトウェアを使用しています) のメモリ バジェットを調べると、終了前に一部のメモリが割り当て解除されていないようです。コピー関数と代入サブルーチンの両方がメモリを割り当て、1 つのオカレンスのみを解放し、1 つを割り当てたままにしていると思われます。
はるかに複雑なコードでこのようなルーチンを何度も使用するつもりなので、メモリの割り当て/割り当て解除について本当に心配しています。もちろんサブルーチン版のプログラムでもいいのですが、方法があれば関数版の方がいいと思います。
このような問題に対処する方法はありますか?
string - Fortran での整数リストのファイルの読み取り
各行が整数のリストである Fortran プログラムでデータ ファイルを読みたいと思います。
各行には、指定された文字 (スペース、コンマなど) で区切られた可変数の整数があります。
サンプル入力:
行を分割するための解決策がありますが、これはかなり複雑です。
私の質問:
Fortran でこれを行う簡単な方法はありますか? つまり、読み取る値の数が不明な値のリストを読み取ることです。上記のコードはぎこちなく見え、ファイル I/O は Fortran では簡単ではありません。
また、メイン プログラムは、不明で無制限の長さの行を読み取る必要があります。行がすべて同じ長さであると仮定すると、行を読み取ることができますが (以下を参照)、無制限の行を読み取る方法がわかりません。Fortran 2003 のストリーム機能が必要になると思いますが、書き方がわかりません。
現在のプログラムは次のとおりです。
質問に関するコメント: 通常、これは Python で行います。たとえば、行の変換は と同じくらい簡単でa = [int(x) for x in line.split(",")]
、ファイルの読み取りも同様にほとんど簡単な作業です。そして、Fortran DLL を使用して「実際の」コンピューティングを行います。ただし、ファイル I/O に関する Fortran のスキルを向上させたいと考えています。
fortran - Fortran 2003-2008 で GETCWD() に代わるものはありますか
GNU Fortran コンパイラの GNU 拡張機能GETCWD()
は、現在の作業ディレクトリを取得するサブルーチンを提供します。ただし、私のコードはコンパイラにも移植できる必要があり、ifort
F2003nagfor
の機能を使用しています。
GETCWD()
では、 F2003 以降の代替手段はありますか?
私はここに標準を持っていますが、かなり大きいので、しばらく試してみましたが、有用なものは何も見つかりませんでした...
io - 名前リスト読み取り/書き込みでの割り当て可能/想定サイズ配列の使用
VS2012 と Intel Visual Fortran 2015 を使用しています。
https://software.intel.com/en-us/forums/topic/269585によると、名前リストの読み取りと書き込みで割り当て可能な想定サイズの配列を使用できるようになりました。ただし、「namelist-group-object は想定サイズの配列であってはなりません」というエラーが引き続き表示されます。
コード例:
F2003 セマンティクスを有効にしました。
私は何が欠けていますか?
fortran - Fortran 2003 の定数関数ポインター配列
親愛なる Fortran プログラマーへ
Fortran 2003 以降で定数 (パラメータ) プロシージャ ポインタ配列を宣言できるかどうか、誰にもわかりませんか?
以下に示すように、入力整数引数に応じて異なる関数を呼び出すスイッチャー関数があります。プロシージャ ポインタの配列 (派生でラップされた) 型を使用します。この配列は、使用する前に実行時init()
にルーチンを介して初期化する必要があります。コンパイル中にすでにこの配列を初期化し、そのような初期化ルーチンの必要性を回避する方法はありますか? 実行中に値が変化しないため、として定義することもできます。parameter