アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんばんは。
早速ですが、質問させて頂きます。
学校の課題で一次元熱伝導方程式のプログラムを組みなさいという課題が出たのですが、入力、出力のプログラムが上手く書けずに困っています。
自分で何回もやってみたのですが、「ループがベクトル化されました」としか出ず、どこが間違っているのかも分からない状況です。
詳しい方、教えて頂ければ幸いです。
下に自分が作成したプログラムを載せておきます。

program heat
implicit none
integer i, n, nmax
real(8) t0, t1, d, time, a, h, p, q, an0, kn, bn, en
integer, parameter :: id = 100
real(8), parameter :: pi = 3.1415926535d0
real(8), parameter :: lambda = 2.5d-6, rho = 2500.d0, c = 2.35d-7
real(8), parameter :: expmax = 50.d0
real(8) x(0:id), t(0:id)
!
! Data input part (t0,t1,d,a,time,nmax)
!

t0=300.0d0 ! degrees
t1=200.0d0 ! degrees
d =100.0d0 ! m
time=1.0 ! year
time = time *365.0d0*24.0d0 ! year --> hour
nmax=1000

a = 1.0d6 ! Area of rock surface [m^2]

h=d/id
do i=0,id
x(i)=i*h
t(i)=t1
end do

p=0.0d0
q=0.0d0

do n=1,nmax,2
an0=4.0d0/(n*pi)*(t0-t1)
kn=n*pi/d
bn=lambda*kn*kn/(rho*c)
if(bn*time.le.expmax) then
en=exp(-bn*time)
else
en=0.0d0
endif

do i=0,id
t(i)=t(1)+an0*sin(kn*x(i))*en
enddo

p=p+an0*kn*en
q=q+an0*kn/bn*(1.0d0-en)

enddo

p=lambda*a*p
q=lambda*a*q

open(20,file=‘output.dat’)
write(20,*) ‘x(i),t(i),p,q' = ‘, ‘x(i),t(i),p,q'
close(20)
stop
end program heat

A 回答 (2件)

>write(20,*) ‘x(i),t(i),p,q' = ‘, ‘x(i),t(i),p,q'



i の値は何?
上の方で i のループが終わっているから、配列の範囲外では?
    • good
    • 0

Fortran で


open(20,file=‘output.dat’)
とか書けたっけ? 引用符, これでいいの?

「上手く書けない」ってのが, 何がどう「上手く書けない」のかわからんけど....
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!