• 締切
  • 困ってます

C++言語のプログラムをfortranに変換

  • 質問No.7094085
  • 閲覧数393
  • ありがとう数2
  • 気になる数0
  • 回答数2
  • コメント数0

お礼率 66% (6/9)

const int N = 100;
const double q = 10.0, dt = 0.00001, Dm = 30.0, t0 = 2.0, K = 1.0, pi = 3.141592, f = 3.0;
double C[N], dC[N];
double dx = q/N;
for (int i = 0; i < N; ++i) C[i] = 0; // 初期条件
for (double t = 0; t < t0; t += dt) {
 C[0] = 0; // 境界条件1
 C[N - 1] = K*sin(2*pi*f*t); // 境界条件2
 for (int i = 1; i < N - 1; ++i) dC[i] = (Dm*(C[i + 1] - 2*C[i] + C[i - 1])/(dx*dx))*dt;
 for (int i = 1; i < N - 1; ++i) C[i] += dC[i];
}
for (int i = 0; i < N; ++i) cout << C[i] << endl; // t = t0
このプログラムをfortranに変換できる方いますか?

回答 (全2件)

  • 回答No.2

ベストアンサー率 59% (355/599)

だいたい,このくらいです。
処理系によっては,配列の添字は1以上で,0はダメかもしれません。

INTEGER N,IT
DOUBLE Q,dt,DM,T0,K,PI,F,dx
DATA N/100/,Q/10/,dt/0.00001/,DM/30/,T0/2.0/,K/1.0/,pi/3.141592,/F/3.0/
DOUBLE C(100),DC(100)
dx=Q/N
* 初期条件
DO 10 I=1,N-1
C(I)=0
10 CONTINUE

DO 20 IT=1,T0/dt-1
t=IT*dt
C(0)=0
* 境界条件
C(N-1)=K*sin(2.0*pi*f*t)
* 境界条件2

DO 30 I=1,N-2
dC(I) = (Dm*(C(I + 1) - 2*C(I) + C(I - 1))/(dx*dx))*dt
30 CONTINUE

DO 40 I=1,N-2
C(I)=C(I)+ dC(I)
40 CONTINUE

20 CONTINUE

DO 60 I=0,N-1
write(*,*) C(I)
60 CONTINUE
* t=T0
補足コメント
te107484p

お礼率 66% (6/9)

もう。。。なんて言ったらよいか。。。本当にありがとうございます。
これを基本ベースにして様々な応用をしていきたいと思います!!!
投稿日時:2011/10/26 14:20
お礼コメント
te107484p

お礼率 66% (6/9)

返信ありがとうございます!!!
投稿日時:2011/11/10 12:21
  • 回答No.1

ベストアンサー率 18% (742/4027)

はい!(元気よく手を挙げる)
補足コメント
te107484p

お礼率 66% (6/9)

申し訳ないのですが。。。お時間のある時にでもしていただきたいのですが。。。

プログラミング詳しいですね(>_<)
投稿日時:2011/10/25 20:18
結果を報告する
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,600万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A

その他の関連するQ&Aをキーワードで探す

ピックアップ

ページ先頭へ