You are on page 1of 8

ALGORITMO MEDIANTE EL METODO EXPLICITO PARA LA ECUACION DEL CALOR

ALGORITMO MEDIANTE EL METODO DE CRANK NICOLSON PARA LA ECUACION DEL CALOR






! PROGRAMA QUE HACE EL METODO DE DIFERENCIAS FINITAS CRANK NICOLSON
! PARA ECUACIONES DIFERENCIALES PARACIALES PARABOLICOS
! CURSO DE FISICA TEORICA COMPUTACIONAL II-FCNM
!
! LOS DATOS SON EXPORTADOS A: NICOLSON.TXT
!CONDICIONES DE FRONTERA (U(0,T)=U(L,T)=0;U(X,0)=SIN(pi*x) )
! 0<=X<=L
! ALFA CONSTANTE
!-----------------------------------------------------------------

REAL::T,ALF,L1,M,N,LAMD,K,H,X,F,MMM
INTEGER ::I,J,II
REAL,DIMENSION(50)::W, L, U, Z
OPEN(20,FILE = 'NICOLSON.TXT',STATUS = 'UNKNOWN')
WRITE(*,*) 'INGRESE EL PUNTO FINAL L1'
READ(*,*) L1
WRITE(*,*) 'INGRESE EL VALOR MAXIMO DE T'
READ(*,*) T
WRITE(*,*) ' NUMERO DE INTERVALOS M'
READ(*,*)M
WRITE(*,*) 'NUMERO DE INTERVALOS N'
READ(*,*) N
WRITE(*,*) 'METODO DE DIFERENCIAS FINITAS EXPLICITO PARA ECUACION DEL CALOR'

ALF=1
! PASO 1

H=L1/M
K=T/N

LAMD=ALF*ALF*K/(H*H)
PRINT*,LAMD,ALF
W(M)=0

! PASO 2
DO I=1,M-1
! VALORES INICIALES
W(I)=F(I*H)
END DO
! PASO 3 HASTA LA 11 RESUELVE EL SISTEMA TRIGONAL LINEAL
! H PARA L, X PARA U

L(1)=1+LAMD
U(1)=-LAMD/(2*L(1))

! PASO 4

DO I=2,M-2
L(I)=1+LAMD+ (LAMD*U(I-1)/2 )
U(I)=- LAMD/(2*L(I))
END DO
! PASO 5
L(M-1)=1+ LAMD+ (LAMD*U(M-2)/2)

! PASO 6
DO J=1,N
! PASO 7
T=J*K
Z(1)=((1-LAMD)*W(1)+(LAMD*W(2)/2))/L(1)
! PASO 8
DO I=2,M-1
Z(I)=((1-LAMD)*W(I)+((LAMD/2)*(W(I+1)+W(I-1)+Z(I-1))))/L(I)
END DO
! PASO 9
W(M-1)= Z(M-1)
! PASO 10
MMM=M-2
DO II=1,MMM
I=MMM-II+1
W(I)=Z(I) -U(I)*W(I+1)
END DO
END DO
! PASO 11
! SALIDA DE DATOS
WRITE(*,1) T
DO I=1,M-1
X=I*H
WRITE(20,2) I,X,W(I)
END DO
! PASO 12
1 FORMAT(1X,'VALOR DE TIEMPO FINAL ES',1X,E15.8)
2 FORMAT(1X,I3,2(1X,E15.8))
END PROGRAM

FUNCTION F(X)
IMPLICIT NONE
REAL::X,PI,F
PI=4*ATAN(1.0)
F=SIN(PI*X)
RETURN
END

You might also like