The TELEMAC-MASCARET system  trunk
mt13ca.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt13ca
3 ! *****************
4 !
5  &( a11 , a12 , a13 ,
6  & a21 , a22 , a23 ,
7  & a31 , a32 , a33 ,
8  & a41 , a42 , a43 ,
9  & a51 , a52 , a53 ,
10  & a61 , a62 , a63 ,
11  & xmul,xel,yel,nelem,nelmax,icoord)
12 !
13 !***********************************************************************
14 ! BIEF V6P2 21/08/2010
15 !***********************************************************************
16 !
17 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
18 !code
19 !+ EXAMPLE WITH ICOORD = 1
20 !+
21 !+ / D
22 !+ A(I,J)= XMUL * / PSI1(I) * --( PSI2(J) ) D(OMEGA)
23 !+ /OMEGA DX
24 !+
25 !+ ICOORD=2 WOULD GIVE A DERIVATIVE WRT Y
26 !+
27 !+ PSI1: BASES OF TYPE P2 TRIANGLE
28 !+ PSI2: BASES OF TYPE P1 TRIANGLE
29 !
30 !warning THE JACOBIAN MUST BE POSITIVE
31 !
32 !history ALGIANE FROEHLY
33 !+ 09/07/2008
34 !+ V5P9
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 !| ... |<--| ELEMENTS OF MATRIX
52 !| A63 |<--| ELEMENTS OF MATRIX
53 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
54 !| NELEM |-->| NUMBER OF ELEMENTS
55 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
56 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
57 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
58 !| XMUL |-->| MULTIPLICATION FACTOR
59 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 !
61  USE bief!, EX_MT13CA => MT13CA
62 !
64  IMPLICIT NONE
65 !
66 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67 !
68  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
69 !
70  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
71  DOUBLE PRECISION, INTENT(INOUT) :: A21(*),A22(*),A23(*)
72  DOUBLE PRECISION, INTENT(INOUT) :: A31(*),A32(*),A33(*)
73  DOUBLE PRECISION, INTENT(INOUT) :: A41(*),A42(*),A43(*)
74  DOUBLE PRECISION, INTENT(INOUT) :: A51(*),A52(*),A53(*)
75  DOUBLE PRECISION, INTENT(INOUT) :: A61(*),A62(*),A63(*)
76 !
77  DOUBLE PRECISION, INTENT(IN) :: XMUL
78 !
79  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
80 !
81 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82 !
83  INTEGER IELEM
84  DOUBLE PRECISION X2,X3,Y2,Y3
85  DOUBLE PRECISION XSUR6
86 !
87 !-----------------------------------------------------------------------
88 !
89  xsur6 = xmul/6.d0
90 !
91 !================================
92 ! DERIVATIVE WRT X =
93 !================================
94 !
95  IF(icoord.EQ.1) THEN
96 !
97 ! LOOP ON THE ELEMENTS
98 !
99  DO ielem = 1 , nelem
100 !
101 ! INITIALISES THE GEOMETRICAL VARIABLES
102 !
103  y2 = yel(ielem,2)
104  y3 = yel(ielem,3)
105 !
106 ! EXTRADIAGONAL TERMS
107 !
108  a12(ielem) = 0.d0
109  a13(ielem) = 0.d0
110  a21(ielem) = 0.d0
111  a23(ielem) = 0.d0
112  a31(ielem) = 0.d0
113  a32(ielem) = 0.d0
114  a42(ielem) = y3*xsur6
115  a43(ielem) = - y2*xsur6
116  a41(ielem) = - a42(ielem) - a43(ielem)
117  a51(ielem) = a41(ielem)
118  a52(ielem) = a42(ielem)
119  a53(ielem) = a43(ielem)
120  a61(ielem) = a41(ielem)
121  a62(ielem) = a42(ielem)
122  a63(ielem) = a43(ielem)
123 !
124 ! DIAGONAL TERMS
125 !
126  a11(ielem) = 0.d0
127  a22(ielem) = 0.d0
128  a33(ielem) = 0.d0
129 !
130  ENDDO ! IELEM
131 !
132  ELSEIF(icoord.EQ.2) THEN
133 !
134 !================================
135 ! DERIVATIVE WRT Y =
136 !================================
137 !
138  DO ielem = 1 , nelem
139 !
140 ! INITIALISES THE GEOMETRICAL VARIABLES
141 !
142  x2 = xel(ielem,2)
143  x3 = xel(ielem,3)
144 !
145 ! EXTRADIAGONAL TERMS
146 !
147  a12(ielem) = 0.d0
148  a13(ielem) = 0.d0
149  a21(ielem) = 0.d0
150  a23(ielem) = 0.d0
151  a31(ielem) = 0.d0
152  a32(ielem) = 0.d0
153  a42(ielem) = - x3*xsur6
154  a43(ielem) = x2*xsur6
155  a41(ielem) = - a42(ielem) - a43(ielem)
156  a51(ielem) = a41(ielem)
157  a52(ielem) = a42(ielem)
158  a53(ielem) = a43(ielem)
159  a61(ielem) = a41(ielem)
160  a62(ielem) = a42(ielem)
161  a63(ielem) = a43(ielem)
162 !
163 ! DIAGONAL TERMS
164 !
165  a11(ielem) = 0.d0
166  a22(ielem) = 0.d0
167  a33(ielem) = 0.d0
168 !
169  ENDDO ! IELEM
170 !
171  ELSE
172 !
173  WRITE(lu,201) icoord
174  CALL plante(1)
175 !
176  ENDIF
177 !
178 201 FORMAT(1x,'MT13CA (BIEF) : IMPOSSIBLE COMPONENT ',
179  & 1i6,' CHECK ICOORD')
180 !
181 !-----------------------------------------------------------------------
182 !
183  RETURN
184  END
subroutine mt13ca(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, A51, A52, A53, A61, A62, A63, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition: mt13ca.f:13
Definition: bief.f:3