TABLE OF CONTENTS
- 1. GEO/geo_typ
GEO/geo_typ [ Methods ]
NOM
geo_typ
DESCRIPTION
Descrition des types de structures GEOmetrie/maillage Description of GEOmetry/mesh structure types
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 IMPLICIT NONE !=========================== DEBUT DU CODE EXECUTABLE ================== !----- Grandeurs communes necessaires a la description de la geometrie !----- Common variables necessary for the description of the geometry ! distance minimale de recollement / minimal distance for merging real(kind=kind(0.d0)) :: petit = 1.d-6, hpetit ! distance minimale pour la numerotation de morton / minimal distance for morton numbering real(kind=kind(0.d0)) :: petit_morton = 1.d-6 ! decalage pour la numerotation de morton suivant x,y,z / offset for morton numbering in x,y,z real(kind=kind(0.d0)) :: x_min_morton = 0.d0 real(kind=kind(0.d0)) :: y_min_morton = 0.d0 real(kind=kind(0.d0)) :: z_min_morton = 0.d0 ! nombre maximum de solides dans le calcul / maximum number of solids in the calculation integer, parameter :: nb_sol_max=10 !----- Debut Type ------------------------------------------------------ TYPE point real(kind=kind(0.d0)):: x,y,z END TYPE point !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ TYPE face integer,dimension(4) :: vertex ! tableau des points (au plus 4) : numero LOCAL au domaine des sommets integer :: nbvertex ! nombre effectif de points (3 ou 4) integer :: ic1,ic2 ! numero LOCAL des deux cellules voisines si ic2 <=0 ---> condition aux limites real(kind=kind(0.d0)) :: surf ! surface integer :: flevel type(vect_3) :: vnorm ! vecteur normal, orienté de ic1 vers ic2 (obligatoire) type(point) :: center ! barycentre END TYPE face !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ TYPE cell type(point) :: center ! barycentre real(kind=kind(0.d0)) :: vol ! volume real(kind=kind(0.d0)) :: h ! Rapport Volume sur surface du bord : homogene à une distance: soit le "diametre" de la cellule integer :: clevel ! dans le cas de la turbulence distance a la paroi et yplus et indicateur solide !real(kind=kind(0.d0)) :: dip !real(kind=kind(0.d0)) :: yplus integer :: isolid=0 !type(vect_3) :: vnpa ! vecteur normal a la paroi type(state) :: w ! vecteur d etat au centre de la maille type(vect_nvar) :: balance ! bilan des flux et des sources sur la maille type(vect_nvar) :: fp ! flux precedent integer :: num,idom,numloc ! numero de la maille, numero de sous-domaine, numero local END TYPE cell !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type liste d entier allouable TYPE list_int integer,pointer,dimension(:):: L => null() END TYPE list_int !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type liste vect-nvar allouable TYPE list_vec type(vect_nvar),pointer,dimension(:):: vec => null() END TYPE list_vec !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type maillage TYPE mesh integer :: numdom,nb_cell,nb_face ! numero du sous-domaine, nombre de cellules et de faces integer :: nb_dom,nb_vertex ! nombre de sous-domaines, nombre de sommets integer :: nb_level_face,nb_level_cell ! nombre de niveaux par faces et par cellules integer :: ndim ! dimension du maillage 0/ Axi, 1/1D, 2/2D , 3/3D real(kind=kind(0.d0)) :: small,big ! dimensions de la plus petite et plus grosse cellule type(face),pointer,dimension(:) :: list_face => null() ! tableaux des cellules type(cell),pointer,dimension(:) :: list_cell => null() ! tableaux des faces type(point),pointer,dimension(:) :: list_vertex => null() ! tableaux des vertex type(list_int),pointer,dimension(:) :: list_send => null() ! tableau des listes de numeros de cellules à envoyer pour domaines voisins type(list_int),pointer,dimension(:) :: list_recv => null() ! tableau des listes de numeros de cellules à recevoir des domaines voisins END TYPE mesh !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type Bloc TYPE bloc integer :: numbl,idom ! numero de bloc et de domaine integer :: morton ! Numero issu du Z-order (code de morton) integer :: nrb,nx,ny,nz ! nbre de cellules suivant x,y,z et niveau de raffinement (puissance de 2), type(point),dimension(8) :: s ! Definition geometrique de la boite par ces 8 sommets real(kind=kind(0.d0)) :: volc ! volume du bloc integer,dimension(6) :: cl(6) ! Cl ou numero du bloc voisin: clxmin,clxmax,clymin,clymax,clzmin,clzmax integer,dimension(6) :: nrf(6) ! Niveau de raffinement de la frontiere du bloc : nrxmin,nrxmax,nrymin,nrymax,nrzmin,nrzmax integer,dimension(6) :: dom(6) ! Numero de domaine du bloc voisin: integer :: first_cell, nb_cell ! Numero de la premiere cellule, nombre de cellules integer :: first_face, nb_face ! Numero de la premiere face, nombre de faces integer :: first_vertex, nb_vertex ! Numero du premier sommet, nombre de sommet logical :: isol ! Indicatrice de presence du solide real(kind=kind(0.d0)),dimension(8) :: vb ! valeurs stockees par bloc pour SV: bathymetrie aux 4 premiers sommets ! et coefficient de friction aux 4 premiers sommets END TYPE bloc !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type chaineR1 TYPE chaineR1 integer :: num, interieur real*8 :: z,phi Type(chaineR1), pointer :: prec,suiv END TYPE chaineR1 !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type chaineR2 TYPE chaineR2 real*8 :: y type(chaineR1), pointer :: cr1 type(chaineR2), pointer :: prec,suiv END TYPE chaineR2 !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! type chaineR3 TYPE chaineR3 real*8 :: x type(chaineR2), pointer :: cr2 type(chaineR3), pointer :: prec,suiv END TYPE chaineR3 !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ TYPE facette ! tableau des points (au plus 3) integer,dimension(3) :: vertex END TYPE facette !----- Fin Type -------------------------------------------------------- !----- Debut Type ------------------------------------------------------ ! -- TYPE solide TYPE solide integer :: id=0 ! Identifiant (numero) du solide integer :: imv=0 ! mouvement du solide: =-1 fixe ; =0 libre ; >0 prescrit par la fonction numero imv integer :: nb_vert=0,nb_face=0 ! Nbre de sommets, facettes ou aretes definissant le solide real(kind=kind(0.d0)) :: xmin_s=0.d0,xmax_s=0.d0,ymin_s=0.d0,ymax_s=0.d0,zmin_s=0.d0,zmax_s=0.d0 ! Bounding Box du solide real(kind=kind(0.d0)) :: rho=0.d0 ! Masse volumique du solide type(vect_3) :: xg,theta ! Position du centre de gravite du solide, angle de rotation par rapport au referentiel global type(facette), dimension(:), allocatable :: list_facette ! Liste des facettes constituant l'enveloppe du solide type(point), dimension(:), allocatable :: list_vertex ! Liste des vertex sur l enveloppe du solide integer :: nb_cell=0 ! Nbre de cellules contenues dans le solide ! integer, dimension(:), allocatable :: list_cells END TYPE solide !----- Fin Type -------------------------------------------------------- !=========================== FIN DU MODULE ========================= END MODULE geo_typ