! Metodos Numericos y Simulaciones en Astrofisica
! FCEFN - UNSJ, 2013
!
! ejemplo 6
!
! ecuacion de difusion simplificada (parabolica)
! df/dt = nu * d2f/dx2
!
! donde nu es el coef. de viscosidad (constante) y
! la funcion f(x,t) esta definida para 0 <= x <= 1, 
! f(0,t)=f(1,t)=0 y f(x,0)=0 para x /= x_0 y 
! f(x_0,0)=1 para x = x_0
!
!
program eje5e
implicit none
  integer, parameter ::p=selected_real_kind(16,200)
  integer :: ii,jj
  real(p) :: nu,dt,dx
  real(p),dimension(21) :: fun,fun1 
  
! parametros iniciales
!
  write(*,*)'Viscosidad: '
  read(*,*)nu
!  nu=0.001_p
  dt=0.05_p
  dx=0.05_p

! valores iniciales de la funcion
!
  fun=0._p
  fun(11)=1._p

! archivo de salida
!
  open(7,file='eje6.out')

! bucle de calculo
!
  ii=0
  do while(ii < 40)

! escribe en archivo
!
    do jj=1,21
      write(7,*)float(ii)*dt,float(jj-1)*dx,fun(jj)
    enddo

! avanza un paso temporal
!
    fun1=0._p
    do jj=2,20
      fun1(jj)=nu*dt/dx**2*(fun(jj-1)-2._p*fun(jj)+fun(jj+1))
    enddo
    fun=fun+fun1
    ii=ii+1
  enddo
  close(7)

end program eje5e
