くだすれFORTRAN(超初心者用)その7
このスレッドは、他のスレッドでは書き込めない超低レベル、
もしくは質問者自身何が何だか分からない質問を勇気を持って書き込むスレッドです.
FORTRAN使いが優しくコメントを返します.
●注意事項
・質問する前にGoogle等の検索サイトで検索しましょう。
・回答者にわかりやすい様に、質問内容はできる限り詳しく書きましょう。
・エラーの場合は起きた状況、環境(OS・コンパイラ・バージョン)、エラーメッセージも詳しく書きましょう。
●前スレ
くだすれFORTRAN(超初心者用)その6
https://mevius.5ch.net/test/read.cgi/tech/1345118280/l50
●過去スレ
くだすれFORTRAN(超初心者用)その5
http://toro.2ch.net/test/read.cgi/tech/1269704830/
くだすれFORTRAN(超初心者用)その4
http://pc12.2ch.net/test/read.cgi/tech/1232789521/
くだすれFORTRAN(超初心者用)その3
http://pc11.2ch.net/test/read.cgi/tech/1196384126/
くだすれFORTRAN(超初心者用)その2
http://pc11.2ch.net/test/read.cgi/tech/1164121236/
くだすれFORTRAN(超初心者用)
http://pc8.2ch.net/test/read.cgi/tech/1138063703/ 前スレが落ちて久しく,誰も立てないようなので勇気を持って立ててみました
結構お世話になってたので,需要はあるはず!と個人的経験による独断で
無ければまあ,落ちるでしょう...
>>1も情報が古いので手を入れました.
後ほど適当な参考リンクを拾ってきます.
ところで,パート7,で良かったでしょうかね? とりあえず公式(チュートリアルあるよ)
https://fortran-lang.org/
処理系は?
PC向けでフリーだとifort(個人使用に限る)が高品質で有名です.
何でも揃ったmklも付いてきます.
自由なソフトウェアではgfortran, g95が有名です
95と名乗っていますが,2003/2008の機能も結構使えます.
学習には十二分でしょう.
CUDAをフルパワーで使えるnvfortran方言が熱いです.
どのバージョンを使えばいいの?
*77は教養として後々読めるようになればいいと思います.
*90/95が広く使われていますが,Obsoleteな機能も沢山残しているので,
初学では戸惑う事が多いでしょう.
*2003は90/95の範囲内で書くとしてもよりよいでしょう.
あと公式に準拠表明していなくても拡張として大体使えます.
リファレンスは2003を参照しましょう.
*2008/2018ではCoarrayFortranやdo concurrent文を取り入れ,構文レベルで並列実行をサポートします.
綺麗なコードで非常に高レベルなプログラミングが可能に.
必要/興味のある人は次のステップとしてどうぞ.
*CUDAFortran
NVIDIAによる方言です.おうちでも分野によってはHPCができる時代です!
95以降の経験があれば大丈夫です.活発でサポートもよいです.
未熟者なので,おかしいところなどツッコミよろしくおねがいします 親しみやすそうなリソースを探し中、途中経過を早漏…
python(numpy)/fortran90 rosetta stone
https://www.fortran90.org/src/rosetta.html
numpyはfortranのラッパとして始まったので、まあロゼッタストーンと言えるんだろうかね
ちと文法が古いが…
俺はpython/scipyからステップアップ目指して始めた層なんで、そういう人は眺めるだけで掴めそう
ということで推薦 数値の書式についての質問です
A = 0.01
とした時、変数Aをファイル名にしようとすると
hoge0.1E-03.dat
のように書き込まれますが、
hoge1.0E-02.dat
とすることは可能でしょうか?
と出力されますが,これを
ans = 0.1E-03
と表記させる方法ありますか? 書式指定でeの代わりにesを指定すると1≦仮数部<10になる
Fortranの入出力書式はいろいろあるから、後は自分で調べてくれ Do loop 中に
if (hoge) then
処理1
exit
elseif (hogehoge)
処理2
cycle
Endif
と言った同じ処理内容が100近くいくつもあるので、if -endif部分をサブルーチン化したいなと思ったのですが、exit やcycleが入ってると怒られます。
何か他にいい方法がありますか? >>9
そんなことはできないので諦めろ
むしろfortran使うなよ… >>5
whereとかall/someとかmaskとかめっちゃ便利そう!
学部教養用に広く使われているであろう某90/95数値解析本やってるけど、普通にループで回してやがる
まあアルゴリズムの理解のため、意図的にそうしてるんだろうと思うけど isoやcの型を一貫性なくuseしてたり、構造体を共有するなら必要なら型モジュールが必要なのは分かるけど
ひたすらdp=kind(0.d0)みたいな基本型かつ命名慣習のあるもので数値計算しててモジュールに集めてuseするべきなのかな? Fortran の詳しい参考書で何かあります?
森北出版の青本が一番良さげだけど、細かい機能解説載ってないのよね。
一体どこ見ればええんやろ ろくな書籍がないのでメーカー製コンパイラのマニュアルを見るのが無難(探せばネット上で見つかる)
洋書を買う気があるならModern Fortran explainedとか 2008以降でAmazon検索した事あるけど30冊〜くらい英書は引っかかったと思う
だいたい学術出版社なので万超えるが
あとcoarrayとかcuda fortranとか狙い撃ちしてるので教科書的でないのが多いかと
日本語でも数冊引っかかったと思う、見送ったのであんまりよろしくない感じかもしれん
遠い記憶なので気になったら調べ直してね >>13
基本型までモジュールにまとめる利点は一斉に精度切り替えられるくらいじゃない
そんなケースでこそサフィックスが_dpなのにdpじゃないとか紛らわしいし
ポータビリティ的には0.0d0から環境ローカルの型を取得するのは望ましいかもしれんが、個人的には環境によって変な結果が出る方が恐ろしい
どうせuseするなら明示的にiso_fortran_envのrealnn型を使いたい、対応してないなら落ちてくれた方がマシ
もしかして桁落ちするかもってところに_wp(wideのつもり)とか書いてseleted_real_kindのパラメータ振って検証したり、もしかして桁落ちするかもってところに_wp(wideのつもり)とか書いて定義を変えるとかはありじゃないかな module変数を保存したい場合はsaveを使うけどtype::クラス名のメンバ変数にはsave使用不可
fortranでメンバ変数の値を保存したい(あるインスタンスで行った変更が次に生成したインスタンスにも初期値的に引き継がれるようにしたい)時ってどうすればいいんでしょう? fortranでインラインアセンブラみたいに振る舞いたいのですがどうすればいいのです?
初心者ですいません
ネットにあるようでしたら調べに行きます ヤッホー!、Fortran,ラン, ラン♪ ヤッホ, フォートー ランのラン, ヤッホホ!