The TELEMAC-MASCARET system  trunk
vc09aa.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE vc09aa
3 ! *****************
4 !
5  &(xmul,sf,sg,su,sv,f,g,u,v,
6  & xel,yel,ikle1,ikle2,ikle3,nelem,nelmax,w1,w2,w3 )
7 !
8 !***********************************************************************
9 ! BIEF V6P1 21/08/2010
10 !***********************************************************************
11 !
12 !brief COMPUTES THE FOLLOWING VECTOR IN FINITE ELEMENTS:
13 !code
14 !+ / DF DF
15 !+ V = XMUL / PSII * ( G U -- + G V -- ) D(OMEGA)
16 !+ I /OMEGA DX DY
17 !+
18 !+ PSI(I) IS A BASE OF TYPE P1 TRIANGLE
19 !
20 !warning THE JACOBIAN MUST BE POSITIVE
21 !warning THE RESULT IS IN W IN NOT ASSEMBLED FORM
22 !
23 !history J-M HERVOUET (LNH)
24 !+ 09/12/94
25 !+ V5P1
26 !+
27 !
28 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
29 !+ 13/07/2010
30 !+ V6P0
31 !+ Translation of French comments within the FORTRAN sources into
32 !+ English comments
33 !
34 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
35 !+ 21/08/2010
36 !+ V6P0
37 !+ Creation of DOXYGEN tags for automated documentation and
38 !+ cross-referencing of the FORTRAN sources
39 !
40 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
41 !| F |-->| FUNCTION USED IN THE VECTOR FORMULA
42 !| G |-->| FUNCTION USED IN THE VECTOR FORMULA
43 !| FORMUL |-->| STRING WITH FORMULA OF VECTOR
44 !| IKLE |-->| CONNECTIVITY TABLE
45 !| NELEM |-->| NUMBER OF ELEMENTS
46 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
47 !| SF |-->| BIEF_OBJ STRUCTURE OF F
48 !| SG |-->| BIEF_OBJ STRUCTURE OF G
49 !| SU |-->| BIEF_OBJ STRUCTURE OF U
50 !| SV |-->| BIEF_OBJ STRUCTURE OF V
51 !| U |-->| FUNCTION USED IN THE VECTOR FORMULA
52 !| V |-->| FUNCTION USED IN THE VECTOR FORMULA
53 !| W1 |<--| RESULT IN NON ASSEMBLED FORM
54 !| W2 |<--| RESULT IN NON ASSEMBLED FORM
55 !| W3 |<--| RESULT IN NON ASSEMBLED FORM
56 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
57 !| XMUL |-->| MULTIPLICATION COEFFICIENT
58 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
59 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
60 !
61  USE bief, ex_vc09aa => vc09aa
62 !
64  IMPLICIT NONE
65 !
66 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
67 !
68  INTEGER, INTENT(IN) :: NELEM,NELMAX
69  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
70 !
71  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
72  DOUBLE PRECISION, INTENT(INOUT) ::W1(nelmax),W2(nelmax),W3(nelmax)
73  DOUBLE PRECISION, INTENT(IN) :: XMUL
74 !
75 ! STRUCTURES OF F, G, U, V AND REAL DATA
76 !
77  TYPE(bief_obj), INTENT(IN) :: SF,SG,SU,SV
78  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),U(*),V(*)
79 !
80 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
81 !
82  INTEGER IELEM,IELMF,IELMU,IELMG,IELMV
83 !
84  DOUBLE PRECISION X2,Y2,X3,Y3,F1,F2,F3,G1,G2,G3,U1,U2,U3,V1,V2,V3
85  DOUBLE PRECISION XS120,T11,T12,T13,T22,T23,T33,FTX,FTY
86  DOUBLE PRECISION U123,V123
87 !
88 !-----------------------------------------------------------------------
89 !
90  xs120 = xmul / 120.d0
91 !
92 !-----------------------------------------------------------------------
93 !
94  ielmf=sf%ELM
95  ielmg=sg%ELM
96  ielmu=su%ELM
97  ielmv=sv%ELM
98 !
99 !-----------------------------------------------------------------------
100 !
101 ! FUNCTION F AND G AND VECTOR U ARE LINEAR
102 !
103  IF( ielmf.EQ.11.AND.ielmg.EQ.11
104  & .AND.ielmu.EQ.11.AND.ielmv.EQ.11 ) THEN
105 !
106  DO ielem = 1 , nelem
107 !
108  x2 = xel(ielem,2)
109  x3 = xel(ielem,3)
110  y2 = yel(ielem,2)
111  y3 = yel(ielem,3)
112 !
113  f1 = f(ikle1(ielem))
114  f2 = f(ikle2(ielem))
115  f3 = f(ikle3(ielem))
116 !
117  g1 = g(ikle1(ielem))
118  g2 = g(ikle2(ielem))
119  g3 = g(ikle3(ielem))
120 !
121  u1 = u(ikle1(ielem))
122  u2 = u(ikle2(ielem))
123  u3 = u(ikle3(ielem))
124 !
125  v1 = v(ikle1(ielem))
126  v2 = v(ikle2(ielem))
127  v3 = v(ikle3(ielem))
128 !
129  ftx = f1 * (x3-x2) - f2 * x3 + f3*x2
130  fty = f1 * (y2-y3) + f2 * y3 - f3*y2
131 !
132  u123 = u1 + u2 + u3
133  v123 = v1 + v2 + v3
134 !
135  t11 = ftx * ( v123 + v1 + v1 ) + fty * ( u123 + u1 + u1 )
136  t22 = ftx * ( v123 + v2 + v2 ) + fty * ( u123 + u2 + u2 )
137  t33 = ftx * ( v123 + v3 + v3 ) + fty * ( u123 + u3 + u3 )
138 !
139  t12 = ftx * ( v123 + v123 - v3 ) + fty * ( u123 + u123 - u3 )
140  t13 = ftx * ( v123 + v123 - v2 ) + fty * ( u123 + u123 - u2 )
141  t23 = ftx * ( v123 + v123 - v1 ) + fty * ( u123 + u123 - u1 )
142 !
143  w1(ielem) = ( 2 * g1*t11 + g2*t12 + g3*t13 ) * xs120
144  w2(ielem) = ( g1*t12 + 2 * g2*t22 + g3*t23 ) * xs120
145  w3(ielem) = ( g1*t13 + g2*t23 + 2 * g3*t33 ) * xs120
146 !
147  ENDDO ! IELEM
148 !
149 !-----------------------------------------------------------------------
150 !
151  ELSE
152 !
153 !-----------------------------------------------------------------------
154 !
155  WRITE(lu,101) ielmf,sf%NAME
156  WRITE(lu,111) ielmg,sg%NAME
157  WRITE(lu,201) ielmu,su%NAME
158  WRITE(lu,301)
159 101 FORMAT(1x,'VC09AA (BIEF) :',/,
160  & 1x,'DISCRETIZATION OF F:',1i6,
161  & 1x,'REAL NAME: ',a6)
162 111 FORMAT(1x,'DISCRETIZATION OF G:',1i6,
163  & 1x,'REAL NAME: ',a6)
164 201 FORMAT(1x,'DISCRETIZATION OF U:',1i6,
165  & 1x,'REAL NAME: ',a6)
166 301 FORMAT(1x,'CASE NOT IMPLEMENTED')
167  CALL plante(0)
168  stop
169 !
170  ENDIF
171 !
172 !-----------------------------------------------------------------------
173 !
174  RETURN
175  END
subroutine vc09aa(XMUL, SF, SG, SU, SV, F, G, U, V, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, W1, W2, W3)
Definition: vc09aa.f:8
Definition: bief.f:3