 SUBROUTINE  fct_mesh(x,y,z,ifct,nrb)
!=========================== DOCUMENTATION =============================
!DOCDEBh*    UTI/USER/fct_mesh  *
!
!    NOM
! fct_mesh(x,y,z,ifct,nrb)
!
!    DESCRIPTION
!*
! Initialisation du niveau de raffinement d un bloc par une fonction utilisateur
!
! Initialise the refinement level of a block using a user function
!*
! 
!    ENTREES / INPUT
!    x,y,z : coordonnees / coordinates
!    ifct  : numero de la fonction definissant le niveau de raffinement / number of the function defining the refinement level
!    
!    SORTIES / OUTPUT 
!    nrb    : niveau de raffinement / refinement level
!
!    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
   real(kind=kind(0.d0)), intent(in)                :: x,y,z !! Centre du bloc / Block center
   integer, intent(in)                              :: ifct !! Numero de la fonction / Function number
   integer, intent(out)                             :: nrb  !! Niveau de raffinement du bloc / Mesh refinement level

!=========================== DEBUT DU CODE EXECUTABLE ==================

nrb=0*int(x*y*z)
  
   SELECT CASE (ifct)

!------ Cas de Montfaucon
    CASE (1)
      nrb=0
      IF(x.gt.0.D0 .and. x.le.2.d0 .and. y.le.6.4d0)nrb=2
      IF(x.gt.2.D0 .and. x.le.16.d0 .and. y.le. (6.4d0-(x-2.d0)*3.5d0/14.d0))nrb=2
      IF(x.gt.16.D0 .and. x.le.22.d0 .and. y.le.2.9d0)nrb=0
      IF(x.gt.22.D0 .and. x.le.30.d0 .and. y.le. (2.9d0-(x-22.d0)*2.7d0/8.d0))nrb=0

    CASE DEFAULT
      call print_err('fct_mesh', 'No user function defined')

   END SELECT
!===========================   FIN DE LA ROUTINE    ====================
END SUBROUTINE fct_mesh
!DOCFIN
