Está en la página 1de 2

PROGRAM METODO_DIFERENCIAS_FINITAS

!UNIVERSIDAD DEL ISTMO CAMPUS TEHUANTEPEC


!MÉTODO: MÉTODO DE DIERENCIAS FINITAS
!21/NOVIMBRE/2017
IMPLICIT NONE
REAL::n,Ts,Ti,x,Fo,a,r,Td,dt,dy,p,jr,tdiasd
REAL,ALLOCATABLE::Tkl(:,:)
INTEGER::i,k,j,l,pt,tdias
!open(80,file='perfil1-0h-0-1m.txt')
tdias=60;!tdias=el tiempo límite deseado, se encuentra en días (se puede
realizar un cambio)
dt=1;!dt=delta del tiempo,se encuentra en horas (se puede realizar un cambio)
dy=0.035;!dy=delta del profundidad,se encuentra en metros (se puede realizar un
cambio)
p=5;!p=profundidad característica máxima, se encuentra en metros (se puede
realizar un cambio)
l=p/dy;!n=número de intervalos, sin contar el valor en el suelo
a=0.15E-6;!a=se encuentra en m^2/s
k=(tdias*24)/dt;Fo=a*3600*dt/dy**2;!Fo=alfa*deltat/(deltay)^2
Ts=-10;!la temperatura del suelo,,se encuentra en °C (se puede realizar un
cambio)
Ti=8;!la temperatura inicial,se encuentra en °C (se puede realizar un cambio)
pt=3;!periodo de impresión en
IF (Fo>0.5) THEN
PRINT*, 'LOS VALORES DE DELTA PRFUNDIDAD Y TIEMPO';PRINT*, 'NO SON LOS ADECUADOS YA
QUE NECESARIAMENTE Fo DEBE SER MENOR A 0.5';PRINT*, ''
GO TO 1
END IF
PRINT*,'EL PROGRAMA HALLA EL PERFIL DE TEMPERATURA'
PRINT*,'DELTA DE TIEMPO dt=',dt
PRINT*,'DELTA DE PROFUNDIDAD dy=',dy
PRINT*,'VALOR DE FO Fo=',Fo;PRINT*,''
ALLOCATE(Tkl(k+1,l+2))
DO i=1,k+1
Tkl(i,1)=Ts;!condiciones fronteras
Tkl(i,l+1)=Ti;!condiciones iniciales
Tkl(i,l+2)=Ti;!condiciones iniciales
END DO
DO j=2,l+1
Tkl(1,j)=Ti;!condiciones iniciales
END DO
do i=2,k+1
do j=1,l-1
Tkl(i,j+1)=Tkl(i-1,j+1)+Fo*(Tkl(i-1,j+2)-2*Tkl(i-1,j+1)+Tkl(i-1,j))
end do
end do
PRINT*, '';PRINT*,''
!Do j=1,l+2;write(80,*)Tkl(k+1,j);End do
write(6,'(A9,F6.3,A1,F6.3,A1,F6.3,A1,F6.3,A1,F6.3,A1,F6.3,A1,F6.3,A1,F6.3,A1,F6.3,A1
,F6.3)')'LONGITUD=',0*dy,' ',4*dy,' ',11*dy,' ',20*dy,' ',26*dy,' ',29*dy,'
',35*dy,' ',46*dy,' ',61*dy,' ',p
DO i=1,tdias/pt+1

WRITE(6,'(A4,I4,A1,F6.2,A1,F6.2,A1,F6.2,A1,F6.2,A1,F6.2,A1,F6.2,A1,F6.2,A1,F6.2,A1,F
6.2,A1,F6.2)')'dia=',pt*(i-1),' ',Tkl(pt*(i-1)*24/dt+1,1),' ',Tkl(pt*(i-
1)*24/dt+1,5),' ',Tkl(pt*(i-1)*24/dt+1,12),' ',Tkl(pt*(i-1)*24/dt+1,21),'
',Tkl(pt*(i-1)*24/dt+1,27),' ',Tkl(pt*(i-1)*24/dt+1,30),' ',Tkl(pt*(i-
1)*24/dt+1,36),' ',Tkl(pt*(i-1)*24/dt+1,47),' ',Tkl(pt*(i-1)*24/dt+1,62),'
',Tkl(pt*(i-1)*24/dt+1,l+2)
END DO
PRINT*, '';PRINT*, 'PARA NUESTRA TEMPERATURA DESEADA:';Td=0;!Td=temperatura
deseada,se encuentra en °C (se puede realizar un cambio)
j=1
DO WHILE(Tkl(k,j)<Td)
j=j+1
END DO
r=((j-1)*dy-(j-2)*dy)/(Tkl(k+1,j)-Tkl(k+1,j-1))*(Td-Tkl(k+1,j-1))+(j-2)*dy;PRINT*,
'RESPUESTA: y=',r
1PAUSE
END PROGRAM METODO_DIFERENCIAS_FINITAS