The TELEMAC-MASCARET system  trunk
gtsh41.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE gtsh41
3 ! *****************
4 !
5  &(shp,shz,shf,ws,fs,elt,eta,fre,ikle,eltcar,
6  & npoin2,nelmax2,nplan,jf,nf,ya4d)
7 !
8 !***********************************************************************
9 ! BIEF V6P2 21/08/2010
10 !***********************************************************************
11 !
12 !brief Gives the starting element and the barycentric coordinates of
13 !+ the head of characteristics.
14 !
15 !history J-M JANIN (LNH)
16 !+ 21/08/2008
17 !+ V5P9
18 !+
19 !
20 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
21 !+ 13/07/2010
22 !+ V6P0
23 !+ Translation of French comments within the FORTRAN sources into
24 !+ English comments
25 !
26 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
27 !+ 21/08/2010
28 !+ V6P0
29 !+ Creation of DOXYGEN tags for automated documentation and
30 !+ cross-referencing of the FORTRAN sources
31 !
32 !history C. DENIS (SINETICS) & J-M HERVOUET (LNHE)
33 !+ 09/05/2012
34 !+ V6P2
35 !+ New version using ELTCAR (done in MAKE_ELTCAR called by INBIEF)
36 !+
37 !
38 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
39 !| ELT |<--| 2D ELEMENT CHOSEN FOR EVERY POINT
40 !| ETA |-->| LEVEL CHOSEN FOR EVERY POINT
41 !| ELTCAR |-->| STARTING ELEMENT FOR LINEAR AND QUADRATIC POINTS
42 !| IKLE |-->| CONNECTIVITY TABLE
43 !| NELMAX2 |-->| MAXIMUM NUMBER OF 2D ELEMENTS
44 !| NPLAN |-->| NUMBER OF PLANES
45 !| NPOIN |-->| NUMBER OF POINTS
46 !| NSEG |-->| NUMBER OF SEGMENTS
47 !| QUAB |-->| IF YES, THERE ARE QUASI-BUBBLE VARIABLES
48 !| QUAD |-->| IF YES, THERE ARE QUADRATIC VARIABLES
49 !| SHP |<--| BARYCENTRIC COORDINATES OF NODES IN THEIR
50 !| | | ASSOCIATED ELEMENT "ELT"
51 !| SHZ |<--| BARYCENTRIC COORDINATES ON THE VERTICAL
52 !| WS |-->| VERTICAL VELOCITY IN TRANSFORMED MESH
53 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
54 !
56  IMPLICIT NONE
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER, INTENT(IN) :: NPOIN2,NELMAX2,NPLAN,JF,NF
61  INTEGER, INTENT(IN) :: IKLE(nelmax2,*),ELTCAR(*)
62  INTEGER, INTENT(INOUT) :: ELT(npoin2,nplan)
63  INTEGER, INTENT(INOUT) :: ETA(npoin2,nplan)
64  INTEGER, INTENT(INOUT) :: FRE(npoin2,nplan)
65  DOUBLE PRECISION, INTENT(INOUT) :: SHP(3,npoin2,nplan)
66  DOUBLE PRECISION, INTENT(INOUT) :: SHZ(npoin2,nplan)
67  DOUBLE PRECISION, INTENT(INOUT) :: SHF(npoin2,nplan)
68  DOUBLE PRECISION, INTENT(IN) :: WS(npoin2,nplan)
69  DOUBLE PRECISION, INTENT(IN) :: FS(npoin2,nplan)
70  LOGICAL , INTENT(IN) :: YA4D
71 !
72 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
73 !
74  INTEGER I,IELEM,IPLAN
75 !
76 !-----------------------------------------------------------------------
77 !
78 ! POINTS IN THE BOTTOM (LIKE GTSH41)
79 !
80  DO i=1,npoin2
81  ielem=eltcar(i)
82  elt(i,1) = ielem
83  IF(ielem.NE.0) THEN
84  IF(ikle(ielem,1).EQ.i) THEN
85  shp(1,i,1)=1.d0
86  shp(2,i,1)=0.d0
87  shp(3,i,1)=0.d0
88  ELSEIF(ikle(ielem,2).EQ.i) THEN
89  shp(1,i,1)=0.d0
90  shp(2,i,1)=1.d0
91  shp(3,i,1)=0.d0
92  ELSEIF(ikle(ielem,3).EQ.i) THEN
93  shp(1,i,1)=0.d0
94  shp(2,i,1)=0.d0
95  shp(3,i,1)=1.d0
96  ELSE
97  WRITE(lu,*) 'PROBLEM IN GTSH41'
98  CALL plante(1)
99  stop
100  ENDIF
101  ENDIF
102  ENDDO
103 !
104 ! OTHER PLANES
105 !
106  DO iplan=2,nplan
107  DO i=1,npoin2
108  elt(i,iplan) = elt(i,1)
109  shp(1,i,iplan)=shp(1,i,1)
110  shp(2,i,iplan)=shp(2,i,1)
111  shp(3,i,iplan)=shp(3,i,1)
112  ENDDO
113  ENDDO
114 !
115 ! NOW ETA AND SHZ, DONE DEPENDING ON THE VERTICAL VELOCITY
116 !
117  DO iplan = 1,nplan
118  DO i=1,npoin2
119  IF((ws(i,iplan).GT.0.d0.AND.iplan.NE.1).OR.
120  & iplan.EQ.nplan) THEN
121  eta(i,iplan) = iplan-1
122  shz(i,iplan) = 1.d0
123  ELSE
124  eta(i,iplan) = iplan
125  shz(i,iplan) = 0.d0
126  ENDIF
127  ENDDO
128  ENDDO
129 !
130 ! NOW FRE AND SHF, DONE DEPENDING ON THE FREQUENCY VELOCITY
131 !
132  IF(ya4d) THEN
133  DO iplan = 1,nplan
134  DO i=1,npoin2
135  IF((fs(i,iplan).GT.0.d0.AND.jf.NE.1).OR.jf.EQ.nf) THEN
136  fre(i,iplan) = jf-1
137  shf(i,iplan) = 1.d0
138  ELSE
139  fre(i,iplan) = jf
140  shf(i,iplan) = 0.d0
141  ENDIF
142  ENDDO
143  ENDDO
144  ENDIF
145 !
146 !-----------------------------------------------------------------------
147 !
148  RETURN
149  END
subroutine gtsh41(SHP, SHZ, SHF, WS, FS, ELT, ETA, FRE, IKLE, ELTCAR, NPOIN2, NELMAX2, NPLAN, JF, NF, YA4D)
Definition: gtsh41.f:8