PROGRAM calcul_exact
  IMPLICIT NONE

  !Solution  u_exact
  REAL(kind=8),ALLOCATABLE,DIMENSION(:, :) :: u_exact
  !Compteurs
  INTEGER                               :: i,j,ntx,nty
  !Coordonnees globales suivant x et y
  REAL(kind=8)                          :: x,y
  !Pas en x et en y
  REAL(kind=8)                          :: hx,hy 

  !Lecture de ntx et nty
  OPEN(10,FILE='poisson.data',STATUS='OLD')
  READ(10,*) ntx
  READ(10,*) nty
  CLOSE(10)

  !Allocation dynamique u_exact
  ALLOCATE (u_exact(1:ntx,1:nty))

  !Initialisation de u_exact
  u_exact(1:ntx,1:nty)   = 0.

  !Pas
  hx = 1./REAL(ntx+1)
  hy = 1./REAL(nty+1)

  !Calcul de la solution exacte
  DO i=1,ntx
     DO j=1,nty
        x = i*hx
        y = j*hy
        u_exact(i,j) = x*y*(x-1)*(y-1)
     END DO
  END DO

  WRITE(10,101) u_exact

101 FORMAT  (E12.5)

END PROGRAM calcul_exact

