The TELEMAC-MASCARET system  trunk
mt13cc.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt13cc
3 ! *****************
4 !
5  &( a11 , a12 , a13 , a14 , a15 , a16 ,
6  & a21 , a22 , a23 , a24 , a25 , a26 ,
7  & a31 , a32 , a33 , a34 , a35 , a36 ,
8  & a41 , a42 , a43 , a44 , a45 , a46 ,
9  & a51 , a52 , a53 , a54 , a55 , a56 ,
10  & a61 , a62 , a63 , a64 , a65 , a66 ,
11  & xmul,xel,yel,nelem,nelmax,icoord)
12 !
13 !***********************************************************************
14 ! BIEF V6P1 21/08/2010
15 !***********************************************************************
16 !
17 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
18 !code
19 !+ EXAMPLE WITH ICOORD = 1
20 !+
21 !+ / D
22 !+ A(I,J)= XMUL * / PSI2(I) * --( PSI1(J) ) D(OMEGA)
23 !+ /OMEGA DX
24 !+
25 !+ ICOORD=2 WOULD GIVE A DERIVATIVE WRT Y
26 !+
27 !+ PSI1: BASES OF TYPE P2 TRIANGLE
28 !+ PSI2: BASES OF TYPE P2 TRIANGLE
29 !
30 !warning THE JACOBIAN MUST BE POSITIVE
31 !
32 !history ALGIANE FROEHLY (MATMECA)
33 !+ 16/06/08
34 !+ V5P9
35 !+
36 !
37 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
38 !+ 13/07/2010
39 !+ V6P0
40 !+ Translation of French comments within the FORTRAN sources into
41 !+ English comments
42 !
43 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
44 !+ 21/08/2010
45 !+ V6P0
46 !+ Creation of DOXYGEN tags for automated documentation and
47 !+ cross-referencing of the FORTRAN sources
48 !
49 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50 !| A11 |<--| ELEMENTS OF MATRIX
51 !| ... |<--| ELEMENTS OF MATRIX
52 !| A66 |<--| ELEMENTS OF MATRIX
53 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
54 !| NELEM |-->| NUMBER OF ELEMENTS
55 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
56 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
57 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
58 !| XMUL |-->| MULTIPLICATION FACTOR
59 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 !
61  USE bief!, EX_MT13CC => MT13CC
62 !
64  IMPLICIT NONE
65 !
66 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67 !
68  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
69 !
70  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
71  DOUBLE PRECISION, INTENT(INOUT) :: A14(*),A15(*),A16(*)
72  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
73  DOUBLE PRECISION, INTENT(INOUT) :: A24(*),A25(*),A26(*)
74  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
75  DOUBLE PRECISION, INTENT(INOUT) :: A34(*),A35(*),A36(*)
76  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
77  DOUBLE PRECISION, INTENT(INOUT) :: A44(*),A45(*),A46(*)
78  DOUBLE PRECISION, INTENT(INOUT) :: A51(*),A52(*),A53(*)
79  DOUBLE PRECISION, INTENT(INOUT) :: A54(*),A55(*),A56(*)
80  DOUBLE PRECISION, INTENT(INOUT) :: A61(*),A62(*),A63(*)
81  DOUBLE PRECISION, INTENT(INOUT) :: A64(*),A65(*),A66(*)
82 !
83  DOUBLE PRECISION, INTENT(IN) :: XMUL
84 !
85  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
86 !
87 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
88 !
89  INTEGER IELEM
90  DOUBLE PRECISION X2,X3,Y2,Y3
91  DOUBLE PRECISION XSUR10,XSUR15,XSUR30
92 !
93 !-----------------------------------------------------------------------
94 !
95  xsur10 = xmul/10.d0
96  xsur15 = xmul/15.d0
97  xsur30 = xmul/30.d0
98 !
99 !================================
100 ! DERIVATIVE WRT X =
101 !================================
102 !
103  IF(icoord.EQ.1) THEN
104 !
105 ! LOOP ON THE ELEMENTS
106 !
107  DO ielem = 1 , nelem
108 !
109 ! INITIALISES THE GEOMETRICAL VARIABLES
110 !
111  y2 = yel(ielem,2)
112  y3 = yel(ielem,3)
113 !
114 ! DIAGONAL TERMS
115 !
116  a22(ielem) = y3 * xsur15
117  a33(ielem) = - y2 * xsur15
118  a44(ielem) = - 4.d0 * a33(ielem)
119  a55(ielem) = 4.d0 * ( a22(ielem) + a33(ielem) )
120  a66(ielem) = - 4.d0 * a22(ielem)
121  a11(ielem) = - a22(ielem) - a33(ielem)
122 !
123 ! EXTRADIAGONAL TERMS
124 !
125  a12(ielem) = - y3 * xsur30
126  a13(ielem) = y2 * xsur30
127  a42(ielem) = y3 * xsur10
128  a53(ielem) = - y2 * xsur10
129  a14(ielem) = - a13(ielem) + a42(ielem)
130  a15(ielem) = a12(ielem) + a13(ielem)
131  a16(ielem) = - a12(ielem) + a53(ielem)
132  a21(ielem) = - a15(ielem)
133  a23(ielem) = a13(ielem)
134  a24(ielem) = - a42(ielem) - a33(ielem)
135  a25(ielem) = a12(ielem) + a33(ielem)
136  a26(ielem) = - a12(ielem)
137  a31(ielem) = - a15(ielem)
138  a32(ielem) = a12(ielem)
139  a34(ielem) = - a13(ielem)
140  a35(ielem) = a22(ielem) + a13(ielem)
141  a36(ielem) = - a53(ielem) - a22(ielem)
142  a41(ielem) = - a42(ielem) - a53(ielem)
143  a43(ielem) = a13(ielem)
144  a45(ielem) = 2.d0 * a22(ielem) - a44(ielem)
145  a46(ielem) = 2.d0 * ( a33(ielem) - a22(ielem) )
146  a51(ielem) = a21(ielem)
147  a52(ielem) = a42(ielem)
148  a54(ielem) = - a45(ielem)
149  a56(ielem) = a66(ielem) - 2.d0 * a33(ielem)
150  a61(ielem) = a41(ielem)
151  a62(ielem) = a12(ielem)
152  a63(ielem) = a53(ielem)
153  a64(ielem) = - a46(ielem)
154  a65(ielem) = - a56(ielem)
155 !
156  ENDDO ! IELEM
157 !
158  ELSEIF(icoord.EQ.2) THEN
159 !
160 !================================
161 ! DERIVATIVE WRT Y =
162 !================================
163 !
164  DO ielem = 1 , nelem
165 !
166 ! INITIALISES THE GEOMETRICAL VARIABLES
167 !
168  x2 = xel(ielem,2)
169  x3 = xel(ielem,3)
170 !
171 ! DIAGONAL TERMS
172 !
173  a22(ielem) = - x3 * xsur15
174  a33(ielem) = x2 * xsur15
175  a44(ielem) = - 4.d0 * a33(ielem)
176  a55(ielem) = 4.d0 * ( a22(ielem) + a33(ielem) )
177  a66(ielem) = - 4.d0 * a22(ielem)
178  a11(ielem) = - a22(ielem) - a33(ielem)
179 !
180 ! EXTRADIAGONAL TERMS
181 !
182  a12(ielem) = x3 * xsur30
183  a13(ielem) = - x2 * xsur30
184  a42(ielem) = - x3 * xsur10
185  a53(ielem) = x2 * xsur10
186  a14(ielem) = - a13(ielem) + a42(ielem)
187  a15(ielem) = a12(ielem) + a13(ielem)
188  a16(ielem) = - a12(ielem) + a53(ielem)
189  a21(ielem) = - a15(ielem)
190  a23(ielem) = a13(ielem)
191  a24(ielem) = - a42(ielem) - a33(ielem)
192  a25(ielem) = a12(ielem) + a33(ielem)
193  a26(ielem) = - a12(ielem)
194  a31(ielem) = - a15(ielem)
195  a32(ielem) = a12(ielem)
196  a34(ielem) = - a13(ielem)
197  a35(ielem) = a22(ielem) + a13(ielem)
198  a36(ielem) = - a53(ielem) - a22(ielem)
199  a41(ielem) = - a42(ielem) - a53(ielem)
200  a43(ielem) = a13(ielem)
201  a45(ielem) = 2.d0 * a22(ielem) - a44(ielem)
202  a46(ielem) = 2.d0 * ( a33(ielem) - a22(ielem) )
203  a51(ielem) = a21(ielem)
204  a52(ielem) = a42(ielem)
205  a54(ielem) = - a45(ielem)
206  a56(ielem) = a66(ielem) - 2.d0 * a33(ielem)
207  a61(ielem) = a41(ielem)
208  a62(ielem) = a12(ielem)
209  a63(ielem) = a53(ielem)
210  a64(ielem) = - a46(ielem)
211  a65(ielem) = - a56(ielem)
212 !
213 !
214  ENDDO ! IELEM
215 !
216  ELSE
217 !
218  WRITE(lu,201) icoord
219  CALL plante(1)
220 !
221  ENDIF
222 !
223 201 FORMAT(1x,'MT13CC (BIEF) : IMPOSSIBLE COMPONENT ',
224  & 1i6,' CHECK ICOORD')
225 !
226 !-----------------------------------------------------------------------
227 !
228  RETURN
229  END
subroutine mt13cc(A11, A12, A13, A14, A15, A16, A21, A22, A23, A24, A25, A26, A31, A32, A33, A34, A35, A36, A41, A42, A43, A44, A45, A46, A51, A52, A53, A54, A55, A56, A61, A62, A63, A64, A65, A66, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13cc.f:13
Definition: bief.f:3