The TELEMAC-MASCARET system  trunk
vc20aa.f
Go to the documentation of this file.
1 ! *****************
2  SUBROUTINE vc20aa
3 ! *****************
4 !
5  &( xmul,su,sv,u,v,xel,yel,surfac,ikle1,ikle2,ikle3,nelem,nelmax,
6  & w1,w2,w3)
7 !
8 !***********************************************************************
9 ! BIEF V8P0 21/08/2018
10 !***********************************************************************
11 !
12 !brief COMPUTES STRAIN RATE TENSOR NORM FOR SPALART
13 !+ ALLMARAS TURBULENCE MODEL
14 !code
15 !+ /
16 !+ VEC(I) = XMUL / PSI(I) *
17 !+ /OMEGA
18 !+
19 !+ DU DV DU DV
20 !+ * (2(--)^2 + 2(--)^2 +((--)+(--))^2 D(OMEGA)
21 !+ DX DY DY DX
22 !+
23 !+
24 !+ U AND V ARE VECTORS
25 !+
26 !+ PSI(I) IS A BASE OF TYPE IELM
27 !
28 !warning THE JACOBIAN MUST BE POSITIVE
29 !
30 !history A. BOURGOIN & R. ATA
31 !+ 21/08/2016
32 !+ V7P2
33 !+ Creation
34 !
35 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
36 !| IKLE1 |-->| FIRST POINT OF TRIANGLES
37 !| IKLE2 |-->| SECOND POINT OF TRIANGLES
38 !| IKLE3 |-->| THIRD POINT OF TRIANGLES
39 !| NELEM |-->| NUMBER OF ELEMENTS
40 !| NELMAX |-->| MAXIMUM NUMBER OF ELEMENTS
41 !| SU |-->| BIEF_OBJ STRUCTURE OF U
42 !| SV |-->| BIEF_OBJ STRUCTURE OF V
43 !| SURFAC |-->| AREA OF TRIANGLES
44 !| U |-->| FUNCTION USED IN THE VECTOR FORMULA
45 !| V |-->| FUNCTION USED IN THE VECTOR FORMULA
46 !| W1 |<--| RESULT IN NON ASSEMBLED FORM
47 !| W2 |<--| RESULT IN NON ASSEMBLED FORM
48 !| W3 |<--| RESULT IN NON ASSEMBLED FORM
49 !| XEL |-->| ABSCISSAE OF POINTS IN THE MESH, PER ELEMENT
50 !| XMUL |-->| MULTIPLICATION COEFFICIENT
51 !| YEL |-->| ORDINATES OF POINTS IN THE MESH, PER ELEMENT
52 !~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
53 !
54  USE bief, ex_vc20aa => vc20aa
56 !
57 !
58 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
59 !
60  INTEGER, INTENT(IN) :: NELEM,NELMAX
61  INTEGER, INTENT(IN) :: IKLE1(nelmax),IKLE2(nelmax),IKLE3(nelmax)
62 !
63  DOUBLE PRECISION, INTENT(IN) :: XEL(nelmax,*),YEL(nelmax,*)
64  DOUBLE PRECISION, INTENT(INOUT) ::W1(nelmax),W2(nelmax),W3(nelmax)
65  DOUBLE PRECISION, INTENT(IN) :: SURFAC(nelmax)
66  DOUBLE PRECISION, INTENT(IN) :: XMUL
67 !
68 ! STRUCTURES OF U, V AND REAL DATA
69 !
70  TYPE(bief_obj), INTENT(IN) :: SU,SV
71  DOUBLE PRECISION, INTENT(IN) :: U(*),V(*)
72 !
73 !+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
74 !
75  INTEGER IELEM,IELMU,IELMV
76  DOUBLE PRECISION FACT,XSUR12,U21,U31,V21,V31,X2,X3,Y2,Y3
77 !
78 !-----------------------------------------------------------------------
79 !
80  xsur12 = xmul / 12.d0
81 !
82 !-----------------------------------------------------------------------
83 !
84 ! BEWARE: U IS QUASI-BUBBLE AND U IS P2; ARE TREATED AS IF LINEAR HERE
85 !
86 !-----------------------------------------------------------------------
87 !
88  ielmu=su%ELM
89  ielmv=sv%ELM
90 !
91  IF( (ielmu.EQ.11.AND.ielmv.EQ.11)
92  & .OR.(ielmu.EQ.12.AND.ielmv.EQ.12)
93  & .OR.(ielmu.EQ.13.AND.ielmv.EQ.13)) THEN
94 !
95  DO ielem = 1 , nelem
96 !
97  x2 = xel(ielem,2)
98  x3 = xel(ielem,3)
99  y2 = yel(ielem,2)
100  y3 = yel(ielem,3)
101 !
102  u21 = u(ikle2(ielem)) - u(ikle1(ielem))
103  u31 = u(ikle3(ielem)) - u(ikle1(ielem))
104  v21 = v(ikle2(ielem)) - v(ikle1(ielem))
105  v31 = v(ikle3(ielem)) - v(ikle1(ielem))
106 !
107  fact = (2.d0*( x2*v31-x3*v21)**2+2.d0*(y2*u31-y3*u21)**2
108  & +(y2*v31-y3*v21+x2*u31-x3*u21)**2)*xsur12/surfac(ielem)
109 !
110  w1(ielem) = fact
111  w2(ielem) = fact
112  w3(ielem) = fact
113 !
114  ENDDO ! IELEM
115 !
116 !-----------------------------------------------------------------------
117 !
118  ELSE
119 !
120 !-----------------------------------------------------------------------
121 !
122  WRITE(lu,101) ielmu,su%NAME
123  WRITE(lu,201) ielmv,sv%NAME
124  WRITE(lu,301)
125 101 FORMAT(1x,'VC20AA (BIEF) :',/,
126  & 1x,'DISCRETIZATION OF U:',1i6,
127  & 1x,'REAL NAME: ',a6)
128 201 FORMAT(1x,'DISCRETIZATION OF V:',1i6,
129  & 1x,'REAL NAME: ',a6)
130 301 FORMAT(1x,'CASE NOT IMPLEMENTED')
131  CALL plante(1)
132  stop
133 !
134  ENDIF
135 !
136 !-----------------------------------------------------------------------
137 !
138  RETURN
139  END
140 
subroutine vc20aa(XMUL, SU, SV, U, V, XEL, YEL, SURFAC, IKLE1, IKLE2, IKLE3, NELEM, NELMAX, W1, W2, W3)
Definition: vc20aa.f:8
Definition: bief.f:3