The TELEMAC-MASCARET system  trunk
mt01tt.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE mt01tt
3 ! *****************
4 !
5  &( t,xm,xmul,x,y,z,ikle,nelem,nelmax)
6 !
7 !***********************************************************************
8 ! BIEF V6P1 21/08/2010
9 !***********************************************************************
10 !
11 !brief BUILDS THE MASS MATRIX FOR TETRAHEDRONS.
12 !code
13 !+ STORAGE CONVENTION FOR EXTRA-DIAGONAL TERMS:
14 !+
15 !+ XM(IELEM, 1) ----> M(1,2) = M(2,1)
16 !+ XM(IELEM, 2) ----> M(1,3) = M(3,1)
17 !+ XM(IELEM, 3) ----> M(1,4) = M(4,1)
18 !+ XM(IELEM, 4) ----> M(2,3) = M(3,2)
19 !+ XM(IELEM, 5) ----> M(2,4) = M(4,2)
20 !+ XM(IELEM, 6) ----> M(3,4) = M(4,3)
21 !
22 !history J-M HERVOUET (LNH)
23 !+ 04/01/02
24 !+ V5P3
25 !+
26 !
27 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
28 !+ 13/07/2010
29 !+ V6P0
30 !+ Translation of French comments within the FORTRAN sources into
31 !+ English comments
32 !
33 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
34 !+ 21/08/2010
35 !+ V6P0
36 !+ Creation of DOXYGEN tags for automated documentation and
37 !+ cross-referencing of the FORTRAN sources
38 !
39 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
40 !| IKLE |-->| CONNECTIVITY TABLE.
41 !| NELEM |-->| NUMBER OF ELEMENTS
42 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
43 !| SURFAC |-->| AREA OF TRIANGLES
44 !| T |<--| NON ASSEMBLED DIAGONAL
45 !| XM |<--| NON ASSEMBLED OFF-DIAGONAL TERMS
46 !| XMUL |-->| MULTIPLICATION FACTOR
47 !| X |-->| ABSCISSAE OF POINTS IN THE MESH
48 !| Y |-->| ORDINATES OF POINTS IN THE MESH
49 !| Z |-->| ELEVATIONS OF POINTS IN THE MESH
50 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
51 !
52  USE bief, ex_mt01tt => mt01tt
53 !
55  IMPLICIT NONE
56 !
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER, INTENT(IN) :: NELEM,NELMAX
61  INTEGER, INTENT(IN) :: IKLE(nelmax,4)
62  DOUBLE PRECISION, INTENT(INOUT) :: T(nelmax,4),XM(nelmax,6)
63  DOUBLE PRECISION, INTENT(IN) :: XMUL
64  DOUBLE PRECISION, INTENT(IN) :: X(*),Y(*),Z(*)
65 !
66 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67 !
68 ! SPECIFIC DECLARATIONS
69 !
70  DOUBLE PRECISION X2,Y2,Z2,X3,Y3,Z3,X4,Y4,Z4,VOLSUR20
71  INTEGER I1,I2,I3,I4,IELEM
72 !
73  DOUBLE PRECISION XSUR120
74 !
75 !***********************************************************************
76 !
77  xsur120=xmul/120.d0
78 !
79 !-----------------------------------------------------------------------
80 !
81 ! LOOP ON THE TETRAHEDRONS
82 !
83  DO ielem=1,nelem
84 !
85  i1=ikle(ielem,1)
86  i2=ikle(ielem,2)
87  i3=ikle(ielem,3)
88  i4=ikle(ielem,4)
89 !
90 !-----------------------------------------------------------------------
91 !
92  x2=x(i2)-x(i1)
93  y2=y(i2)-y(i1)
94  z2=z(i2)-z(i1)
95  x3=x(i3)-x(i1)
96  y3=y(i3)-y(i1)
97  z3=z(i3)-z(i1)
98  x4=x(i4)-x(i1)
99  y4=y(i4)-y(i1)
100  z4=z(i4)-z(i1)
101 !
102 ! EXTRA-DIAGONAL TERMS
103 !
104 ! VOLUME OF THE TETRAHEDRON:
105 !
106 ! (Z2*(X3*Y4-X4*Y3)+Y2*(X4*Z3-X3*Z4)+X2*(Y3*Z4-Y4*Z3))/6
107 !
108 ! XM(IELEM,1) = VOLUME / 20
109 !
110 ! SUMS UP THE TERMS (INC. SYMMETRIC ONES) TO YIELD VOLUME OF THE TETRAHEDRON
111 !
112  volsur20 =
113  &(z2*(x3*y4-x4*y3)+y2*(x4*z3-x3*z4)+x2*(y3*z4-y4*z3))*xsur120
114  xm(ielem,1) = max(volsur20,1.d-4)
115  xm(ielem,2) = xm(ielem,1)
116  xm(ielem,3) = xm(ielem,1)
117  xm(ielem,4) = xm(ielem,1)
118  xm(ielem,5) = xm(ielem,1)
119  xm(ielem,6) = xm(ielem,1)
120 !
121 ! DIAGONAL TERMS
122 !
123  t(ielem,1) = 2 * xm(ielem,1)
124  t(ielem,2) = t(ielem,1)
125  t(ielem,3) = t(ielem,1)
126  t(ielem,4) = t(ielem,1)
127 !
128 !-----------------------------------------------------------------------
129 !
130  ENDDO ! IELEM
131 !
132 !-----------------------------------------------------------------------
133 !
134  RETURN
135  END
subroutine mt01tt(T, XM, XMUL, X, Y, Z, IKLE, NELEM, NELMAX)
Definition: mt01tt.f:7
Definition: bief.f:3