module variaveis

! Objetivo: definir as variáveis do programa

use PORTLIB	! biblioteca do Fortran

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

implicit none

! *** Variáveis principais ***

integer :: N       ! número de elementos da malha
                   ! número de nós = N + 1

integer :: P       ! número do nó
                   ! P = 0, nó no contorno esquerdo
                   ! 1 <= P <= N-1, nós internos
                   ! P = N, nó no contorno direito

integer :: fonte   ! tipo do termo fonte: 
                   ! 0 ---> S = e(X)/(e-1)
                   ! 1 ---> S = 0
                   ! 2 ---> S = 2
                   ! 3 ---> S = 6X
                   ! 4 ---> S = 12(X**2)
                   ! onde X é a coordenada espacial

real*8  :: h       ! comprimento de cada elemento da malha

! *** Variáveis de interesse ***

real*8 :: T_media          ! temperatura média (solução numérica)
real*8 :: T_media_exato    ! temperatura média (solução analítica)

real*8 :: inclinacao       ! dT/dx em x = 1 (solução numérica)
real*8 :: inclinacao_exato ! dT/dx em x = 1 (solução analítica)

! *** Variáveis de campo (vetores) com dimensão (0:N) ***

real*8,dimension(:),allocatable :: T_exato ! solução analítica exata
real*8,dimension(:),allocatable :: T       ! solução numérica
real*8,dimension(:),allocatable :: x       ! coordenada espacial nodal
real*8,dimension(:),allocatable :: aw      ! coeficiente oeste
real*8,dimension(:),allocatable :: ap      ! coeficiente central
real*8,dimension(:),allocatable :: ae      ! coeficiente leste
real*8,dimension(:),allocatable :: bp      ! termo fonte

! *** váriaveis auxiliares ***

integer, parameter :: in   =  7 ! número do arquivo de entrada (dados)
integer, parameter :: out  = 10 ! número do arquivo de saída principal
integer, parameter :: out2 = 11 ! número do arquivo de saída secundário

character*50  :: caso      ! nome do arquivo de saída
character*90  :: titulo    ! título do gráfico
character*90  :: note_caso ! notepad + caso
logical       :: dos       ! acessa prompt dos

integer :: ver_grafico      ! =1,mostra gráficos; 0=não
integer :: ver_coeficientes ! =1,mostra coeficientes de T; 0=não
integer :: ver_campo        ! =1,lista campo de T; 0=não
integer :: w                ! freqüência de impressão dos campos

integer :: k    ! auxiliar
real*8  :: erro ! erro local
real*8  :: cpu  ! tempo de processamento (s)

end