The TELEMAC-MASCARET system  trunk
vc11aa2.f
Go to the documentation of this file.
1 ! ******************
2  SUBROUTINE vc11aa2
3 ! ******************
4 !
5  &(xmul,sf,sg,sh,f,g,h,xel,yel,
6  & ikle1,ikle2,ikle3,nelem,nelmax,w1,w2,w3,icoord)
7 !
8 !***********************************************************************
9 ! BIEF V7P0 21/08/2010
10 !***********************************************************************
11 !
12 !brief COMPUTES THE FOLLOWING TERMS:
13 !code
14 !+ (EXAMPLE OF THE X COMPONENT, WHICH CORRESPONDS TO ICOORD=1)
15 !+
16 !+ / DF
17 !+ VEC(I) = XMUL / ( G . H . P *( -- )) D(OMEGA)
18 !+ /OMEGA I DX
19 !+
20 !+ P IS A LINEAR BASE
21 !+ I
22 !+
23 !+ F IS A VECTOR OF TYPE P1
24 !+ G IS A VECTOR OF TYPE DISCONTINUOUS P1
25 !+ H IS A VECTOR OF TYPE P0
26 !
27 !warning THE JACOBIAN MUST BE POSITIVE
28 !warning THE RESULT IS IN W IN NOT ASSEMBLED FORM
29 !
30 !history J-M HERVOUET (LNH) ; F LEPEINTRE (LNH)
31 !+ 09/12/94
32 !+ V5P1
33 !+
34 !
35 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
36 !+ 13/07/2010
37 !+ V6P0
38 !+ Translation of French comments within the FORTRAN sources into
39 !+ English comments
40 !
41 !history N.DURAND (HRW), S.E.BOURBAN (HRW)
42 !+ 21/08/2010
43 !+ V6P0
44 !+ Creation of DOXYGEN tags for automated documentation and
45 !+ cross-referencing of the FORTRAN sources
46 !
47 !history J-M HERVOUET (EDF LAB, LNHE)
48 !+ 12/05/2014
49 !+ V7P0
50 !+ Discontinuous elements better treated: new types 15, 16 and 17 for
51 !+ discontinuous linear, quasi-bubble, and quadratic, rather than
52 !+ using component DIMDISC=11, 12 or 13.
53 !
54 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
55 !| F |-->| FUNCTION USED IN THE VECTOR FORMULA
56 !| G |-->| FUNCTION USED IN THE VECTOR FORMULA
57 !| H |-->| FUNCTION USED IN THE VECTOR FORMULA
58 !| ICOORD |-->| 1: DERIVATIVE ALONG X, 2: ALONG Y
59 !| IKLE1 |-->| FIRST POINT OF TRIANGLES
60 !| IKLE2 |-->| SECOND POINT OF TRIANGLES
61 !| IKLE3 |-->| THIRD POINT OF TRIANGLES
62 !| NELEM |-->| NUMBER OF ELEMENTS
63 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
64 !| SF |-->| BIEF_OBJ STRUCTURE OF F
65 !| SG |-->| BIEF_OBJ STRUCTURE OF G
66 !| SH |-->| BIEF_OBJ STRUCTURE OF H
67 !| SURFAC |-->| AREA OF TRIANGLES
68 !| W1 |<--| RESULT IN NON ASSEMBLED FORM
69 !| W2 |<--| RESULT IN NON ASSEMBLED FORM
70 !| W3 |<--| RESULT IN NON ASSEMBLED FORM
71 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
72 !| XMUL |-->| MULTIPLICATION COEFFICIENT
73 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
74 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
75 !
76  USE bief, ex_vc11aa2 => vc11aa2
77 !
79  IMPLICIT NONE
80 !
81 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
82 !
83  INTEGER, INTENT(IN) :: NELEM,NELMAX,ICOORD
84  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
85 !
86  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
87  DOUBLE PRECISION,INTENT(INOUT)::W1(nelmax),W2(nelmax),W3(nelmax)
88  DOUBLE PRECISION, INTENT(IN) :: XMUL
89 !
90 ! STRUCTURES OF F, G AND REAL DATA
91 !
92  TYPE(bief_obj), INTENT(IN) :: SF,SG,SH
93  DOUBLE PRECISION, INTENT(IN) :: F(*),G(*),H(*)
94 !
95 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
96 !
97  INTEGER IELEM,IELMF,IELMG,IELMH
98  DOUBLE PRECISION XSUR24 ,F1,F2,F3,G1,G2,G3,X2,X3,Y2,Y3,KSAT
99 !
100 !-----------------------------------------------------------------------
101 !
102  xsur24= xmul / 24.d0
103 !
104 !-----------------------------------------------------------------------
105 !
106  ielmf=sf%ELM
107  ielmg=sg%ELM
108  ielmh=sh%ELM
109 !
110 !-----------------------------------------------------------------------
111 !
112 ! F IS P1, G IS DISCONTINUOUS P1, H IS P0
113 !
114  IF(ielmg.EQ.15.AND.ielmf.EQ.11.AND.ielmh.EQ.10) THEN
115 !
116 ! X COORDINATE
117 !
118  IF(icoord.EQ.1) THEN
119 !
120  DO ielem = 1 , nelem
121 !
122  ksat=h(ielem)
123  g1 = g(ielem)
124  g2 = g(ielem+nelem)
125  g3 = g(ielem+2*nelem)
126  f1 = f(ikle1(ielem))
127  f2 = f(ikle2(ielem))
128  f3 = f(ikle3(ielem))
129  y2 = yel(ielem,2)
130  y3 = yel(ielem,3)
131 !
132  w1(ielem)=(y2*(-g3*f3+g3*f1-g2*f3+g2*f1-2*g1*f3+2*g1*f1)+y3*(
133  & g3*f2-g3*f1+g2*f2-g2*f1+2*g1*f2-2*g1*f1))* xsur24
134  w2(ielem)=(y2*(-g3*f3+g3*f1-2*g2*f3+2*g2*f1-g1*f3+g1*f1)+y3*(
135  & g3*f2-g3*f1+2*g2*f2-2*g2*f1+g1*f2-g1*f1))* xsur24
136  w3(ielem)=(y2*(-2*g3*f3+2*g3*f1-g2*f3+g2*f1-g1*f3+g1*f1)+y3*(
137  & 2*g3*f2-2*g3*f1+g2*f2-g2*f1+g1*f2-g1*f1))* xsur24
138 !
139  w1(ielem)=ksat*w1(ielem)
140  w2(ielem)=ksat*w2(ielem)
141  w3(ielem)=ksat*w3(ielem)
142 !
143  ENDDO
144 !
145  ELSEIF(icoord.EQ.2) THEN
146 !
147 ! Y COORDINATE
148 !
149  DO ielem = 1 , nelem
150 !
151  ksat=h(ielem)
152  g1 = g(ielem)
153  g2 = g(ielem+nelem)
154  g3 = g(ielem+2*nelem)
155  f1 = f(ikle1(ielem))
156  f2 = f(ikle2(ielem))
157  f3 = f(ikle3(ielem))
158  x2 = xel(ielem,2)
159  x3 = xel(ielem,3)
160 !
161  w1(ielem)=(x2*(g3*f3-g3*f1+g2*f3-g2*f1+2*g1*f3-2*g1*f1)+x3*(-
162  & g3*f2+g3*f1-g2*f2+g2*f1-2*g1*f2+2*g1*f1)) * xsur24
163  w2(ielem)=(x2*(g3*f3-g3*f1+2*g2*f3-2*g2*f1+g1*f3-g1*f1)+x3*(-
164  & g3*f2+g3*f1-2*g2*f2+2*g2*f1-g1*f2+g1*f1)) * xsur24
165  w3(ielem)=(x2*(2*g3*f3-2*g3*f1+g2*f3-g2*f1+g1*f3-g1*f1)+x3*(-
166  & 2*g3*f2+2*g3*f1-g2*f2+g2*f1-g1*f2+g1*f1)) * xsur24
167 !
168  w1(ielem)=ksat*w1(ielem)
169  w2(ielem)=ksat*w2(ielem)
170  w3(ielem)=ksat*w3(ielem)
171 !
172  ENDDO
173 !
174  ELSE
175 !
176  WRITE(lu,21) icoord
177 21 FORMAT(1x,'VC11AA2 (BIEF) : IMPOSSIBLE COMPONENT ',
178  & 1i6,' CHECK ICOORD')
179  CALL plante(0)
180  stop
181 !
182  ENDIF
183 !
184 !-----------------------------------------------------------------------
185 !
186 !
187 !-----------------------------------------------------------------------
188 !
189  ELSE
190 !
191 !-----------------------------------------------------------------------
192 !
193  WRITE(lu,101) ielmf,sf%NAME
194  WRITE(lu,201) ielmg,sg%NAME
195  WRITE(lu,301)
196 101 FORMAT(1x,'VC11AA2 (BIEF) :',/,
197  & 1x,'DISCRETIZATION OF F:',1i6,
198  & 1x,'REAL NAME: ',a6)
199 201 FORMAT(1x,'DISCRETIZATION OF G:',1i6,
200  & 1x,'REAL NAME: ',a6)
201 301 FORMAT(1x,'CASE NOT IMPLEMENTED')
202  CALL plante(1)
203  stop
204 !
205  ENDIF
206 !
207 !-----------------------------------------------------------------------
208 !
209  RETURN
210  END
subroutine vc11aa2(XMUL, SF, SG, SH, F, G, H, XEL, YEL, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, W1, W2, W3, ICOORD)
Definition: vc11aa2.f:8
Definition: bief.f:3