module variaveis

integer ::  N1   ! Número de volumes na direção ksi
integer ::  N2	 ! Número de volumes na direção eta
				 
integer ::  Nv1  ! Número de vértices na direção ksi
integer ::  Nv2  ! Número de vértices na direção eta

integer ::  Nf1  ! Número de volumes na direção ksi, com fictícios
integer ::  Nf2  ! Número de volumes na direção eta, com fictícios

integer ::  Nt   ! Número total de volumes
integer ::  Ntf  ! Número total de volumes, com fictícios
integer ::  Nvt  ! Número total de vértices

integer ::  dos  ! abertura de arquivos de dados

integer ::  i    ! contador (linhas de eta constante)
integer ::  j    ! contador (linhas de ksi constante)

integer ::  iter         ! contador (iterações realizadas)

integer ::  itsolver     ! número máximo de iterações a ser realizado
integer ::  itmax        ! número máximo de iterações a ser realizado

integer ::  prob         ! problema a ser resolvido: 1 - Laplace linear; 2 - Poisson senoidal

real*8  ::  dx   ! comprimento típico do volume (se a malha fosse cartesiana e uniforme)

real*8  ::  d_ksi        ! delta ksi
real*8  ::  d_eta        ! delta eta

real*8  ::  pi           ! constante pi

real*8  ::  Tm_an        ! Temperatura média analítica
real*8  ::  Tm_num       ! Temperatura média numérica

real*8  ::  area         ! área total do domínio

integer ::  tipo_malha   ! tipo de malha gerada: 1 = segmentos de reta; 2 = solução de eqs. elípticas
integer ::  esc_metr     ! escrita de métricas: 1 = sim; 2 = não
integer ::  esc_coef     ! escrita de coeficientes: 1 = sim; 2 = não 

integer ::  aux1, aux2, aux3, aux4, aux5, aux6  ! contadores auxiliares

real*8  ::  raux1, raux2, raux3, raux4, raux5   ! auxiliares para cálculos das métricas

character*100 :: caso                  ! nome do caso a ser simulado
character*120 :: nome_saida            ! nome do arquivo de saída
character*120 :: nome_entrada          ! nome do arquivo de entrada de dados (malha)

real*8,  dimension(:), allocatable :: xc    ! Posição x do centroide do volume
real*8,  dimension(:), allocatable :: yc    ! Posição y do centroide do volume

real*8,  dimension(:), allocatable :: xv    ! Posição x relativa a cada vértice
real*8,  dimension(:), allocatable :: yv    ! Posição y relativa a cada vértice

real*8,  dimension(:), allocatable :: xe_eta ! Métrica (derivada de x em relação a eta, face e)
real*8,  dimension(:), allocatable :: xe_ksi ! Métrica (derivada de x em relação a ksi, face e)
real*8,  dimension(:), allocatable :: ye_eta ! Métrica (derivada de y em relação a eta, face e)
real*8,  dimension(:), allocatable :: ye_ksi ! Métrica (derivada de y em relação a ksi, face e)
real*8,  dimension(:), allocatable :: xn_eta ! Métrica (derivada de x em relação a eta, face n)
real*8,  dimension(:), allocatable :: xn_ksi ! Métrica (derivada de x em relação a ksi, face n)
real*8,  dimension(:), allocatable :: yn_eta ! Métrica (derivada de y em relação a eta, face n)
real*8,  dimension(:), allocatable :: yn_ksi ! Métrica (derivada de y em relação a ksi, face n)

real*8,  dimension(:), allocatable :: alpha  ! Métrica alpha
real*8,  dimension(:), allocatable :: betan  ! Métrica beta (face norte)
real*8,  dimension(:), allocatable :: betae  ! Métrica beta (face leste)
real*8,  dimension(:), allocatable :: gama   ! Métrica gama

real*8,  dimension(:), allocatable :: Jp     ! Matriz jacobiana (centro do volume)
real*8,  dimension(:), allocatable :: Je     ! Matriz jacobiana (face leste)
real*8,  dimension(:), allocatable :: Jn     ! Matriz jacobiana (face norte)

real*8,  dimension(:), allocatable :: T      ! vetor solução (temperaturas)
real*8,  dimension(:), allocatable :: Ta     ! vetor solução (temperaturas), analítico

real*8,  dimension(:), allocatable :: ap     ! coeficiente do nó P
real*8,  dimension(:), allocatable :: ae     ! coeficiente do nó E
real*8,  dimension(:), allocatable :: aw     ! coeficiente do nó W
real*8,  dimension(:), allocatable :: an     ! coeficiente do nó N
real*8,  dimension(:), allocatable :: as     ! coeficiente do nó S
real*8,  dimension(:), allocatable :: ane    ! coeficiente do nó NE
real*8,  dimension(:), allocatable :: anw    ! coeficiente do nó NW
real*8,  dimension(:), allocatable :: ase    ! coeficiente do nó SE
real*8,  dimension(:), allocatable :: asw    ! coeficiente do nó SW

real*8,  dimension(:), allocatable :: bp     ! termo-fonte do nó P
real*8,  dimension(:), allocatable :: Sp     ! função para o termo-fonte


integer, dimension(:,:), allocatable :: vert    ! Vértices pertencentes a cada volume
integer, dimension(:,:), allocatable :: vertf   ! Vértices pertencentes a cada volume, com fictícios



end module variaveis