問題タブ [fortran90]

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.

0 投票する
1 に答える
3463 参照

fortran - FFTW:リアルからコンプレックス、コンプレックスからリアルの2Dトランスフォームのトラブル

タイトルにあるように、私はFFTW(バージョン3.2.2)とFortran 90/95を使用して、実データ(実際には乱数のフィールド)の2DFFTを実行しています。私は前進のステップが機能していると思います(少なくとも私はいくつかの出力を得ています)。ただし、IFFTを実行してすべてをチェックし、元の入力を再構築できるかどうかを確認したいと思いました。残念ながら、complex to realルーチンを呼び出すと、何も起こらず、エラー出力も得られないため、少し混乱しています。コードスニペットは次のとおりです。

上記の順方向ステップは機能しているようですが(r2c)、逆方向ステップは機能していないようです。u配列とrecov配列を区別してこれを確認しましたが、最終的にはゼロではなくなりました。さらに、recov配列の最大値と最小値は両方ともゼロでした。これは、何も変更されていないことを示しているようです。

私はFFTWのドキュメントを調べ、次のページhttp://www.fftw.org/fftw3_doc/Fortran-Examples.html#Fortran-Examplesに基づいて実装しました。問題がインデックス作成に関連しているのかどうか疑問に思っています。少なくとも、それが私が傾いている方向です。とにかく、誰かが助けを提供できれば、それは素晴らしいことです!

ありがとう!

0 投票する
3 に答える
585 参照

fortran - Fortran から C の open() 関数を呼び出すときのファイル許可が正しくない

C 関数を呼び出し、open() を使用してファイルを開く Fortran プログラムがあります。

main.f90:

test.c:

私は次のようにコンパイルします:

プログラムを実行すると、ファイル test.txt が作成されますが、権限が正しくありません。

あるべきだったとき

この関数を別の C プログラムから呼び出すと、正常に動作します。誰かが何が間違っているのか指摘できますか?

仕様: 64 ビット Linux GNU Fortran (SUSE Linux) 4.5.0、GCC (SUSE Linux) 4.5.0

ありがとう、クシティジ

0 投票する
1 に答える
6336 参照

fortran - Fortran: 行から一度に 1 つの値を読み取る

FORTRAN を使用して ASCII テキスト ファイルからデータを読み込みます。ファイルには 1 行に複数のデータ値が含まれていますが、1 行の値の数は一定ではありません。

通常、read ステートメントの後、Fortran は次の行に移動します。私ができるようにしたいのは、一度に 1 つのデータ値を読み取ることです。行末に達した場合は、次の行を読み続ける必要があります。これは可能ですか?

0 投票する
3 に答える
7633 参照

fortran - Fortran90で複数のファイルを開く

abc25000までのファイル名で10,000個のファイルを開きabc35000、各ファイルにいくつかの情報をコピーしたいと思います。私が書いたコードは以下の通りです:

終わり

このコードは、から始まるファイルを生成することになっていますabc24000abc35000、途中で停止します。

ファイルtest-openFile.f90の17行目(ユニット= 26021、ファイル='')

Fortranランタイムエラー:開いているファイルが多すぎます

上記のコードを修正するにはどうすればよいですか?

0 投票する
1 に答える
1546 参照

fortran - write-statement が含まれている場合に関数呼び出しが停止/ハングするが、コンパイル中に特定のライブラリとリンクしている場合のみ

これが私の最小限の例です:

シンプルにコンパイルする場合

または Slatec のようなライブラリを含める場合

それは正常に動作します。

ただし、ライブラリを -lblas の -llapack に変更すると、実行時に testfunc() を呼び出すときにプログラムがハングします。ここでのサンプル コードでは、実際にはこれらのライブラリを使用していないことに注意してください。私が最後に見たのは「メインからの書き込み」であり、何も起こらず、制御を取り戻すにはCTRL-Cを押す必要があります。ハングすると、プロセスは CPU サイクルを使用していないように見えます。

奇妙なことに、testfunc() 内の書き込みステートメントをコメントアウトすると、常に機能します。

だから私の質問は本当に: これらのライブラリは本当に自分の関数内での印刷を防ぐことができますか? なんで?どのように?

(私は実際に、lapack と blas を必要とするより大きなプログラムに取り組んでいるので、それらへのリンクをやめることはできません。)

0 投票する
3 に答える
442 参照

linux - ロングラン中のプログラム失速

修理済み:

うーん、これは少しばかげているようです。top が正しく表示されていないことが判明し、プログラムは実際には引き続き実行されます。CPU 時間が大きくなりすぎて表示できなくなったのではないでしょうか。いずれにせよ、プログラムは正常に動作しているようで、この質問全体は意味がありませんでした。

ありがとう(そしてばかげた質問でごめんなさい)。

元の質問:

Ubuntu サーバー 10.04.3 を実行しているコンピューターでシミュレーションを実行しています。短い実行 (<24 時間) は正常に実行されますが、長い実行は最終的に失速します。ストールとは、プログラムが CPU 時間を取得できなくなったものの、すべての情報をメモリ内に保持していることを意味します。これらのシミュレーションを実行するために、プログラムを SSH および nohup し、出力をファイルにパイプします。

その他の情報:

システムの RAM が不足しているわけではありません。プログラムは、完了するまでハード ドライブの読み取りまたは書き込みを行う必要はありません。計算は完全にメモリ内で行われます。停止後も PID があるため、プログラムは強制終了されません。私はopenmpを使用していますが、プロセスの最大数を増やし、最大時間は無制限です。ARPACK fortran ライブラリを使用して、行列の最大固有値を見つけています。

この動作の原因や、現在停止しているプログラムを再開する方法について何か考えはありますか?

ありがとう

0 投票する
3 に答える
1631 参照

fortran - Fortran で配列へのスカラー引数を持ち上げない

Fortran がスカラー式を式では配列にプロモートするのに、プロシージャの引数としてプロモートしないのはなぜですか? 特に、標準化団体はなぜこの設計上の決定を下したのでしょうか? あいまいさだけが原因で、プロシージャをオーバーロードする必要がありますか? その状況でのエラー メッセージは別のアプローチになるでしょうか?

たとえば、次のコードでは、最後のステートメントx = foo(7)が GFortran エラーを生成しますError: Rank mismatch in argument 'a' at (1) (1 and 0)

この質問では、配列の代入によってスカラー値のソースが配列のターゲットにプロモートされる理由について尋ねるべきでした。配列関数とは異なります。ただし、これは単に便利な特殊なケースだと思います。以下の物乞いのキャップで感謝して受け取ったコメント。

0 投票する
1 に答える
423 参照

fortran - openステートメントのbuffered='yes'での構文エラー

私は1行がこのように書かれているFortranプログラムを書いています

私は定義しました

それでもエラーが発生します

0 投票する
4 に答える
21099 参照

gcc - エラー: (1) の名前に無効な文字があります

FORTRAN でいくつかの .h ファイルと一緒に Fortran ファイルをコンパイルしようとしています。.h ファイルには、変数の共通ブロックの定義が含まれています。Fortran でコンパイルすると、次のエラーが発生します。

このエラーが発生するコードは、

ここで私の質問は、この「1」はエラーの場所を指していますか?

このエラーが指摘するコード行は、

また、継続の使用方法に何か問題がありますか。このファイルのコンパイルには gfortran を使用しています。

0 投票する
1 に答える
237 参照

fortran - FORTRAN プログラムのビルドでエラーが発生する

これは、Fortran プログラムの私の 1 つのサブルーチンです。

しかし、私は..のようなエラーが発生しています