1. PROGRAMEHEAT
C TITLE:DEMO PROGRAMFOR EXPLICIT METHOD
C FOR HEAT EQUATION,UT = KAPPA*UXX
C INRUT:N, NUMBER OF X-SUBINTERVAL
C K, TIME STEP
C TMAX, MAXIMUM COMPUTATION TIME
C KAPPA, DIFFUSIVITY VALUE
C (X1,X2), X-INTERVAL
C P(T), LEFT BOUNDARY CONDITION
C Q(T), RIGHT BOUNDARY CONDITION
C F(X), INITIAL CONDITION
C E(X,T), EXACT SOLUTION
C OUTPUT: NUMERICAL AND EXACT SOLUTION AT T=TMAX
COMMON U(0:51), V(0:51)
REAL K,KAPPA
DATA T,X1,X2,KAPPA/0,0,1,1/
P(T) = 0
Q(T) = 0
F(X) = 100*SIN(PI*X)
E(X,T) = 100*EXP(-PI*PI*T)*SIN(PI*X)
PRINT*,'ENTER TMAX,NUMBEROF X-SUBINTERVALS AND TIME STEP'
READ*,TMAX,N,K
H = (X2-X1)/N
R = KAPPA*K/H/H
PI = 4*ATAN(1.)
C SET INITIAL CONDITION
DO 10 I = 0,N
X = X1 + I*H
V(I) = F(X)
10 CONTINUE
15 DO 20 I = 1,N-1
U(I) = V(I) + R*(V(I+1) -2*V(I) + V(I-1))
20 CONTINUE
T = T+K
U(0) = P(T)
U(N) = Q(T)
C WRITE U OVER V TO PREPARE FOR NEXT TIME STEP
DO 30 I = 0,N
V(I) = U(I)
30 CONTINUE
C IF T IS LESS THAN TMAX, TAKE A TIME STEP
IF(ABS(TMAX-T).GT.K/2) GOTO 15
C OTHERWISE, PRINT RESULT
WRITE(6,100)
WRITE(6,110) N,K,TMAX
WRITE(6,120) T
DO 40 I = 0,N
X = X1 + I*H
EXACT = E(X,T)
WRITE(6,130) X,U(I),EXACT
40 CONTINUE
100 FORMAT(///,T9,'RESULTSFROMPROGRAMEHEAT',/)
110 FORMAT('N =',I4,T15,' K= ',F8.6,T30,'TMAX=',F5.2,/)
120 FORMAT('T = ',F5.2,T18,'NUMERICAL',T35,'EXACT',/)
130 FORMAT( 'X = ',F4.1,T13,F13.6,T30,F13.6)
END