xref: /phasta/phSolver/incompressible/e3qvar.f (revision 595995161822a203c8467e0e4a253d7bd7d6df32)
1*59599516SKenneth E. Jansen        subroutine e3qvar (yl,          shgl,
2*59599516SKenneth E. Jansen     &                     xl,          g1yi,
3*59599516SKenneth E. Jansen     &                     g2yi,        g3yi,        shg,
4*59599516SKenneth E. Jansen     &                     dxidx,       WdetJ )
5*59599516SKenneth E. Jansenc
6*59599516SKenneth E. Jansenc----------------------------------------------------------------------
7*59599516SKenneth E. Jansenc
8*59599516SKenneth E. Jansenc  This routine computes the variables at integration point
9*59599516SKenneth E. Jansenc  necessary for the computation of the diffusive flux vector.
10*59599516SKenneth E. Jansenc
11*59599516SKenneth E. Jansenc input:
12*59599516SKenneth E. Jansenc  yl     (npro,nshl,ndof)      : primitive variables
13*59599516SKenneth E. Jansenc  shgl   (npro,nsd,nshl)     : element local-grad-shape-functions
14*59599516SKenneth E. Jansenc  xl     (npro,nenl,nsd)       : nodal coordinates at current step
15*59599516SKenneth E. Jansenc
16*59599516SKenneth E. Jansenc output:
17*59599516SKenneth E. Jansenc  g1yi   (npro,ndof)           : grad-y in direction 1
18*59599516SKenneth E. Jansenc  g2yi   (npro,ndof)           : grad-y in direction 2
19*59599516SKenneth E. Jansenc  g3yi   (npro,ndof)           : grad-y in direction 3
20*59599516SKenneth E. Jansenc  shg    (npro,nshl,nsd)       : element global grad-shape-functions
21*59599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)        : inverse of deformation gradient
22*59599516SKenneth E. Jansenc  WdetJ  (npro)                : weighted Jacobian
23*59599516SKenneth E. Jansenc  u1     (npro)                : x1-velocity component
24*59599516SKenneth E. Jansenc  u2     (npro)                : x2-velocity component
25*59599516SKenneth E. Jansenc  u3     (npro)                : x3-velocity component
26*59599516SKenneth E. Jansenc
27*59599516SKenneth E. Jansenc
28*59599516SKenneth E. Jansenc Zdenek Johan, Summer 1990. (Modified from e2ivar.f)
29*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90)
30*59599516SKenneth E. Jansenc Kenneth Jansen, Winter 1997. Primitive Variables
31*59599516SKenneth E. Jansenc----------------------------------------------------------------------
32*59599516SKenneth E. Jansenc
33*59599516SKenneth E. Jansen        include "common.h"
34*59599516SKenneth E. Jansenc
35*59599516SKenneth E. Jansenc  passed arrays
36*59599516SKenneth E. Jansenc
37*59599516SKenneth E. Jansen        dimension yl(npro,nshl,ndof),
38*59599516SKenneth E. Jansen     &            shgl(npro,nsd,nshl), xl(npro,nenl,nsd),
39*59599516SKenneth E. Jansen     &            g1yi(npro,nflow),       g2yi(npro,nflow),
40*59599516SKenneth E. Jansen     &            g3yi(npro,nflow),       shg(npro,nshl,nsd),
41*59599516SKenneth E. Jansen     &            dxidx(npro,nsd,nsd),   WdetJ(npro)
42*59599516SKenneth E. Jansenc
43*59599516SKenneth E. Jansenc  local arrays
44*59599516SKenneth E. Jansenc
45*59599516SKenneth E. Jansen        dimension tmp(npro),           dxdxi(npro,nsd,nsd)
46*59599516SKenneth E. Jansen
47*59599516SKenneth E. Jansenc
48*59599516SKenneth E. Jansenc.... compute the deformation gradient
49*59599516SKenneth E. Jansenc
50*59599516SKenneth E. Jansen        dxdxi = zero
51*59599516SKenneth E. Jansenc
52*59599516SKenneth E. Jansen          do n = 1, nenl
53*59599516SKenneth E. Jansen            dxdxi(:,1,1) = dxdxi(:,1,1) + xl(:,n,1) * shgl(:,1,n)
54*59599516SKenneth E. Jansen            dxdxi(:,1,2) = dxdxi(:,1,2) + xl(:,n,1) * shgl(:,2,n)
55*59599516SKenneth E. Jansen            dxdxi(:,1,3) = dxdxi(:,1,3) + xl(:,n,1) * shgl(:,3,n)
56*59599516SKenneth E. Jansen            dxdxi(:,2,1) = dxdxi(:,2,1) + xl(:,n,2) * shgl(:,1,n)
57*59599516SKenneth E. Jansen            dxdxi(:,2,2) = dxdxi(:,2,2) + xl(:,n,2) * shgl(:,2,n)
58*59599516SKenneth E. Jansen            dxdxi(:,2,3) = dxdxi(:,2,3) + xl(:,n,2) * shgl(:,3,n)
59*59599516SKenneth E. Jansen            dxdxi(:,3,1) = dxdxi(:,3,1) + xl(:,n,3) * shgl(:,1,n)
60*59599516SKenneth E. Jansen            dxdxi(:,3,2) = dxdxi(:,3,2) + xl(:,n,3) * shgl(:,2,n)
61*59599516SKenneth E. Jansen            dxdxi(:,3,3) = dxdxi(:,3,3) + xl(:,n,3) * shgl(:,3,n)
62*59599516SKenneth E. Jansen          enddo
63*59599516SKenneth E. Jansenc
64*59599516SKenneth E. Jansenc.... compute the inverse of deformation gradient
65*59599516SKenneth E. Jansenc
66*59599516SKenneth E. Jansen        dxidx(:,1,1) =   dxdxi(:,2,2) * dxdxi(:,3,3)
67*59599516SKenneth E. Jansen     &                 - dxdxi(:,3,2) * dxdxi(:,2,3)
68*59599516SKenneth E. Jansen        dxidx(:,1,2) =   dxdxi(:,3,2) * dxdxi(:,1,3)
69*59599516SKenneth E. Jansen     &                 - dxdxi(:,1,2) * dxdxi(:,3,3)
70*59599516SKenneth E. Jansen        dxidx(:,1,3) =   dxdxi(:,1,2) * dxdxi(:,2,3)
71*59599516SKenneth E. Jansen     &                 - dxdxi(:,1,3) * dxdxi(:,2,2)
72*59599516SKenneth E. Jansen        tmp          = one / ( dxidx(:,1,1) * dxdxi(:,1,1)
73*59599516SKenneth E. Jansen     &                       + dxidx(:,1,2) * dxdxi(:,2,1)
74*59599516SKenneth E. Jansen     &                       + dxidx(:,1,3) * dxdxi(:,3,1) )
75*59599516SKenneth E. Jansen        dxidx(:,1,1) = dxidx(:,1,1) * tmp
76*59599516SKenneth E. Jansen        dxidx(:,1,2) = dxidx(:,1,2) * tmp
77*59599516SKenneth E. Jansen        dxidx(:,1,3) = dxidx(:,1,3) * tmp
78*59599516SKenneth E. Jansen        dxidx(:,2,1) = (dxdxi(:,2,3) * dxdxi(:,3,1)
79*59599516SKenneth E. Jansen     &                - dxdxi(:,2,1) * dxdxi(:,3,3)) * tmp
80*59599516SKenneth E. Jansen        dxidx(:,2,2) = (dxdxi(:,1,1) * dxdxi(:,3,3)
81*59599516SKenneth E. Jansen     &                - dxdxi(:,3,1) * dxdxi(:,1,3)) * tmp
82*59599516SKenneth E. Jansen        dxidx(:,2,3) = (dxdxi(:,2,1) * dxdxi(:,1,3)
83*59599516SKenneth E. Jansen     &                - dxdxi(:,1,1) * dxdxi(:,2,3)) * tmp
84*59599516SKenneth E. Jansen        dxidx(:,3,1) = (dxdxi(:,2,1) * dxdxi(:,3,2)
85*59599516SKenneth E. Jansen     &                - dxdxi(:,2,2) * dxdxi(:,3,1)) * tmp
86*59599516SKenneth E. Jansen        dxidx(:,3,2) = (dxdxi(:,3,1) * dxdxi(:,1,2)
87*59599516SKenneth E. Jansen     &                - dxdxi(:,1,1) * dxdxi(:,3,2)) * tmp
88*59599516SKenneth E. Jansen        dxidx(:,3,3) = (dxdxi(:,1,1) * dxdxi(:,2,2)
89*59599516SKenneth E. Jansen     &                - dxdxi(:,1,2) * dxdxi(:,2,1)) * tmp
90*59599516SKenneth E. Jansenc
91*59599516SKenneth E. Jansen        WdetJ = Qwt(lcsyst,intp)/ tmp
92*59599516SKenneth E. Jansen
93*59599516SKenneth E. Jansenc
94*59599516SKenneth E. Jansenc.... --------------------->  Global Gradients  <-----------------------
95*59599516SKenneth E. Jansenc
96*59599516SKenneth E. Jansen        g1yi = zero
97*59599516SKenneth E. Jansen        g2yi = zero
98*59599516SKenneth E. Jansen        g3yi = zero
99*59599516SKenneth E. Jansenc
100*59599516SKenneth E. Jansenc
101*59599516SKenneth E. Jansen        do n = 1, nshl
102*59599516SKenneth E. Jansenc
103*59599516SKenneth E. Jansenc.... compute the global gradient of shape-function
104*59599516SKenneth E. Jansenc
105*59599516SKenneth E. Jansenc            ! N_{a,x_i}= N_{a,xi_i} xi_{i,x_j}
106*59599516SKenneth E. Jansenc
107*59599516SKenneth E. Jansen          shg(:,n,1) = shgl(:,1,n) * dxidx(:,1,1) +
108*59599516SKenneth E. Jansen     &                 shgl(:,2,n) * dxidx(:,2,1) +
109*59599516SKenneth E. Jansen     &                 shgl(:,3,n) * dxidx(:,3,1)
110*59599516SKenneth E. Jansen          shg(:,n,2) = shgl(:,1,n) * dxidx(:,1,2) +
111*59599516SKenneth E. Jansen     &                 shgl(:,2,n) * dxidx(:,2,2) +
112*59599516SKenneth E. Jansen     &                 shgl(:,3,n) * dxidx(:,3,2)
113*59599516SKenneth E. Jansen          shg(:,n,3) = shgl(:,1,n) * dxidx(:,1,3) +
114*59599516SKenneth E. Jansen     &                 shgl(:,2,n) * dxidx(:,2,3) +
115*59599516SKenneth E. Jansen     &                 shgl(:,3,n) * dxidx(:,3,3)
116*59599516SKenneth E. Jansenc
117*59599516SKenneth E. Jansenc.... compute the global gradient of Y-variables
118*59599516SKenneth E. Jansenc
119*59599516SKenneth E. Jansenc
120*59599516SKenneth E. Jansenc  Y_{,x_i}=SUM_{a=1}^nenl (N_{a,x_i}(int) Ya)
121*59599516SKenneth E. Jansenc
122*59599516SKenneth E. Jansen          g1yi(:,2) = g1yi(:,2) + shg(:,n,1) * yl(:,n,2)
123*59599516SKenneth E. Jansen          g1yi(:,3) = g1yi(:,3) + shg(:,n,1) * yl(:,n,3)
124*59599516SKenneth E. Jansen          g1yi(:,4) = g1yi(:,4) + shg(:,n,1) * yl(:,n,4)
125*59599516SKenneth E. Jansenc
126*59599516SKenneth E. Jansen          g2yi(:,2) = g2yi(:,2) + shg(:,n,2) * yl(:,n,2)
127*59599516SKenneth E. Jansen          g2yi(:,3) = g2yi(:,3) + shg(:,n,2) * yl(:,n,3)
128*59599516SKenneth E. Jansen          g2yi(:,4) = g2yi(:,4) + shg(:,n,2) * yl(:,n,4)
129*59599516SKenneth E. Jansenc
130*59599516SKenneth E. Jansen          g3yi(:,2) = g3yi(:,2) + shg(:,n,3) * yl(:,n,2)
131*59599516SKenneth E. Jansen          g3yi(:,3) = g3yi(:,3) + shg(:,n,3) * yl(:,n,3)
132*59599516SKenneth E. Jansen          g3yi(:,4) = g3yi(:,4) + shg(:,n,3) * yl(:,n,4)
133*59599516SKenneth E. Jansen
134*59599516SKenneth E. Jansen       enddo
135*59599516SKenneth E. Jansen
136*59599516SKenneth E. Jansenc
137*59599516SKenneth E. Jansenc.... return
138*59599516SKenneth E. Jansenc
139*59599516SKenneth E. Jansen
140*59599516SKenneth E. Jansen       return
141*59599516SKenneth E. Jansen       end
142*59599516SKenneth E. Jansen
143*59599516SKenneth E. Jansenc-----------------------------------------------------------------------
144*59599516SKenneth E. Jansenc
145*59599516SKenneth E. Jansenc     compute the variables for the local scalar diffusion
146*59599516SKenneth E. Jansenc
147*59599516SKenneth E. Jansenc-----------------------------------------------------------------------
148*59599516SKenneth E. Jansen      subroutine e3qvarSclr  (yl,       shgl,         xl,
149*59599516SKenneth E. Jansen     &                        gradT,    dxidx,        WdetJ )
150*59599516SKenneth E. Jansen
151*59599516SKenneth E. Jansen      include "common.h"
152*59599516SKenneth E. Jansenc
153*59599516SKenneth E. Jansenc  passed arrays
154*59599516SKenneth E. Jansenc
155*59599516SKenneth E. Jansen      real*8   yl(npro,nshl,ndof),    shp(npro,nshl),
156*59599516SKenneth E. Jansen     &         shgl(npro,nsd,nshl),   xl(npro,nenl,nsd),
157*59599516SKenneth E. Jansen     &         dxidx(npro,nsd,nsd),   WdetJ(npro),
158*59599516SKenneth E. Jansen     &         gradT(npro,nsd)
159*59599516SKenneth E. Jansenc
160*59599516SKenneth E. Jansenc  local arrays
161*59599516SKenneth E. Jansenc
162*59599516SKenneth E. Jansen      real*8   shg(npro,nshl,nsd)
163*59599516SKenneth E. Jansen
164*59599516SKenneth E. Jansen
165*59599516SKenneth E. Jansen      call e3metric( xl,         shgl,       dxidx,
166*59599516SKenneth E. Jansen     &               shg,        WdetJ)
167*59599516SKenneth E. Jansen
168*59599516SKenneth E. Jansen      gradT = zero
169*59599516SKenneth E. Jansen      id=5+isclr
170*59599516SKenneth E. Jansenc
171*59599516SKenneth E. Jansenc  later, when there are more models than SA we will need a
172*59599516SKenneth E. Jansenc  more general function to calculate evisc at a quadrature point
173*59599516SKenneth E. Jansenc
174*59599516SKenneth E. Jansen      do n = 1, nshl
175*59599516SKenneth E. Jansen         gradT(:,1) = gradT(:,1) + shg(:,n,1) * yl(:,n,id)
176*59599516SKenneth E. Jansen         gradT(:,2) = gradT(:,2) + shg(:,n,2) * yl(:,n,id)
177*59599516SKenneth E. Jansen         gradT(:,3) = gradT(:,3) + shg(:,n,3) * yl(:,n,id)
178*59599516SKenneth E. Jansen      enddo
179*59599516SKenneth E. Jansenc
180*59599516SKenneth E. Jansenc.... return
181*59599516SKenneth E. Jansenc
182*59599516SKenneth E. Jansen
183*59599516SKenneth E. Jansen       return
184*59599516SKenneth E. Jansen       end
185*59599516SKenneth E. Jansen
186*59599516SKenneth E. Jansen
187*59599516SKenneth E. Jansen
188*59599516SKenneth E. Jansen
189