The TELEMAC-MASCARET system  trunk
mt06aa.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt06aa
3 ! *****************
4 !
5  &( a11 , a12 , a13 ,
6  & a22 , a23 ,
7  & a33 ,
8  & xmul,sf,f,surfac,ikle1,ikle2,ikle3,nelem,nelmax)
9 !
10 !***********************************************************************
11 ! BIEF V6P1 21/08/2010
12 !***********************************************************************
13 !
14 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
15 !code
16 !+ /
17 !+ A = / F * (P *P )*J(X,Y) DXDY
18 !+ I J /S I J
19 !+
20 !+ BY ELEMENTARY CELL; THE ELEMENT IS THE P1 TRIANGLE
21 !+
22 !+ J(X,Y): JACOBIAN OF THE ISOPARAMETRIC TRANSFORMATION
23 !
24 !warning THE JACOBIAN MUST BE POSITIVE
25 !
26 !history J-M HERVOUET (LNH)
27 !+ 29/10/99
28 !+ V5P1
29 !+
30 !
31 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
32 !+ 13/07/2010
33 !+ V6P0
34 !+ Translation of French comments within the FORTRAN sources into
35 !+ English comments
36 !
37 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
38 !+ 21/08/2010
39 !+ V6P0
40 !+ Creation of DOXYGEN tags for automated documentation and
41 !+ cross-referencing of the FORTRAN sources
42 !
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !| A11 |<--| ELEMENTS OF MATRIX
45 !| A12 |<--| ELEMENTS OF MATRIX
46 !| A13 |<--| ELEMENTS OF MATRIX
47 !| A22 |<--| ELEMENTS OF MATRIX
48 !| A23 |<--| ELEMENTS OF MATRIX
49 !| A33 |<--| ELEMENTS OF MATRIX
50 !| F |-->| FUNCTION F USED IN THE FORMULA
51 !| IKLE1 |-->| FIRST POINTS OF TRIANGLES
52 !| IKLE2 |-->| SECOND POINTS OF TRIANGLES
53 !| IKLE3 |-->| THIRD POINTS OF TRIANGLES
54 !| NELEM |-->| NUMBER OF ELEMENTS
55 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
56 !| SF |-->| BIEF_OBJ STRUCTURE OF F
57 !| SURFAC |-->| AREA OF TRIANGLES
58 !| XMUL |-->| MULTIPLICATION FACTOR
59 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 !
61  USE bief, ex_mt06aa => mt06aa
62 !
64  IMPLICIT NONE
65 !
66 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67 !
68  INTEGER, INTENT(IN) :: NELEM,NELMAX
69  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
70 !
71  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
72  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
73  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
74 !
75  DOUBLE PRECISION, INTENT(IN) :: XMUL
76  DOUBLE PRECISION, INTENT(IN) :: F(*)
77 !
78 ! STRUCTURE OF F
79  TYPE(bief_obj), INTENT(IN) :: SF
80 !
81  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
82 !
83 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
84 !
85 ! DECLARATIONS SPECIFIC TO THIS SUBROUTINE
86 !
87  INTEGER IELMF,IELEM
88 !
89  DOUBLE PRECISION SUR12,SUR60,DET1,DET2,F123,F1,F2,F3
90 !
91 !-----------------------------------------------------------------------
92 !
93  sur60 = xmul/60.d0
94  sur12 = xmul/12.d0
95 !
96 !-----------------------------------------------------------------------
97 !
98  ielmf = sf%ELM
99 !
100 !-----------------------------------------------------------------------
101 !
102 ! CASE WHERE F IS LINEAR
103 !
104  IF(ielmf.EQ.11) THEN
105 !
106  DO ielem = 1 , nelem
107 !
108  f1 = f(ikle1(ielem))
109  f2 = f(ikle2(ielem))
110  f3 = f(ikle3(ielem))
111 !
112  f123 = f1 + f2 + f3
113 !
114  det1 = surfac(ielem) * sur60
115  det2 = det1 + det1
116 !
117 !***********************************************************************
118 !
119 ! ELEMENTS OFF THE DIAGONAL
120 !
121  a12(ielem) = det1 * (f123+f123-f3)
122  a13(ielem) = det1 * (f123+f123-f2)
123  a23(ielem) = det1 * (f123+f123-f1)
124 !
125 ! DIAGONAL TERMS
126 !
127  a11(ielem) = det2 * (f123+f1+f1)
128  a22(ielem) = det2 * (f123+f2+f2)
129  a33(ielem) = det2 * (f123+f3+f3)
130 !
131  ENDDO ! IELEM
132 !
133 !-----------------------------------------------------------------------
134 !
135 ! CASE WHERE F IS LINEAR
136 !
137  ELSEIF(ielmf.EQ.10) THEN
138 !
139  DO ielem = 1 , nelem
140 !
141  f1 = f(ielem)
142 !
143  det1 = surfac(ielem) * sur12
144  det2 = det1 + det1
145 !
146 !***********************************************************************
147 !
148 ! ELEMENTS OFF THE DIAGONAL
149 !
150  a12(ielem) = det1 * f1
151  a13(ielem) = det1 * f1
152  a23(ielem) = det1 * f1
153 !
154 ! DIAGONAL TERMS
155 !
156  a11(ielem) = det2 * f1
157  a22(ielem) = det2 * f1
158  a33(ielem) = det2 * f1
159 !
160  ENDDO ! IELEM
161 !
162 ! OTHER TYPES OF DISCRETISATION OF F
163 !
164 !-----------------------------------------------------------------------
165 !
166  ELSE
167 !
168  WRITE(lu,101) ielmf,sf%NAME
169 101 FORMAT(1x,'MT06AA (BIEF) :',/,
170  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
171  & 1x,'REAL NAME: ',a6)
172  CALL plante(1)
173  stop
174 !
175  ENDIF
176 !
177 !-----------------------------------------------------------------------
178 !
179  RETURN
180  END
subroutine mt06aa(A11, A12, A13, A22, A23, A33, XMUL, SF, F, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX)
Definition: mt06aa.f:10
Definition: bief.f:3