The TELEMAC-MASCARET system  trunk
vc01bb.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE vc01bb
3 ! *****************
4 !
5  &(xmul,sf,f,surfac,ikle1,ikle2,ikle3,ikle4,nelem,nelmax,
6  & w1,w2,w3,w4)
7 !
8 !***********************************************************************
9 ! BIEF V6P1 21/08/2010
10 !***********************************************************************
11 !
12 !brief COMPUTES THE FOLLOWING VECTOR IN FINITE ELEMENTS:
13 !code
14 !+ /
15 !+ VEC(I) = XMUL / PSI(I) * F D(OMEGA)
16 !+ /OMEGA
17 !+
18 !+ PSI(I) IS A BASE OF QUASI-BUBBLE TYPE
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) ; C MOULIN (LNH)
24 !+ 10/01/95
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 !| IKLE1 |-->| FIRST POINT OF TRIANGLES
43 !| IKLE2 |-->| SECOND POINT OF TRIANGLES
44 !| IKLE3 |-->| THIRD POINT OF TRIANGLES
45 !| IKLE4 |-->| QUASI-BUBBLE POINT OF TRIANGLES
46 !| NELEM |-->| NUMBER OF ELEMENTS
47 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
48 !| SF |-->| BIEF_OBJ STRUCTURE OF F
49 !| SURFAC |-->| AREA OF TRIANGLES
50 !| W1 |<--| RESULT IN NON ASSEMBLED FORM
51 !| W2 |<--| RESULT IN NON ASSEMBLED FORM
52 !| W3 |<--| RESULT IN NON ASSEMBLED FORM
53 !| W4 |<--| RESULT IN NON ASSEMBLED FORM
54 !| XMUL |-->| MULTIPLICATION COEFFICIENT
55 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
56 !
57  USE bief, ex_vc01bb => vc01bb
58 !
60  IMPLICIT NONE
61 !
62 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
63 !
64  INTEGER, INTENT(IN) :: NELEM,NELMAX
65  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax)
66  INTEGER, INTENT(IN) :: IKLE3(nelmax),IKLE4(nelmax)
67 !
68  DOUBLE PRECISION, INTENT(INOUT) :: W1(nelmax),W2(nelmax)
69  DOUBLE PRECISION, INTENT(INOUT) :: W3(nelmax),W4(nelmax)
70  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
71  DOUBLE PRECISION, INTENT(IN) :: XMUL
72 !
73 ! STRUCTURE OF F AND REAL DATA
74 !
75  TYPE(bief_obj), INTENT(IN) :: SF
76  DOUBLE PRECISION, INTENT(IN) :: F(*)
77 !
78 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
79 !
80  INTEGER IELEM,IELMF
81  DOUBLE PRECISION F1,F2,F3,F4,XSU108,XSUR09,XSUR36,XSUR18
82 !
83 !-----------------------------------------------------------------------
84 !
85  ielmf=sf%ELM
86 !
87 !-----------------------------------------------------------------------
88 ! F OF TYPE P1
89 !-----------------------------------------------------------------------
90 !
91  IF(ielmf.EQ.11) THEN
92 !
93  xsu108 = xmul / 108.d0
94  xsur09 = xmul / 9.d0
95 !
96  DO ielem = 1 , nelem
97 !
98  f1 = f(ikle1(ielem))
99  f2 = f(ikle2(ielem))
100  f3 = f(ikle3(ielem))
101 !
102  w1(ielem) = surfac(ielem)*(5*f3+5*f2+14*f1)*xsu108
103 !
104  w2(ielem) = surfac(ielem)*(5*f3+14*f2+5*f1)*xsu108
105 !
106  w3(ielem) = surfac(ielem)*(14*f3+5*f2+5*f1)*xsu108
107 !
108  w4(ielem) = surfac(ielem)*(f3+f2+f1)*xsur09
109 !
110  ENDDO ! IELEM
111 !
112 !-----------------------------------------------------------------------
113 ! F QUASI-BUBBLE
114 !-----------------------------------------------------------------------
115 !
116  ELSEIF(ielmf.EQ.12) THEN
117 !
118  xsur36 = xmul / 36.d0
119  xsur18 = xmul / 18.d0
120 !
121  DO ielem = 1 , nelem
122 !
123  f1 = f(ikle1(ielem))
124  f2 = f(ikle2(ielem))
125  f3 = f(ikle3(ielem))
126  f4 = f(ikle4(ielem))
127 !
128  w1(ielem) = surfac(ielem)*(2*f4+ f3+ f2+4*f1)*xsur36
129  w2(ielem) = surfac(ielem)*(2*f4+ f3+4*f2+ f1)*xsur36
130  w3(ielem) = surfac(ielem)*(2*f4+4*f3+ f2+ f1)*xsur36
131  w4(ielem) = surfac(ielem)*(3*f4+ f3+ f2+ f1)*xsur18
132 !
133  ENDDO ! IELEM
134 !
135 !-----------------------------------------------------------------------
136 ! OTHER
137 ! ELSEIF
138 !-----------------------------------------------------------------------
139 !
140  ELSE
141 !
142  WRITE(lu,101) ielmf,sf%NAME
143 101 FORMAT(1x,'VC01BB (BIEF) :',/,
144  & 1x,'DISCRETIZATION OF F NOT AVAILABLE:',1i6,
145  & 1x,'REAL NAME: ',a6)
146  CALL plante(0)
147  stop
148 !
149  ENDIF
150 !
151 !-----------------------------------------------------------------------
152 !
153  RETURN
154  END
subroutine vc01bb(XMUL, SF, F, SURFAC, IKLE1, IKLE2, IKLE3, IKLE4, NELEM, NELMAX, W1, W2, W3, W4)
Definition: vc01bb.f:8
Definition: bief.f:3