module variaveis

! Objetivo: definir as variáveis a serem usadas no programa

use PORTLIB	! biblioteca do Fortran

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

implicit none

! *** Variáveis principais ***

integer :: N,M,NNN       ! número de pontos nodais

integer :: prob      ! indicador: 1 -> prob. de maximização; 2 -> prob. de minimização
                                                     
integer :: i,j,t     ! contadores auxiliares    

real*16  :: h      ! distância entre dois nós consecutivos

real*16 :: bheta, theta, alfa_bar, aux1, aux2, grad_p, p !auxiliares para o cálculo do ponto ótimo

real*16 :: AA,BB,CC,DD,EE,FF,GG,HH,II   !coeficientes do polinômio interpolador

real*16 :: JJ,KK,LL,MM,NN,OO,PP,QQ,RR   !coeficientes do polinômio interpolador

real*16 :: SS,TT,UU,VV,XX,YY,ZZ         !coeficientes do polinômio interpolador

real*16 :: A1,A2,A3,A4,A5,A6,A7,A8        !coeficientes do polinômio interpolador

real*16 :: A9,A10,A11,A12,A13,A14,A15,A16        !coeficientes do polinômio interpolador

real*16 :: A17,A18,A19,A20,A21,A22,A23,A24       !coeficientes do polinômio interpolador

real*16 :: x0,x1,x2,x3,x4,x5,x6,y0,y1,y2,y3,y4,y5,y6 !coordenadas

real*16 :: PP6 !resultado da interpolação de grau 6


! *** Variável de campo 

real*16,dimension(:),allocatable :: x ! coordenadas dos pontos nodais
real*16,dimension(:),allocatable :: y ! coordenadas dos pontos nodais
real*16,dimension(:),allocatable :: z ! valores dos pontos nodais
real*16,dimension(:,:),allocatable :: f ! auxiliar para o cálculo das DDN
real*16,dimension(:,:),allocatable :: AA0,AA1,AA2,AA3,AA4,AA5 ! auxiliar para o cálculo das DDN
real*16,dimension(:,:),allocatable :: AA6,AA7,AA8,AA9,AA10,AA11,AA12             ! auxiliar para o cálculo das DDN

real*16 :: XX0(2),XX1(2), grad(2) !vetores auxiliáres para o método do gradiente

integer, parameter :: in   =  1 ! número do arquivo de entrada (dados)
integer, parameter :: out_depend    =  2 ! número do arquivo de saída principal - Richardson - variável dependente
integer, parameter :: out_independ1  =  3 ! número do arquivo de saída principal - Richardson - variável independente - X
integer, parameter :: out_independ2  =  4 ! número do arquivo de saída principal - Richardson - variável independente - Y

character*50  :: titulo, arq_dados      ! nome do arquivo de saída
character*90  :: note_caso ! notepad + caso
logical       :: dos       ! acessa prompt dos

real*16  :: cpu1, cpu2  ! tempo de processamento (s)

integer, dimension(8) :: tarray1, tarray2

integer :: vezes

end