The TELEMAC-MASCARET system  trunk
mt13bb.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt13bb
3 ! *****************
4 !
5  &( a11 , a12 , a13 , a14 ,
6  & a21 , a22 , a23 , a24 ,
7  & a31 , a32 , a33 , a34 ,
8  & a41 , a42 , a43 , a44 ,
9  & xmul,xel,yel,nelem,nelmax,icoord)
10 !
11 !***********************************************************************
12 ! BIEF V6P1 21/08/2010
13 !***********************************************************************
14 !
15 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
16 !code
17 !+ EXAMPLE WITH ICOORD = 1
18 !+
19 !+ / D
20 !+ A(I,J)= XMUL * / PSI2(I) * --( PSI1(J) ) D(OMEGA)
21 !+ /OMEGA DX
22 !+
23 !+ ICOORD=2 WOULD GIVE A DERIVATIVE WRT Y
24 !+
25 !+ PSI1: BASES OF TYPE QUASI-BUBBLE TRIANGLE
26 !+ PSI2: BASES OF TYPE IELM2
27 !
28 !warning THE JACOBIAN MUST BE POSITIVE
29 !
30 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
31 !+ 06/02/95
32 !+ V5P1
33 !+
34 !
35 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
36 !+ 13/07/2010
37 !+ V6P0
38 !+ Translation of French comments within the FORTRAN sources into
39 !+ English comments
40 !
41 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
42 !+ 21/08/2010
43 !+ V6P0
44 !+ Creation of DOXYGEN tags for automated documentation and
45 !+ cross-referencing of the FORTRAN sources
46 !
47 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
48 !| A11 |<--| ELEMENTS OF MATRIX
49 !| A12 |<--| ELEMENTS OF MATRIX
50 !| A13 |<--| ELEMENTS OF MATRIX
51 !| A14 |<--| ELEMENTS OF MATRIX
52 !| A21 |<--| ELEMENTS OF MATRIX
53 !| A22 |<--| ELEMENTS OF MATRIX
54 !| A23 |<--| ELEMENTS OF MATRIX
55 !| A24 |<--| ELEMENTS OF MATRIX
56 !| A31 |<--| ELEMENTS OF MATRIX
57 !| A32 |<--| ELEMENTS OF MATRIX
58 !| A33 |<--| ELEMENTS OF MATRIX
59 !| A34 |<--| ELEMENTS OF MATRIX
60 !| A41 |<--| ELEMENTS OF MATRIX
61 !| A42 |<--| ELEMENTS OF MATRIX
62 !| A43 |<--| ELEMENTS OF MATRIX
63 !| A44 |<--| ELEMENTS OF MATRIX
64 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
65 !| NELEM |-->| NUMBER OF ELEMENTS
66 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
67 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
68 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
69 !| XMUL |-->| MULTIPLICATION FACTOR
70 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
71 !
72  USE bief, ex_mt13bb => mt13bb
73 !
75  IMPLICIT NONE
76 !
77 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
78 !
79  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
80 !
81  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
82  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
83  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
84  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*),A44(*)
85 !
86  DOUBLE PRECISION, INTENT(IN) :: XMUL
87 !
88  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
89 !
90 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
91 !
92  INTEGER IELEM
93  DOUBLE PRECISION X2,X3,Y2,Y3
94  DOUBLE PRECISION XSUR18,XSUR6
95 !
96 !-----------------------------------------------------------------------
97 !
98  xsur6 = xmul/6.d0
99  xsur18 = xmul/18.d0
100 !
101 !================================
102 ! DERIVATIVE WRT X =
103 !================================
104 !
105  IF(icoord.EQ.1) THEN
106 !
107 ! LOOP ON THE ELEMENTS
108 !
109  DO ielem = 1 , nelem
110 !
111 ! INITIALISES THE GEOMETRICAL VARIABLES
112 !
113  y2 = yel(ielem,2)
114  y3 = yel(ielem,3)
115 !
116 ! EXTRADIAGONAL TERMS
117 !
118  a12(ielem) = ( y2+ y3)*xsur18
119  a14(ielem) = (- y2+ y3)*xsur6
120  a21(ielem) = ( 2*y2- y3)*xsur18
121  a24(ielem) = - y3 *xsur6
122  a31(ielem) = ( y2-2*y3)*xsur18
123  a34(ielem) = y2 *xsur6
124  a13(ielem) = - a12(ielem)
125  a23(ielem) = - a21(ielem)
126  a32(ielem) = - a31(ielem)
127  a41(ielem) = - a14(ielem)
128  a42(ielem) = - a24(ielem)
129  a43(ielem) = - a34(ielem)
130 !
131 ! DIAGONAL TERMS
132 ! THE SUM OF THE MATRIX ROWS IS 0 (VECTOR)
133 !
134  a11(ielem) = - a12(ielem) - a13(ielem) - a14(ielem)
135  a22(ielem) = - a21(ielem) - a23(ielem) - a24(ielem)
136  a33(ielem) = - a31(ielem) - a32(ielem) - a34(ielem)
137  a44(ielem) = 0.d0
138 !
139  ENDDO ! IELEM
140 !
141  ELSEIF(icoord.EQ.2) THEN
142 !
143 !================================
144 ! DERIVATIVE WRT Y =
145 !================================
146 !
147  DO ielem = 1 , nelem
148 !
149 ! INITIALISES THE GEOMETRICAL VARIABLES
150 !
151  x2 = xel(ielem,2)
152  x3 = xel(ielem,3)
153 !
154 ! EXTRADIAGONAL TERMS
155 !
156  a12(ielem) = (-x2-x3)*xsur18
157  a14(ielem) = (x2-x3)*xsur6
158  a21(ielem) = (-2*x2+x3)*xsur18
159  a24(ielem) = x3*xsur6
160  a31(ielem) = (-x2+2*x3)*xsur18
161  a34(ielem) = -x2*xsur6
162  a13(ielem) = - a12(ielem)
163  a23(ielem) = - a21(ielem)
164  a32(ielem) = - a31(ielem)
165  a41(ielem) = - a14(ielem)
166  a42(ielem) = - a24(ielem)
167  a43(ielem) = - a34(ielem)
168 !
169 ! DIAGONAL TERMS
170 ! THE SUM OF THE MATRIX COLUMN IS 0 (VECTOR)
171 !
172  a11(ielem) = - a12(ielem) - a13(ielem) - a14(ielem)
173  a22(ielem) = - a21(ielem) - a23(ielem) - a24(ielem)
174  a33(ielem) = - a31(ielem) - a32(ielem) - a34(ielem)
175  a44(ielem) = 0.d0
176 !
177  ENDDO ! IELEM
178 !
179  ELSE
180 !
181  WRITE(lu,201) icoord
182  CALL plante(0)
183 !
184  ENDIF
185 !
186 201 FORMAT(1x,'MT13BB (BIEF) : IMPOSSIBLE COMPONENT ',
187  & 1i6,' CHECK ICOORD')
188 !
189 !-----------------------------------------------------------------------
190 !
191  RETURN
192  END
subroutine mt13bb(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, A41, A42, A43, A44, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13bb.f:11
Definition: bief.f:3