!----------------------- MODULES ---------------

!------
module mod_precision

  implicit none

  integer, parameter :: pr=selected_real_kind(15,307)

end module mod_precision


!------
module mod_sorties_fichier

  use mod_precision

  implicit none

contains

  subroutine sorties_particules(part, nb_fich)

    !--- entrees
    integer, intent(in) :: nb_fich
    real(pr), dimension(:,:), intent(in) :: part

    !--- locales
    integer :: np, i
    character(len=30) :: fich

    np = size(part,2)

    !--- sortie fichier des particules  (format VTK)
    write(fich,*) nb_fich
    open(unit=10, file='particules_'//trim(adjustl(fich))//'.vtk')

    write(10,fmt='(a)') "# vtk DataFile Version 2.0"
    write(10,fmt='(a)') "Particules"
    write(10,fmt='(a)') "ASCII"
    write(10,*)
    write(10,fmt='(a)') "DATASET UNSTRUCTURED_GRID"
    write(10,fmt='(1a6,1i10,1a10)') "POINTS", np, "float"
    !- ecriture des coordonnees des np points (en 3D)
    do i=1,np
       write(10,*) part(1,i), part(2,i), 0.0
    end do
    !- creation de np cellules, de type 1 (cellule a un point)
    write(10,fmt='(1a10,1i9)') "CELL_TYPES", np
    do i=1,np
       write(10,'(1i1)') 1
    end do
    !- ecriture des proprietes de chaque point (vitesse, rayon (en commentaire), etc.)
    write(10,fmt='(1a10,1i9)') "POINT_DATA", np
    write(10,fmt='(a)') "VECTORS vitesse float"
    do i=1,np
       write(10,*) part(3,i), part(4,i), 0.0
    end do
!!$    write(10,fmt='(a)') "SCALARS rayon float 1"
!!$    write(10,fmt='(a)') "LOOKUP_TABLE default"
!!$    do i=1,np
!!$       write(10,*) r
!!$    end do

    close(10)

  end subroutine sorties_particules
  
!---------- affichage du champ de vitesse du fluide porteur
!           (a decommenter apres avoir cree le maillage dans le code)

!!$  subroutine sorties_fluide_porteur(x, y, xc, yc)
!!$
!!$    use mod_vitesse_fluide
!!$    
!!$    !--- entrees
!!$    real(pr), dimension(0:), intent(in) :: x, y
!!$    real(pr), dimension(:), intent(in) :: xc, yc
!!$    
!!$    !--- locales
!!$    integer :: imax, jmax, i, j
!!$
!!$    imax = size(xc)
!!$    jmax = size(yc)
!!$
!!$    open(unit=20,file='fluide_porteur.vtk')
!!$
!!$    write(20,'(1a26)') '# vtk DataFile Version 2.0'
!!$    write(20,'(1a22)') 'vitesse fluide porteur'
!!$    write(20,'(1a5)') 'ASCII'
!!$    write(20,'(1a24)') 'DATASET RECTILINEAR_GRID'
!!$    write(20,'(1a10,3i4)') 'DIMENSIONS ',imax+1,jmax+1,1
!!$    write(20,fmt='(1a13,1i10,1a10)') 'X_COORDINATES',imax+1,' float'
!!$    do i=0,imax
!!$       write(20,*) x(i)
!!$    end do
!!$    write(20,fmt='(1a13,1i10,1a10)') 'Y_COORDINATES',jmax+1,' float'
!!$    do j=0,jmax
!!$       write(20,*) y(j)
!!$    end do
!!$    write(20,fmt='(1a13,1i10,1a10)') 'Z_COORDINATES',1,' float'
!!$    write(20,*) 0.0_pr
!!$
!!$    write(20,fmt='(1a9,1i10)') 'CELL_DATA',imax*jmax
!!$    write(20,fmt='(a)') "VECTORS uf float" !---- uf(x,y) est le vecteur vitesse de dimension 2 evalue en (x,y)
!!$    do j=1,jmax
!!$       do i=1,imax
!!$          write(20,*) uf(xc(i),yc(j)), 0.0
!!$       end do
!!$    end do
!!$
!!$    close(20)
!!$
!!$
!!$  end subroutine sorties_fluide_porteur
  

!---------  affichage du champ de densite de particules
!            (a decommenter apres avoir programme le calcul de la densite)
!!$subroutine sorties_densite(dens, x, y, nb_fich)
!!$
!!$    !--- entrees
!!$    integer, intent(in) :: nb_fich
!!$    real(pr), dimension(0:), intent(in) :: x, y
!!$    real(pr), dimension(:,:), intent(in) :: dens
!!$    
!!$    !--- locales
!!$    integer :: imax, jmax, i, j
!!$    character(len=30) :: fich
!!$
!!$    
!!$    imax = size(x) - 1
!!$    jmax = size(y) - 1
!!$
!!$    write(fich,*) nb_fich
!!$    open(unit=20, file='densite_'//trim(adjustl(fich))//'.vtk')
!!$
!!$    write(20,'(a)') '# vtk DataFile Version 2.0'
!!$    write(20,'(a)') 'densite numerique particules'
!!$    write(20,'(a)') 'ASCII'
!!$    write(20,'(a)') 'DATASET RECTILINEAR_GRID'
!!$    write(20,'(1a10,3i4)') 'DIMENSIONS ',imax+1,jmax+1,1
!!$    write(20,fmt='(1a13,1i10,1a10)') 'X_COORDINATES',imax+1,' float'
!!$    do i=0,imax
!!$       write(20,*) x(i)
!!$    end do
!!$    write(20,fmt='(1a13,1i10,1a10)') 'Y_COORDINATES',jmax+1,' float'
!!$    do j=0,jmax
!!$       write(20,*) y(j)
!!$    end do
!!$    write(20,fmt='(1a13,1i10,1a10)') 'Z_COORDINATES',1,' float'
!!$    write(20,*) 0.0_pr
!!$
!!$    write(20,fmt='(1a9,1i10)') 'CELL_DATA',imax*jmax
!!$    write(20,'(a)') 'SCALARS densite double'
!!$    write(20,'(a)') 'LOOKUP_TABLE default'
!!$    do j=1,jmax
!!$       do i=1,imax
!!$          write(20,*) dens(i,j)
!!$       end do
!!$    end do
!!$
!!$    close(20)
!!$
!!$  end subroutine sorties_densite

end module mod_sorties_fichier



