• 締切済み

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

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に変換できる方いますか?

みんなの回答

  • FT56F001
  • ベストアンサー率59% (355/599)
回答No.2

だいたい,このくらいです。 処理系によっては,配列の添字は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
質問者

お礼

返信ありがとうございます!!!

te107484p
質問者

補足

もう。。。なんて言ったらよいか。。。本当にありがとうございます。 これを基本ベースにして様々な応用をしていきたいと思います!!!

  • joqr
  • ベストアンサー率18% (742/4026)
回答No.1

はい!(元気よく手を挙げる)

te107484p
質問者

補足

申し訳ないのですが。。。お時間のある時にでもしていただきたいのですが。。。 プログラミング詳しいですね(>_<)

関連するQ&A