The TELEMAC-MASCARET system  trunk
mt07aa.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt07aa
3 ! *****************
4 !
5  &( a11 , a12 , a13 ,
6  & a22 , a23 ,
7  & a33 ,
8  & xmul,sf,f,surfac,nelem,nelmax)
9 !
10 !***********************************************************************
11 ! BIEF V6P1 21/08/2010
12 !***********************************************************************
13 !
14 !brief BUILDS THE MASS MATRIX
15 !+ WITH LOCAL MASS-LUMPING ACCORDING TO A LOCAL
16 !+ COEFFICIENT TETA (P0 FUNCTION) (HERE THE FUNCTION F).
17 !+
18 !+ THE ELEMENT IS THE P1 TRIANGLE.
19 !code
20 !+ M = TETA * MASS MATRIX
21 !+ + (1-TETA) * DIAGONAL MATRIX
22 !+
23 !+ THIS MATRIX IS SUBSEQUENTLY MULTIPLIED BY XMUL
24 !
25 !warning THE JACOBIAN MUST BE POSITIVE
26 !
27 !history J-M HERVOUET (LNH) ; F LEPEINTRE (LNH)
28 !+ 30/06/93
29 !+ V5P1
30 !+
31 !
32 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
33 !+ 13/07/2010
34 !+ V6P0
35 !+ Translation of French comments within the FORTRAN sources into
36 !+ English comments
37 !
38 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
39 !+ 21/08/2010
40 !+ V6P0
41 !+ Creation of DOXYGEN tags for automated documentation and
42 !+ cross-referencing of the FORTRAN sources
43 !
44 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
45 !| A11 |<--| ELEMENTS OF MATRIX
46 !| A12 |<--| ELEMENTS OF MATRIX
47 !| A13 |<--| ELEMENTS OF MATRIX
48 !| A22 |<--| ELEMENTS OF MATRIX
49 !| A23 |<--| ELEMENTS OF MATRIX
50 !| A33 |<--| ELEMENTS OF MATRIX
51 !| F |-->| FUNCTION USED IN THE FORMULA
52 !| NELEM |-->| NUMBER OF ELEMENTS
53 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
54 !| SF |-->| STRUCTURE OF FUNCTIONS F
55 !| SURFAC |-->| AREA OF TRIANGLES
56 !| XMUL |-->| MULTIPLICATION FACTOR
57 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
58 !
59  USE bief, ex_mt07aa => mt07aa
60 !
62  IMPLICIT NONE
63 !
64 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
65 !
66  INTEGER, INTENT(IN) :: NELEM,NELMAX
67 !
68  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
69  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
70  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
71 !
72  DOUBLE PRECISION, INTENT(IN) :: XMUL
73  DOUBLE PRECISION, INTENT(IN) :: F(*)
74 !
75 ! STRUCTURE OF F
76  TYPE(bief_obj), INTENT(IN) :: SF
77 !
78  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
79 !
80 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
81 !
82 ! DECLARATIONS SPECIFIC TO THIS SUBROUTINE
83 !
84  INTEGER IELMF,IELEM
85 !
86  DOUBLE PRECISION SUR12,DET,T
87 !
88 !-----------------------------------------------------------------------
89 !
90  sur12 = xmul/12.d0
91 !
92 !-----------------------------------------------------------------------
93 !
94  ielmf = sf%ELM
95 !
96 ! CASE WHERE F IS CONSTANT BY ELEMENT
97 !
98  IF(ielmf.EQ.10) THEN
99 !
100  DO ielem = 1 , nelem
101 !
102  det = surfac(ielem) * sur12
103  t = f(ielem)
104 !
105 !***********************************************************************
106 !
107 ! ELEMENTS OFF THE DIAGONAL
108 !
109  a12(ielem) = t * det
110  a13(ielem) = t * det
111  a23(ielem) = t * det
112 !
113 ! DIAGONAL TERMS
114 !
115  a11(ielem) = ( det + det ) * (2.d0 - t)
116  a22(ielem) = ( det + det ) * (2.d0 - t)
117  a33(ielem) = ( det + det ) * (2.d0 - t)
118 !
119 ! END OF THE LOOP ON THE ELEMENTS
120 !
121  ENDDO ! IELEM
122 !
123 !-----------------------------------------------------------------------
124 !
125 ! OTHER TYPES OF DISCRETISATION OF F
126 !
127  ELSE
128 !
129  WRITE(lu,101) ielmf,sf%NAME
130 101 FORMAT(1x,'MT07AA (BIEF) :',/,
131  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
132  & 1x,'REAL NAME: ',a6)
133  CALL plante(0)
134  stop
135 !
136  ENDIF
137 !
138 !-----------------------------------------------------------------------
139 !
140  RETURN
141  END
subroutine mt07aa(A11, A12, A13, A22, A23, A33, XMUL, SF, F, SURFAC, NELEM, NELMAX)
Definition: mt07aa.f:10
Definition: bief.f:3