The TELEMAC-MASCARET system  trunk
mt13ab.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt13ab
3 ! *****************
4 !
5  &( a11 , a12 , a13 , a14 ,
6  & a21 , a22 , a23 , a24 ,
7  & a31 , a32 , a33 , a34 ,
8  & xmul,xel,yel,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 * / PSI1(I) * --( PSI2(J) ) D(OMEGA)
20 !+ /OMEGA DX
21 !+
22 !+ ICOORD=2 WOULD GIVE A DERIVATIVE WRT Y
23 !+
24 !+ PSI1: BASES OF TYPE LINEAR TRIANGLE
25 !+ PSI2: BASES OF TYPE QUASI-BUBBLE TRIANGLE
26 !
27 !note THE EXPRESSION OF THIS MATRIX IS THE TRANSPOSE
28 !+ OF THAT IN MT13BB.
29 !
30 !warning THE JACOBIAN MUST BE POSITIVE
31 !
32 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
33 !+ 06/02/95
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 !| A14 |<--| ELEMENTS OF MATRIX
54 !| A21 |<--| ELEMENTS OF MATRIX
55 !| A22 |<--| ELEMENTS OF MATRIX
56 !| A23 |<--| ELEMENTS OF MATRIX
57 !| A24 |<--| ELEMENTS OF MATRIX
58 !| A31 |<--| ELEMENTS OF MATRIX
59 !| A32 |<--| ELEMENTS OF MATRIX
60 !| A33 |<--| ELEMENTS OF MATRIX
61 !| A34 |<--| ELEMENTS OF MATRIX
62 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
63 !| NELEM |-->| NUMBER OF ELEMENTS
64 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
65 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
66 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
67 !| XMUL |-->| MULTIPLICATION FACTOR
68 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
69 !
70  USE bief, ex_mt13ab => mt13ab
71 !
73  IMPLICIT NONE
74 !
75 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
76 !
77  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
78 !
79  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
80  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*),A24(*)
81  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*),A34(*)
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 XSUR6,XSUR18
92 !
93 !-----------------------------------------------------------------------
94 !
95  xsur6 = xmul/6.d0
96  xsur18 = xmul/18.d0
97 !
98 !================================
99 ! DERIVATIVE WRT X =
100 !================================
101 !
102  IF(icoord.EQ.1) THEN
103 !
104 ! LOOP ON THE ELEMENTS
105 !
106  DO ielem = 1 , nelem
107 !
108 ! INITIALISES THE GEOMETRICAL VARIABLES
109 !
110  y2 = yel(ielem,2)
111  y3 = yel(ielem,3)
112 !
113 ! EXTRADIAGONAL TERMS
114 !
115  a12(ielem)=( y2 + 2*y3 ) * xsur18
116  a13(ielem)=( -2*y2 - y3 ) * xsur18
117  a14(ielem)=( - y2 + y3 ) * xsur6
118  a21(ielem)=( 3*y2 - 2*y3 ) * xsur18
119  a23(ielem)=( -3*y2 + y3 ) * xsur18
120  a24(ielem)=( - y3 ) * xsur6
121  a31(ielem)=( 2*y2 - 3*y3 ) * xsur18
122  a32(ielem)=( - y2 + 3*y3 ) * xsur18
123  a34(ielem)= y2 * xsur6
124 !
125 ! DIAGONAL TERMS
126 ! THE SUM OF EACH LINE IS 0
127 !
128  a11(ielem) = - a12(ielem) - a13(ielem) - a14(ielem)
129  a22(ielem) = - a21(ielem) - a23(ielem) - a24(ielem)
130  a33(ielem) = - a31(ielem) - a32(ielem) - a34(ielem)
131 !
132  ENDDO ! IELEM
133 !
134  ELSEIF(icoord.EQ.2) THEN
135 !
136 !================================
137 ! DERIVATIVE WRT Y =
138 !================================
139 !
140  DO ielem = 1 , nelem
141 !
142 ! INITIALISES THE GEOMETRICAL VARIABLES
143 !
144  x2 = xel(ielem,2)
145  x3 = xel(ielem,3)
146 !
147 ! EXTRADIAGONAL TERMS
148 !
149  a12(ielem)=( - x2 - 2*x3 ) * xsur18
150  a13(ielem)=( 2*x2 + x3 ) * xsur18
151  a14(ielem)=( x2 - x3 ) * xsur6
152  a21(ielem)=( -3*x2 + 2*x3 ) * xsur18
153  a23(ielem)=( 3*x2 - x3 ) * xsur18
154  a24(ielem)= x3 * xsur6
155  a31(ielem)=( -2*x2 + 3*x3 ) * xsur18
156  a32(ielem)=( x2 - 3*x3 ) * xsur18
157  a34(ielem)=( - x2 ) * xsur6
158 !
159 ! DIAGONAL TERMS
160 ! THE SUM OF THE MATRIX ROWS IS 0
161 !
162  a11(ielem) = - a12(ielem) - a13(ielem) - a14(ielem)
163  a22(ielem) = - a21(ielem) - a23(ielem) - a24(ielem)
164  a33(ielem) = - a31(ielem) - a32(ielem) - a34(ielem)
165 !
166  ENDDO ! IELEM
167 !
168  ELSE
169 !
170  WRITE(lu,201) icoord
171  CALL plante(0)
172 !
173  ENDIF
174 !
175 201 FORMAT(1x,'MT13AB (BIEF) : IMPOSSIBLE COMPONENT ',
176  & 1i6,' CHECK ICOORD')
177 !
178 !-----------------------------------------------------------------------
179 !
180  RETURN
181  END
subroutine mt13ab(A11, A12, A13, A14, A21, A22, A23, A24, A31, A32, A33, A34, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13ab.f:10
Definition: bief.f:3