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