The TELEMAC-MASCARET system  trunk
mt11ba.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt11ba
3 ! *****************
4 !
5  &( a11 , a12 , a13 ,
6  & a21 , a22 , a23 ,
7  & a31 , a32 , a33 ,
8  & a41 , a42 , a43 ,
9  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,ikle4,
10  & nelem,nelmax,icoord)
11 !
12 !***********************************************************************
13 ! BIEF V6P1 21/08/2010
14 !***********************************************************************
15 !
16 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
17 !code
18 !+ EXAMPLE WITH ICOORD=1
19 !+
20 !+ / D
21 !+ A(I,J)= -XMUL / PSI2(J) * --( F * PSI1(I) ) D(OMEGA)
22 !+ /OMEGA DX
23 !+
24 !+
25 !+ BEWARE THE MINUS SIGN !!
26 !+
27 !+ PSI1: BASES OF TYPE QUASI-BUBBLE TRIANGLE
28 !+ PSI2: BASES OF TYPE P1 TRIANGLE
29 !+
30 !+ IT WOULD BE A DERIVATIVE WRT Y WITH ICOORD=2
31 !
32 !warning THE JACOBIAN MUST BE POSITIVE
33 !
34 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
35 !+ 09/12/94
36 !+ V5P1
37 !+
38 !
39 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
40 !+ 13/07/2010
41 !+ V6P0
42 !+ Translation of French comments within the FORTRAN sources into
43 !+ English comments
44 !
45 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
46 !+ 21/08/2010
47 !+ V6P0
48 !+ Creation of DOXYGEN tags for automated documentation and
49 !+ cross-referencing of the FORTRAN sources
50 !
51 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
52 !| A11 |<--| ELEMENTS OF MATRIX
53 !| A12 |<--| ELEMENTS OF MATRIX
54 !| A13 |<--| ELEMENTS OF MATRIX
55 !| A21 |<--| ELEMENTS OF MATRIX
56 !| A22 |<--| ELEMENTS OF MATRIX
57 !| A23 |<--| ELEMENTS OF MATRIX
58 !| A31 |<--| ELEMENTS OF MATRIX
59 !| A32 |<--| ELEMENTS OF MATRIX
60 !| A33 |<--| ELEMENTS OF MATRIX
61 !| A41 |<--| ELEMENTS OF MATRIX
62 !| A42 |<--| ELEMENTS OF MATRIX
63 !| A43 |<--| ELEMENTS OF MATRIX
64 !| F |-->| FUNCTION USED IN THE FORMULA
65 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
66 !| IKLE1 |-->| FIRST POINTS OF TRIANGLES
67 !| IKLE2 |-->| SECOND POINTS OF TRIANGLES
68 !| IKLE3 |-->| THIRD POINTS OF TRIANGLES
69 !| IKLE4 |-->| FOURTH POINTS OF TRIANGLES (QUADRATIC)
70 !| IKLE5 |-->| FIFTH POINTS OF TRIANGLES (QUADRATIC)
71 !| IKLE6 |-->| SIXTH POINTS OF TRIANGLES (QUADRATIC)
72 !| NELEM |-->| NUMBER OF ELEMENTS
73 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
74 !| SF |-->| STRUCTURE OF FUNCTIONS F
75 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
76 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
77 !| XMUL |-->| MULTIPLICATION FACTOR
78 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
79 !
80  USE bief, ex_mt11ba => mt11ba
81 !
83  IMPLICIT NONE
84 !
85 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
86 !
87  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
88  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
89  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
90 !
91  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
92  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
93  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
94  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
95 !
96  DOUBLE PRECISION, INTENT(IN) :: XMUL
97  DOUBLE PRECISION, INTENT(IN) :: F(*)
98 !
99 ! STRUCTURE OF F
100  TYPE(bief_obj), INTENT(IN) :: SF
101 !
102  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
103 !
104 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
105 !
106  INTEGER IELEM,IELMF
107  DOUBLE PRECISION X2,X3,Y2,Y3,F1,F2,F3,F4,XSUR72,XSUR36,XSUR18
108  DOUBLE PRECISION XSU216
109 !
110 !-----------------------------------------------------------------------
111 !
112  ielmf=sf%ELM
113 !
114  xsu216 = xmul /216.d0
115  xsur72 = xmul / 72.d0
116  xsur36 = xmul / 36.d0
117  xsur18 = xmul / 18.d0
118 !
119 !-----------------------------------------------------------------------
120 ! CASE WHERE F IS OF TYPE P1
121 !-----------------------------------------------------------------------
122 !
123  IF(ielmf.EQ.11) THEN
124 !
125 !================================
126 ! DERIVATIVE WRT X =
127 !================================
128 !
129  IF(icoord.EQ.1) THEN
130 !
131 ! LOOP ON THE ELEMENTS
132 !
133  DO ielem = 1 , nelem
134 !
135 ! INITIALISES THE GEOMETRICAL VARIABLES
136 !
137  y2 = yel(ielem,2)
138  y3 = yel(ielem,3)
139 !
140  f1 = f(ikle1(ielem))
141  f2 = f(ikle2(ielem))
142  f3 = f(ikle3(ielem))
143 !
144 ! EXTRADIAGONAL TERMS
145 !
146  a12(ielem)=(5*y3*f3+5*y3*f2+14*y3*f1-18*y2*f2-18*y2*f1)*xsu216
147  a13(ielem)=(18*y3*f3+18*y3*f1-5*y2*f3-5*y2*f2-14*y2*f1)*xsu216
148  a21(ielem)=-(5*y3*f3+14*y3*f2+5*y3*f1-5*y2*f3+4*y2*
149  & f2+13*y2*f1)*xsu216
150  a23(ielem)=-(18*y3*f3+18*y3*f2-13*y2*f3-4*y2*f2+5*y2*f1)*xsu216
151  a31(ielem)=(4*y3*f3-5*y3*f2+13*y3*f1+14*y2*f3+5*y2*
152  & f2+5*y2*f1)*xsu216
153  a32(ielem)=-(4*y3*f3+13*y3*f2-5*y3*f1-18*y2*f3-18*y2*f2)*xsu216
154  a41(ielem)=-(y3-y2)*(f3+f2+f1)*xsur18
155  a42(ielem)=y3*(f3+f2+f1)*xsur18
156  a43(ielem)=-y2*(f3+f2+f1)*xsur18
157 !
158 ! DIAGONAL TERMS
159 !
160  a11(ielem)=(13*y3*f3-5*y3*f2+40*y3*f1+5*y2*f3-13*y2*
161  & f2-40*y2*f1)*xsu216
162  a22(ielem)=-(13*y3*f3+40*y3*f2-5*y3*f1-18*y2*f3+18*y2*f1)*xsu216
163  a33(ielem)=-(18*y3*f2-18*y3*f1-40*y2*f3-13*y2*f2+5*y2*f1)*xsu216
164 !
165  ENDDO ! IELEM
166 !
167  ELSEIF(icoord.EQ.2) THEN
168 !
169 !================================
170 ! DERIVATIVE WRT Y =
171 !================================
172 !
173  DO ielem = 1 , nelem
174 !
175 ! INITIALISES THE GEOMETRICAL VARIABLES
176 !
177  x2 = xel(ielem,2)
178  x3 = xel(ielem,3)
179 !
180  f1 = f(ikle1(ielem))
181  f2 = f(ikle2(ielem))
182  f3 = f(ikle3(ielem))
183 !
184 ! EXTRADIAGONAL TERMS
185 !
186  a12(ielem)=(18*x2*f2+18*x2*f1-5*x3*f3-5*x3*f2-14*x3*f1)*xsu216
187  a13(ielem)=(5*x2*f3+5*x2*f2+14*x2*f1-18*x3*f3-18*x3*f1)*xsu216
188  a21(ielem)=-(5*x2*f3-4*x2*f2-13*x2*f1-5*x3*f3-14*x3*
189  & f2-5*x3*f1)*xsu216
190  a23(ielem)=-(13*x2*f3+4*x2*f2-5*x2*f1-18*x3*f3-18*x3*f2)*xsu216
191  a31(ielem)=-(14*x2*f3+5*x2*f2+5*x2*f1+4*x3*f3-5*x3*
192  & f2+13*x3*f1)*xsu216
193  a32(ielem)=-(18*x2*f3+18*x2*f2-4*x3*f3-13*x3*f2+5*x3*f1)*xsu216
194  a41(ielem)=-(x2-x3)*(f3+f2+f1)*xsur18
195  a42(ielem)=-x3*(f3+f2+f1)*xsur18
196  a43(ielem)=x2*(f3+f2+f1)*xsur18
197 !
198 ! DIAGONAL TERMS
199 !
200  a11(ielem)=-(5*x2*f3-13*x2*f2-40*x2*f1+13*x3*f3-5*x3
201  & *f2+40*x3*f1)*xsu216
202  a22(ielem)=-(18*x2*f3-18*x2*f1-13*x3*f3-40*x3*f2+5*x3*f1)*xsu216
203  a33(ielem)=-(40*x2*f3+13*x2*f2-5*x2*f1-18*x3*f2+18*x3*f1)*xsu216
204 !
205  ENDDO ! IELEM
206 !
207  ELSE
208 !
209  WRITE(lu,201) icoord
210  CALL plante(0)
211  stop
212  ENDIF
213 !
214 !
215 !-----------------------------------------------------------------------
216 ! CASE WHERE F IS OF TYPE QUASI-BUBBLE
217 !-----------------------------------------------------------------------
218 !
219  ELSEIF(ielmf.EQ.12) THEN
220 !
221 !================================
222 ! DERIVATIVE WRT X =
223 !================================
224 !
225  IF(icoord.EQ.1) THEN
226 !
227 ! LOOP ON THE ELEMENTS
228 !
229  DO ielem = 1 , nelem
230 !
231 ! INITIALISES THE GEOMETRICAL VARIABLES
232 !
233  y2 = yel(ielem,2)
234  y3 = yel(ielem,3)
235 !
236  f1 = f(ikle1(ielem))
237  f2 = f(ikle2(ielem))
238  f3 = f(ikle3(ielem))
239  f4 = f(ikle4(ielem))
240 !
241 ! EXTRADIAGONAL TERMS
242 !
243  a12(ielem)=(y3*f3+2*y3*f4+y3*f2+4*y3*f1-6*y2*f2-6*y2*f1)*xsur72
244  a13(ielem)=(6*y3*f3+6*y3*f1-y2*f3-2*y2*f4-y2*f2-4*y2*f1)*xsur72
245  a21(ielem)=-(y3*f3+2*y3*f4+4*y3*f2+y3*f1-y2*f3-2*y2*f4
246  & +2*y2*f2+5*y2*f1)*xsur72
247  a23(ielem)=-(6*y3*f3+6*y3*f2-5*y2*f3+2*y2*f4-2*y2*f2
248  & +y2*f1)*xsur72
249  a31(ielem)=(2*y3*f3-2*y3*f4-y3*f2+5*y3*f1+4*y2*f3+2*
250  & y2*f4+y2*f2+y2*f1)*xsur72
251  a32(ielem)=-(2*y3*f3-2*y3*f4+5*y3*f2-y3*f1-6*y2*f3-6
252  & *y2*f2)*xsur72
253  a41(ielem)=-(y3-y2)*(f3+3*f4+f2+f1)*xsur36
254  a42(ielem)=y3*(f3+3*f4+f2+f1)*xsur36
255  a43(ielem)=-y2*(f3+3*f4+f2+f1)*xsur36
256 !
257 ! DIAGONAL TERMS
258 !
259  a11(ielem)=(5*y3*f3-2*y3*f4-y3*f2+14*y3*f1+y2*f3+2*y2
260  & *f4-5*y2*f2-14*y2*f1)*xsur72
261  a22(ielem)=-(5*y3*f3-2*y3*f4+14*y3*f2-y3*f1-6*y2*f3+
262  & 6*y2*f1)*xsur72
263  a33(ielem)=-(6*y3*f2-6*y3*f1-14*y2*f3+2*y2*f4-5*y2*
264  & f2+y2*f1)*xsur72
265 !
266  ENDDO ! IELEM
267 !
268  ELSEIF(icoord.EQ.2) THEN
269 !
270 !================================
271 ! DERIVATIVE WRT Y =
272 !================================
273 !
274  DO ielem = 1 , nelem
275 !
276 ! INITIALISES THE GEOMETRICAL VARIABLES
277 !
278  x2 = xel(ielem,2)
279  x3 = xel(ielem,3)
280 !
281  f1 = f(ikle1(ielem))
282  f2 = f(ikle2(ielem))
283  f3 = f(ikle3(ielem))
284  f4 = f(ikle4(ielem))
285 !
286 ! EXTRADIAGONAL TERMS
287 !
288  a12(ielem)=(6*x2*f2+6*x2*f1-x3*f3-2*x3*f4-x3*f2-4*x3*f1)*xsur72
289  a13(ielem)=(x2*f3+2*x2*f4+x2*f2+4*x2*f1-6*x3*f3-6*x3*f1)*xsur72
290  a21(ielem)=-(x2*f3+2*x2*f4-2*x2*f2-5*x2*f1-x3*f3-2*x3
291  & *f4-4*x3*f2-x3*f1)*xsur72
292  a23(ielem)=-(5*x2*f3-2*x2*f4+2*x2*f2-x2*f1-6*x3*f3-6
293  & *x3*f2)*xsur72
294  a31(ielem)=-(4*x2*f3+2*x2*f4+x2*f2+x2*f1+2*x3*f3-2*x3
295  & *f4-x3*f2+5*x3*f1)*xsur72
296  a32(ielem)=-(6*x2*f3+6*x2*f2-2*x3*f3+2*x3*f4-5*x3*f2
297  & +x3*f1)*xsur72
298  a41(ielem)=-(x2-x3)*(f3+3*f4+f2+f1)*xsur36
299  a42(ielem)=-x3*(f3+3*f4+f2+f1)*xsur36
300  a43(ielem)=x2*(f3+3*f4+f2+f1)*xsur36
301 !
302 ! DIAGONAL TERMS
303 !
304  a11(ielem)=-(x2*f3+2*x2*f4-5*x2*f2-14*x2*f1+5*x3*f3-
305  & 2*x3*f4-x3*f2+14*x3*f1)*xsur72
306  a22(ielem)=-(6*x2*f3-6*x2*f1-5*x3*f3+2*x3*f4-14*x3*
307  & f2+x3*f1)*xsur72
308  a33(ielem)=-(14*x2*f3-2*x2*f4+5*x2*f2-x2*f1-6*x3*f2+
309  & 6*x3*f1)*xsur72
310 !
311  ENDDO ! IELEM
312 !
313  ELSE
314 !
315  WRITE(lu,201) icoord
316  CALL plante(0)
317  stop
318  ENDIF
319 !
320 !-----------------------------------------------------------------------
321 !
322  ELSE
323  WRITE(lu,101) ielmf
324 101 FORMAT(1x,'MT11BA (BIEF) :',/,
325  & 1x,'DISCRETIZATION OF F : ',1i6,' NOT AVAILABLE')
326  CALL plante(0)
327  stop
328  ENDIF
329 !
330 201 FORMAT(1x,'MT11BA (BIEF) : IMPOSSIBLE COMPONENT ',
331  & 1i6,' CHECK ICOORD')
332 !
333 !-----------------------------------------------------------------------
334 !
335  RETURN
336  END
subroutine mt11ba(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, ICOORD)
Definition: mt11ba.f:12
Definition: bief.f:3