The TELEMAC-MASCARET system  trunk
mt06ff.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt06ff
3 ! *****************
4 !
5  &( a11 , a12 , a13 , a14 ,
6  & a22 , a23 , a24 ,
7  & a33 , a34 ,
8  & a44 ,
9  & xmul,sf,f,x,y,z,ikle1,ikle2,ikle3,ikle4,nbor,nelbor,
10  & nulone,neleb,nelebx,nelmax)
11 !
12 !***********************************************************************
13 ! BIEF V6P3 21/08/2010
14 !***********************************************************************
15 !
16 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
17 !code
18 !+ /
19 !+ A = / F * (P *P )*J(X,Y) DXDY
20 !+ I J /S I J
21 !+
22 !+ BY ELEMENTARY CELL; !! THE ELEMENT IS THE Q1 QUADRILATERAL, IN A PRISM MESH !!
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 !+ 18/08/94
30 !+ V5P3
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 !history J-M HERVOUET (EDF R&D, LNHE)
46 !+ 11/01/2013
47 !+ V6P3
48 !+ ARguments added, XEL and YEL sent instead of XPT and YPT for X and Y.
49 !
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !| A11 |<--| ELEMENTS OF MATRIX
52 !| A12 |<--| ELEMENTS OF MATRIX
53 !| A13 |<--| ELEMENTS OF MATRIX
54 !| A14 |<--| ELEMENTS OF MATRIX
55 !| A22 |<--| ELEMENTS OF MATRIX
56 !| A23 |<--| ELEMENTS OF MATRIX
57 !| A24 |<--| ELEMENTS OF MATRIX
58 !| A33 |<--| ELEMENTS OF MATRIX
59 !| A34 |<--| ELEMENTS OF MATRIX
60 !| A44 |<--| ELEMENTS OF MATRIX
61 !| F |-->| FUNCTION F USED IN THE FORMULA
62 !| IKLE1 |-->| FIRST POINTS OF QUADRILATERALS
63 !| IKLE2 |-->| SECOND POINTS OF QUADRILATERALS
64 !| IKLE3 |-->| THIRD POINTS OF QUADRILATERALS
65 !| IKLE4 |-->| FOURTH POINTS OF QUADRILATERALS
66 !| NELBOR |-->| ADJACENT ELEMENT NUMBER
67 !| NELEM |-->| NUMBER OF ELEMENTS
68 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
69 !| NULONE |-->| LOCAL NUMBERING OF BOUNDARY ELEMENT IN ADJACENT
70 !| | | ELEMENT.
71 !| SF |-->| BIEF_OBJ STRUCTURE OF F
72 !| SURFAC |-->| AREA OF TRIANGLES
73 !| XMUL |-->| MULTIPLICATION FACTOR
74 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75 !
76  USE bief, ex_mt06ff => mt06ff
77 !
79  IMPLICIT NONE
80 !
81 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82 !
83  INTEGER, INTENT(IN) :: NELEB,NELEBX,NELMAX
84  INTEGER, INTENT(IN) :: NBOR(*),NELBOR(nelebx),NULONE(nelebx,4)
85  INTEGER, INTENT(IN) :: IKLE1(nelebx),IKLE2(nelebx)
86  INTEGER, INTENT(IN) :: IKLE3(nelebx),IKLE4(nelebx)
87 !
88  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
89  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
90  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
91  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
92 !
93  DOUBLE PRECISION, INTENT(IN) :: XMUL
94  DOUBLE PRECISION, INTENT(IN) :: F(*)
95 !
96 ! STRUCTURE OF F
97  TYPE(bief_obj), INTENT(IN) :: SF
98 !
99  DOUBLE PRECISION, INTENT(IN) :: X(nelmax,6),Y(nelmax,6),Z(*)
100 !
101 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
102 !
103  INTRINSIC sqrt
104 !
105 ! DECLARATIONS SPECIFIC TO THIS SUBROUTINE
106 !
107  INTEGER IELMF,I1,I2,I3,I4,IELEM,IEL,J1,J2
108 !
109  DOUBLE PRECISION SUR720,AL,S1,S2,S11112,S11122,S11222,S12222
110  DOUBLE PRECISION F14,F23,F1114,F2223,F2333,F1444
111 !
112 !**********************************************************************
113 !
114  ielmf=sf%ELM
115 !
116 !-----------------------------------------------------------------------
117 !
118 ! F LINEAR BY BOUNDARY SIDE
119 !
120  IF(ielmf.EQ.71) THEN
121 !
122  sur720 = xmul/720.d0
123 !
124 ! LOOP ON THE BOUNDARY SIDES
125 !
126  DO ielem = 1,neleb
127 !
128  iel=nelbor(ielem)
129 !
130  IF(iel.GT.0) THEN
131 !
132 ! ELEMENT IN DOMAIN
133 !
134 ! GLOBAL NUMBERING OF THE SIDE VERTICES
135 !
136  i1 = ikle1(ielem)
137  i2 = ikle2(ielem)
138  i3 = ikle3(ielem)
139  i4 = ikle4(ielem)
140 !
141  j1=nulone(ielem,1)
142  j2=nulone(ielem,2)
143  al = sqrt((x(iel,j2)-x(iel,j1))**2
144  & +(y(iel,j2)-y(iel,j1))**2) * sur720
145 !
146  s1 = (z(nbor(i4)) - z(nbor(i1))) * al
147  s2 = (z(nbor(i3)) - z(nbor(i2))) * al
148  s11112 = s1 + s1 + s1 + s1 + s2
149  s11122 = s1 + s1 + s1 + s2 + s2
150  s11222 = s1 + s1 + s2 + s2 + s2
151  s12222 = s1 + s2 + s2 + s2 + s2
152 !
153  f14 = f(i1) + f(i4)
154  f23 = f(i2) + f(i3)
155  f1114 = f(i1) + f(i1) + f14
156  f2223 = f(i2) + f(i2) + f23
157  f2333 = f23 + f(i3) + f(i3)
158  f1444 = f14 + f(i4) + f(i4)
159 !
160 ! DIAGONAL TERMS
161 !
162  a11(ielem) = 3*f1114*s11112 + f2223*s11122
163  a22(ielem) = 3*f2223*s12222 + f1114*s11222
164  a33(ielem) = 3*f2333*s12222 + f1444*s11222
165  a44(ielem) = 3*f1444*s11112 + f2333*s11122
166 !
167 ! ELEMENTS OFF THE DIAGONAL
168 !
169  a12(ielem) = f1114*s11122 + f2223*s11222
170  a13(ielem) = f14*s11122 + f23*s11222
171  a14(ielem) = 3*f14*s11112 + f23*s11122
172  a23(ielem) = 3*f23*s12222 + f14*s11222
173  a24(ielem) = a13(ielem)
174  a34(ielem) = f2333*s11222 + f1444*s11122
175 !
176  ELSE
177 !
178 ! ELEMENT NOT IN DOMAIN (PARALLELISM)
179 !
180  a11(ielem) = 0.d0
181  a22(ielem) = 0.d0
182  a33(ielem) = 0.d0
183  a44(ielem) = 0.d0
184  a12(ielem) = 0.d0
185  a13(ielem) = 0.d0
186  a14(ielem) = 0.d0
187  a23(ielem) = 0.d0
188  a24(ielem) = 0.d0
189  a34(ielem) = 0.d0
190 !
191  ENDIF
192 !
193  ENDDO ! IELEM
194 !
195 !-----------------------------------------------------------------------
196 !
197 ! OTHER TYPES OF DISCRETISATION OF F
198 !
199  ELSE
200 !
201  WRITE(lu,101) ielmf,sf%NAME
202 101 FORMAT(1x,'MT06FF (BIEF) :',/,
203  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
204  & 1x,'REAL NAME: ',a6)
205  CALL plante(1)
206  stop
207 !
208  ENDIF
209 !
210 !-----------------------------------------------------------------------
211 !
212  RETURN
213  END
subroutine mt06ff(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SF, F, X, Y, Z, IKLE1, IKLE2, IKLE3, IKLE4, NBOR, NELBOR, NULONE, NELEB, NELEBX, NELMAX)
Definition: mt06ff.f:12
Definition: bief.f:3