 SUBROUTINE critraf(calc,critere,ib,nb_cell_bloc)
!=========================== DOCUMENTATION ============================= 
!DOCDEBh*    UTI/critraf  *
!
!    NOM
! critraf(calc,critere,ib,nb_cell_bloc)
!    DESCRIPTION  
!*
! Determination du critere de raffinement moyen sur un bloc.
! Determining the average refinement criterion on a block.
!*
! 
!    ENTREES / INPUT
!    calc  : objet calcul initial / initial calcul object
!    ib    : numero du bloc / block number
!    nb_cell_bloc : nombre de cellules du bloc / cell number of the block
!
!    SORTIES / OUTPUT
!    critere  : critere de raffinement moyen sur le bloc / average refinement criterion on the block
!    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
  IMPLICIT NONE
!.2-----  Declaration
  type(calcul), intent(inout)                       :: calc !! objet calcul / calcul object
  integer, intent(in)                               :: ib  !! numero du bloc / Block number
  integer, intent(in)                               :: nb_cell_bloc !! nombre de cellules du bloc / cell number of the block
  real(kind=kind(0.d0)),dimension(:), intent(inout) :: critere !! Critere moyen sur le bloc / average criterion of the block
  
  real(kind=kind(0.d0))                             :: crit
  integer                                           :: i,ibloc
!=========================== DEBUT DU CODE EXECUTABLE ==================

  ibloc=calc%list_bloc(ib)%numbl
  critere(ibloc)=0.d0

  DO i=1,nb_cell_bloc
    call critphy(calc%msh%list_cell(calc%list_bloc(ib)%first_cell+i)%w,crit)
    critere(ibloc)=critere(ibloc)+ crit* &
                   calc%msh%list_cell(calc%list_bloc(ib)%first_cell+i)%vol

  END DO
  critere(ibloc)=dabs(critere(ibloc))       
!===========================   FIN DE LA ROUTINE    ====================
END SUBROUTINE critraf
!DOCFIN