program Poisson_1Dp_3p1

! Difusão unidimensional permanente com ou sem termo fonte

! Versão original 1.0 ( 2 Set 98)
! Versão atual    3.1 ( 1 Out 04)
! Última alteração =    1 Out 04

! MODELO MATEMÁTICO (equação diferencial):
!
!   d2T/dx2 = S
!
!   T  = incógnita
!   x  = coordenada espacial
!   S  = termo fonte

! MODELO NUMÉRICO (resumo)
!   Método numérico: diferenças finitas
!   Malha uniforme unidimensional
!   Solver: TDMA
!   Precisão dupla
!   Linguagem Fortran
!   Aplicativo usado: Microsoft Developer Studio, Fortran PowerStation 4.0
!   Tipo de projeto: Console Application
!   Todas as variáveis são adimensionais
!   Variáveis de interesse:
!     Temperatura no meio do domínio: T(1/2)
!     Temperatura média (T_media)
!     Derivada de primeira ordem da temperatura em X=1 (Inclinacao)
!   Tipos de aproximações numéricas:
!     Termo difusivo:  CDS
!     T_media: regra do trapézio
!     Inclinacao: UDS-2
!   Condições de contorno de Dirichlet
!   Soluções analíticas disponíveis para 5 tipos de termos fontes (S)
!   Tipo do sistema de equação: ap(P)*T(P) = aw(P)*T(P-1) + ae(P)*T(P+1) + bp(P)

! ARQUIVOS envolvidos no programa (extensão a Poisson_1Dp_3p1_):
!   variaveis.f90    = define as variáveis do programa
!   solver.f90       = resolve o sistema de equações com o método TDMA
!   dados.f90        = lê e escreve os dados do programa, e gera a malha
!   coeficientes.f90 = calcula os coeficientes e termo fonte
!   calculos.f90     = calcula as soluções analítica e numérica
!   resultados.f90   = mostra listagem e gráfico dos resultados
!   main.f90         = programa principal
!   T.dat            = dados para os gráficos
!   T.gnu            = comandos para Wgnuplot, gráfico de T
!   E.gnu            = comandos para Wgnuplot, gráfico de erro
!   leia_me.txt      = dados básicos sobre o programa
!
! Outros arquivos
!   Poisson_1Dp_3p1.in = dados do programa
!   "caso"             = saída principal do programa
!   Notepad.exe        = editor de arquivos
!   Wgnuplot.exe       = programa gerador de gráfico

!-------------------------------------------------------------------------------

use dados
use calculos
use resultados

!-------------------------------------------------------------------------------

implicit none

!-------------------------------------------------------------------------------

  call le_dados

  open(out,file=caso)

  call escreve_dados

!-------------------------------------------------------------------------------

  call solucao

  call visualizacao

  close (out)

  note_caso = 'notepad '//caso

  dos = system(note_caso) ! lista arquivo de resultados

!-------------------------------------------------------------------------------

end
