init_def_bloc.f90

### TABLE OF CONTENTS

- 1. UTI/PRE/ini_def_bloc

## UTI/PRE/ini_def_bloc [ Modules ]

[ Top ] [ Modules ]

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