 SUBROUTINE init_def_bloc(cb,nzone,zone)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    UTI/PRE/ini_def_bloc  *
!
!    NOM
! ini_def_bloc(cb,nzone,zone)
!    DESCRIPTION  
!*
! Definition de la discretisation des blocs 
! Definition of block discretisation 
!*
!
!    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 num
  use UTI,only: fct_mesh
  IMPLICIT NONE
!.2-----  Declaration
  type(calcul)                                      :: cb    !! Objet calcul / Calcul object
  real(kind=kind(0.d0)),allocatable,dimension(:,:)  :: zone  !! parametres de maillage / Mesh parameters
  integer,allocatable,dimension(:,:)                :: nzone !! parametres de maillage / Mesh parameters

  integer                                           :: i,j
  type( point)                                      :: center

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


!----------------------------------------------------------------------------------
! on definit la discretisation des blocs 
!
! Premier cas on utilise les zones definies dans cerf.inp

  IF (nzone(1,1).ge.0) THEN
      DO i=1,cb%nb_bloc
          cb%list_bloc(i)%nrb =0
          cb%list_bloc(i)%idom=0
          center%x=0.d0; center%y=0.d0; center%z=0.d0
          do j=1,8
            center%x=center%x+cb%list_bloc(i)%s(j)%x/8.d0
            center%y=center%y+cb%list_bloc(i)%s(j)%y/8.d0
            center%z=center%z+cb%list_bloc(i)%s(j)%z/8.d0
          enddo
          DO j=1,size(nzone,2)
              IF (center%x.ge.zone(1,j).and. &
                  center%x.le.zone(2,j).and. &
                  center%y.ge.zone(3,j).and. &
                  center%y.le.zone(4,j).and. &
                  center%z.ge.zone(5,j).and. &
                  center%z.le.zone(6,j))then
                  cb%list_bloc(i)%nrb =nzone(1,j)
              END IF
          END DO
      END DO
  ELSE
! Deuxieme cas on utilise les fonctions utilisateur
  DO i=1,cb%nb_bloc
          cb%list_bloc(i)%nrb =0
          cb%list_bloc(i)%idom=0
          center%x=0.d0; center%y=0.d0; center%z=0.d0
          do j=1,8
            center%x=center%x+cb%list_bloc(i)%s(j)%x/8.d0
            center%y=center%y+cb%list_bloc(i)%s(j)%y/8.d0
            center%z=center%z+cb%list_bloc(i)%s(j)%z/8.d0
          enddo
          call fct_mesh(center%x,center%y,center%z,-nzone(1,1),cb%list_bloc(i)%nrb)
      END DO
  END IF
  

!===========================   FIN DE LA ROUTINE    ====================

END SUBROUTINE init_def_bloc
!DOCFIN 
