質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

Q&A

解決済

1回答

574閲覧

subroutineでの計算

kawasann

総合スコア3

FORTRAN

FORTRAN(フォートラン)は科学時術計算に向いた手続き型プログラミング言語です。 並列計算の最適化が行いやすい特性上、数値予報および気候モデルなどの大規模な計算を行う分野のスーパーコンピュータで使われています。

0グッド

0クリップ

投稿2020/10/22 14:00

fcの値がコンパイルしても0という値しか出てきません。
どう改善すればいいでしょうか?

C2345678
C
E = 2.05E+5
F = 235.0
c
CLAMBDA = SQRT(3.143.14E/0.6/F)
write(,) 'CLAMBDA=',CLAMBDA
c
call wx( DLAMBDA, RLAMBDA, r, fc)
c
stop
end
c************************************************************
subroutine wx( DLAMBDA, RLAMBDA, r, fc)
DLAMBDA = 1.0
RLAMBDA = 0.0
c
do i = 1, 250
RLAMBDA = RLAMBDA + DLAMBDA
c
r = RLAMBDA/CLAMBDA
if ( r.le.1.0 ) then
fc = (1.0-rr2.0/5.0)/((3.0/2.0)+rr2.0/3.0)F
else
fc = 18.0/65.0/(r
r)F
end if
c
write(
,*) RLAMBDA, fc
c
end do
return
end

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

メインプログラムで変数 r に値が与えられておらず、FORTRAN は初期値を与えないのでゴミが入っている。たまたま今は大きな値になっていて、サブルーチンの if 文では else の方へ行き、分母で大きな r で割るので 0 に近い値が出ているのだと思います。

FORTRAN77 に近い形式で書いていますが、もう少し Fortran90/95 に寄せて、implicit none を付けて変数は全部宣言するようにすれば、この様なミスは減ると思います。余力があれば更に一歩進んで、サブルーチンを module の中にしまうと引数のチェックなどが厳しくなっていいことあるかと思います。。

投稿2020/10/22 15:34

curehoney

総合スコア249

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

kawasann

2020/10/23 00:38

回答ありがとうございます。 再度質問なのですが、メインにはどのように書いた方がいいのでしょうか?
curehoney

2020/10/23 14:28

すみません。私の回答が間違っていました。 結果的に r がおかしいのですが、r に変な値を渡しているからではなく、そもそもサブルーチン wx に CLAMBDA を渡していないためでした。 いまは CLAMBDA が未定義のまま使われているので結果的に r が変な値となって昨日の回答へ続きます。 メインルーチンでやるべきことは、サブルーチンに CLAMBDA を渡すことです。それはサブルーチンの引数に CLAMBDA を加えることとセットでやります。
kawasann

2020/10/26 00:14

サブルーチンの引数にCLAMDAを加えたのですがうまく機能しません。どうすればいいですか?
curehoney

2020/10/27 05:30

質問が漠然としているので、漠然としか答えられませんが、慎重に一つ一つ確かめるしかないでしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問