The TELEMAC-MASCARET system
trunk
sources
utils
bief
mt13ca.f
Go to the documentation of this file.
1
! *****************
2
SUBROUTINE
mt13ca
3
! *****************
4
!
5
&( a11 , a12 , a13 ,
6
& a21 , a22 , a23 ,
7
& a31 , a32 , a33 ,
8
& a41 , a42 , a43 ,
9
& a51 , a52 , a53 ,
10
& a61 , a62 , a63 ,
11
& xmul,xel,yel,nelem,nelmax,icoord)
12
!
13
!***********************************************************************
14
! BIEF V6P2 21/08/2010
15
!***********************************************************************
16
!
17
!brief COMPUTES THE COEFFICIENTS OF THE FOLLOWING MATRIX:
18
!code
19
!+ EXAMPLE WITH ICOORD = 1
20
!+
21
!+ / D
22
!+ A(I,J)= XMUL * / PSI1(I) * --( PSI2(J) ) D(OMEGA)
23
!+ /OMEGA DX
24
!+
25
!+ ICOORD=2 WOULD GIVE A DERIVATIVE WRT Y
26
!+
27
!+ PSI1: BASES OF TYPE P2 TRIANGLE
28
!+ PSI2: BASES OF TYPE P1 TRIANGLE
29
!
30
!warning THE JACOBIAN MUST BE POSITIVE
31
!
32
!history ALGIANE FROEHLY
33
!+ 09/07/2008
34
!+ V5P9
35
!+
36
!
37
!history N.DURAND (HRW), S.E.BOURBAN (HRW)
38
!+ 13/07/2010
39
!+ V6P0
40
!+ Translation of French comments within the FORTRAN sources into
41
!+ English comments
42
!
43
!history N.DURAND (HRW), S.E.BOURBAN (HRW)
44
!+ 21/08/2010
45
!+ V6P0
46
!+ Creation of DOXYGEN tags for automated documentation and
47
!+ cross-referencing of the FORTRAN sources
48
!
49
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
50
!| A11 |<--| ELEMENTS OF MATRIX
51
!| ... |<--| ELEMENTS OF MATRIX
52
!| A63 |<--| ELEMENTS OF MATRIX
53
!| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
54
!| NELEM |-->| NUMBER OF ELEMENTS
55
!| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
56
!| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
57
!| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
58
!| XMUL |-->| MULTIPLICATION FACTOR
59
!~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60
!
61
USE
bief
!, EX_MT13CA => MT13CA
62
!
63
USE
declarations_special
64
IMPLICIT NONE
65
!
66
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67
!
68
INTEGER
,
INTENT(IN)
:: NELEM,NELMAX,ICOORD
69
!
70
DOUBLE PRECISION
,
INTENT(INOUT)
:: A11(*),A12(*),A13(*)
71
DOUBLE PRECISION
,
INTENT(INOUT)
:: A21(*),A22(*),A23(*)
72
DOUBLE PRECISION
,
INTENT(INOUT)
:: A31(*),A32(*),A33(*)
73
DOUBLE PRECISION
,
INTENT(INOUT)
:: A41(*),A42(*),A43(*)
74
DOUBLE PRECISION
,
INTENT(INOUT)
:: A51(*),A52(*),A53(*)
75
DOUBLE PRECISION
,
INTENT(INOUT)
:: A61(*),A62(*),A63(*)
76
!
77
DOUBLE PRECISION
,
INTENT(IN)
:: XMUL
78
!
79
DOUBLE PRECISION
,
INTENT(IN)
:: XEL(nelmax,3),YEL(nelmax,3)
80
!
81
!+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82
!
83
INTEGER
IELEM
84
DOUBLE PRECISION
X2,X3,Y2,Y3
85
DOUBLE PRECISION
XSUR6
86
!
87
!-----------------------------------------------------------------------
88
!
89
xsur6 = xmul/6.d0
90
!
91
!================================
92
! DERIVATIVE WRT X =
93
!================================
94
!
95
IF
(icoord.EQ.1)
THEN
96
!
97
! LOOP ON THE ELEMENTS
98
!
99
DO
ielem = 1 , nelem
100
!
101
! INITIALISES THE GEOMETRICAL VARIABLES
102
!
103
y2 = yel(ielem,2)
104
y3 = yel(ielem,3)
105
!
106
! EXTRADIAGONAL TERMS
107
!
108
a12(ielem) = 0.d0
109
a13(ielem) = 0.d0
110
a21(ielem) = 0.d0
111
a23(ielem) = 0.d0
112
a31(ielem) = 0.d0
113
a32(ielem) = 0.d0
114
a42(ielem) = y3*xsur6
115
a43(ielem) = - y2*xsur6
116
a41(ielem) = - a42(ielem) - a43(ielem)
117
a51(ielem) = a41(ielem)
118
a52(ielem) = a42(ielem)
119
a53(ielem) = a43(ielem)
120
a61(ielem) = a41(ielem)
121
a62(ielem) = a42(ielem)
122
a63(ielem) = a43(ielem)
123
!
124
! DIAGONAL TERMS
125
!
126
a11(ielem) = 0.d0
127
a22(ielem) = 0.d0
128
a33(ielem) = 0.d0
129
!
130
ENDDO
! IELEM
131
!
132
ELSEIF
(icoord.EQ.2)
THEN
133
!
134
!================================
135
! DERIVATIVE WRT Y =
136
!================================
137
!
138
DO
ielem = 1 , nelem
139
!
140
! INITIALISES THE GEOMETRICAL VARIABLES
141
!
142
x2 = xel(ielem,2)
143
x3 = xel(ielem,3)
144
!
145
! EXTRADIAGONAL TERMS
146
!
147
a12(ielem) = 0.d0
148
a13(ielem) = 0.d0
149
a21(ielem) = 0.d0
150
a23(ielem) = 0.d0
151
a31(ielem) = 0.d0
152
a32(ielem) = 0.d0
153
a42(ielem) = - x3*xsur6
154
a43(ielem) = x2*xsur6
155
a41(ielem) = - a42(ielem) - a43(ielem)
156
a51(ielem) = a41(ielem)
157
a52(ielem) = a42(ielem)
158
a53(ielem) = a43(ielem)
159
a61(ielem) = a41(ielem)
160
a62(ielem) = a42(ielem)
161
a63(ielem) = a43(ielem)
162
!
163
! DIAGONAL TERMS
164
!
165
a11(ielem) = 0.d0
166
a22(ielem) = 0.d0
167
a33(ielem) = 0.d0
168
!
169
ENDDO
! IELEM
170
!
171
ELSE
172
!
173
WRITE
(
lu
,201) icoord
174
CALL
plante(1)
175
!
176
ENDIF
177
!
178
201
FORMAT
(1x,
'MT13CA (BIEF) : IMPOSSIBLE COMPONENT '
,
179
& 1i6,
' CHECK ICOORD'
)
180
!
181
!-----------------------------------------------------------------------
182
!
183
RETURN
184
END
declarations_special
Definition:
declarations_special.F:3
declarations_special::lu
integer lu
Definition:
declarations_special.F:45
mt13ca
subroutine mt13ca(A11, A12, A13, A21, A22, A23, A31, A32, A33, A41, A42, A43, A51, A52, A53, A61, A62, A63, XMUL, XEL, YEL, NELEM, NELMAX, ICOORD)
Definition:
mt13ca.f:13
bief
Definition:
bief.f:3