The TELEMAC-MASCARET system  trunk
vc05ft.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE vc05ft
3 ! *****************
4 !
5  &(xmul,su,sv,u,v,x,y,z,
6  & ikle1,ikle2,ikle3,nbor,nelem,nelmax,w1,w2,w3)
7 !
8 !***********************************************************************
9 ! BIEF V6P1 21/08/2010
10 !***********************************************************************
11 !
12 !brief COMPUTES THE FOLLOWING VECTOR IN FINITE ELEMENTS:
13 !code
14 !+ / ->
15 !+ VEC(I) = XMUL / (U,V).N PSI(I) D(GAMMA)
16 !+ /GAMMA
17 !+
18 !+ PSI(I) IS A BASE OF TYPE P1 TRIANGLE ON A LATERAL VERTICAL
19 !+ MESH (PRISMS MESH SPLIT IN TETRAHEDRONS)
20 !
21 !warning THE JACOBIAN MUST BE POSITIVE
22 !warning THE RESULT IS IN W1,2,3 IN NOT ASSEMBLED FORM
23 !
24 !history J-M HERVOUET (LNH) ; F LEPEINTRE (LNH)
25 !+ 05/02/91
26 !+ V6P0
27 !+
28 !
29 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
30 !+ 13/07/2010
31 !+ V6P0
32 !+ Translation of French comments within the FORTRAN sources into
33 !+ English comments
34 !
35 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
36 !+ 21/08/2010
37 !+ V6P0
38 !+ Creation of DOXYGEN tags for automated documentation and
39 !+ cross-referencing of the FORTRAN sources
40 !
41 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
42 !| IKLE1 |-->| FIRST POINT OF TRIANGLES
43 !| IKLE2 |-->| SECOND POINT OF TRIANGLES
44 !| IKLE3 |-->| THIRD POINT OF TRIANGLES
45 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
46 !| NELEM |-->| NUMBER OF ELEMENTS
47 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
48 !| SU |-->| BIEF_OBJ STRUCTURE OF U
49 !| SV |-->| BIEF_OBJ STRUCTURE OF V
50 !| U |-->| FUNCTION USED IN THE VECTOR FORMULA
51 !| V |-->| FUNCTION USED IN THE VECTOR FORMULA
52 !| W1 |<--| RESULT IN NON ASSEMBLED FORM
53 !| W2 |<--| RESULT IN NON ASSEMBLED FORM
54 !| W3 |<--| RESULT IN NON ASSEMBLED FORM
55 !| X |-->| ABSCISSAE OF POINTS IN THE MESH
56 !| XMUL |-->| MULTIPLICATION COEFFICIENT
57 !| Y |-->| ORDINATES OF POINTS IN THE MESH
58 !| Z |-->| ELEVATIONS OF POINTS IN THE MESH
59 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 !
61  USE bief, ex_vc05ft => vc05ft
62 !
64  IMPLICIT NONE
65 !
66 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67 !
68  INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
69  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
70 !
71  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
72  DOUBLE PRECISION, INTENT(INOUT):: W1(nelmax),W2(nelmax),W3(nelmax)
73  DOUBLE PRECISION, INTENT(IN) :: XMUL
74 !
75 !-----------------------------------------------------------------------
76 !
77 ! STRUCTURES OF U, V AND REAL DATA
78 !
79  TYPE(bief_obj), INTENT(IN) :: SU,SV
80  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
81 !
82 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
83 !
84  DOUBLE PRECISION U1,U2,U3,V1,V2,V3,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3
85  DOUBLE PRECISION XSUR24
86  INTEGER IELMU,IELMV,IELEM,N1,N2,N3,I1,I2,I3
87 !
88 !-----------------------------------------------------------------------
89 !
90  ielmu=su%ELM
91  ielmv=sv%ELM
92 !
93 !-----------------------------------------------------------------------
94 !
95  xsur24 = xmul/24.d0
96 !
97 ! U LINEAR BY TETRAHEDRONS
98 !
99 !-----------------------------------------------------------------------
100 !
101  IF(ielmu.EQ.61.AND.ielmv.EQ.61) THEN
102 !
103 !-----------------------------------------------------------------------
104 !
105 ! LOOP ON THE BOUNDARY SIDES
106 !
107  DO ielem = 1,nelem
108 !
109 ! LOCAL NUMBERING OF THE SIDE NODES
110 !
111  i1 = ikle1(ielem)
112  i2 = ikle2(ielem)
113  i3 = ikle3(ielem)
114 !
115 ! GLOBAL NUMBERING OF THE SIDE NODES
116 !
117  n1 = nbor(i1)
118  n2 = nbor(i2)
119  n3 = nbor(i3)
120 !
121  u1 = u(i1)
122  u2 = u(i2)
123  u3 = u(i3)
124  v1 = v(i1)
125  v2 = v(i2)
126  v3 = v(i3)
127 !
128  x1 = x(n1)
129  x2 = x(n2)-x1
130  x3 = x(n3)-x1
131  y1 = y(n1)
132  y2 = y(n2)-y1
133  y3 = y(n3)-y1
134  z1 = z(n1)
135  z2 = z(n2)-z1
136  z3 = z(n3)-z1
137 !
138 ! COMPUTES THE AREA OF THE TRIANGLE (BY VECTOR PRODUCT)
139 !
140 ! NOTE: VECTOR NORMAL TO THE TRIANGLE,
141 ! WHICH NORM IS THE SURFACE:
142 !
143 ! 0.5 (Y2*Z3-Y3*Z2)
144 ! 0.5 (X3*Z2-X2*Z3)
145 ! 0.5 (X2*Y3-X3*Y2) : THIS TERM =0
146 !
147 ! INSPIRED FROM MASVEC ON TRIANGLES :
148 !
149 !
150  w1(ielem) = xsur24* ( (y2*z3-y3*z2)*(2*u1+ u2+ u3)
151  & +(x3*z2-x2*z3)*(2*v1+ v2+ v3) )
152  w2(ielem) = xsur24* ( (y2*z3-y3*z2)*( u1+2*u2+ u3)
153  & +(x3*z2-x2*z3)*( v1+2*v2+ v3) )
154  w3(ielem) = xsur24* ( (y2*z3-y3*z2)*( u1+ u2+2*u3)
155  & +(x3*z2-x2*z3)*( v1+ v2+2*v3) )
156 !
157  ENDDO
158 !
159 !-----------------------------------------------------------------------
160 !
161  ELSEIF(ielmu.EQ.51.AND.ielmv.EQ.51) THEN
162 !
163 !-----------------------------------------------------------------------
164 !
165 ! LOOP ON THE BOUNDARY SIDES
166 !
167  DO ielem = 1,nelem
168 !
169 ! GLOBAL NUMBERING OF THE SIDE NODES
170 !
171  n1 = nbor(ikle1(ielem))
172  n2 = nbor(ikle2(ielem))
173  n3 = nbor(ikle3(ielem))
174 !
175  u1 = u(n1)
176  u2 = u(n2)
177  u3 = u(n3)
178  v1 = v(n1)
179  v2 = v(n2)
180  v3 = v(n3)
181  x1 = x(n1)
182  x2 = x(n2)-x1
183  x3 = x(n3)-x1
184  y1 = y(n1)
185  y2 = y(n2)-y1
186  y3 = y(n3)-y1
187  z1 = z(n1)
188  z2 = z(n2)-z1
189  z3 = z(n3)-z1
190 !
191 ! COMPUTES THE AREA OF THE TRIANGLE (BY VECTOR PRODUCT)
192 !
193 ! NOTE: VECTOR NORMAL TO THE TRIANGLE,
194 ! WHICH NORM IS THE SURFACE:
195 !
196 ! 0.5 (Y2*Z3-Y3*Z2)
197 ! 0.5 (X3*Z2-X2*Z3)
198 ! 0.5 (X2*Y3-X3*Y2) : THIS TERM =0
199 !
200 ! INSPIRED FROM MASVEC ON TRIANGLES :
201 !
202 !
203  w1(ielem) = xsur24* ( (y2*z3-y3*z2)*(2*u1+ u2+ u3)
204  & +(x3*z2-x2*z3)*(2*v1+ v2+ v3) )
205  w2(ielem) = xsur24* ( (y2*z3-y3*z2)*( u1+2*u2+ u3)
206  & +(x3*z2-x2*z3)*( v1+2*v2+ v3) )
207  w3(ielem) = xsur24* ( (y2*z3-y3*z2)*( u1+ u2+2*u3)
208  & +(x3*z2-x2*z3)*( v1+ v2+2*v3) )
209 !
210  ENDDO
211 !
212 !-----------------------------------------------------------------------
213 !
214  ELSE
215 !
216 !-----------------------------------------------------------------------
217 !
218  WRITE(lu,101) ielmu,su%NAME
219 101 FORMAT(1x,'VC05FT (BIEF) :',/,
220  & 1x,'DISCRETIZATION OF U NOT AVAILABLE:',1i6,
221  & 1x,'REAL NAME: ',a6)
222  CALL plante(1)
223  stop
224 !
225  ENDIF
226 !
227 !-----------------------------------------------------------------------
228 !
229  RETURN
230  END
subroutine vc05ft(XMUL, SU, SV, U, V, X, Y, Z, IKLE1, IKLE2, IKLE3, NBOR, NELEM, NELMAX, W1, W2, W3)
Definition: vc05ft.f:8
Definition: bief.f:3