The TELEMAC-MASCARET system  trunk
mt08aa.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt08aa
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) * F * --( PSI1(I) ) D(OMEGA)
20 !+ /OMEGA DX
21 !+
22 !+ BEWARE THE MINUS SIGN !!
23 !+
24 !+ PSI1: BASES OF TYPE P1 TRIANGLE
25 !+ PSI2: BASES OF TYPE IELM2
26 !+
27 !+ IT WOULD BE A DERIVATIVE WRT Y WITH ICOORD=2
28 !
29 !warning THE JACOBIAN MUST BE POSITIVE
30 !
31 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
32 !+ 09/12/94
33 !+ V5P1
34 !+ THE MATRIX IS ALSO COMPUTED IN QUASI-BUBBLE (IT'S THE SAME)
35 !
36 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
37 !+ 13/07/2010
38 !+ V6P0
39 !+ Translation of French comments within the FORTRAN sources into
40 !+ English comments
41 !
42 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
43 !+ 21/08/2010
44 !+ V6P0
45 !+ Creation of DOXYGEN tags for automated documentation and
46 !+ cross-referencing of the FORTRAN sources
47 !
48 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
49 !| A11 |<--| ELEMENTS OF MATRIX
50 !| A12 |<--| ELEMENTS OF MATRIX
51 !| A13 |<--| ELEMENTS OF MATRIX
52 !| A21 |<--| ELEMENTS OF MATRIX
53 !| A22 |<--| ELEMENTS OF MATRIX
54 !| A23 |<--| ELEMENTS OF MATRIX
55 !| A31 |<--| ELEMENTS OF MATRIX
56 !| A32 |<--| ELEMENTS OF MATRIX
57 !| A33 |<--| ELEMENTS OF MATRIX
58 !| F |-->| FUNCTION USED IN THE FORMULA
59 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
60 !| IKLE1 |-->| FIRST POINTS OF TRIANGLES
61 !| IKLE2 |-->| SECOND POINTS OF TRIANGLES
62 !| IKLE3 |-->| THIRD POINTS OF TRIANGLES
63 !| NELEM |-->| NUMBER OF ELEMENTS
64 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
65 !| SF |-->| STRUCTURE OF FUNCTIONS F
66 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
67 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
68 !| XMUL |-->| MULTIPLICATION FACTOR
69 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
70 !
71  USE bief, ex_mt08aa => mt08aa
72 !
74  IMPLICIT NONE
75 !
76 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
77 !
78  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
79  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
80 !
81  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
82  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
83  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
84 !
85  DOUBLE PRECISION, INTENT(IN) :: XMUL
86  DOUBLE PRECISION, INTENT(IN) :: F(*)
87 !
88 ! STRUCTURE OF F
89  TYPE(bief_obj), INTENT(IN) :: SF
90 !
91  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
92 !
93 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
94 !
95  INTEGER IELEM,IELMF
96  DOUBLE PRECISION SUR24,X2,X3,Y2,Y3,F1,F2,F3,F123
97 !
98 !-----------------------------------------------------------------------
99 !
100  sur24 = xmul/24.d0
101 !
102 !-----------------------------------------------------------------------
103 !
104  ielmf=sf%ELM
105 !
106 ! CASE WHERE F IS OF P1 DISCRETISATION
107 !
108  IF((ielmf.EQ.11).OR.(ielmf.EQ.12)) THEN
109 !
110 ! TH
111 ! SAME MATRIX IF F IS QUASI-BUBBLE
112 ! TH
113 !
114 !================================
115 ! CASE OF DERIVATIVE WRT X =
116 !================================
117 !
118  IF(icoord.EQ.1) THEN
119 !
120 ! LOOP ON THE ELEMENTS
121 !
122  DO ielem = 1 , nelem
123 !
124 ! INITIALISES THE GEOMETRICAL VARIABLES
125 !
126  y2 = yel(ielem,2)
127  y3 = yel(ielem,3)
128 !
129  f1 = f(ikle1(ielem)) * sur24
130  f2 = f(ikle2(ielem)) * sur24
131  f3 = f(ikle3(ielem)) * sur24
132  f123 = f1 + f2 + f3
133 !
134 ! EXTRADIAGONAL TERMS
135 !
136  a12(ielem) = (y3-y2) * ( f123 + f2 )
137  a13(ielem) = (y3-y2) * ( f123 + f3 )
138  a23(ielem) = y3 * ( -f123 - f3 )
139  a21(ielem) = y3 * ( -f123 - f1 )
140  a31(ielem) = y2 * ( f123 + f1 )
141  a32(ielem) = y2 * ( f123 + f2 )
142 !
143 ! DIAGONAL TERMS
144 !
145  a11(ielem) = - a21(ielem) - a31(ielem)
146  a22(ielem) = - a12(ielem) - a32(ielem)
147  a33(ielem) = - a13(ielem) - a23(ielem)
148 !
149  ENDDO ! IELEM
150 !
151  ELSEIF(icoord.EQ.2) THEN
152 !
153 !================================
154 ! CASE OF DERIVATIVE WRT Y =
155 !================================
156 !
157  DO ielem = 1 , nelem
158 !
159 ! INITIALISES THE GEOMETRICAL VARIABLES
160 !
161  x2 = xel(ielem,2)
162  x3 = xel(ielem,3)
163 !
164  f1 = f(ikle1(ielem)) * sur24
165  f2 = f(ikle2(ielem)) * sur24
166  f3 = f(ikle3(ielem)) * sur24
167  f123 = f1 + f2 + f3
168 !
169 ! EXTRADIAGONAL TERMS
170 !
171  a12(ielem) = (x2-x3) * ( f123 + f2 )
172  a13(ielem) = (x2-x3) * ( f123 + f3 )
173  a23(ielem) = x3 * ( f123 + f3 )
174  a21(ielem) = x3 * ( f123 + f1 )
175  a31(ielem) = x2 * ( -f123 - f1 )
176  a32(ielem) = x2 * ( -f123 - f2 )
177 !
178 ! DIAGONAL TERMS
179 !
180  a11(ielem) = -a21(ielem) -a31(ielem)
181  a22(ielem) = -a12(ielem) -a32(ielem)
182  a33(ielem) = -a13(ielem) -a23(ielem)
183 !
184  ENDDO ! IELEM
185 !
186  ELSE
187 !
188  WRITE(lu,201) icoord
189 201 FORMAT(1x,'MT08AA (BIEF) : IMPOSSIBLE COMPONENT ',
190  & 1i6,' CHECK ICOORD')
191  CALL plante(1)
192  ENDIF
193 !
194 ! ELSEIF(IELMF.EQ. ) THEN
195 ! OTHER TYPES OF FUNCTIONS F
196 !
197 !-----------------------------------------------------------------------
198 !
199  ELSE
200  WRITE(lu,101) ielmf
201 101 FORMAT(1x,'MT08AA (BIEF) :',/,
202  & 1x,'DISCRETIZATION OF F : ',1i6,' NOT AVAILABLE')
203  CALL plante(1)
204  stop
205  ENDIF
206 !
207 !-----------------------------------------------------------------------
208 !
209  RETURN
210  END
subroutine mt08aa(A11, A12, A13, A21, A22, A23, A31, A32, A33, XMUL, SF, F, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, ICOORD)
Definition: mt08aa.f:10
Definition: bief.f:3