The TELEMAC-MASCARET system  trunk
mt06oo.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt06oo
3 ! *****************
4 !
5  &(a11,a12,a22,xmul,sf,f,lgseg,ikle1,ikle2,nbor,nelem,nelmax)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
12 !code
13 !+ /
14 !+ A = / F (P *P )*J(X,Y) DX
15 !+ I J /L I J
16 !+
17 !+ BY ELEMENTARY CELL; THE ELEMENT IS THE P1 SEGMENT
18 !+
19 !+ J(X,Y): JACOBIAN OF THE ISOPARAMETRIC TRANSFORMATION
20 !
21 !warning THE JACOBIAN MUST BE POSITIVE
22 !
23 !history F LEPEINTRE (LNH)
24 !+ 04/09/92
25 !+
26 !+
27 !
28 !history J-M HERVOUET (LNHE)
29 !+ 20/03/08
30 !+ V5P9
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 !| IKLE1 |-->| FIRST POINTS OF SEGMENTS
54 !| IKLE2 |-->| SECOND POINTS OF SEGMENTS
55 !| LGSEG |-->| LENGTH OF SEGMENTS
56 !| NBOR |-->| GLOBAL NUMBER OF BOUNDARY POINTS
57 !| NELEM |-->| NUMBER OF ELEMENTS
58 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
59 !| SF |-->| BIEF_OBJ STRUCTURE OF F
60 !| SURFAC |-->| AREA OF TRIANGLES
61 !| XMUL |-->| MULTIPLICATION FACTOR
62 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
63 !
64  USE bief, ex_mt06oo => mt06oo
65 !
67  IMPLICIT NONE
68 !
69 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
70 !
71  INTEGER, INTENT(IN) :: NELEM,NELMAX
72  INTEGER, INTENT(IN) :: IKLE1(*),IKLE2(*),NBOR(*)
73 !
74  DOUBLE PRECISION, INTENT(IN) :: XMUL
75 !
76  DOUBLE PRECISION, INTENT(IN) :: F(*)
77 !
78 ! STRUCTURE OF F
79  TYPE(bief_obj), INTENT(IN) :: SF
80 !
81  DOUBLE PRECISION, INTENT(IN) :: LGSEG(nelmax)
82  DOUBLE PRECISION, INTENT(INOUT) :: A11(nelmax)
83  DOUBLE PRECISION, INTENT(INOUT) :: A12(nelmax)
84  DOUBLE PRECISION, INTENT(INOUT) :: A22(nelmax)
85 !
86 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
87 !
88  INTEGER IELEM,IELMF
89  DOUBLE PRECISION SUR12,DET1,F1,F2,F12
90 !
91 !-----------------------------------------------------------------------
92 !
93  sur12 = xmul/12.d0
94 !
95 !-----------------------------------------------------------------------
96 !
97  ielmf = sf%ELM
98 !
99 ! F CONSTANT BY SEGMENT, IN A BOUNDARY ARRAY
100 !
101  IF(ielmf.EQ.0) THEN
102 !
103  DO ielem = 1 , nelem
104 ! TO BE OPTIMISED...
105  f1 = f(ielem)
106  f2 = f(ielem)
107 !
108  f12 = f1 + f2
109 !
110  det1 = lgseg(ielem) * sur12
111 !
112  a11(ielem) = det1 * (f12+2*f1)
113  a12(ielem) = det1 * f12
114  a22(ielem) = det1 * (f12+2*f2)
115 !
116  ENDDO
117 !
118 ! F LINEAR BY SEGMENT, IN A BOUNDARY ARRAY
119 ! NOTE: IKLE IS HERE A BOUNDARY IKLE
120 !
121  ELSEIF(ielmf.EQ.1) THEN
122 !
123  DO ielem = 1 , nelem
124 !
125  f1 = f(ikle1(ielem))
126  f2 = f(ikle2(ielem))
127  f12 = f1 + f2
128  det1 = lgseg(ielem) * sur12
129  a11(ielem) = det1 * (f12+2*f1)
130  a12(ielem) = det1 * f12
131  a22(ielem) = det1 * (f12+2*f2)
132 !
133  ENDDO
134 !
135 ! F LINEAR, IN AN ARRAY DEFINED ON THE DOMAIN
136 !
137  ELSEIF(ielmf.EQ.11.OR.ielmf.EQ.21) THEN
138 !
139  DO ielem = 1 , nelem
140 !
141  f1 = f(nbor(ikle1(ielem)))
142  f2 = f(nbor(ikle2(ielem)))
143  f12 = f1 + f2
144  det1 = lgseg(ielem) * sur12
145  a11(ielem) = det1 * (f12+2*f1)
146  a12(ielem) = det1 * f12
147  a22(ielem) = det1 * (f12+2*f2)
148 !
149  ENDDO
150 !
151 ! OTHER TYPES OF DISCRETISATION OF F
152 !
153  ELSE
154 !
155  WRITE(lu,101) ielmf,sf%NAME
156 101 FORMAT(1x,'MT0600 (BIEF) :',/,
157  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
158  & 1x,'REAL NAME: ',a6)
159  CALL plante(1)
160  stop
161 !
162  ENDIF
163 !
164 !-----------------------------------------------------------------------
165 !
166  RETURN
167  END
subroutine mt06oo(A11, A12, A22, XMUL, SF, F, LGSEG, IKLE1, IKLE2, NBOR, NELEM, NELMAX)
Definition: mt06oo.f:7
Definition: bief.f:3