The TELEMAC-MASCARET system  trunk
mt11aa.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt11aa
3 ! *****************
4 !
5  &( a11 , a12 , a13 ,
6  & a21 , a22 , a23 ,
7  & a31 , a32 , a33 ,
8  & xmul,sf,f,xel,yel,ikle1,ikle2,ikle3,nelem,nelmax,icoord)
9 !
10 !***********************************************************************
11 ! BIEF V6P1 21/08/2010
12 !***********************************************************************
13 !
14 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
15 !code
16 !+ EXAMPLE WITH ICOORD=1
17 !+
18 !+ / D
19 !+ A(I,J)=- XMUL / PSI2(J) * -- ( PSI1(I) F ) ) D(OMEGA)
20 !+ /OMEGA DX
21 !+
22 !+
23 !+ BEWARE THE MINUS SIGN !!
24 !+
25 !+ PSI1: LINEAR
26 !+ PSI2: LINEAR
27 !+
28 !+ IT WOULD BE A DERIVATIVE WRT Y WITH ICOORD=2
29 !
30 !warning THE JACOBIAN MUST BE POSITIVE
31 !
32 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
33 !+ 09/12/94
34 !+ V5P1
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 !| A12 |<--| ELEMENTS OF MATRIX
52 !| A13 |<--| ELEMENTS OF MATRIX
53 !| A21 |<--| ELEMENTS OF MATRIX
54 !| A22 |<--| ELEMENTS OF MATRIX
55 !| A23 |<--| ELEMENTS OF MATRIX
56 !| A31 |<--| ELEMENTS OF MATRIX
57 !| A32 |<--| ELEMENTS OF MATRIX
58 !| A33 |<--| ELEMENTS OF MATRIX
59 !| F |-->| FUNCTION USED IN THE FORMULA
60 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
61 !| IKLE1 |-->| FIRST POINTS OF TRIANGLES
62 !| IKLE2 |-->| SECOND POINTS OF TRIANGLES
63 !| IKLE3 |-->| THIRD POINTS OF TRIANGLES
64 !| NELEM |-->| NUMBER OF ELEMENTS
65 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
66 !| SF |-->| STRUCTURE OF FUNCTIONS F
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_mt11aa => mt11aa
73 !
75  IMPLICIT NONE
76 !
77 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
78 !
79  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
80  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
81 !
82  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
83  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
84  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
85 !
86  DOUBLE PRECISION, INTENT(IN) :: XMUL
87  DOUBLE PRECISION, INTENT(IN) :: F(*)
88 !
89 ! STRUCTURE OF F
90  TYPE(bief_obj), INTENT(IN) :: SF
91 !
92 !
93  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
94 !
95 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
96 !
97  INTEGER IELEM,IELMF
98 !
99  DOUBLE PRECISION SUR24,X2,X3,Y2,Y3,F1,F2,F3
100 !
101 !-----------------------------------------------------------------------
102 !
103  sur24 = xmul/24.d0
104 !
105 !-----------------------------------------------------------------------
106 !
107  ielmf=sf%ELM
108 !
109 ! SAME RESULT WHETHER F IS LINEAR OR QUASI-BUBBLE
110 !
111  IF(ielmf.EQ.11.OR.ielmf.EQ.12) THEN
112 !
113 !================================
114 ! CASE OF DERIVATIVE WRT X =
115 !================================
116 !
117  IF(icoord.EQ.1) THEN
118 !
119 ! LOOP ON THE ELEMENTS
120 !
121  DO ielem = 1 , nelem
122 !
123 ! INITIALISES THE GEOMETRICAL VARIABLES
124 !
125  y2 = yel(ielem,2)
126  y3 = yel(ielem,3)
127 !
128  f1 = f(ikle1(ielem)) * sur24
129  f2 = f(ikle2(ielem)) * sur24
130  f3 = f(ikle3(ielem)) * sur24
131 !
132 ! DIAGONAL TERMS
133 !
134  a11(ielem) = y2 * (f3-f2-4*f1) + y3 * ( f3-f2+4*f1)
135  a22(ielem) = (y2+y2) * (f3-f1) + y3 * (-f3-4*f2+f1)
136  a33(ielem) = y2 * (4*f3+f2-f1) + (y3+y3) * (-f2+f1)
137 !
138 ! EXTRADIAGONAL TERMS
139 !
140  a12(ielem) =-(y2+y2) * (f2+f1) + y3 * (f3+f2+f1+f1)
141  a13(ielem) = y2 * (-f3-f2-f1-f1) + (y3+y3) * (f3+f1)
142  a23(ielem) = y2 * (f3-f1) - (y3+y3) * (f3+f2)
143  a21(ielem) = y2 * (f3-f1) + y3 * (-f3-f2-f2-f1)
144  a31(ielem) = y2 * (f3+f3+f2+f1) + y3 * (-f2+f1)
145  a32(ielem) = (y2+y2) * (f3+f2) + y3 * (-f2+f1)
146 !
147  ENDDO ! IELEM
148 !
149  ELSEIF(icoord.EQ.2) THEN
150 !
151 !================================
152 ! CASE OF DERIVATIVE WRT Y =
153 !================================
154 !
155  DO ielem = 1 , nelem
156 !
157 ! INITIALISES THE GEOMETRICAL VARIABLES
158 !
159  x2 = xel(ielem,2)
160  x3 = xel(ielem,3)
161 !
162  f1 = f(ikle1(ielem)) * sur24
163  f2 = f(ikle2(ielem)) * sur24
164  f3 = f(ikle3(ielem)) * sur24
165 !
166 ! DIAGONAL TERMS
167 !
168  a11(ielem) = x2 * (-f3+f2+4*f1) + x3 * (-f3+f2-4*f1)
169  a22(ielem) = (x2+x2) * (-f3+f1) + x3 * (f3+4*f2-f1)
170  a33(ielem) = x2 * (-4*f3-f2+f1) + (x3+x3) * (f2-f1)
171 !
172 ! EXTRADIAGONAL TERMS
173 !
174  a12(ielem) = (x2+x2) * (f2+f1) + x3 * (-f3-f2-f1-f1)
175  a13(ielem) = x2 * (f3+f2+f1+f1) - (x3+x3) * (f3+f1)
176  a23(ielem) = x2 * (-f3+f1) + (x3+x3) * (f3+f2)
177  a21(ielem) = x2 * (-f3+f1) + x3 * (f3+f2+f2+f1)
178  a31(ielem) = x2 * (-f3-f3-f2-f1) + x3 * (f2-f1)
179  a32(ielem) =-(x2+x2) * (f3+f2) + x3 * (f2-f1)
180 !
181  ENDDO ! IELEM
182 !
183  ELSE
184 !
185  WRITE(lu,201) icoord
186 201 FORMAT(1x,'MT11AA (BIEF) : IMPOSSIBLE COMPONENT ',
187  & 1i6,' CHECK ICOORD')
188  CALL plante(0)
189  ENDIF
190 !
191 ! ELSEIF(IELMF.EQ. ) THEN
192 ! OTHER TYPES OF FUNCTIONS F
193 !
194 !-----------------------------------------------------------------------
195 !
196  ELSE
197  WRITE(lu,101) ielmf
198 101 FORMAT(1x,'MT11AA (BIEF) :',/,
199  & 1x,'DISCRETISATION OF F: ',1i6,' NOT AVAILABLE')
200  CALL plante(0)
201  stop
202  ENDIF
203 !
204 !-----------------------------------------------------------------------
205 !
206  RETURN
207  END
subroutine mt11aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, ICOORD)
Definition: mt11aa.f:10
Definition: bief.f:3