 SUBROUTINE pointaffiche(p)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/pointaffiche  *
!
!    NOM
! pointaffiche(p)
!
!    DESCRIPTION 
!*
! Affichage d un objet point 
!
! Displaying a point object 
!*
!    ENTREES / INPUT
!    p : objet de type point / point object
!
!    SORTIES / OUTPUT
!    p : objet de type point / point object
! 
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  IMPLICIT NONE
!.2-----  Declaration
  type(point) ,intent(in) :: p !! Point
!=========================== DEBUT DU CODE EXECUTABLE ==================
  write(*,'(3e15.8)') p%x,p%y,p%z
!===========================   FIN DE LA ROUTINE    ====================
 END SUBROUTINE POINTAFFICHE
!DOCFIN

 SUBROUTINE faceaffiche(e)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/faceaffiche  *
!
!    NOM
! faceaffiche(e)
!
!    DESCRIPTION 
!*
! Affichage d un objet face 
!
! Displaying a face object 
!* 
!    ENTREES / INPUT
!    e : objet de type face / face object
!
!    SORTIES / OUTPUT
!    e : objet de type face / face object
!  
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  IMPLICIT NONE
!.2-----  Declaration
  type(face) ,intent(in) :: e !! Face
  integer ii
!=========================== DEBUT DU CODE EXECUTABLE ==================
! Initialisations

  write(*,1001) e%surf
  write(*,1003) e%vnorm%v(1),e%vnorm%v(2),e%vnorm%v(3)
  write(*,1002) e%center%x,e%center%y,e%center%z
  write(*,1004) e%ic1,e%ic2
  write(*,1005) (e%vertex(ii),ii=1,e%nbvertex)
1001  format('Face area          : ',e13.5)
1002  format('Face center        : ',3e13.5)
1003  format('Normal vector      : ',3e13.5)
1004  format('Adjacent cells     : ',2i7)
1005  format('Vertexes           : ',10i7)
!
!===========================   FIN DE LA ROUTINE    ====================
 END SUBROUTINE faceAFFICHE
!DOCFIN

 SUBROUTINE cellaffiche(c)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/cellaffiche  *
!
!    NOM
! cellaffiche(c)
!     
!    DESCRIPTION 
!*
! Affichage d un objet cellule 
!
! Displaying a cell object 
!*!  
!    ENTREES / INPUT
!    c : objet de type cellule / cell object
!
!    SORTIES / OUTPUT
!    c : objet de type cellule / cell object
!
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  use geo, only: display
  IMPLICIT NONE
!.2-----  Declaration
  type(cell) ,intent(in) :: c !! Cellule / Cell
!=========================== DEBUT DU CODE EXECUTABLE ==================
! Initialisations
  write(*,1010) c%num,c%numloc
  write(*,1011) c%idom,c%vol,c%center%x,c%center%y,c%center%z,c%h
1010  format(' **** Cell',2i10,' *******')
1011  format(' Belonging to the domain',i4,' of volume',e13.5,' of center',3e13.5,' of radius',e13.5)
  write(*,'(10e13.5)')c%balance%v
    call display(c%w)
!===========================   FIN DE LA ROUTINE    ====================
  END SUBROUTINE CELLAFFICHE
!DOCFIN

 SUBROUTINE mshaffiche(m)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/meshaffiche  *
!
!    NOM
! meshaffiche(m)
!     
!    DESCRIPTION 
!*
! Affichage d un objet maillage 
!
! Displaying a mesh object 
!*!  
!    ENTREES / INPUT
!    m : objet de type maillage / mesh object
!
!    SORTIES / OUTPUT
!    m : objet de type maillage / mesh object
!
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  use geo, only: display
  IMPLICIT NONE
!.2-----  Declaration
  type(mesh) ,intent(in) :: m !!Maillage / Mesh
  integer                :: i
!=========================== DEBUT DU CODE EXECUTABLE ==================
! Initialisations
  write(*,*) 
  write(*,*) '====================================='
  write(*,*) 'DOMAIN NUMBER      : ',m%numdom
  write(*,*) 'Number of domains  : ',m%nb_dom
  write(*,*) 'Number of cells    : ',m%nb_cell
  write(*,*) 'Number of faces    : ',m%nb_face
  write(*,*) 'Number of vertexes : ',m%nb_vertex        
  write(*,*) 'exchange list'
  IF (associated(m%list_send)) THEN
      DO i=1,m%nb_dom
          write(*,*) 'domain:',i
          write(*,*) 'cells to send (global number):'
          IF (associated(m%list_send(i)%L)) THEN
              write(*,*) m%list_cell(m%list_send(i)%L)%num
              write(*,*)
          ELSE
              write(*,*) 'empty list'
          END IF
      END DO
  ELSE
      write(*,*) 'table not build'
  END IF
  
  IF (associated(m%list_recv)) THEN
      DO i=1,m%nb_dom
          write(*,*) 'domain:',i
          write(*,*) 'cells to recieve (global number):'
          IF (associated(m%list_recv(i)%L)) THEN
              write(*,*) m%list_cell(m%list_recv(i)%L)%num
              write(*,*)
          ELSE
              write(*,*) 'empty list'                  
          END IF
      END DO
  ELSE
     write(*,*) 'table not build'
  END IF
  
  write(*,*)
  write(*,*) 'List of vertexes'
  DO i=1,m%nb_vertex
      call display(m%list_vertex(i))
  END DO
      write(*,*)
      write(*,*) 'List of faces'
  DO i=1,m%nb_face
      write(*,*) 'Face number:',i
      CALL display(m%list_face(i))
      write(*,*)
  END DO
      write(*,*)
      write(*,*) 'List of Cells'
  DO i=1,m%nb_cell
      CALL display(m%list_cell(i))
      write(*,*)
  END DO
!===========================   FIN DE LA ROUTINE    ====================
 END SUBROUTINE MSHAFFICHE
!DOCFIN 

 SUBROUTINE list_i_affiche(L)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/list_i_affiche  *
!
!    NOM
! list_i_affiche(L)
!
!    DESCRIPTION 
!*
! Affichage d un objet liste d entier 
!
! Displaying a integer list object 
!*
!
!    ENTREES / INPUT
!    l : objet de type liste d entier / integer list object
!
!    SORTIES / OUTPUT
!    l : objet de type liste d entier / integer list object
!
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  IMPLICIT NONE
!.2-----  Declaration
  type(list_int),intent(in) :: L !! Liste d entiers / Integer list
!=========================== DEBUT DU CODE EXECUTABLE ==================
  IF (associated(L%L)) THEN
      write(*,'(12i6)') L%L
  ELSE
      write(*,*) 'empty list'
  END IF
!===========================   FIN DE LA ROUTINE    ====================
 END SUBROUTINE list_i_affiche
!DOCFIN 

 SUBROUTINE blocaffiche(b)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/blocaffiche  *
!
!    NOM
! blocaffiche(b)
!
!    DESCRIPTION 
!*
! Affichage d un objet bloc 
!
! Displaying a block object 
!*
! 
!    ENTREES / INPUT
!    b : objet de type bloc / block
!
!    SORTIES / OUTPUT
!    b : objet de type bloc / block
!
!    l : objet de type liste d entier / integer list object!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  IMPLICIT NONE
!.2-----  Declaration
  type(bloc),intent(in) :: b ! Bloc / Block
  integer i
!=========================== DEBUT DU CODE EXECUTABLE ==================
  write(*,*)'Bloc', b%numbl, ' du domaine', b%idom 
  write(*,*) 'nx,ny,nz,nrb',b%nx,b%ny,b%nz,b%nrb
  DO i=1,8
      write(*,'(3e12.5)') b%s(i)%x,b%s(i)%y,b%s(i)%z
  END DO
  write(*,*)'volume',b%volc
  write(*,*)' Adjacent blocks'
  write(*,'(6i7)') b%cl
  write(*,*)' Refinement level of the adjacent blocks'
  write(*,'(6i7)') b%nrf
  write(*,*)' Domain number of the adjacent blocks'
  write(*,'(6i7)') b%dom
  write(*,*)' first cell/face/vertex, number of cell/face/vertex'
  write(*,'(6i7)') b%first_cell, b%nb_cell, b%first_face, b%nb_face, b%first_vertex, b%nb_vertex
!===========================   FIN DE LA ROUTINE    ====================
 END SUBROUTINE blocaffiche
!DOCFIN

SUBROUTINE solideaffiche(s)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/solideaffiche  *
!
!    NOM
! solideaffiche(s)
!
!    DESCRIPTION 
!*
! Affichage d un objet solide 
! Displaying a solide object 
!*
! 
!    ENTREES / INPUT
!    s : objet de type solide / solide object
!
!    SORTIES / OUTPUT
!    s : objet de type solide / solide object
! 
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use geo_typ
  IMPLICIT NONE
!.2-----  Declaration
  type(solide),intent(in) :: s !! solide
!=========================== DEBUT DU CODE EXECUTABLE ==================
  write(*,*)'Solide', s%id, ' *********************************************'
  write(*,*)'bounding box                  :',s%xmin_s,s%xmax_s,s%ymin_s,s%ymax_s,s%zmin_s,s%zmax_s
  write(*,*)'density                       :',s%rho
  write(*,*)' center of gravity            :',s%xg
  write(*,*)' rotation                     :', s%theta
  write(*,*)'Number of internal cells      :',s%nb_cell 
!  write(*,'(10i9)')s%list_cells
  write(*,*)'Number of vertexes            :',s%nb_vert
  write(*,'(3e13.5)')s%list_vertex
  write(*,*)'Numbers of faces              :',s%nb_face
  write(*,'(3i9)')s%list_facette
!===========================   FIN DE LA ROUTINE    ====================
END SUBROUTINE solideaffiche
!DOCFIN

 SUBROUTINE waffiche(w)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    GEO/waffiche  *
!
!    NOM
! waffiche(w)
!
!    DESCRIPTION  
!*
! Affichage des variables d etat 
!
! Displaying state variables 
!*
! 
!    ENTREES / INPUT
! w    : objet de type "state" / object of type "state"
!
!    SORTIES / OUTPUT
! w    : objet de type "state" / object of type "state"
!
!    SOURCE
! Ce logiciel est regi par la licence [CeCILL-B]
! This software is governed by the [CeCILL-B] license
!=========================== DEBUT DES DECLARATIONS ==================== 
!.1-----  Implicit, Use
  use phy_typ
  IMPLICIT NONE
!.2-----  Declaration
  type(state),intent(in) :: w !! variable d etat / State variables
  integer                :: i
!=========================== DEBUT DU CODE EXECUTABLE ==================
!
  write(*,'(10e12.5)')(w%vprim%v(i),i=1,nvar)
  write(*,'(10e12.5)')(w%vbal%v(i),i=1,nvar)
  write(*,'(10e12.5)')(w%gprim(1)%v(i),i=1,nvar)
  write(*,'(10e12.5)')(w%gprim(2)%v(i),i=1,nvar)
  write(*,'(10e12.5)')(w%gprim(3)%v(i),i=1,nvar)
  write(*,'(10e12.5)')w%enti,w%entf,w%pe,w%chi
!===========================   FIN DE LA ROUTINE    ====================
 END SUBROUTINE waffiche
!DOCFIN