The TELEMAC-MASCARET system  trunk
mt07bb.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt07bb
3 ! *****************
4 !
5  &( a11 , a12 , a13 , a14 ,
6  & a22 , a23 , a24 ,
7  & a33 , a34 ,
8  & a44 ,
9  & xmul,sf,f,surfac,nelem,nelmax)
10 !
11 !***********************************************************************
12 ! BIEF V6P0 21/08/2010
13 !***********************************************************************
14 !
15 !brief BUILDS THE FOLLOWING MATRIX
16 !+ FOR QUASI-BUBBLE TRIANGLES:
17 !code
18 !+ T*M + (1-T) *DM
19 !+
20 !+ M IS THE MASS MATRIX QB*QB
21 !+ DM IS MASS-LUMPED M
22 !+ T IS A VECTOR CONSTANT BY ELEMENT
23 !
24 !warning THE JACOBIAN MUST BE POSITIVE
25 !
26 !history J-M HERVOUET (LNH) ; C MOULIN (LNH)
27 !+ 10/01/95
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 !| A14 |<--| ELEMENTS OF MATRIX
48 !| A22 |<--| ELEMENTS OF MATRIX
49 !| A23 |<--| ELEMENTS OF MATRIX
50 !| A24 |<--| ELEMENTS OF MATRIX
51 !| A33 |<--| ELEMENTS OF MATRIX
52 !| A34 |<--| ELEMENTS OF MATRIX
53 !| A44 |<--| ELEMENTS OF MATRIX
54 !| F |-->| FUNCTION USED IN THE FORMULA
55 !| NELEM |-->| NUMBER OF ELEMENTS
56 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
57 !| SF |-->| STRUCTURE OF FUNCTIONS F
58 !| SURFAC |-->| AREA OF TRIANGLES
59 !| XMUL |-->| MULTIPLICATION FACTOR
60 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
61 !
62  USE bief, ex_mt07bb => mt07bb
63 !
65  IMPLICIT NONE
66 !
67 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
68 !
69  INTEGER, INTENT(IN) :: NELEM,NELMAX
70 !
71  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*),A14(*)
72  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*),A24(*)
73  DOUBLE PRECISION, INTENT(INOUT) :: A33(*),A34(*)
74  DOUBLE PRECISION, INTENT(INOUT) :: A44(*)
75 !
76  DOUBLE PRECISION, INTENT(IN) :: XMUL
77  DOUBLE PRECISION, INTENT(IN) :: F(*)
78 !
79 ! STRUCTURE OF F
80  TYPE(bief_obj), INTENT(IN) :: SF
81 !
82  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
83 !
84 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
85 !
86 ! DECLARATIONS SPECIFIC TO THIS SUBROUTINE
87 !
88  DOUBLE PRECISION T,XSUR06,XSUR09,XSUR36
89  INTEGER IELEM
90 !
91 !=======================================================================
92 !
93  xsur06 = xmul/6.d0
94  xsur09 = xmul/9.d0
95  xsur36 = xmul/36.d0
96 !
97 !-----------------------------------------------------------------------
98 !
99  IF(sf%ELM.EQ.10) THEN
100 !
101 !-----------------------------------------------------------------------
102 !
103 ! P0 DISCRETISATION OF F:
104 !
105  DO ielem = 1 , nelem
106 !
107 ! INITIALISES THE INTERMEDIATE VARIABLES
108 !
109  t = f(ielem)
110 !
111 ! DIAGONAL TERMS
112 !
113  a11(ielem) = -(t-2)*surfac(ielem)*xsur09
114  a22(ielem) = a11(ielem)
115  a33(ielem) = a11(ielem)
116  a44(ielem) = -(t-2)*surfac(ielem)*xsur06
117 !
118 ! EXTRADIAGONAL TERMS
119 !
120  a12(ielem) = surfac(ielem)*t*xsur36
121  a13(ielem) = a12(ielem)
122  a14(ielem) = 2*a12(ielem)
123  a23(ielem) = a12(ielem)
124  a24(ielem) = a14(ielem)
125  a34(ielem) = a14(ielem)
126 !
127  ENDDO ! IELEM
128 !
129 !-----------------------------------------------------------------------
130 !
131 ! ANOTHER DISCRETISATION OF F
132 ! ELSEIF(SF%ELM.EQ.XX) THEN
133 !
134 !-----------------------------------------------------------------------
135 !
136  ELSE
137 !
138  WRITE(lu,101) sf%ELM,sf%NAME
139 101 FORMAT(1x,'MT07BB (BIEF) :',/,
140  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
141  & 1x,'REAL NAME: ',a6)
142  CALL plante(1)
143  stop
144 !
145  ENDIF
146 !
147 !-----------------------------------------------------------------------
148 !
149  RETURN
150  END
subroutine mt07bb(A11, A12, A13, A14, A22, A23, A24, A33, A34, A44, XMUL, SF, F, SURFAC, NELEM, NELMAX)
Definition: mt07bb.f:11
Definition: bief.f:3