The TELEMAC-MASCARET system  trunk
mt02aa_2.f
Go to the documentation of this file.
1 ! *******************
2  SUBROUTINE mt02aa_2
3 ! *******************
4 !
5  &( a11 , a12 , a13 ,
6  & a22 , a23 ,
7  & a33 ,
8  & xmul,su,sv,
9  & xel,yel,surfac,nelem,nelmax)
10 !
11 !***********************************************************************
12 ! BIEF V7P0 21/08/2010
13 !***********************************************************************
14 !
15 !brief BUILDS THE DIFFUSION TERM FOR ESTEL2D.
16 !
17 !warning THE JACOBIAN MUST BE POSITIVE
18 !
19 !history J-M HERVOUET (LNH) ; F LEPEINTRE (LNH)
20 !+ 28/11/94
21 !+ V5P8
22 !+
23 !
24 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
25 !+ 13/07/2010
26 !+ V6P0
27 !+ Translation of French comments within the FORTRAN sources into
28 !+ English comments
29 !
30 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
31 !+ 21/08/2010
32 !+ V6P0
33 !+ Creation of DOXYGEN tags for automated documentation and
34 !+ cross-referencing of the FORTRAN sources
35 !
36 !history J-M HERVOUET (EDF LAB, LNHE)
37 !+ 13/05/2014
38 !+ V7P0
39 !+ Discontinuous elements better treated: new types 15, 16 and 17 for
40 !+ discontinuous linear, quasi-bubble, and quadratic, rather than
41 !+ using component DIMDISC=11, 12 or 13.
42 !
43 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
44 !| A11 |<--| ELEMENTS OF MATRIX
45 !| A12 |<--| ELEMENTS OF MATRIX
46 !| A13 |<--| ELEMENTS OF MATRIX
47 !| A22 |<--| ELEMENTS OF MATRIX
48 !| A23 |<--| ELEMENTS OF MATRIX
49 !| A33 |<--| ELEMENTS OF MATRIX
50 !| NELEM |-->| NUMBER OF ELEMENTS
51 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
52 !| SU |-->| BIEF_OBJ STRUCTURE OF U
53 !| SURFAC |-->| AREA OF TRIANGLES
54 !| SV |-->| BIEF_OBJ STRUCTURE OF V
55 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
56 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
57 !| XMUL |-->| MULTIPLICATION FACTOR
58 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
59 !
60  USE bief, ex_mt02aa_2 => mt02aa_2
61 !
63  IMPLICIT NONE
64 !
65 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
66 !
67  INTEGER, INTENT(IN) :: NELEM,NELMAX
68  DOUBLE PRECISION, INTENT(INOUT) :: A11(*),A12(*),A13(*)
69  DOUBLE PRECISION, INTENT(INOUT) :: A22(*),A23(*)
70  DOUBLE PRECISION, INTENT(INOUT) :: A33(*)
71  DOUBLE PRECISION, INTENT(IN) :: XMUL
72 ! STRUCTURE OF U AND V
73  TYPE(bief_obj) , INTENT(IN) :: SU,SV
74  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,3),YEL(nelmax,3)
75  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
76 !
77 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
78 !
79 ! DECLARATIONS SPECIFIC TO THIS SUBROUTINE
80 !
81  INTEGER IELEM,IELMNU,IELMNV
82 !
83  DOUBLE PRECISION X2,X3,Y2,Y3,KSAT1,KSAT2,KSAT3,SOM,XSUR12
84 !
85 !=======================================================================
86 !
87 ! EXTRACTS THE TYPE OF ELEMENT FOR VISCOSITY
88 !
89  ielmnu = su%ELM
90  ielmnv = sv%ELM
91 !
92  xsur12 = xmul / 12.d0
93 !
94 !-----------------------------------------------------------------------
95 ! TESTS THE TYPES OF U AND V
96 ! U (KR) : P0 AND DIM 3 (BECAUSE DISCONTINUOUS P1) - V (KS) : P0 AND DIM 3
97 !-----------------------------------------------------------------------
98 !
99  IF(ielmnu.EQ.15.AND.ielmnv.EQ.15) THEN
100 !
101  DO ielem = 1 , nelem
102 !
103 ! THE 3 TERMS OF MATRIX V (KS IS SYMMETRICAL)
104 !
105  ksat1=sv%R(ielem)
106  ksat2=sv%R(ielem+nelem)
107  ksat3=sv%R(ielem+2*nelem)
108 !
109 ! INITIALISES THE GEOMETRICAL VARIABLES
110 !
111  x2 = xel(ielem,2)
112  x3 = xel(ielem,3)
113 !
114  y2 = yel(ielem,2)
115  y3 = yel(ielem,3)
116 !
117 ! INITIALISES THE INTERMEDIATE VARIABLES
118 !
119  som = ( su%R(ielem+2*nelem)
120  & + su%R(ielem+nelem)
121  & + su%R(ielem) ) * xsur12 / surfac(ielem)
122 !
123 ! DIAGONAL TERMS
124 !
125  a11(ielem) = (ksat1*y2**2-2*ksat1*y2*y3+ksat1*y3**2+ksat2*x2**2-
126  & 2*ksat2*x2*x3+ksat2*x3**2-2*ksat3*y2*x2+2*ksat3*y2*x3+
127  & 2*ksat3*x2*y3-2*ksat3*y3*x3)*som
128 !
129  a22(ielem) = (ksat1*y3**2+ksat2*x3**2-2*ksat3*y3*x3)*som
130 !
131  a33(ielem) = (ksat1*y2**2+ksat2*x2**2-2*ksat3*y2*x2)*som
132 !
133 ! EXTRADIAGONAL TERMS
134 !
135  a12(ielem) = -(-ksat1*y2*y3+ksat1*y3**2-ksat2*x2*x3+ksat2*x3**2+
136  & ksat3*x2*y3-2*ksat3*y3*x3+ksat3*y2*x3)*som
137 !
138  a13(ielem) = -(ksat1*y2**2-ksat1*y2*y3+ksat2*x2**2-ksat2*x2*x3-
139  & 2*ksat3*y2*x2+ksat3*y2*x3+ksat3*x2*y3)*som
140 !
141  a23(ielem) = (-ksat1*y2*y3-ksat2*x2*x3+ksat3*y2*x3+ksat3*x2*y3)*
142  & som
143 !
144 ! END OF THE LOOP ON THE ELEMENTS
145 !
146  ENDDO
147 !
148 !-----------------------------------------------------------------------
149 !
150  ELSE
151 !
152  WRITE(lu,11)
153 11 FORMAT(1x,'MT02AA_2 (BIEF) : TYPES NOT AVAILABLE')
154  CALL plante(1)
155  stop
156 !
157  ENDIF
158 !
159 !-----------------------------------------------------------------------
160 !
161  RETURN
162  END
subroutine mt02aa_2(A11, A12, A13, A22, A23, A33, XMUL, SU, SV, XEL, YEL, SURFAC, NELEM, NELMAX)
Definition: mt02aa_2.f:11
Definition: bief.f:3