The TELEMAC-MASCARET system  trunk
elebd31.f
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE elebd31
3 ! ******************
4 !
5  &(nelbor,nulone,iklbor,ifabor,nbor,ikle,
6  & nelem,neleb,nelmax,npoin,nptfr,ielm)
7 !
8 !***********************************************************************
9 ! BIEF V6P0 21/08/2010
10 !***********************************************************************
11 !
12 !brief BUILDS NELBOR, NULONE, IKLBORD.
13 !
14 !history LAM MINH-PHUONG
15 !+
16 !+
17 !+
18 !
19 !history J-M HERVOUET (LNH)
20 !+ 09/04/04
21 !+ V5P5
22 !+
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 13/07/2010
26 !+ V6P0
27 !+ Translation of French comments within the FORTRAN sources into
28 !+ English comments
29 !
30 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
31 !+ 21/08/2010
32 !+ V6P0
33 !+ Creation of DOXYGEN tags for automated documentation and
34 !+ cross-referencing of the FORTRAN sources
35 !
36 !history S.E.BOURBAN (HRW)
37 !+ 21/03/2017
38 !+ V7P3
39 !+ Replacement of the DATA declarations by the PARAMETER associates
40 !
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !| IELM |-->| TYPE D'ELEMENT.
43 !| IFABOR |-->| TABLEAU DES VOISINS DES FACES.
44 !| IKLBOR |<--| NUMERO LOCAL DES NOEUDS A PARTIR D'UN ELEMENT
45 !| | | DE BORD
46 !| IKLE |-->| NUMEROS GLOBAUX DES POINTS DE CHAQUE ELEMENT.
47 !| NBOR |-->| NUMERO GLOBAL D'UN NOEUD A PARTIR DU NUMERO LOCAL
48 !| NELBOR |<--| NUMERO DE L'ELEMENT ADJACENT AU KIEME SEGMENT
49 !| NELEB |-->| NOMBRE D'ELEMENTS DE BORD.
50 !| NELEM |-->| NOMBRE TOTAL D'ELEMENTS DANS LE MAILLAGE.
51 !| NELMAX |---|
52 !| NPOIN |-->| NOMBRE TOTAL DE POINTS DU DOMAINE.
53 !| NPTFR |-->| NOMBRE DE POINTS FRONTIERES.
54 !| NULONE |<--| NUMERO LOCAL D'UN POINT DE BORD DANS
55 !| | | L'ELEMENT ADJACENT DONNE PAR NELBOR
56 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
57 !
58  USE bief, ex_elebd31 => elebd31
59 !
61  IMPLICIT NONE
62 !
63 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
64 !
65  INTEGER, INTENT(IN) :: NELEM,NELEB,NELMAX
66  INTEGER, INTENT(IN) :: NPOIN,NPTFR,IELM
67  INTEGER, INTENT(IN) :: NBOR(nptfr)
68  INTEGER, INTENT(IN) :: IFABOR(nelmax,4)
69  INTEGER, INTENT(IN) :: IKLE(nelem,4)
70  INTEGER, INTENT(OUT) :: NELBOR(neleb),NULONE(neleb,3)
71  INTEGER, INTENT(OUT) :: IKLBOR(neleb,3)
72 !
73 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
74 !
75  INTEGER :: IELEM, IELEB, J,K,IPOIN
76  INTEGER :: IPOBO(npoin)
77 !
78  INTEGER :: SOMFAC(3,4)
79  parameter( somfac = reshape( (/
80  & 1,2,3 , 4,1,2 , 2,3,4 , 3,4,1 /), shape=(/ 3,4 /) ) )
81 ! SIDE NUMBER: 1 2 3 4
82 !
83 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
84 !
85  IF(ielm /= 31) THEN
86  WRITE(lu,99) ielm
87 99 FORMAT(1x,'VOISIN: IELM=',1i6,' TYPE OF ELEMENT NOT AVAILABLE')
88  CALL plante(1)
89  stop
90  ENDIF
91 !
92 ! BUILDS IPOBO TO GO FROM GLOBAL NUMBERING TO LOCAL NUMBERING
93  DO ipoin=1,npoin
94  ipobo(ipoin) = 0
95  ENDDO
96  DO k = 1, nptfr
97  ipobo(nbor(k)) = k
98  ENDDO
99 !
100 ! BUILDS NELBOR, NULONE, IKLBORD
101 ! ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
102  ieleb = 0
103  DO ielem = 1,nelem
104  DO j = 1,4
105  IF(ifabor(ielem,j).EQ.0.OR.ifabor(ielem,j).EQ.-1) THEN
106  ieleb = ieleb + 1
107  IF ( ieleb .GT. neleb ) THEN
108  WRITE(lu,102)
109 102 FORMAT(1x,'ELEBD31 : ERROR IN MESH')
110  CALL plante(1)
111  stop
112  END IF
113  nelbor(ieleb) = ielem
114  nulone(ieleb,1) = somfac(1,j)
115  nulone(ieleb,2) = somfac(2,j)
116  nulone(ieleb,3) = somfac(3,j)
117  iklbor(ieleb,1) = ipobo(ikle(nelbor(ieleb),somfac(1,j)))
118  iklbor(ieleb,2) = ipobo(ikle(nelbor(ieleb),somfac(2,j)))
119  iklbor(ieleb,3) = ipobo(ikle(nelbor(ieleb),somfac(3,j)))
120  ENDIF
121  ENDDO
122  ENDDO
123 !
124 !-----------------------------------------------------------------------
125 !
126  RETURN
127  END SUBROUTINE elebd31
subroutine elebd31(NELBOR, NULONE, IKLBOR, IFABOR, NBOR, IKLE, NELEM, NELEB, NELMAX, NPOIN, NPTFR, IELM)
Definition: elebd31.f:8
Definition: bief.f:3