module dados

! objetivo: ler e escrever os dados do programa

use variaveis

implicit none

contains

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

  subroutine le_dados

    ! leitura do nome do arquivo principal de dados do CASO a analisar
    dos = system('notepad interp_2d _4p1.in') ! lista arquivo
    open(in,file='interp_2d _4p1.in')
    read(in,*) arq_dados
    read(in,*) NNN
	close(in)

    ! leitura dos dados principais
    note_caso = 'notepad ' // trim(adjustl(arq_dados))
    dos = system( note_caso ) ! lista arquivo
    
    open(in,file=trim(adjustl(arq_dados)))

    read(in,*) titulo
    read(in,*) N
    
    13 format(A<len(trim(adjustl(titulo)))-4>)
    
    write(titulo,13) titulo
    
    M = N**(0.5)
    
    allocate ( x(N),y(N), z(N), f(M,M) )
    allocate ( AA0(M,M), AA1(M,M), AA2(M,M), AA3(M,M), AA4(M,M))
    allocate ( AA5(M,M), AA6(M,M), AA7(M,M), AA8(M,M), AA9(M,M), AA10(M,M))
    allocate ( AA11(M,M), AA12(M,M))
    
    do i = 1, N 
        read(in,*) x(i),y(i),z(i) !pontos em ordenação lexicográfica - vizinhança do extresmo discreto (malha)
    end do
       
    close(in)
    
    h = x(2) - x(1)
   ! Ponto que será interpolado
   !XX0 = [0.5q0 - qsqrt(3.0q0)/6.0q0,qsqrt(2.0q0)/2.0q0];
    
    f(1,1) = z(1)
    f(2,1) = z(2)
    f(3,1) = z(3)
    f(4,1) = z(4)
    f(5,1) = z(5)
    f(6,1) = z(6)
    f(7,1) = z(7)
    
    f(1,2) = z(8)
    f(2,2) = z(9)
    f(3,2) = z(10)
    f(4,2) = z(11)
    f(5,2) = z(12)
    f(6,2) = z(13)
    f(7,2) = z(14)
    
    f(1,3) = z(15)
    f(2,3) = z(16)
    f(3,3) = z(17)
    f(4,3) = z(18)
    f(5,3) = z(19)
    f(6,3) = z(20)
    f(7,3) = z(21)
    
    f(1,4) = z(22)
    f(2,4) = z(23)
    f(3,4) = z(24)
    f(4,4) = z(25)
    f(5,4) = z(26)
    f(6,4) = z(27)
    f(7,4) = z(28)
    
    f(1,5) = z(29)
    f(2,5) = z(30)
    f(3,5) = z(31)
    f(4,5) = z(32)
    f(5,5) = z(33)
    f(6,5) = z(34)
    f(7,5) = z(35)
    
    f(1,6) = z(36)
    f(2,6) = z(37)
    f(3,6) = z(38)
    f(4,6) = z(39)
    f(5,6) = z(40)
    f(6,6) = z(41)
    f(7,6) = z(42)
    
    f(1,7) = z(43)
    f(2,7) = z(44)
    f(3,7) = z(45)
    f(4,7) = z(46)
    f(5,7) = z(47)
    f(6,7) = z(48)
    f(7,7) = z(49)
    
    x0 = x(1)
    x1 = x(2)
    x2 = x(3)
    x3 = x(4)
    x4 = x(5)
    x5 = x(6)
    x6 = x(7)
    
    y0 = y(1)
    y1 = y(8)
    y2 = y(15)
    y3 = y(22)
    y4 = y(29)
    y5 = y(36)
    y6 = y(43)
    
    AA0 = f;
    
    
  end subroutine le_dados

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

end module dados
