The TELEMAC-MASCARET system  trunk
mt13ba.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt13ba
3 ! *****************
4 !
5  &( a11 , a12 , a13 ,
6  & a21 , a22 , a23 ,
7  & a31 , a32 , a33 ,
8  & a41 , a42 , a43 ,
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 * / PSI1(I) * --( PSI2(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 !note THE EXPRESSION OF THIS MATRIX IS THE TRANSPOSE
29 !+ OF THAT IN MT13BB.
30 !
31 !warning THE JACOBIAN MUST BE POSITIVE
32 !
33 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
34 !+ 06/02/95
35 !+ V5P1
36 !+
37 !
38 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
39 !+ 13/07/2010
40 !+ V6P0
41 !+ Translation of French comments within the FORTRAN sources into
42 !+ English comments
43 !
44 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
45 !+ 21/08/2010
46 !+ V6P0
47 !+ Creation of DOXYGEN tags for automated documentation and
48 !+ cross-referencing of the FORTRAN sources
49 !
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !| A11 |<--| ELEMENTS OF MATRIX
52 !| A12 |<--| ELEMENTS OF MATRIX
53 !| A13 |<--| ELEMENTS OF MATRIX
54 !| A21 |<--| ELEMENTS OF MATRIX
55 !| A22 |<--| ELEMENTS OF MATRIX
56 !| A23 |<--| ELEMENTS OF MATRIX
57 !| A31 |<--| ELEMENTS OF MATRIX
58 !| A32 |<--| ELEMENTS OF MATRIX
59 !| A33 |<--| ELEMENTS OF MATRIX
60 !| A41 |<--| ELEMENTS OF MATRIX
61 !| A42 |<--| ELEMENTS OF MATRIX
62 !| A43 |<--| ELEMENTS OF MATRIX
63 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
64 !| NELEM |-->| NUMBER OF ELEMENTS
65 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
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_mt13ba => mt13ba
72 !
74  IMPLICIT NONE
75 !
76 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
77 !
78  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
79 !
80  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
81  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
82  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
83  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
84 !
85  DOUBLE PRECISION, INTENT(IN) :: XMUL
86 !
87  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
88 !
89 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
90 !
91  INTEGER IELEM
92  DOUBLE PRECISION X2,X3,Y2,Y3
93  DOUBLE PRECISION XSUR9,XSUR6
94 !
95 !-----------------------------------------------------------------------
96 !
97  xsur6 = xmul/6.d0
98  xsur9 = xmul/9.d0
99 !
100 !================================
101 ! DERIVATIVE WRT X =
102 !================================
103 !
104  IF(icoord.EQ.1) THEN
105 !
106 ! LOOP ON THE ELEMENTS
107 !
108  DO ielem = 1 , nelem
109 !
110 ! INITIALISES THE GEOMETRICAL VARIABLES
111 !
112  y2 = yel(ielem,2)
113  y3 = yel(ielem,3)
114 !
115 ! EXTRADIAGONAL TERMS
116 !
117  a12(ielem) = y3*xsur9
118  a13(ielem) = -y2*xsur9
119  a21(ielem) = -(y3-y2)*xsur9
120  a23(ielem) = -y2*xsur9
121  a31(ielem) = -(y3-y2)*xsur9
122  a32(ielem) = y3*xsur9
123  a41(ielem) = -(y3-y2)*xsur6
124  a42(ielem) = y3*xsur6
125  a43(ielem) = -y2*xsur6
126 !
127 ! DIAGONAL TERMS
128 ! THE SUM OF THE MATRIX COLUMNS IS 0 (VECTOR)
129 !
130  a11(ielem) = - a12(ielem) - a13(ielem)
131  a22(ielem) = - a21(ielem) - a23(ielem)
132  a33(ielem) = - a31(ielem) - a32(ielem)
133 !
134  ENDDO ! IELEM
135 !
136  ELSEIF(icoord.EQ.2) THEN
137 !
138 !================================
139 ! DERIVATIVE WRT Y =
140 !================================
141 !
142  DO ielem = 1 , nelem
143 !
144 ! INITIALISES THE GEOMETRICAL VARIABLES
145 !
146  x2 = xel(ielem,2)
147  x3 = xel(ielem,3)
148 !
149 ! EXTRADIAGONAL TERMS
150 !
151  a12(ielem) = -x3*xsur9
152  a13(ielem) = x2*xsur9
153  a21(ielem) = -(x2-x3)*xsur9
154  a23(ielem) = x2*xsur9
155  a31(ielem) = -(x2-x3)*xsur9
156  a32(ielem) = -x3*xsur9
157  a41(ielem) = -(x2-x3)*xsur6
158  a42(ielem) = -x3*xsur6
159  a43(ielem) = x2*xsur6
160 !
161 ! DIAGONAL TERMS
162 ! THE SUM OF THE MATRIX COLUMNS IS 0 (VECTOR)
163 !
164  a11(ielem) = - a12(ielem) - a13(ielem)
165  a22(ielem) = - a21(ielem) - a23(ielem)
166  a33(ielem) = - a31(ielem) - a32(ielem)
167 !
168  ENDDO ! IELEM
169 !
170  ELSE
171 !
172  WRITE(lu,201) icoord
173  CALL plante(0)
174 !
175  ENDIF
176 !
177 201 FORMAT(1x,'MT13BA (BIEF) : IMPOSSIBLE COMPONENT ',
178  & 1i6,' CHECK ICOORD')
179 !
180 !-----------------------------------------------------------------------
181 !
182  RETURN
183  END
subroutine mt13ba(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13ba.f:11
Definition: bief.f:3