The TELEMAC-MASCARET system  trunk
gtsh11.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE gtsh11
3 ! *****************
4 !
5  &(shp,elt,ikle,eltcar,npoin,nelem,nelmax,nseg,quab,quad)
6 !
7 !***********************************************************************
8 ! BIEF V6P2 21/08/2010
9 !***********************************************************************
10 !
11 !brief Gives the starting element and the barycentric coordinates of
12 !+ the head of characteristics.
13 !
14 !note In most cases (linear, quadratic) ELT is a mere copy of ELTCAR,
15 !+ but it will be changed in the computation of charactristics.
16 !
17 !history J-M HERVOUET (LNHE)
18 !+ 19/08/2008
19 !+ V5P9
20 !+
21 !
22 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
23 !+ 13/07/2010
24 !+ V6P0
25 !+ Translation of French comments within the FORTRAN sources into
26 !+ English comments
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 21/08/2010
30 !+ V6P0
31 !+ Creation of DOXYGEN tags for automated documentation and
32 !+ cross-referencing of the FORTRAN sources
33 !
34 !history C. DENIS (SINETICS) & J-M HERVOUET (LNHE)
35 !+ 09/05/2012
36 !+ V6P2
37 !+ New version using ELTCAR (done in MAKE_ELTCAR called by INBIEF)
38 !
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !| ELT |<--| ELEMENT CHOSEN FOR EVERY POINT
41 !| ELTCAR |-->| STARTING ELEMENT FOR LINEAR AND QUADRATIC POINTS
42 !| | | MUST HAVE THE RELEVANT SIZE.
43 !| IKLE |-->| CONNECTIVITY TABLE
44 !| NELEM |-->| NUMBER OF ELEMENTS
45 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
46 !| NPOIN |-->| NUMBER OF POINTS
47 !| NSEG |-->| NUMBER OF SEGMENTS
48 !| QUAB |-->| IF YES, THERE ARE QUASI-BUBBLE VARIABLES
49 !| QUAD |-->| IF YES, THERE ARE QUADRATIC VARIABLES
50 !| SHP |<--| BARYCENTRIC COORDINATES OF NODES IN THEIR
51 !| | | ASSOCIATED ELEMENT "ELT"
52 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 !
55  IMPLICIT NONE
56 !
57 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
58 !
59  INTEGER, INTENT(IN) :: NPOIN,NELEM,NELMAX,NSEG
60  INTEGER, INTENT(IN) :: IKLE(nelmax,*),ELTCAR(*)
61 ! NPOIN
62 ! NPOIN+NELEM
63 ! NPOIN+NSEG
64  INTEGER, INTENT(INOUT) :: ELT(*)
65  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,*)
66  LOGICAL, INTENT(IN) :: QUAB,QUAD
67 !
68 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
69 !
70  INTEGER I,IELEM
71  DOUBLE PRECISION TIERS
72  tiers=1.d0/3.d0
73 !
74 !-----------------------------------------------------------------------
75 !
76  DO i=1,npoin
77  ielem=eltcar(i)
78  elt(i) = ielem
79  IF(ielem.NE.0) THEN
80  IF(ikle(ielem,1).EQ.i) THEN
81  shp(1,i)=1.d0
82  shp(2,i)=0.d0
83  shp(3,i)=0.d0
84  ELSEIF(ikle(ielem,2).EQ.i) THEN
85  shp(1,i)=0.d0
86  shp(2,i)=1.d0
87  shp(3,i)=0.d0
88  ELSEIF(ikle(ielem,3).EQ.i) THEN
89  shp(1,i)=0.d0
90  shp(2,i)=0.d0
91  shp(3,i)=1.d0
92  ELSE
93  WRITE(lu,*) 'PROBLEM IN GTSH11'
94  CALL plante(1)
95  stop
96  ENDIF
97  ENDIF
98  ENDDO
99  IF(quab) THEN
100  DO ielem=1,nelem
101  i=npoin+ielem
102  elt(i)=ielem
103  shp(1,i)=tiers
104  shp(2,i)=tiers
105  shp(3,i)=tiers
106  ENDDO
107  ENDIF
108  IF(quad) THEN
109  DO i=npoin+1,npoin+nseg
110  ielem=eltcar(i)
111  elt(i)=ielem
112  IF(ielem.NE.0) THEN
113  IF(ikle(ielem,4).EQ.i) THEN
114 ! POINT 4
115  shp(1,i)=0.5d0
116  shp(2,i)=0.5d0
117  shp(3,i)=0.d0
118  ELSEIF(ikle(ielem,5).EQ.i) THEN
119 ! POINT 5
120  shp(1,i)=0.d0
121  shp(2,i)=0.5d0
122  shp(3,i)=0.5d0
123  ELSEIF(ikle(ielem,6).EQ.i) THEN
124 ! POINT 6
125  shp(1,i)=0.5d0
126  shp(2,i)=0.d0
127  shp(3,i)=0.5d0
128  ELSE
129  WRITE(lu,*) 'PROBLEM IN GTSH11, QUADRATIC CASE'
130  CALL plante(1)
131  stop
132  ENDIF
133  ENDIF
134  ENDDO
135  ENDIF
136 !
137 !-----------------------------------------------------------------------
138 !
139  RETURN
140  END
subroutine gtsh11(SHP, ELT, IKLE, ELTCAR, NPOIN, NELEM, NELMAX, NSEG, QUAB, QUAD)
Definition: gtsh11.f:7