The TELEMAC-MASCARET system  trunk
mt06ft2.f
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE mt06ft2
3 ! ******************
4 !
5  &( a11 , a12 , a13 ,
6  & a22 , a23 ,
7  & a33 ,
8  & xmul,sf,f,sg,g,x,y,z,ikle1,ikle2,ikle3,nbor,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;
21 !+ !! THE ELEMENT IS THE P1 TRIANGLE, BUT IN A MESH OF PRISMS !!
22 !+ !! SPLIT IN TETRAHEDRONS !!
23 !+
24 !+ J(X,Y): JACOBIAN OF THE ISOPARAMETRIC TRANSFORMATION
25 !
26 !warning THE JACOBIAN MUST BE POSITIVE
27 !
28 !history J-M HERVOUET (LNH)
29 !+ 26/04/04
30 !+ V5P5
31 !+
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 13/07/2010
35 !+ V6P0
36 !+ Translation of French comments within the FORTRAN sources into
37 !+ English comments
38 !
39 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
40 !+ 21/08/2010
41 !+ V6P0
42 !+ Creation of DOXYGEN tags for automated documentation and
43 !+ cross-referencing of the FORTRAN sources
44 !
45 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
46 !| A11 |<--| ELEMENTS OF MATRIX
47 !| A12 |<--| ELEMENTS OF MATRIX
48 !| A13 |<--| ELEMENTS OF MATRIX
49 !| A22 |<--| ELEMENTS OF MATRIX
50 !| A23 |<--| ELEMENTS OF MATRIX
51 !| A33 |<--| ELEMENTS OF MATRIX
52 !| F |-->| FUNCTION F USED IN THE FORMULA
53 !| G |-->| FUNCTION G USED IN THE FORMULA
54 !| IKLE1 |-->| FIRST POINTS OF TRIANGLES
55 !| IKLE2 |-->| SECOND POINTS OF TRIANGLES
56 !| IKLE3 |-->| THIRD POINTS OF TRIANGLES
57 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
58 !| NELEM |-->| NUMBER OF ELEMENTS
59 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
60 !| SF |-->| BIEF_OBJ STRUCTURE OF F
61 !| SG |-->| BIEF_OBJ STRUCTURE OF G
62 !| SURFAC |-->| AREA OF TRIANGLES
63 !| XMUL |-->| MULTIPLICATION FACTOR
64 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
65 !
66  USE bief, ex_mt06ft2 => mt06ft2
67 !
69  IMPLICIT NONE
70 !
71 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
72 !
73  INTEGER, INTENT(IN) :: NBOR(*),NELEM,NELMAX
74  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
75 !
76  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
77  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
78  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
79 !
80  DOUBLE PRECISION, INTENT(IN) :: XMUL
81  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*)
82 !
83 ! STRUCTURE OF F
84  TYPE(bief_obj), INTENT(IN) :: SF,SG
85 !
86  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
87 !
88 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
89 !
90  INTRINSIC sqrt
91 !
92 !-----------------------------------------------------------------------
93 !
94 ! DECLARATIONS SPECIFIC TO THIS SUBROUTINE
95 !
96  INTEGER IELMF,IELMG,I1,I2,I3,IELEM
97 !
98  DOUBLE PRECISION SUR60,S,X1,X2,X3,Y1,Y2,Y3,Z1,Z2,Z3,F1,F2,F3,F123
99  DOUBLE PRECISION DET1,DET2
100 !
101 !**********************************************************************
102 !
103  ielmf=sf%ELM
104  ielmg=sg%ELM
105 !
106 !-----------------------------------------------------------------------
107 !
108 ! F LINEAR BY BOUNDARY SIDE
109 !
110  IF( (ielmf.EQ.61.OR.ielmf.EQ.81) .AND. ielmg.EQ.80 ) THEN
111 !
112  sur60 = xmul/60.d0
113 !
114 ! LOOP ON THE BOUNDARY SIDES
115 !
116  DO ielem = 1,nelem
117 !
118 ! GLOBAL NUMBERING OF THE SIDE VERTICES
119 !
120  i1 = nbor(ikle1(ielem))
121  i2 = nbor(ikle2(ielem))
122  i3 = nbor(ikle3(ielem))
123 !
124  x1 = x(i1)
125  y1 = y(i1)
126  z1 = z(i1)
127 !
128  x2 = x(i2)-x1
129  x3 = x(i3)-x1
130  y2 = y(i2)-y1
131  y3 = y(i3)-y1
132  z2 = z(i2)-z1
133  z3 = z(i3)-z1
134 !
135  f1 = f(ikle1(ielem)) * g(ielem)
136  f2 = f(ikle2(ielem)) * g(ielem)
137  f3 = f(ikle3(ielem)) * g(ielem)
138  f123 = f1 + f2 + f3
139 !
140 ! COMPUTES THE AREA OF THE TRIANGLE (BY VECTOR PRODUCT)
141 !
142  s=0.5d0*sqrt( (y2*z3-y3*z2)**2
143  & +(x3*z2-x2*z3)**2
144  & +(x2*y3-x3*y2)**2 )
145 !
146  det1 = s * sur60
147  det2 = det1 + det1
148 !
149 !***********************************************************************
150 !
151 ! ELEMENTS OFF THE DIAGONAL
152 !
153  a12(ielem) = det1 * (f123+f123-f3)
154  a13(ielem) = det1 * (f123+f123-f2)
155  a23(ielem) = det1 * (f123+f123-f1)
156 !
157 ! DIAGONAL TERMS
158 !
159  a11(ielem) = det2 * (f123+f1+f1)
160  a22(ielem) = det2 * (f123+f2+f2)
161  a33(ielem) = det2 * (f123+f3+f3)
162 !
163  ENDDO ! IELEM
164 !
165 !-----------------------------------------------------------------------
166 !
167 ! OTHER TYPES OF DISCRETISATION OF F
168 !
169  ELSE
170 !
171  WRITE(lu,101) ielmf,sf%NAME,sg%NAME
172 101 FORMAT(1x,'MT06FT2 (BIEF) :',/,
173  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
174  & 1x,'REAL NAME: ',a6,' AND ',a6)
175  CALL plante(1)
176  stop
177 !
178  ENDIF
179 !
180 !-----------------------------------------------------------------------
181 !
182 ! NOTE: ON A TRIANGULAR MESH IN PLANE (X, Y)
183 !
184 ! DO IELEM = 1 , NELEM
185 !
186 ! F1 = F(IKLE1(IELEM))
187 ! F2 = F(IKLE2(IELEM))
188 ! F3 = F(IKLE3(IELEM))
189 !
190 ! F123 = F1 + F2 + F3
191 !
192 ! DET1 = SURFAC(IELEM) * SUR60
193 ! DET2 = DET1 + DET1
194 !
195 !***********************************************************************
196 !
197 ! ELEMENTS OFF THE DIAGONAL
198 !
199 ! A12(IELEM) = DET1 * (F123+F123-F3)
200 ! A13(IELEM) = DET1 * (F123+F123-F2)
201 ! A23(IELEM) = DET1 * (F123+F123-F1)
202 !
203 ! DIAGONAL TERMS
204 !
205 ! A11(IELEM) = DET2 * (F123+F1+F1)
206 ! A22(IELEM) = DET2 * (F123+F2+F2)
207 ! A33(IELEM) = DET2 * (F123+F3+F3)
208 !
209 ! ENDDO ! IELEM
210 !
211 !-----------------------------------------------------------------------
212 !
213  RETURN
214  END
subroutine mt06ft2(A11, A12, A13, A22, A23, A33, XMUL, SF, F, SG, G, X, Y, Z, IKLE1, IKLE2, IKLE3, NBOR, NELEM, NELMAX)
Definition: mt06ft2.f:10
Definition: bief.f:3