xref: /phasta/phSolver/compressible/e3ivar.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3ivar (yl,      ycl,     acl,
2*59599516SKenneth E. Jansen     &                     Sclr,    shape,   shgl,
3*59599516SKenneth E. Jansen     &                     xl,      dui,     aci,
4*59599516SKenneth E. Jansen     &                     g1yi,    g2yi,    g3yi,
5*59599516SKenneth E. Jansen     &                     shg,     dxidx,   WdetJ,
6*59599516SKenneth E. Jansen     &                     rho,     pres,    T,
7*59599516SKenneth E. Jansen     &                     ei,      h,       alfap,
8*59599516SKenneth E. Jansen     &                     betaT,   cp,      rk,
9*59599516SKenneth E. Jansen     &                     u1,      u2,      u3,
10*59599516SKenneth E. Jansen     &                     ql,      divqi,   sgn, tmp,
11*59599516SKenneth E. Jansen     &                     rmu,     rlm,     rlm2mu,
12*59599516SKenneth E. Jansen     &                     con,     rlsl,    rlsli,
13*59599516SKenneth E. Jansen     &                     xmudmi,  sforce,  cv)
14*59599516SKenneth E. Jansenc
15*59599516SKenneth E. Jansenc----------------------------------------------------------------------
16*59599516SKenneth E. Jansenc
17*59599516SKenneth E. Jansenc  This routine computes the variables at integration point.
18*59599516SKenneth E. Jansenc
19*59599516SKenneth E. Jansenc input:
20*59599516SKenneth E. Jansenc  yl     (npro,nshl,nflow)     : primitive variables (NO SCALARS)
21*59599516SKenneth E. Jansenc  ycl    (npro,nshl,ndof)      : primitive variables at current step
22*59599516SKenneth E. Jansenc  acl    (npro,nshl,ndof)      : prim.var. accel. at the current step
23*59599516SKenneth E. Jansenc  shape  (npro,nshl)           : element shape-functions
24*59599516SKenneth E. Jansenc  shgl   (nsd,nen)             : element local-grad-shape-functions
25*59599516SKenneth E. Jansenc  xl     (npro,nenl,nsd)       : nodal coordinates at current step
26*59599516SKenneth E. Jansenc  ql     (npro,nshl,(nflow-1)*nsd) : diffusive flux vector
27*59599516SKenneth E. Jansenc  rlsl   (npro,nshl,6)       : resolved Leonard stresses
28*59599516SKenneth E. Jansenc  sgn    (npro,nshl)         : signs of shape functions
29*59599516SKenneth E. Jansenc
30*59599516SKenneth E. Jansenc output:
31*59599516SKenneth E. Jansenc  dui    (npro,nflow)           : delta U variables at current step
32*59599516SKenneth E. Jansenc  aci    (npro,nflow)           : primvar accel. variables at current step
33*59599516SKenneth E. Jansenc  g1yi   (npro,nflow)           : grad-y in direction 1
34*59599516SKenneth E. Jansenc  g2yi   (npro,nflow)           : grad-y in direction 2
35*59599516SKenneth E. Jansenc  g3yi   (npro,nflow)           : grad-y in direction 3
36*59599516SKenneth E. Jansenc  shg    (npro,nshl,nsd)       : element global grad-shape-functions
37*59599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)        : inverse of deformation gradient
38*59599516SKenneth E. Jansenc  WdetJ  (npro)                : weighted Jacobian
39*59599516SKenneth E. Jansenc  rho    (npro)                : density
40*59599516SKenneth E. Jansenc  pres   (npro)                : pressure
41*59599516SKenneth E. Jansenc  T      (npro)                : temperature
42*59599516SKenneth E. Jansenc  ei     (npro)                : internal energy
43*59599516SKenneth E. Jansenc  h      (npro)                : enthalpy
44*59599516SKenneth E. Jansenc  alfap  (npro)                : expansivity
45*59599516SKenneth E. Jansenc  betaT  (npro)                : isothermal compressibility
46*59599516SKenneth E. Jansenc  cp     (npro)                : specific heat at constant pressure
47*59599516SKenneth E. Jansenc  rk     (npro)                : kinetic energy
48*59599516SKenneth E. Jansenc  u1     (npro)                : x1-velocity component
49*59599516SKenneth E. Jansenc  u2     (npro)                : x2-velocity component
50*59599516SKenneth E. Jansenc  u3     (npro)                : x3-velocity component
51*59599516SKenneth E. Jansenc  divqi  (npro,nflow-1)        : divergence of diffusive flux
52*59599516SKenneth E. Jansenc  rlsli  (npro,6)              : resolved Leonard stresses at quad pt
53*59599516SKenneth E. Jansenc
54*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ivar.f)
55*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
56*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Primitive Variables
57*59599516SKenneth E. Jansenc----------------------------------------------------------------------
58*59599516SKenneth E. Jansenc
59*59599516SKenneth E. Jansen        include "common.h"
60*59599516SKenneth E. Jansenc
61*59599516SKenneth E. Jansenc  passed arrays
62*59599516SKenneth E. Jansenc
63*59599516SKenneth E. Jansen        dimension yl(npro,nshl,nflow),        ycl(npro,nshl,ndof),
64*59599516SKenneth E. Jansen     &            acl(npro,nshl,ndof),
65*59599516SKenneth E. Jansen     &            shape(npro,nshl),
66*59599516SKenneth E. Jansen     &            shgl(npro,nsd,nshl),      xl(npro,nenl,nsd),
67*59599516SKenneth E. Jansen     &            dui(npro,nflow),
68*59599516SKenneth E. Jansen     &            aci(npro,nflow),            g1yi(npro,nflow),
69*59599516SKenneth E. Jansen     &            g2yi(npro,nflow),           g3yi(npro,nflow),
70*59599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),        dxidx(npro,nsd,nsd),
71*59599516SKenneth E. Jansen     &            WdetJ(npro),
72*59599516SKenneth E. Jansen     &            rho(npro),                 pres(npro),
73*59599516SKenneth E. Jansen     &            T(npro),                   ei(npro),
74*59599516SKenneth E. Jansen     &            h(npro),                   alfap(npro),
75*59599516SKenneth E. Jansen     &            betaT(npro),               cp(npro),
76*59599516SKenneth E. Jansen     &            rk(npro),                  cv(npro),
77*59599516SKenneth E. Jansen     &            u1(npro),                  u2(npro),
78*59599516SKenneth E. Jansen     &            u3(npro),                  divqi(npro,nflow),
79*59599516SKenneth E. Jansen     &            ql(npro,nshl,idflx),
80*59599516SKenneth E. Jansen     &            rmu(npro),                 rlm(npro),
81*59599516SKenneth E. Jansen     &            rlm2mu(npro),              con(npro),
82*59599516SKenneth E. Jansen     &            Sclr(npro)
83*59599516SKenneth E. Jansenc
84*59599516SKenneth E. Jansen        dimension tmp(npro),  dxdxi(npro,nsd,nsd),  sgn(npro,nshl)
85*59599516SKenneth E. Jansen        dimension rlsl(npro,nshl,6),         rlsli(npro,6),
86*59599516SKenneth E. Jansen     &            xmudmi(npro,ngauss)
87*59599516SKenneth E. Jansen        dimension gyti(npro,nsd),            gradh(npro,nsd),
88*59599516SKenneth E. Jansen     &            sforce(npro,3),            weber(npro)
89*59599516SKenneth E. Jansen        ttim(20) = ttim(20) - secs(0.0)
90*59599516SKenneth E. Jansen
91*59599516SKenneth E. Jansenc
92*59599516SKenneth E. Jansen        ttim(10) = ttim(10) - secs(0.0)
93*59599516SKenneth E. Jansen
94*59599516SKenneth E. Jansen        dui = zero
95*59599516SKenneth E. Jansenc
96*59599516SKenneth E. Jansen        do n = 1, nshl
97*59599516SKenneth E. Jansen           dui(:,1) = dui(:,1) + shape(:,n) * yl(:,n,1) ! p
98*59599516SKenneth E. Jansen           dui(:,2) = dui(:,2) + shape(:,n) * yl(:,n,2) ! u1
99*59599516SKenneth E. Jansen           dui(:,3) = dui(:,3) + shape(:,n) * yl(:,n,3) ! u2
100*59599516SKenneth E. Jansen           dui(:,4) = dui(:,4) + shape(:,n) * yl(:,n,4) ! u3
101*59599516SKenneth E. Jansen           dui(:,5) = dui(:,5) + shape(:,n) * yl(:,n,5) ! T
102*59599516SKenneth E. Jansen        enddo
103*59599516SKenneth E. Jansenc
104*59599516SKenneth E. Jansen        flops = flops + 10*nshl*npro
105*59599516SKenneth E. Jansenc
106*59599516SKenneth E. Jansenc
107*59599516SKenneth E. Jansenc.... compute conservative variables
108*59599516SKenneth E. Jansenc
109*59599516SKenneth E. Jansen        rk = pt5 * (dui(:,2)**2 + dui(:,3)**2 + dui(:,4)**2)
110*59599516SKenneth E. Jansenc
111*59599516SKenneth E. Jansen        if (iLSet .ne. 0)then
112*59599516SKenneth E. Jansen           Sclr = zero
113*59599516SKenneth E. Jansen           isc=abs(iRANS)+6
114*59599516SKenneth E. Jansen           do n = 1, nshl
115*59599516SKenneth E. Jansen              Sclr = Sclr + shape(:,n) * ycl(:,n,isc)
116*59599516SKenneth E. Jansen           enddo
117*59599516SKenneth E. Jansen        endif
118*59599516SKenneth E. Jansen
119*59599516SKenneth E. Jansen        ithm = 6
120*59599516SKenneth E. Jansen        call getthm (dui(:,1),   dui(:,5),     Sclr,
121*59599516SKenneth E. Jansen     &               rk,         rho,          ei,
122*59599516SKenneth E. Jansen     &               tmp,        tmp,          tmp,
123*59599516SKenneth E. Jansen     &               tmp,        tmp,          tmp,
124*59599516SKenneth E. Jansen     &               tmp,        tmp)
125*59599516SKenneth E. Jansenc
126*59599516SKenneth E. Jansenc
127*59599516SKenneth E. Jansen        dui(:,1) = rho
128*59599516SKenneth E. Jansen        dui(:,2) = rho * dui(:,2)
129*59599516SKenneth E. Jansen        dui(:,3) = rho * dui(:,3)
130*59599516SKenneth E. Jansen        dui(:,4) = rho * dui(:,4)
131*59599516SKenneth E. Jansen        dui(:,5) = rho * (ei + rk)
132*59599516SKenneth E. Jansen
133*59599516SKenneth E. Jansen
134*59599516SKenneth E. Jansen       ttim(10) = ttim(10) + secs(0.0)
135*59599516SKenneth E. Jansenc
136*59599516SKenneth E. Jansenc.... ------------->  Primitive variables at int. point  <--------------
137*59599516SKenneth E. Jansenc
138*59599516SKenneth E. Jansenc.... compute primitive variables
139*59599516SKenneth E. Jansenc
140*59599516SKenneth E. Jansen       ttim(11) = ttim(11) - secs(0.0)
141*59599516SKenneth E. Jansen
142*59599516SKenneth E. Jansen       pres = zero
143*59599516SKenneth E. Jansen       u1   = zero
144*59599516SKenneth E. Jansen       u2   = zero
145*59599516SKenneth E. Jansen       u3   = zero
146*59599516SKenneth E. Jansen       T    = zero
147*59599516SKenneth E. Jansen       do n = 1, nshl
148*59599516SKenneth E. Jansenc
149*59599516SKenneth E. Jansenc  y(int)=SUM_{a=1}^nshl (N_a(int) Ya)
150*59599516SKenneth E. Jansenc
151*59599516SKenneth E. Jansen          pres = pres + shape(:,n) * ycl(:,n,1)
152*59599516SKenneth E. Jansen          u1   = u1   + shape(:,n) * ycl(:,n,2)
153*59599516SKenneth E. Jansen          u2   = u2   + shape(:,n) * ycl(:,n,3)
154*59599516SKenneth E. Jansen          u3   = u3   + shape(:,n) * ycl(:,n,4)
155*59599516SKenneth E. Jansen          T    = T    + shape(:,n) * ycl(:,n,5)
156*59599516SKenneth E. Jansen       enddo
157*59599516SKenneth E. Jansen
158*59599516SKenneth E. Jansen       if( (iLES.gt.10).and.(iLES.lt.20))  then  ! bardina
159*59599516SKenneth E. Jansen       rlsli = zero
160*59599516SKenneth E. Jansen       do n = 1, nshl
161*59599516SKenneth E. Jansen
162*59599516SKenneth E. Jansen          rlsli(:,1) = rlsli(:,1) + shape(:,n) * rlsl(:,n,1)
163*59599516SKenneth E. Jansen          rlsli(:,2) = rlsli(:,2) + shape(:,n) * rlsl(:,n,2)
164*59599516SKenneth E. Jansen          rlsli(:,3) = rlsli(:,3) + shape(:,n) * rlsl(:,n,3)
165*59599516SKenneth E. Jansen          rlsli(:,4) = rlsli(:,4) + shape(:,n) * rlsl(:,n,4)
166*59599516SKenneth E. Jansen          rlsli(:,5) = rlsli(:,5) + shape(:,n) * rlsl(:,n,5)
167*59599516SKenneth E. Jansen          rlsli(:,6) = rlsli(:,6) + shape(:,n) * rlsl(:,n,6)
168*59599516SKenneth E. Jansen
169*59599516SKenneth E. Jansen       enddo
170*59599516SKenneth E. Jansen       else
171*59599516SKenneth E. Jansen          rlsli = zero
172*59599516SKenneth E. Jansen       endif
173*59599516SKenneth E. Jansenc
174*59599516SKenneth E. Jansen
175*59599516SKenneth E. Jansen       ttim(11) = ttim(11) + secs(0.0)
176*59599516SKenneth E. Jansen
177*59599516SKenneth E. Jansenc
178*59599516SKenneth E. Jansenc.... ----------------------->  accel. at int. point  <----------------------
179*59599516SKenneth E. Jansenc
180*59599516SKenneth E. Jansen
181*59599516SKenneth E. Jansenc       if (ires .ne. 2)  then
182*59599516SKenneth E. Jansen          ttim(12) = ttim(12) - secs(0.0)
183*59599516SKenneth E. Jansenc
184*59599516SKenneth E. Jansenc.... compute primitive variables
185*59599516SKenneth E. Jansenc
186*59599516SKenneth E. Jansen          aci = zero
187*59599516SKenneth E. Jansenc
188*59599516SKenneth E. Jansen          do n = 1, nshl
189*59599516SKenneth E. Jansen             aci(:,1) = aci(:,1) + shape(:,n) * acl(:,n,1)
190*59599516SKenneth E. Jansen             aci(:,2) = aci(:,2) + shape(:,n) * acl(:,n,2)
191*59599516SKenneth E. Jansen             aci(:,3) = aci(:,3) + shape(:,n) * acl(:,n,3)
192*59599516SKenneth E. Jansen             aci(:,4) = aci(:,4) + shape(:,n) * acl(:,n,4)
193*59599516SKenneth E. Jansen             aci(:,5) = aci(:,5) + shape(:,n) * acl(:,n,5)
194*59599516SKenneth E. Jansen          enddo
195*59599516SKenneth E. Jansenc
196*59599516SKenneth E. Jansen          flops = flops + 10*nshl*npro
197*59599516SKenneth E. Jansen          ttim(12) = ttim(12) + secs(0.0)
198*59599516SKenneth E. Jansenc       endif                    !ires .ne. 2
199*59599516SKenneth E. Jansenc
200*59599516SKenneth E. Jansenc.... ----------------->  Thermodynamic Properties  <-------------------
201*59599516SKenneth E. Jansenc
202*59599516SKenneth E. Jansenc.... compute the kinetic energy
203*59599516SKenneth E. Jansenc
204*59599516SKenneth E. Jansen        ttim(27) = ttim(27) - secs(0.0)
205*59599516SKenneth E. Jansenc
206*59599516SKenneth E. Jansen        rk = pt5 * ( u1**2 + u2**2 + u3**2 )
207*59599516SKenneth E. Jansenc
208*59599516SKenneth E. Jansenc.... get the thermodynamic properties
209*59599516SKenneth E. Jansenc
210*59599516SKenneth E. Jansen        if (iLSet .ne. 0)then
211*59599516SKenneth E. Jansen           Sclr = zero
212*59599516SKenneth E. Jansen           isc=abs(iRANS)+6
213*59599516SKenneth E. Jansen           do n = 1, nshl
214*59599516SKenneth E. Jansen              Sclr = Sclr + shape(:,n) * ycl(:,n,isc)
215*59599516SKenneth E. Jansen           enddo
216*59599516SKenneth E. Jansen        endif
217*59599516SKenneth E. Jansen
218*59599516SKenneth E. Jansen        ithm = 7
219*59599516SKenneth E. Jansen        call getthm (pres,            T,               Sclr,
220*59599516SKenneth E. Jansen     &               rk,              rho,             ei,
221*59599516SKenneth E. Jansen     &               h,               tmp,             cv,
222*59599516SKenneth E. Jansen     &               cp,              alfap,           betaT,
223*59599516SKenneth E. Jansen     &               tmp,             tmp)
224*59599516SKenneth E. Jansenc
225*59599516SKenneth E. Jansen        ttim(27) = ttim(27) + secs(0.0)
226*59599516SKenneth E. Jansenc
227*59599516SKenneth E. Jansenc ........Get the material properties
228*59599516SKenneth E. Jansenc
229*59599516SKenneth E. Jansen        call getDiff (T,        cp,       rho,        ycl,
230*59599516SKenneth E. Jansen     &                rmu,      rlm,      rlm2mu,     con,  shape,
231*59599516SKenneth E. Jansen     &                xmudmi,   xl)
232*59599516SKenneth E. Jansen
233*59599516SKenneth E. Jansenc.... --------------------->  Element Metrics  <-----------------------
234*59599516SKenneth E. Jansenc
235*59599516SKenneth E. Jansen      ttim(26) = ttim(26) - secs(0.0)
236*59599516SKenneth E. Jansenc
237*59599516SKenneth E. Jansen        call e3metric( xl,         shgl,        dxidx,
238*59599516SKenneth E. Jansen     &                 shg,        WdetJ)
239*59599516SKenneth E. Jansenc
240*59599516SKenneth E. Jansenc
241*59599516SKenneth E. Jansen        ttim(26) = ttim(26) + secs(0.0)
242*59599516SKenneth E. Jansenc
243*59599516SKenneth E. Jansenc.... --------------------->  Global Gradients  <-----------------------
244*59599516SKenneth E. Jansenc
245*59599516SKenneth E. Jansen        ttim(13) = ttim(13) - secs(0.0)
246*59599516SKenneth E. Jansen
247*59599516SKenneth E. Jansen        g1yi = zero
248*59599516SKenneth E. Jansen        g2yi = zero
249*59599516SKenneth E. Jansen        g3yi = zero
250*59599516SKenneth E. Jansenc
251*59599516SKenneth E. Jansen        ttim(13) = ttim(13) + secs(0.0)
252*59599516SKenneth E. Jansen        ttim(7) = ttim(7) - secs(0.0)
253*59599516SKenneth E. Jansenc
254*59599516SKenneth E. Jansenc.... compute the global gradient of Y-variables
255*59599516SKenneth E. Jansenc
256*59599516SKenneth E. Jansenc
257*59599516SKenneth E. Jansenc  Y_{,x_i}=SUM_{a=1}^nshl (N_{a,x_i}(int) Ya)
258*59599516SKenneth E. Jansenc
259*59599516SKenneth E. Jansen        if(nshl.eq.4) then
260*59599516SKenneth E. Jansen          g1yi(:,1) = g1yi(:,1) + shg(:,1,1) * yl(:,1,1)
261*59599516SKenneth E. Jansen     &                          + shg(:,2,1) * yl(:,2,1)
262*59599516SKenneth E. Jansen     &                          + shg(:,3,1) * yl(:,3,1)
263*59599516SKenneth E. Jansen     &                          + shg(:,4,1) * yl(:,4,1)
264*59599516SKenneth E. Jansenc
265*59599516SKenneth E. Jansen          g1yi(:,2) = g1yi(:,2) + shg(:,1,1) * yl(:,1,2)
266*59599516SKenneth E. Jansen     &                          + shg(:,2,1) * yl(:,2,2)
267*59599516SKenneth E. Jansen     &                          + shg(:,3,1) * yl(:,3,2)
268*59599516SKenneth E. Jansen     &                          + shg(:,4,1) * yl(:,4,2)
269*59599516SKenneth E. Jansenc
270*59599516SKenneth E. Jansen          g1yi(:,3) = g1yi(:,3) + shg(:,1,1) * yl(:,1,3)
271*59599516SKenneth E. Jansen     &                          + shg(:,2,1) * yl(:,2,3)
272*59599516SKenneth E. Jansen     &                          + shg(:,3,1) * yl(:,3,3)
273*59599516SKenneth E. Jansen     &                          + shg(:,4,1) * yl(:,4,3)
274*59599516SKenneth E. Jansenc
275*59599516SKenneth E. Jansen          g1yi(:,4) = g1yi(:,4) + shg(:,1,1) * yl(:,1,4)
276*59599516SKenneth E. Jansen     &                          + shg(:,2,1) * yl(:,2,4)
277*59599516SKenneth E. Jansen     &                          + shg(:,3,1) * yl(:,3,4)
278*59599516SKenneth E. Jansen     &                          + shg(:,4,1) * yl(:,4,4)
279*59599516SKenneth E. Jansenc
280*59599516SKenneth E. Jansen          g1yi(:,5) = g1yi(:,5) + shg(:,1,1) * yl(:,1,5)
281*59599516SKenneth E. Jansen     &                          + shg(:,2,1) * yl(:,2,5)
282*59599516SKenneth E. Jansen     &                          + shg(:,3,1) * yl(:,3,5)
283*59599516SKenneth E. Jansen     &                          + shg(:,4,1) * yl(:,4,5)
284*59599516SKenneth E. Jansenc
285*59599516SKenneth E. Jansen          g2yi(:,1) = g2yi(:,1) + shg(:,1,2) * yl(:,1,1)
286*59599516SKenneth E. Jansen     &                          + shg(:,2,2) * yl(:,2,1)
287*59599516SKenneth E. Jansen     &                          + shg(:,3,2) * yl(:,3,1)
288*59599516SKenneth E. Jansen     &                          + shg(:,4,2) * yl(:,4,1)
289*59599516SKenneth E. Jansenc
290*59599516SKenneth E. Jansen          g2yi(:,2) = g2yi(:,2) + shg(:,1,2) * yl(:,1,2)
291*59599516SKenneth E. Jansen     &                          + shg(:,2,2) * yl(:,2,2)
292*59599516SKenneth E. Jansen     &                          + shg(:,3,2) * yl(:,3,2)
293*59599516SKenneth E. Jansen     &                          + shg(:,4,2) * yl(:,4,2)
294*59599516SKenneth E. Jansenc
295*59599516SKenneth E. Jansen          g2yi(:,3) = g2yi(:,3) + shg(:,1,2) * yl(:,1,3)
296*59599516SKenneth E. Jansen     &                          + shg(:,2,2) * yl(:,2,3)
297*59599516SKenneth E. Jansen     &                          + shg(:,3,2) * yl(:,3,3)
298*59599516SKenneth E. Jansen     &                          + shg(:,4,2) * yl(:,4,3)
299*59599516SKenneth E. Jansenc
300*59599516SKenneth E. Jansen          g2yi(:,4) = g2yi(:,4) + shg(:,1,2) * yl(:,1,4)
301*59599516SKenneth E. Jansen     &                          + shg(:,2,2) * yl(:,2,4)
302*59599516SKenneth E. Jansen     &                          + shg(:,3,2) * yl(:,3,4)
303*59599516SKenneth E. Jansen     &                          + shg(:,4,2) * yl(:,4,4)
304*59599516SKenneth E. Jansenc
305*59599516SKenneth E. Jansen          g2yi(:,5) = g2yi(:,5) + shg(:,1,2) * yl(:,1,5)
306*59599516SKenneth E. Jansen     &                          + shg(:,2,2) * yl(:,2,5)
307*59599516SKenneth E. Jansen     &                          + shg(:,3,2) * yl(:,3,5)
308*59599516SKenneth E. Jansen     &                          + shg(:,4,2) * yl(:,4,5)
309*59599516SKenneth E. Jansenc
310*59599516SKenneth E. Jansen          g3yi(:,1) = g3yi(:,1) + shg(:,1,3) * yl(:,1,1)
311*59599516SKenneth E. Jansen     &                          + shg(:,2,3) * yl(:,2,1)
312*59599516SKenneth E. Jansen     &                          + shg(:,3,3) * yl(:,3,1)
313*59599516SKenneth E. Jansen     &                          + shg(:,4,3) * yl(:,4,1)
314*59599516SKenneth E. Jansenc
315*59599516SKenneth E. Jansen          g3yi(:,2) = g3yi(:,2) + shg(:,1,3) * yl(:,1,2)
316*59599516SKenneth E. Jansen     &                          + shg(:,2,3) * yl(:,2,2)
317*59599516SKenneth E. Jansen     &                          + shg(:,3,3) * yl(:,3,2)
318*59599516SKenneth E. Jansen     &                          + shg(:,4,3) * yl(:,4,2)
319*59599516SKenneth E. Jansenc
320*59599516SKenneth E. Jansen          g3yi(:,3) = g3yi(:,3) + shg(:,1,3) * yl(:,1,3)
321*59599516SKenneth E. Jansen     &                          + shg(:,2,3) * yl(:,2,3)
322*59599516SKenneth E. Jansen     &                          + shg(:,3,3) * yl(:,3,3)
323*59599516SKenneth E. Jansen     &                          + shg(:,4,3) * yl(:,4,3)
324*59599516SKenneth E. Jansenc
325*59599516SKenneth E. Jansen          g3yi(:,4) = g3yi(:,4) + shg(:,1,3) * yl(:,1,4)
326*59599516SKenneth E. Jansen     &                          + shg(:,2,3) * yl(:,2,4)
327*59599516SKenneth E. Jansen     &                          + shg(:,3,3) * yl(:,3,4)
328*59599516SKenneth E. Jansen     &                          + shg(:,4,3) * yl(:,4,4)
329*59599516SKenneth E. Jansenc
330*59599516SKenneth E. Jansen          g3yi(:,5) = g3yi(:,5) + shg(:,1,3) * yl(:,1,5)
331*59599516SKenneth E. Jansen     &                          + shg(:,2,3) * yl(:,2,5)
332*59599516SKenneth E. Jansen     &                          + shg(:,3,3) * yl(:,3,5)
333*59599516SKenneth E. Jansen     &                          + shg(:,4,3) * yl(:,4,5)
334*59599516SKenneth E. Jansenc
335*59599516SKenneth E. Jansen        else
336*59599516SKenneth E. Jansen        do n = 1, nshl
337*59599516SKenneth E. Jansen          g1yi(:,1) = g1yi(:,1) + shg(:,n,1) * yl(:,n,1)
338*59599516SKenneth E. Jansen          g1yi(:,2) = g1yi(:,2) + shg(:,n,1) * yl(:,n,2)
339*59599516SKenneth E. Jansen          g1yi(:,3) = g1yi(:,3) + shg(:,n,1) * yl(:,n,3)
340*59599516SKenneth E. Jansen          g1yi(:,4) = g1yi(:,4) + shg(:,n,1) * yl(:,n,4)
341*59599516SKenneth E. Jansen          g1yi(:,5) = g1yi(:,5) + shg(:,n,1) * yl(:,n,5)
342*59599516SKenneth E. Jansenc
343*59599516SKenneth E. Jansen          g2yi(:,1) = g2yi(:,1) + shg(:,n,2) * yl(:,n,1)
344*59599516SKenneth E. Jansen          g2yi(:,2) = g2yi(:,2) + shg(:,n,2) * yl(:,n,2)
345*59599516SKenneth E. Jansen          g2yi(:,3) = g2yi(:,3) + shg(:,n,2) * yl(:,n,3)
346*59599516SKenneth E. Jansen          g2yi(:,4) = g2yi(:,4) + shg(:,n,2) * yl(:,n,4)
347*59599516SKenneth E. Jansen          g2yi(:,5) = g2yi(:,5) + shg(:,n,2) * yl(:,n,5)
348*59599516SKenneth E. Jansenc
349*59599516SKenneth E. Jansen          g3yi(:,1) = g3yi(:,1) + shg(:,n,3) * yl(:,n,1)
350*59599516SKenneth E. Jansen          g3yi(:,2) = g3yi(:,2) + shg(:,n,3) * yl(:,n,2)
351*59599516SKenneth E. Jansen          g3yi(:,3) = g3yi(:,3) + shg(:,n,3) * yl(:,n,3)
352*59599516SKenneth E. Jansen          g3yi(:,4) = g3yi(:,4) + shg(:,n,3) * yl(:,n,4)
353*59599516SKenneth E. Jansen          g3yi(:,5) = g3yi(:,5) + shg(:,n,3) * yl(:,n,5)
354*59599516SKenneth E. Jansenc
355*59599516SKenneth E. Jansen        enddo
356*59599516SKenneth E. Jansen      endif
357*59599516SKenneth E. Jansen
358*59599516SKenneth E. Jansen
359*59599516SKenneth E. Jansenc
360*59599516SKenneth E. Jansenc
361*59599516SKenneth E. Jansen         divqi = zero
362*59599516SKenneth E. Jansen         idflow = 0
363*59599516SKenneth E. Jansen      if (((idiff >= 1) .or. isurf==1).and.
364*59599516SKenneth E. Jansen     &     (ires == 3 .or. ires==1)) then
365*59599516SKenneth E. Jansen         ttim(32) = ttim(32) - tmr()
366*59599516SKenneth E. Jansenc
367*59599516SKenneth E. Jansenc     CLASS please ignore all terms related to qi until after you
368*59599516SKenneth E. Jansenc     understand EVERYTHING ELSE IN THE CODE.  You may run with
369*59599516SKenneth E. Jansenc     idiff=0 for the whole class and everything will be ok never
370*59599516SKenneth E. Jansenc     having understood this part.  (leave it for later).
371*59599516SKenneth E. Jansenc
372*59599516SKenneth E. Jansenc.... compute divergence of diffusive flux vector, qi,i
373*59599516SKenneth E. Jansenc
374*59599516SKenneth E. Jansen         if(idiff >= 1) then
375*59599516SKenneth E. Jansen            idflow = idflow + 4
376*59599516SKenneth E. Jansen            do n=1, nshl
377*59599516SKenneth E. Jansen
378*59599516SKenneth E. Jansen               divqi(:,1) = divqi(:,1) + shg(:,n,1)*ql(:,n,1 )
379*59599516SKenneth E. Jansen     &              + shg(:,n,2)*ql(:,n,5 )
380*59599516SKenneth E. Jansen     &              + shg(:,n,3)*ql(:,n,9 )
381*59599516SKenneth E. Jansen
382*59599516SKenneth E. Jansen               divqi(:,2) = divqi(:,2) + shg(:,n,1)*ql(:,n,2 )
383*59599516SKenneth E. Jansen     &              + shg(:,n,2)*ql(:,n,6 )
384*59599516SKenneth E. Jansen     &              + shg(:,n,3)*ql(:,n,10)
385*59599516SKenneth E. Jansen
386*59599516SKenneth E. Jansen               divqi(:,3) = divqi(:,3) + shg(:,n,1)*ql(:,n,3 )
387*59599516SKenneth E. Jansen     &              + shg(:,n,2)*ql(:,n,7 )
388*59599516SKenneth E. Jansen     &              + shg(:,n,3)*ql(:,n,11)
389*59599516SKenneth E. Jansen
390*59599516SKenneth E. Jansen               divqi(:,4) = divqi(:,4) + shg(:,n,1)*ql(:,n,4 )
391*59599516SKenneth E. Jansen     &              + shg(:,n,2)*ql(:,n,8 )
392*59599516SKenneth E. Jansen     &              + shg(:,n,3)*ql(:,n,12)
393*59599516SKenneth E. Jansen
394*59599516SKenneth E. Jansen            enddo
395*59599516SKenneth E. Jansen         endif                  !end of idiff
396*59599516SKenneth E. Jansenc
397*59599516SKenneth E. Jansen         if (isurf .eq. 1) then
398*59599516SKenneth E. Jansenc .... divergence of normal calculation
399*59599516SKenneth E. Jansen          do n=1, nshl
400*59599516SKenneth E. Jansen             divqi(:,idflow+1) = divqi(:,idflow+1)
401*59599516SKenneth E. Jansen     &            + shg(:,n,1)*ql(:,n,idflx-2)
402*59599516SKenneth E. Jansen     &            + shg(:,n,2)*ql(:,n,idflx-1)
403*59599516SKenneth E. Jansen     &            + shg(:,n,3)*ql(:,n,idflx)
404*59599516SKenneth E. Jansen          enddo
405*59599516SKenneth E. Jansenc .... initialization of some variables
406*59599516SKenneth E. Jansen          Sclr = zero
407*59599516SKenneth E. Jansen          gradh= zero
408*59599516SKenneth E. Jansen          gyti = zero
409*59599516SKenneth E. Jansen          sforce=zero
410*59599516SKenneth E. Jansen          do i = 1, npro
411*59599516SKenneth E. Jansen             do n = 1, nshl
412*59599516SKenneth E. Jansen                Sclr(i) = Sclr(i) + shape(i,n) * ycl(i,n,6) !scalar
413*59599516SKenneth E. Jansenc
414*59599516SKenneth E. Jansenc .... compute the global gradient of Scalar variable
415*59599516SKenneth E. Jansenc
416*59599516SKenneth E. Jansen                gyti(i,1) = gyti(i,1) + shg(i,n,1) * ycl(i,n,6)
417*59599516SKenneth E. Jansen                gyti(i,2) = gyti(i,2) + shg(i,n,2) * ycl(i,n,6)
418*59599516SKenneth E. Jansen                gyti(i,3) = gyti(i,3) + shg(i,n,3) * ycl(i,n,6)
419*59599516SKenneth E. Jansenc
420*59599516SKenneth E. Jansen             enddo
421*59599516SKenneth E. Jansen
422*59599516SKenneth E. Jansen             if (abs (sclr(i)) .le. epsilon_ls) then
423*59599516SKenneth E. Jansen                gradh(i,1) = 0.5/epsilon_ls * (1
424*59599516SKenneth E. Jansen     &               + cos(pi*Sclr(i)/epsilon_ls)) * gyti(i,1)
425*59599516SKenneth E. Jansen                gradh(i,2) = 0.5/epsilon_ls * (1
426*59599516SKenneth E. Jansen     &               + cos(pi*Sclr(i)/epsilon_ls)) * gyti(i,2)
427*59599516SKenneth E. Jansen                gradh(i,3) = 0.5/epsilon_ls * (1
428*59599516SKenneth E. Jansen     &               + cos(pi*Sclr(i)/epsilon_ls)) * gyti(i,3)
429*59599516SKenneth E. Jansen             endif
430*59599516SKenneth E. Jansen          enddo                 !end of the loop over npro
431*59599516SKenneth E. Jansenc
432*59599516SKenneth E. Jansenc .... surface tension force calculation
433*59599516SKenneth E. Jansenc .. divide by density now as it gets multiplied in e3res.f, as surface
434*59599516SKenneth E. Jansenc    tension force is already in the form of force per unit volume
435*59599516SKenneth E. Jansenc
436*59599516SKenneth E. Jansen
437*59599516SKenneth E. Jansen          weber(:)= Bo
438*59599516SKenneth E. Jansen          sforce(:,1) = -(1.0/weber(:)) * divqi(:,idflow+1) !x-direction
439*59599516SKenneth E. Jansen     &         *gradh(:,1)/rho(:)
440*59599516SKenneth E. Jansen          sforce(:,2) = -(1.0/weber(:)) * divqi(:,idflow+1) !y-direction
441*59599516SKenneth E. Jansen     &         *gradh(:,2)/rho(:)
442*59599516SKenneth E. Jansen          sforce(:,3) = -(1.0/weber(:)) * divqi(:,idflow+1) !z-direction
443*59599516SKenneth E. Jansen     &         *gradh(:,3)/rho(:)
444*59599516SKenneth E. Jansen
445*59599516SKenneth E. Jansen       endif            ! end of the surface tension force calculation
446*59599516SKenneth E. Jansen
447*59599516SKenneth E. Jansen         ttim(32) = ttim(32) + secs(0.0)
448*59599516SKenneth E. Jansen
449*59599516SKenneth E. Jansen      endif                     ! diffusive flux computation
450*59599516SKenneth E. Jansenc
451*59599516SKenneth E. Jansenc.... return
452*59599516SKenneth E. Jansenc
453*59599516SKenneth E. Jansen       ttim(20) = ttim(20) + secs(0.0)
454*59599516SKenneth E. Jansenc
455*59599516SKenneth E. Jansenc.... ----------------------->  dist. kin energy at int. point  <--------------
456*59599516SKenneth E. Jansenc
457*59599516SKenneth E. Jansenc
458*59599516SKenneth E. Jansenc       if (ires .ne. 2 .and. iter.eq.1)  then  !only do at beginning of step
459*59599516SKenneth E. Jansenc
460*59599516SKenneth E. Jansenc calc exact velocity for a channel at quadrature points.
461*59599516SKenneth E. Jansenc
462*59599516SKenneth E. Jansenc       dkei=0.0
463*59599516SKenneth E. Jansenc
464*59599516SKenneth E. Jansenc first guess would be this but it is wrong since it measures the
465*59599516SKenneth E. Jansenc error outside of FEM space as well.  This would be correct if we
466*59599516SKenneth E. Jansenc wanted to measure error but for disturbance we would like to get
467*59599516SKenneth E. Jansenc zero if the solution was nodally exact (i.e no disturbance added to
468*59599516SKenneth E. Jansenc the base flow which is nodally exact).
469*59599516SKenneth E. Jansenc
470*59599516SKenneth E. Jansenc      do n = 1, nshl
471*59599516SKenneth E. Jansenc         dkei = dkei + shape(:,n) * xl(:,n,2)  ! this is just the y coord
472*59599516SKenneth E. Jansenc      enddo
473*59599516SKenneth E. Jansenc         dkei = (1.0-dkei*dkei)  ! u_exact with u_cl=1
474*59599516SKenneth E. Jansenc
475*59599516SKenneth E. Jansenc
476*59599516SKenneth E. Jansenc  correct way
477*59599516SKenneth E. Jansenc
478*59599516SKenneth E. Jansenc       do n = 1, nshl
479*59599516SKenneth E. Jansenc          dkei = dkei + shape(:,n) * (1.0-xl(:,n,2)**2) !u_ex^~  (in FEM space)
480*59599516SKenneth E. Jansenc       enddo
481*59599516SKenneth E. Jansenc          dkei = (u1-dkei)**2 +u2**2  ! u'^2+v'^2
482*59599516SKenneth E. Jansenc          dkei = dkei*WdetJ  ! mult function*W*det of jacobian to
483*59599516SKenneth E. Jansenc                              get this quadrature point contribution
484*59599516SKenneth E. Jansenc          dke  = dke+sum(dkei) ! we move the sum over elements inside of the
485*59599516SKenneth E. Jansenc                              sum over quadrature to save memory (we want
486*59599516SKenneth E. Jansenc                              a scalar only)
487*59599516SKenneth E. Jansenc       endif
488*59599516SKenneth E. Jansen       return
489*59599516SKenneth E. Jansen       end
490*59599516SKenneth E. Jansen        subroutine e3ivarSclr (ycl,       acl,      acti,
491*59599516SKenneth E. Jansen     &                         shape,    shgl,     xl,
492*59599516SKenneth E. Jansen     &                         T,        cp,
493*59599516SKenneth E. Jansen     &                         dxidx,    Sclr,
494*59599516SKenneth E. Jansen     &                         WdetJ,    vort,
495*59599516SKenneth E. Jansen     &                         g1yti,    g2yti,    g3yti,
496*59599516SKenneth E. Jansen     &                         rho,      rmu,      con,
497*59599516SKenneth E. Jansen     &                         rk,       u1,       u2,
498*59599516SKenneth E. Jansen     &                         u3,       shg,      dwl,
499*59599516SKenneth E. Jansen     &                         dist2w)
500*59599516SKenneth E. Jansenc
501*59599516SKenneth E. Jansenc----------------------------------------------------------------------
502*59599516SKenneth E. Jansenc
503*59599516SKenneth E. Jansenc  This routine computes the variables at integration point.
504*59599516SKenneth E. Jansenc
505*59599516SKenneth E. Jansenc input:
506*59599516SKenneth E. Jansenc  ycl     (npro,nshl,ndof)      : primitive variables
507*59599516SKenneth E. Jansenc  actl   (npro,nshl)           : time-deriv of ytl
508*59599516SKenneth E. Jansenc  dwl    (npro,nshl)           : distances to wall
509*59599516SKenneth E. Jansenc  shape  (npro,nshl)           : element shape-functions
510*59599516SKenneth E. Jansenc  shgl   (npro,nsd,nshl)       : element local-grad-shape-functions
511*59599516SKenneth E. Jansenc  xl     (npro,nenl,nsd)       : nodal coordinates at current step
512*59599516SKenneth E. Jansenc
513*59599516SKenneth E. Jansenc output:
514*59599516SKenneth E. Jansenc  acti   (npro)                : time-deriv of Scalar variable
515*59599516SKenneth E. Jansenc  Sclr   (npro)                : Scalar variable at intpt
516*59599516SKenneth E. Jansenc  dist2w (npro)                : distance to nearest wall at intpt
517*59599516SKenneth E. Jansenc  WdetJ  (npro)                : weighted Jacobian at intpt
518*59599516SKenneth E. Jansenc  vort   (npro)                : vorticity at intpt
519*59599516SKenneth E. Jansenc  g1yti  (npro)                : grad-Sclr in direction 1 at intpt
520*59599516SKenneth E. Jansenc  g2yti  (npro)                : grad-Sclr in direction 2 at intpt
521*59599516SKenneth E. Jansenc  g3yti  (npro)                : grad-Sclr in direction 3 at intpt
522*59599516SKenneth E. Jansenc  rho    (npro)                : density at intpt
523*59599516SKenneth E. Jansenc  rmu    (npro)                : molecular viscosity
524*59599516SKenneth E. Jansenc  con    (npro)                : conductivity
525*59599516SKenneth E. Jansenc  rk     (npro)                : kinetic energy
526*59599516SKenneth E. Jansenc  u1     (npro)                : x1-velocity component at intpt
527*59599516SKenneth E. Jansenc  u2     (npro)                : x2-velocity component at intpt
528*59599516SKenneth E. Jansenc  u3     (npro)                : x3-velocity component at intpt
529*59599516SKenneth E. Jansenc  shg    (npro,nshl,nsd)       : element global grad-shape-functions at intpt
530*59599516SKenneth E. Jansenc
531*59599516SKenneth E. Jansenc also used:
532*59599516SKenneth E. Jansenc  pres   (npro)                : pressure at intpt
533*59599516SKenneth E. Jansenc  T      (npro)                : temperature at intpt
534*59599516SKenneth E. Jansenc  ei     (npro)                : internal energy at intpt
535*59599516SKenneth E. Jansenc  h      (npro)                : enthalpy at intpt
536*59599516SKenneth E. Jansenc  alfap  (npro)                : expansivity at intpt
537*59599516SKenneth E. Jansenc  betaT  (npro)                : isothermal compressibility at intpt
538*59599516SKenneth E. Jansenc  cp     (npro)                : specific heat at constant pressure at intpt
539*59599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)        : inverse of deformation gradient at intpt
540*59599516SKenneth E. Jansenc  divqi  (npro,nflow-1)         : divergence of diffusive flux
541*59599516SKenneth E. Jansenc
542*59599516SKenneth E. Jansenc
543*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ivar.f)
544*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
545*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Primitive Variables
546*59599516SKenneth E. Jansenc----------------------------------------------------------------------
547*59599516SKenneth E. Jansenc
548*59599516SKenneth E. Jansen        include "common.h"
549*59599516SKenneth E. Jansenc
550*59599516SKenneth E. Jansenc  passed arrays
551*59599516SKenneth E. Jansenc
552*59599516SKenneth E. Jansen        dimension ycl(npro,nshl,ndof),
553*59599516SKenneth E. Jansen     &            acl(npro,nshl,ndof),       acti(npro),
554*59599516SKenneth E. Jansen     &            shape(npro,nshl),
555*59599516SKenneth E. Jansen     &            shgl(npro,nsd,nshl),       xl(npro,nenl,nsd),
556*59599516SKenneth E. Jansen     &            dui(npro,nflow),
557*59599516SKenneth E. Jansen     &            g1yi(npro,nflow),
558*59599516SKenneth E. Jansen     &            g2yi(npro,nflow),           g3yi(npro,nflow),
559*59599516SKenneth E. Jansen     &            shg(npro,nshl,nsd),        dxidx(npro,nsd,nsd),
560*59599516SKenneth E. Jansen     &            WdetJ(npro),
561*59599516SKenneth E. Jansen     &            rho(npro),                 pres(npro),
562*59599516SKenneth E. Jansen     &            T(npro),                   ei(npro),
563*59599516SKenneth E. Jansen     &            h(npro),                   alfap(npro),
564*59599516SKenneth E. Jansen     &            betaT(npro),               cp(npro),
565*59599516SKenneth E. Jansen     &            rk(npro),
566*59599516SKenneth E. Jansen     &            u1(npro),                  u2(npro),
567*59599516SKenneth E. Jansen     &            u3(npro),                  divqi(npro,nflow-1),
568*59599516SKenneth E. Jansen     &            ql(npro,nshl,(nflow-1)*nsd),Sclr(npro),
569*59599516SKenneth E. Jansen     &            dwl(npro,nenl),
570*59599516SKenneth E. Jansen     &            dist2w(npro),
571*59599516SKenneth E. Jansen     &            vort(npro),
572*59599516SKenneth E. Jansen     &            rmu(npro),                 con(npro),
573*59599516SKenneth E. Jansen     &            g1yti(npro),
574*59599516SKenneth E. Jansen     &            g2yti(npro),               g3yti(npro)
575*59599516SKenneth E. Jansenc
576*59599516SKenneth E. Jansen
577*59599516SKenneth E. Jansen        dimension tmp(npro),                  dxdxi(npro,nsd,nsd)
578*59599516SKenneth E. Jansenc
579*59599516SKenneth E. Jansen        ttim(20) = ttim(20) - tmr()
580*59599516SKenneth E. Jansenc
581*59599516SKenneth E. Jansenc.... ------------->  Primitive variables at int. point  <--------------
582*59599516SKenneth E. Jansenc
583*59599516SKenneth E. Jansenc.... compute primitive variables
584*59599516SKenneth E. Jansenc
585*59599516SKenneth E. Jansen       ttim(11) = ttim(11) - tmr()
586*59599516SKenneth E. Jansen
587*59599516SKenneth E. Jansen       pres   = zero
588*59599516SKenneth E. Jansen       u1     = zero
589*59599516SKenneth E. Jansen       u2     = zero
590*59599516SKenneth E. Jansen       u3     = zero
591*59599516SKenneth E. Jansen       T      = zero
592*59599516SKenneth E. Jansen       Sclr   = zero
593*59599516SKenneth E. Jansen       dist2w = zero
594*59599516SKenneth E. Jansenc
595*59599516SKenneth E. Jansen       id = isclr + 5
596*59599516SKenneth E. Jansen       do n = 1, nshl
597*59599516SKenneth E. Jansenc
598*59599516SKenneth E. Jansenc  y(intp)=SUM_{a=1}^nshl (N_a(intp) Ya)
599*59599516SKenneth E. Jansenc
600*59599516SKenneth E. Jansen          pres   = pres   + shape(:,n) * ycl( :,n,1)
601*59599516SKenneth E. Jansen          u1     = u1     + shape(:,n) * ycl( :,n,2)
602*59599516SKenneth E. Jansen          u2     = u2     + shape(:,n) * ycl( :,n,3)
603*59599516SKenneth E. Jansen          u3     = u3     + shape(:,n) * ycl( :,n,4)
604*59599516SKenneth E. Jansen          T      = T      + shape(:,n) * ycl( :,n,5)
605*59599516SKenneth E. Jansen          Sclr   = Sclr   + shape(:,n) * ycl(:,n,id)
606*59599516SKenneth E. Jansen          if (iRANS.lt.0) then
607*59599516SKenneth E. Jansen             dist2w = dist2w + shape(:,n) * dwl(:,n)
608*59599516SKenneth E. Jansen          endif
609*59599516SKenneth E. Jansen        enddo
610*59599516SKenneth E. Jansenc
611*59599516SKenneth E. Jansen       ttim(11) = ttim(11) + tmr()
612*59599516SKenneth E. Jansenc
613*59599516SKenneth E. Jansenc.... ----------------------->  accel. at intp. point  <----------------------
614*59599516SKenneth E. Jansenc
615*59599516SKenneth E. Jansen
616*59599516SKenneth E. Jansen       if (ires .ne. 2)  then
617*59599516SKenneth E. Jansen          ttim(12) = ttim(12) - tmr()
618*59599516SKenneth E. Jansenc
619*59599516SKenneth E. Jansenc.... compute time-derivative of Scalar variable
620*59599516SKenneth E. Jansenc
621*59599516SKenneth E. Jansen          acti = zero
622*59599516SKenneth E. Jansen          do n = 1, nshl
623*59599516SKenneth E. Jansen             acti(:)  = acti(:)  + shape(:,n) * acl(:,n,id)
624*59599516SKenneth E. Jansen          enddo
625*59599516SKenneth E. Jansenc
626*59599516SKenneth E. Jansen          flops = flops + 10*nshl*npro
627*59599516SKenneth E. Jansen          ttim(12) = ttim(12) + tmr()
628*59599516SKenneth E. Jansen       endif                    !ires .ne. 2
629*59599516SKenneth E. Jansenc
630*59599516SKenneth E. Jansenc.... ----------------->  Thermodynamic Properties  <-------------------
631*59599516SKenneth E. Jansenc
632*59599516SKenneth E. Jansenc.... compute the kinetic energy
633*59599516SKenneth E. Jansenc
634*59599516SKenneth E. Jansen        ttim(27) = ttim(27) - tmr()
635*59599516SKenneth E. Jansenc
636*59599516SKenneth E. Jansen        rk = pt5 * ( u1**2 + u2**2 + u3**2 )
637*59599516SKenneth E. Jansenc
638*59599516SKenneth E. Jansenc.... get the thermodynamic and material properties
639*59599516SKenneth E. Jansenc
640*59599516SKenneth E. Jansen        ithm = 7
641*59599516SKenneth E. Jansen        call getthm (pres,            T,               Sclr,
642*59599516SKenneth E. Jansen     &               rk,              rho,             tmp,
643*59599516SKenneth E. Jansen     &               tmp,             tmp,             tmp,
644*59599516SKenneth E. Jansen     &               cp,              tmp,             tmp,
645*59599516SKenneth E. Jansen     &               tmp,             tmp)
646*59599516SKenneth E. Jansenc
647*59599516SKenneth E. Jansen        if (iconvsclr.eq.2) rho=one
648*59599516SKenneth E. Jansenc
649*59599516SKenneth E. Jansen        call getDiffSclr(T,            cp,          rmu,
650*59599516SKenneth E. Jansen     &                   tmp,          tmp,         con, rho, Sclr)
651*59599516SKenneth E. Jansen
652*59599516SKenneth E. Jansen        ttim(27) = ttim(27) + tmr()
653*59599516SKenneth E. Jansen
654*59599516SKenneth E. Jansen
655*59599516SKenneth E. Jansenc
656*59599516SKenneth E. Jansenc.... --------------------->  Element Metrics  <-----------------------
657*59599516SKenneth E. Jansenc
658*59599516SKenneth E. Jansen      call e3metric( xl,         shgl,        dxidx,
659*59599516SKenneth E. Jansen     &               shg,        WdetJ)
660*59599516SKenneth E. Jansen
661*59599516SKenneth E. Jansen
662*59599516SKenneth E. Jansen
663*59599516SKenneth E. Jansenc.... --------------------->  Global Gradients  <-----------------------
664*59599516SKenneth E. Jansenc
665*59599516SKenneth E. Jansen        ttim(13) = ttim(13) - tmr()
666*59599516SKenneth E. Jansen
667*59599516SKenneth E. Jansen        g1yi = zero
668*59599516SKenneth E. Jansen        g2yi = zero
669*59599516SKenneth E. Jansen        g3yi = zero
670*59599516SKenneth E. Jansenc
671*59599516SKenneth E. Jansenc.... compute the global gradient of Y-variables
672*59599516SKenneth E. Jansenc
673*59599516SKenneth E. Jansenc
674*59599516SKenneth E. Jansenc  Y_{,x_i}=SUM_{a=1}^nshl (N_{a,x_i}(intp) Ya)
675*59599516SKenneth E. Jansenc
676*59599516SKenneth E. Jansen        do n = 1, nshl
677*59599516SKenneth E. Jansenc         g1yi(:,1) = g1yi(:,1) + shg(:,n,1) * ycl(:,n,1)
678*59599516SKenneth E. Jansenc         g1yi(:,2) = g1yi(:,2) + shg(:,n,1) * ycl(:,n,2)
679*59599516SKenneth E. Jansen          g1yi(:,3) = g1yi(:,3) + shg(:,n,1) * ycl(:,n,3)
680*59599516SKenneth E. Jansen          g1yi(:,4) = g1yi(:,4) + shg(:,n,1) * ycl(:,n,4)
681*59599516SKenneth E. Jansenc         g1yi(:,5) = g1yi(:,5) + shg(:,n,1) * ycl(:,n,5)
682*59599516SKenneth E. Jansenc
683*59599516SKenneth E. Jansenc         g2yi(:,1) = g2yi(:,1) + shg(:,n,2) * ycl(:,n,1)
684*59599516SKenneth E. Jansen          g2yi(:,2) = g2yi(:,2) + shg(:,n,2) * ycl(:,n,2)
685*59599516SKenneth E. Jansenc         g2yi(:,3) = g2yi(:,3) + shg(:,n,2) * ycl(:,n,3)
686*59599516SKenneth E. Jansen          g2yi(:,4) = g2yi(:,4) + shg(:,n,2) * ycl(:,n,4)
687*59599516SKenneth E. Jansenc         g2yi(:,5) = g2yi(:,5) + shg(:,n,2) * ycl(:,n,5)
688*59599516SKenneth E. Jansenc
689*59599516SKenneth E. Jansenc         g3yi(:,1) = g3yi(:,1) + shg(:,n,3) * ycl(:,n,1)
690*59599516SKenneth E. Jansen          g3yi(:,2) = g3yi(:,2) + shg(:,n,3) * ycl(:,n,2)
691*59599516SKenneth E. Jansen          g3yi(:,3) = g3yi(:,3) + shg(:,n,3) * ycl(:,n,3)
692*59599516SKenneth E. Jansenc         g3yi(:,4) = g3yi(:,4) + shg(:,n,3) * ycl(:,n,4)
693*59599516SKenneth E. Jansenc         g3yi(:,5) = g3yi(:,5) + shg(:,n,3) * ycl(:,n,5)
694*59599516SKenneth E. Jansenc
695*59599516SKenneth E. Jansen       enddo
696*59599516SKenneth E. Jansen
697*59599516SKenneth E. Jansen
698*59599516SKenneth E. Jansen
699*59599516SKenneth E. Jansen        g1yti = zero
700*59599516SKenneth E. Jansen        g2yti = zero
701*59599516SKenneth E. Jansen        g3yti = zero
702*59599516SKenneth E. Jansenc
703*59599516SKenneth E. Jansenc.... compute the global gradient of Scalar variable
704*59599516SKenneth E. Jansenc
705*59599516SKenneth E. Jansenc
706*59599516SKenneth E. Jansenc  Y_{,x_i}=SUM_{a=1}^nshl (N_{a,x_i}(intp) Ya)
707*59599516SKenneth E. Jansenc
708*59599516SKenneth E. Jansen        do n = 1, nshl
709*59599516SKenneth E. Jansen           g1yti(:) = g1yti(:) + shg(:,n,1) * ycl(:,n,id)
710*59599516SKenneth E. Jansen           g2yti(:) = g2yti(:) + shg(:,n,2) * ycl(:,n,id)
711*59599516SKenneth E. Jansen           g3yti(:) = g3yti(:) + shg(:,n,3) * ycl(:,n,id)
712*59599516SKenneth E. Jansenc
713*59599516SKenneth E. Jansen        enddo
714*59599516SKenneth E. Jansenc **********************************************************
715*59599516SKenneth E. Jansenc
716*59599516SKenneth E. Jansenc.... compute vorticity at this integration point
717*59599516SKenneth E. Jansenc
718*59599516SKenneth E. Jansen       vort = sqrt(
719*59599516SKenneth E. Jansen     &              (g2yi(:,4)-g3yi(:,3))**2
720*59599516SKenneth E. Jansen     &             +(g3yi(:,2)-g1yi(:,4))**2
721*59599516SKenneth E. Jansen     &             +(g1yi(:,3)-g2yi(:,2))**2
722*59599516SKenneth E. Jansen     &            )
723*59599516SKenneth E. Jansenc ***********************************************************
724*59599516SKenneth E. Jansen
725*59599516SKenneth E. Jansen       ttim(7) = ttim(7) + tmr()
726*59599516SKenneth E. Jansen
727*59599516SKenneth E. Jansenc
728*59599516SKenneth E. Jansenc.... return
729*59599516SKenneth E. Jansenc
730*59599516SKenneth E. Jansen       ttim(20) = ttim(20) + tmr()
731*59599516SKenneth E. Jansen       return
732*59599516SKenneth E. Jansen       end
733*59599516SKenneth E. Jansen
734*59599516SKenneth E. Jansen
735