xref: /phasta/phSolver/compressible/e3tau.f (revision 513954ef803c300cddba2bb96b4a5dac0b93489a)
159599516SKenneth E. Jansen      subroutine e3tau  (rho,    cp,     rmu,
259599516SKenneth E. Jansen     &                     u1,     u2,     u3,
359599516SKenneth E. Jansen     &                     con,    dxidx,  rLyi,
459599516SKenneth E. Jansen     &                     rLymi,  tau,    rk,
559599516SKenneth E. Jansen     &                     giju,   rTLS,   raLS,
659599516SKenneth E. Jansen     &                     A0inv,  dVdY,   cv)
759599516SKenneth E. Jansenc
859599516SKenneth E. Jansenc----------------------------------------------------------------------
959599516SKenneth E. Jansenc
1059599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator.
1159599516SKenneth E. Jansenc We receive the regular residual L operator and a
1259599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for
1359599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past
1459599516SKenneth E. Jansenc ENSA codes
1559599516SKenneth E. Jansenc
1659599516SKenneth E. Jansenc input:
1759599516SKenneth E. Jansenc  rho    (npro)           : density
1859599516SKenneth E. Jansenc  T      (npro)           : temperature
1959599516SKenneth E. Jansenc  cp     (npro)           : specific heat at constant pressure
2059599516SKenneth E. Jansenc  u1     (npro)           : x1-velocity component
2159599516SKenneth E. Jansenc  u2     (npro)           : x2-velocity component
2259599516SKenneth E. Jansenc  u3     (npro)           : x3-velocity component
2359599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)   : inverse of deformation gradient
2459599516SKenneth E. Jansenc  rLyi   (npro,nflow)      : least-squares residual vector
2559599516SKenneth E. Jansenc  rLymi   (npro,nflow)     : modified least-squares residual vector
2659599516SKenneth E. Jansenc
2759599516SKenneth E. Jansenc output:
2859599516SKenneth E. Jansenc  rLyi   (npro,nflow)      : least-squares residual vector
2959599516SKenneth E. Jansenc  rLymi   (npro,nflow)     : modified least-squares residual vector
3059599516SKenneth E. Jansenc  tau    (npro,3)         : 3 taus
3159599516SKenneth E. Jansenc
3259599516SKenneth E. Jansenc
3359599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2tau.f)
3459599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
3559599516SKenneth E. Jansenc----------------------------------------------------------------------
3659599516SKenneth E. Jansenc
3759599516SKenneth E. Jansen      include "common.h"
3859599516SKenneth E. Jansenc
3959599516SKenneth E. Jansen      dimension rho(npro),                 con(npro),
4059599516SKenneth E. Jansen     &            cp(npro),                  u1(npro),
4159599516SKenneth E. Jansen     &            u2(npro),                  u3(npro),
4259599516SKenneth E. Jansen     &            dxidx(npro,nsd,nsd),       rk(npro),
4359599516SKenneth E. Jansen     &            tau(npro,5),               rLyi(npro,nflow),
4459599516SKenneth E. Jansen     &            rLymi(npro,nflow),         dVdY(npro,15),
4559599516SKenneth E. Jansen     &            rTLS(npro),                raLS(npro),
4659599516SKenneth E. Jansen     &            rLyitemp(npro,nflow),      detgijI(npro)
4759599516SKenneth E. Jansenc
4859599516SKenneth E. Jansen      dimension   rmu(npro),	 cv(npro),
4959599516SKenneth E. Jansen     &		  gijd(npro,6),  uh1(npro),
5059599516SKenneth E. Jansen     &		  fact(npro),	 h2o2u(npro),   giju(npro,6),
5159599516SKenneth E. Jansen     &            A0inv(npro,15),gijdu(npro,6)
5259599516SKenneth E. Jansenc
5359599516SKenneth E. Jansen      call e3gijd( dxidx, gijd )
5459599516SKenneth E. Jansenc
5559599516SKenneth E. Jansenc  next form the diffusive length scale |u| h_1 = 2 ( ui (gijd)-1 uj)^{1/2}
5659599516SKenneth E. Jansenc
5759599516SKenneth E. Jansenc   dividing factor for the inverse of gijd
5859599516SKenneth E. Jansenc
5959599516SKenneth E. Jansen         fact = gijd(:,1) * gijd(:,3) * gijd(:,6)
6059599516SKenneth E. Jansen     &        - gijd(:,1) * gijd(:,5) * gijd(:,5)
6159599516SKenneth E. Jansen     &        - gijd(:,3) * gijd(:,4) * gijd(:,4)
6259599516SKenneth E. Jansen     &        - gijd(:,6) * gijd(:,2) * gijd(:,2)
6359599516SKenneth E. Jansen     &        + gijd(:,2) * gijd(:,4) * gijd(:,5) * two
6459599516SKenneth E. Jansenc
6559599516SKenneth E. Jansen         uh1=    u1*u1*(gijd(:,3)*gijd(:,6)-gijd(:,5)*gijd(:,5))
6659599516SKenneth E. Jansen     &         + u2*u2*(gijd(:,1)*gijd(:,6)-gijd(:,4)*gijd(:,4))
6759599516SKenneth E. Jansen     &         + u3*u3*(gijd(:,1)*gijd(:,3)-gijd(:,2)*gijd(:,2))
6859599516SKenneth E. Jansen     &   + two *(u1*u2*(gijd(:,4)*gijd(:,5)-gijd(:,2)*gijd(:,6))
6959599516SKenneth E. Jansen     &         + u1*u3*(gijd(:,2)*gijd(:,5)-gijd(:,4)*gijd(:,3))
7059599516SKenneth E. Jansen     &         + u2*u3*(gijd(:,4)*gijd(:,2)-gijd(:,1)*gijd(:,5)))
7159599516SKenneth E. Jansenc
7259599516SKenneth E. Jansenc   at this point we have (u h1)^2 * inverse coefficient^2 / 4
7359599516SKenneth E. Jansenc
7459599516SKenneth E. Jansenc                                    ^ fact
7559599516SKenneth E. Jansenc
7659599516SKenneth E. Jansen      uh1= two * sqrt(uh1/fact)
7759599516SKenneth E. Jansenc
7859599516SKenneth E. Jansenc  next form the advective length scale |u|/h_2 = 2 ( ui (gijd) uj)^{1/2}
7959599516SKenneth E. Jansenc
8059599516SKenneth E. Jansen      h2o2u =   u1*u1*gijd(:,1)
8159599516SKenneth E. Jansen     &     + u2*u2*gijd(:,3)
8259599516SKenneth E. Jansen     &     + u3*u3*gijd(:,6)
8359599516SKenneth E. Jansen     &     +(u1*u2*gijd(:,2)
8459599516SKenneth E. Jansen     &     + u1*u3*gijd(:,4)
8559599516SKenneth E. Jansen     &     + u2*u3*gijd(:,5))*two  + 1.0e-15 !FIX FOR INVALID MESHES
8659599516SKenneth E. Jansenc
8759599516SKenneth E. Jansenc  at this point we have (2 u / h_2)^2
8859599516SKenneth E. Jansenc
8959599516SKenneth E. Jansen
9059599516SKenneth E. Jansenc       call tnanqe(h2o2u,1,"riaconv ")
9159599516SKenneth E. Jansen
9259599516SKenneth E. Jansen      h2o2u = one / sqrt(h2o2u) ! this flips it over leaves it h_2/(2u)
9359599516SKenneth E. Jansenc
9459599516SKenneth E. Jansenc.... diffusive corrections
9559599516SKenneth E. Jansen
9659599516SKenneth E. Jansen      if(itau.eq.1) then        ! tau proposed by  for nearly incompressible
9759599516SKenneth E. Jansenc                                 flows by Guillermo Hauke
9859599516SKenneth E. Jansenc
9959599516SKenneth E. Jansenc.... cell Reynold number
10059599516SKenneth E. Jansenc
10159599516SKenneth E. Jansen         fact=pt5*rho*uh1/rmu
10259599516SKenneth E. Jansen
10359599516SKenneth E. Jansenc
10459599516SKenneth E. Jansenc.... continuity tau
10559599516SKenneth E. Jansenc
10659599516SKenneth E. Jansen         tau(:,1)=pt5*uh1*min(one,fact)*taucfct
10759599516SKenneth E. Jansenc
10859599516SKenneth E. Jansenc...  momentum tau
10959599516SKenneth E. Jansenc
11059599516SKenneth E. Jansen         dts=one/(Dtgl*dtsfct)
11159599516SKenneth E. Jansen         tau(:,2)=min(dts,h2o2u)
11259599516SKenneth E. Jansen         tau(:,2)=tau(:,2)/rho
11359599516SKenneth E. Jansenc
11459599516SKenneth E. Jansenc.... energy tau   cv=cp/gamma  assumed
11559599516SKenneth E. Jansenc
11659599516SKenneth E. Jansenc         tau(:,3)=gamma*tau(:,2)/cp
11759599516SKenneth E. Jansen          tau(:,3)=tau(:,2)/cv
11859599516SKenneth E. Jansenc
11959599516SKenneth E. Jansenc.... diffusive corrections
12059599516SKenneth E. Jansenc
12159599516SKenneth E. Jansen         if (ipord == 1) then
12259599516SKenneth E. Jansen            celt = pt66
12359599516SKenneth E. Jansen         else if (ipord == 2) then
12459599516SKenneth E. Jansen            celt = pt33
12559599516SKenneth E. Jansenc            celt = pt33*0.04762
12659599516SKenneth E. Jansen         else if (ipord == 3) then
12759599516SKenneth E. Jansen            celt = pt33         !.02  just a guess...
12859599516SKenneth E. Jansen         else if (ipord >= 4) then
12959599516SKenneth E. Jansen            celt = .008         ! yet another guess...
13059599516SKenneth E. Jansen         endif
13159599516SKenneth E. Jansenc
13259599516SKenneth E. Jansenc          fact=h2o2u*h2o2u*rk*pt66/rmu
13359599516SKenneth E. Jansen         fact=h2o2u*h2o2u*rk*celt/rmu
13459599516SKenneth E. Jansenc
13559599516SKenneth E. Jansen         tau(:,2)=min(tau(:,2),fact)
13659599516SKenneth E. Jansen         tau(:,3)=min(tau(:,3),fact*rmu/con)*temper
13759599516SKenneth E. Jansenc
13859599516SKenneth E. Jansen      else if(itau.eq.0)  then  ! tau proposed by Farzin and Shakib
13959599516SKenneth E. Jansenc
14059599516SKenneth E. Jansenc...  momentum tau
14159599516SKenneth E. Jansenc
14259599516SKenneth E. Jansen
14359599516SKenneth E. Jansenc
14459599516SKenneth E. Jansenc...  higher order element diffusive correction
14559599516SKenneth E. Jansenc
14659599516SKenneth E. Jansen         if (ipord == 1) then
14759599516SKenneth E. Jansen            fff = 36.0d0
14859599516SKenneth E. Jansen         else if (ipord == 2) then
14959599516SKenneth E. Jansen            fff = 60.0d0
15059599516SKenneth E. Jansenc     fff = 36.0d0
15159599516SKenneth E. Jansen         else if (ipord == 3) then
15259599516SKenneth E. Jansen            fff = 128.0d0
15359599516SKenneth E. Jansenc     fff = 144.0d0
15459599516SKenneth E. Jansen      endif
15559599516SKenneth E. Jansen         dts = dtsfct*Dtgl
15659599516SKenneth E. Jansen         tau(:,2)=rho**2*((two*dts)**2
15759599516SKenneth E. Jansen     &        + u1*(u1*gijd(:,1) + two*(u2*gijd(:,2)+u3*gijd(:,4)))
15859599516SKenneth E. Jansen     &        + u2*(u2*gijd(:,3) + two*u3*gijd(:,5))
15959599516SKenneth E. Jansen     &        + u3*u3*gijd(:,6))
16059599516SKenneth E. Jansen     &        +fff*rmu**2*(gijd(:,1)**2 + gijd(:,3)**2 + gijd(:,6)**2 +
16159599516SKenneth E. Jansen     &        two*(gijd(:,2)**2 + gijd(:,4)**2 + gijd(:,5)**2))
16259599516SKenneth E. Jansen         fact=sqrt(tau(:,2))
16359599516SKenneth E. Jansen         tau(:,1)=pt125*fact/(gijd(:,1)+gijd(:,3)+gijd(:,6))*taucfct
16459599516SKenneth E. Jansen         tau(:,2)=one/fact
16559599516SKenneth E. Jansenc
16659599516SKenneth E. Jansenc.... energy tau   cv=cp/gamma  assumed
16759599516SKenneth E. Jansenc
16859599516SKenneth E. Jansen         tau(:,3)=tau(:,2)/cv*temper
16959599516SKenneth E. Jansenc
17059599516SKenneth E. Jansen      endif
17159599516SKenneth E. Jansenc
17259599516SKenneth E. Jansenc...  finally multiply this tau matrix times the
17359599516SKenneth E. Jansenc     two residual vectors
17459599516SKenneth E. Jansenc
17559599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi)
17659599516SKenneth E. Jansenc ... storing rLyi for the DC term
17759599516SKenneth E. Jansen        if(iDC .ne. 0) rLyitemp=rLyi
17859599516SKenneth E. Jansen
17959599516SKenneth E. Jansen      if(ires.eq.3 .or. ires .eq. 1) then
18059599516SKenneth E. Jansen         rLyi(:,1) = tau(:,1) * rLyi(:,1)
18159599516SKenneth E. Jansen         rLyi(:,2) = tau(:,2) * rLyi(:,2)
18259599516SKenneth E. Jansen         rLyi(:,3) = tau(:,2) * rLyi(:,3)
18359599516SKenneth E. Jansen         rLyi(:,4) = tau(:,2) * rLyi(:,4)
18459599516SKenneth E. Jansen         rLyi(:,5) = tau(:,3) * rLyi(:,5)
18559599516SKenneth E. Jansen      endif
18659599516SKenneth E. Jansenc
18759599516SKenneth E. Jansen      if(iDC .ne. 0) then
18859599516SKenneth E. Jansenc..... calculation of rTLS & raLS for DC term
18959599516SKenneth E. Jansenc
19059599516SKenneth E. Jansenc..... calculation of (Ly - S).tau^tilda*(Ly - S)
19159599516SKenneth E. Jansenc
19259599516SKenneth E. Jansen         rTLS = rLYItemp(:,1)       * (rLyi(:,1)*dVdY(:,1)
19359599516SKenneth E. Jansen     &        + dVdY(:,2)*rLyi(:,2) + dVdY(:,4)*rLyi(:,3)
19459599516SKenneth E. Jansen     &        + rLyi(:,4)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5))
19559599516SKenneth E. Jansen     &        + rLyitemp(:,2)       * (rLyi(:,2)*dVdY(:,3)
19659599516SKenneth E. Jansen     &        + rLyi(:,3)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4)
19759599516SKenneth E. Jansen     &        + rLyi(:,5)*dVdY(:,12))
19859599516SKenneth E. Jansen     &        + rLyitemp(:,3)       * (rLyi(:,3)*dVdY(:,6)
19959599516SKenneth E. Jansen     &        + dVdY(:,9)*rLyi(:,4) + dVdY(:,13)*rLyi(:,5))
20059599516SKenneth E. Jansen     &        + rLyitemp(:,4)       * (rLyi(:,4)*dVdY(:,10)
20159599516SKenneth E. Jansen     &        + dVdY(:,14)*rLyi(:,5))
20259599516SKenneth E. Jansen     &        + rLyitemp(:,5)       * (dVdY(:,15)*rLyi(:,5))
20359599516SKenneth E. Jansen
20459599516SKenneth E. Jansenc
20559599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S)
20659599516SKenneth E. Jansenc
20759599516SKenneth E. Jansen           raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15)
20859599516SKenneth E. Jansen     &          + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14)
20959599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6)
21059599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10)
21159599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11)
21259599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7)
21359599516SKenneth E. Jansen     &          + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13)
21459599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12)
21559599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8)
21659599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9)
21759599516SKenneth E. Jansen     &          + rLyitemp(:,1)**2*A0inv(:,1)
21859599516SKenneth E. Jansen     &          + rLyitemp(:,2)**2*A0inv(:,2)
21959599516SKenneth E. Jansen     &          + rLyitemp(:,3)**2*A0inv(:,3)
22059599516SKenneth E. Jansen     &          + rLyitemp(:,4)**2*A0inv(:,4)
22159599516SKenneth E. Jansen     &          + rLyitemp(:,5)**2*A0inv(:,5)
22259599516SKenneth E. Jansenc
22359599516SKenneth E. Jansenc.....****************calculation of giju for DC term***************
22459599516SKenneth E. Jansenc
22559599516SKenneth E. Jansenc.... for the notation of different numbering
22659599516SKenneth E. Jansenc
22759599516SKenneth E. Jansen           gijdu(:,1)=gijd(:,1)
22859599516SKenneth E. Jansen           gijdu(:,2)=gijd(:,3)
22959599516SKenneth E. Jansen           gijdu(:,3)=gijd(:,6)
23059599516SKenneth E. Jansen           gijdu(:,4)=gijd(:,2)
23159599516SKenneth E. Jansen           gijdu(:,5)=gijd(:,4)
23259599516SKenneth E. Jansen           gijdu(:,6)=gijd(:,5)
23359599516SKenneth E. Jansenc
23459599516SKenneth E. Jansenc
23559599516SKenneth E. Jansen           detgijI = one/(
23659599516SKenneth E. Jansen     &          gijdu(:,1) * gijdu(:,2) * gijdu(:,3)
23759599516SKenneth E. Jansen     &          - gijdu(:,1) * gijdu(:,6) * gijdu(:,6)
23859599516SKenneth E. Jansen     &          - gijdu(:,4) * gijdu(:,4) * gijdu(:,3)
23959599516SKenneth E. Jansen     &          + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two
24059599516SKenneth E. Jansen     &          - gijdu(:,5) * gijdu(:,5) * gijdu(:,2)
24159599516SKenneth E. Jansen     &          )
24259599516SKenneth E. Jansen           giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3)
24359599516SKenneth E. Jansen     &               - gijdu(:,6)**2)
24459599516SKenneth E. Jansen           giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3)
24559599516SKenneth E. Jansen     &               - gijdu(:,5)**2)
24659599516SKenneth E. Jansen           giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2)
24759599516SKenneth E. Jansen     &               - gijdu(:,4)**2)
24859599516SKenneth E. Jansen           giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6)
24959599516SKenneth E. Jansen     &               - gijdu(:,4)*gijdu(:,3) )
25059599516SKenneth E. Jansen           giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6)
25159599516SKenneth E. Jansen     &               - gijdu(:,5)*gijdu(:,2) )
25259599516SKenneth E. Jansen           giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5)
25359599516SKenneth E. Jansen     &               - gijdu(:,1)*gijdu(:,6) )
25459599516SKenneth E. Jansenc
25559599516SKenneth E. Jansen        endif                   ! end of iDC.ne.0
25659599516SKenneth E. Jansenc
25759599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi)
25859599516SKenneth E. Jansenc
25959599516SKenneth E. Jansen      if(ires.ne.1 ) then
26059599516SKenneth E. Jansen         rLymi(:,1) = tau(:,1) * rLymi(:,1)
26159599516SKenneth E. Jansen         rLymi(:,2) = tau(:,2) * rLymi(:,2)
26259599516SKenneth E. Jansen         rLymi(:,3) = tau(:,2) * rLymi(:,3)
26359599516SKenneth E. Jansen         rLymi(:,4) = tau(:,2) * rLymi(:,4)
26459599516SKenneth E. Jansen         rLymi(:,5) = tau(:,3) * rLymi(:,5)
26559599516SKenneth E. Jansen      endif
26659599516SKenneth E. Jansenc
26759599516SKenneth E. Jansenc  INCORRECT NOW         flops = flops + 255*npro
26859599516SKenneth E. Jansenc
26959599516SKenneth E. Jansenc
27059599516SKenneth E. Jansenc.... return
27159599516SKenneth E. Jansenc
27259599516SKenneth E. Jansen        return
27359599516SKenneth E. Jansen        end
27459599516SKenneth E. Jansenc
27559599516SKenneth E. Jansenc
27659599516SKenneth E. Jansen
27759599516SKenneth E. Jansen
27859599516SKenneth E. Jansen      subroutine e3tau_nd  (rho,    cp,	    rmu,   T,
27959599516SKenneth E. Jansen     &     u1,              u2,             u3,
28059599516SKenneth E. Jansen     &     a1,              a2,             a3,
28159599516SKenneth E. Jansen     &     con,             dxidx,          rLyi,
28259599516SKenneth E. Jansen     &     rLymi,           Tau,            rk,
28359599516SKenneth E. Jansen     &     giju,            rTLS,           raLS,
28459599516SKenneth E. Jansen     &     cv,              compK,          pres,
28559599516SKenneth E. Jansen     &     A0inv,           dVdY)
28659599516SKenneth E. Jansenc
28759599516SKenneth E. Jansenc----------------------------------------------------------------------
28859599516SKenneth E. Jansenc
28959599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator.
29059599516SKenneth E. Jansenc We receive the regular residual L operator and a
29159599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for
29259599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past
29359599516SKenneth E. Jansenc ENSA codes
29459599516SKenneth E. Jansenc
29559599516SKenneth E. Jansenc input:
29659599516SKenneth E. Jansenc  rho    (npro)           : density
29759599516SKenneth E. Jansenc  T      (npro)           : temperature
29859599516SKenneth E. Jansenc  cp     (npro)           : specific heat at constant pressure
29959599516SKenneth E. Jansenc  u1     (npro)           : x1-velocity component
30059599516SKenneth E. Jansenc  u2     (npro)           : x2-velocity component
30159599516SKenneth E. Jansenc  u3     (npro)           : x3-velocity component
30259599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)   : inverse of deformation gradient
30359599516SKenneth E. Jansenc  rLyi   (npro,nflow)      : least-squares residual vector
30459599516SKenneth E. Jansenc  rLymi   (npro,nflow)     : modified least-squares residual vector
30559599516SKenneth E. Jansenc
30659599516SKenneth E. Jansenc output:
30759599516SKenneth E. Jansenc  rLyi   (npro,nflow)      : least-squares residual vector
30859599516SKenneth E. Jansenc  rLymi   (npro,nflow)     : modified least-squares residual vector
30959599516SKenneth E. Jansenc  Mtau    (npro,5,5)       : Matrix of Stabilized Parameters
31059599516SKenneth E. Jansenc
31159599516SKenneth E. Jansenc
31259599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2tau.f)
31359599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
31459599516SKenneth E. Jansenc----------------------------------------------------------------------
31559599516SKenneth E. Jansenc
31659599516SKenneth E. Jansen      include "common.h"
31759599516SKenneth E. Jansenc
31859599516SKenneth E. Jansen      dimension rho(npro),                 con(npro),
31959599516SKenneth E. Jansen     &            cp(npro),                  u1(npro),
32059599516SKenneth E. Jansen     &            u2(npro),                  u3(npro),
32159599516SKenneth E. Jansen     &            dxidx(npro,nsd,nsd),       rk(npro),
32259599516SKenneth E. Jansen     &            rLyi(npro,nflow),
32359599516SKenneth E. Jansen     &            rLymi(npro,nflow),         dVdY(npro,15),
32459599516SKenneth E. Jansen     &            rTLS(npro),                raLS(npro),
32559599516SKenneth E. Jansen     &            rLyitemp(npro,nflow),      detgijI(npro)
32659599516SKenneth E. Jansenc
32759599516SKenneth E. Jansen      dimension   rmu(npro),	 cv(npro),
32859599516SKenneth E. Jansen     &		  gijd(npro,6),
32959599516SKenneth E. Jansen     &		  fact(npro),	 giju(npro,6),
33059599516SKenneth E. Jansen     &            A0inv(npro,15),gijdu(npro,6), compK(npro,10),
33159599516SKenneth E. Jansen     &            a1(npro),    a2(npro),      a3(npro),
33259599516SKenneth E. Jansen     &            T(npro),      pres(npro),     alphap(npro),
33359599516SKenneth E. Jansen     &            betaT(npro),  gamb(npro),     c(npro),
33459599516SKenneth E. Jansen     &            u(npro),      eb1(npro),      Q(npro,5,5),
33559599516SKenneth E. Jansen     &            rlam(npro,5), eigmax(npro,5),   Pe(npro),
33659599516SKenneth E. Jansen     &            Ak(npro),    B(npro),    D(npro),   E(npro),
33759599516SKenneth E. Jansen     &            STau(npro,15),  Tau(npro,nflow,nflow)
33859599516SKenneth E. Jansen
33959599516SKenneth E. Jansen
34059599516SKenneth E. Jansenc... build some necessary quantities at integration point:
34159599516SKenneth E. Jansen
34259599516SKenneth E. Jansenc      alfap = one / T
34359599516SKenneth E. Jansenc      betaT = one / pres
34459599516SKenneth E. Jansen      gamb  = gamma1
34559599516SKenneth E. Jansen      c  = sqrt( (gamma * Rgas) * T )
34659599516SKenneth E. Jansen      u = sqrt(u1**2+u2**2+u3**2)
34759599516SKenneth E. Jansen      eb1 = cp*T - pt5*(u1**2+u2**2+u3**2)
34859599516SKenneth E. Jansen
34959599516SKenneth E. Jansenc... get eigenvectors for diagonalizing Tau_adv (e.v) before final rotations
35059599516SKenneth E. Jansenc... Note: the ordering of eigenvectors corresponds to the following
35159599516SKenneth E. Jansenc... ordering of the eigenvalues in the 1-st Euler Jacobian rotated to
35259599516SKenneth E. Jansenc... the streamline coordinates
35359599516SKenneth E. Jansen
35459599516SKenneth E. Jansenc     |u+c      |
35559599516SKenneth E. Jansenc     |   u     |
35659599516SKenneth E. Jansenc     |    u    |
35759599516SKenneth E. Jansenc     |     u   |  ! for origins of this see Beam, Warming, Hyett
35859599516SKenneth E. Jansenc     |      u-c|  ! Mathematics of Computation vol. 29 No. 132 p. 1037
35959599516SKenneth E. Jansen
36059599516SKenneth E. Jansenc... different ordering assumed in Shakib/Johan entropy vars. code
36159599516SKenneth E. Jansen
36259599516SKenneth E. Jansen
36359599516SKenneth E. Jansen
36459599516SKenneth E. Jansen      call e3eig1 (rho,             T,               cp,
36559599516SKenneth E. Jansen     &               gamb,            c,               u1,
36659599516SKenneth E. Jansen     &               u2,              u3,              a1,
36759599516SKenneth E. Jansen     &               a2,              a3,              eb1,
36859599516SKenneth E. Jansen     &               dxidx,           u,               Q)
36959599516SKenneth E. Jansen
37059599516SKenneth E. Jansenc... Perform a Jacobi rotation on the Lambda matrix as well as adjust
37159599516SKenneth E. Jansenc... the eigenvectors. Tau still remains in entropy variables.
37259599516SKenneth E. Jansen
37359599516SKenneth E. Jansen
37459599516SKenneth E. Jansen
37559599516SKenneth E. Jansen      call e3eig2 (u,               c,               a1,
37659599516SKenneth E. Jansen     &             a2,              a3,              rlam,
37759599516SKenneth E. Jansen     &             Q,               eigmax)
37859599516SKenneth E. Jansen
37959599516SKenneth E. Jansenc
38059599516SKenneth E. Jansenc.... invert the eigenvalues
38159599516SKenneth E. Jansenc
38259599516SKenneth E. Jansen
38359599516SKenneth E. Jansen
38459599516SKenneth E. Jansen      where (rlam .gt. ((epsM**2) * eigmax))
38559599516SKenneth E. Jansen         rlam = one / sqrt(rlam)
38659599516SKenneth E. Jansen      elsewhere
38759599516SKenneth E. Jansen         rlam = zero
38859599516SKenneth E. Jansen      endwhere
38959599516SKenneth E. Jansen
39059599516SKenneth E. Jansenc
39159599516SKenneth E. Jansenc.... flop count
39259599516SKenneth E. Jansenc
39359599516SKenneth E. Jansen        flops = flops + 65*npro
39459599516SKenneth E. Jansen
39559599516SKenneth E. Jansenc.... reduce the diffusion contribution
39659599516SKenneth E. Jansenc
39759599516SKenneth E. Jansen
39859599516SKenneth E. Jansen        if (Navier .eq. 1) then
39959599516SKenneth E. Jansenc
40059599516SKenneth E. Jansenc.... calculate sigma
40159599516SKenneth E. Jansenc
40259599516SKenneth E. Jansen
40359599516SKenneth E. Jansen           do i = 1, nflow       ! diff. corr for every mode of Tau
40459599516SKenneth E. Jansen
40559599516SKenneth E. Jansen              c(:) = pt33 * (
40659599516SKenneth E. Jansen     &    Q(:,2,i) * ( compK(:, 1) * Q(:,2,i) + compK(:, 2) * Q(:,3,i)
40759599516SKenneth E. Jansen     &               + compK(:, 4) * Q(:,4,i) + compK(:, 7) * Q(:,5,i) )
40859599516SKenneth E. Jansen     &  + Q(:,3,i) * ( compK(:, 2) * Q(:,2,i) + compK(:, 3) * Q(:,3,i)
40959599516SKenneth E. Jansen     &               + compK(:, 5) * Q(:,4,i) + compK(:, 8) * Q(:,5,i) )
41059599516SKenneth E. Jansen     &  + Q(:,4,i) * ( compK(:, 4) * Q(:,2,i) + compK(:, 5) * Q(:,3,i)
41159599516SKenneth E. Jansen     &               + compK(:, 6) * Q(:,4,i) + compK(:, 9) * Q(:,5,i) )
41259599516SKenneth E. Jansen     &  + Q(:,5,i) * ( compK(:, 7) * Q(:,2,i) + compK(:, 8) * Q(:,3,i)
41359599516SKenneth E. Jansen     &               + compK(:, 9) * Q(:,4,i) + compK(:,10) * Q(:,5,i) )
41459599516SKenneth E. Jansen     &                  )
41559599516SKenneth E. Jansen
41659599516SKenneth E. Jansenc... get Peclet Number
41759599516SKenneth E. Jansen
41859599516SKenneth E. Jansen
41959599516SKenneth E. Jansen              Pe(:) = one / (c(:)*rlam(:,i))
42059599516SKenneth E. Jansen
42159599516SKenneth E. Jansen
42259599516SKenneth E. Jansenc
42359599516SKenneth E. Jansenc...  branch out into different polynomial orders
42459599516SKenneth E. Jansenc
42559599516SKenneth E. Jansen
42659599516SKenneth E. Jansen
42759599516SKenneth E. Jansen              if (ipord == 1) then ! linears - l = l^a*(coth(Pe)-1/Pe)
42859599516SKenneth E. Jansen                                   ! approx. l = l^a*min(1/3*Pe,1)
42959599516SKenneth E. Jansen                 rlam(:,i) = rlam(:,i)*min(pt33*Pe(:),one)
43059599516SKenneth E. Jansen
43159599516SKenneth E. Jansen              endif
43259599516SKenneth E. Jansen
43359599516SKenneth E. Jansen              if (ipord == 2) then ! quads - Codina, CMAME' 92
43459599516SKenneth E. Jansen                                ! approx. l = l^a*min(1/6*Pe,1/2)
43559599516SKenneth E. Jansen                 rlam(:,i) = rlam(:,i)*min(pt33*pt5*Pe(:),pt5)
43659599516SKenneth E. Jansen
43759599516SKenneth E. Jansen              endif
43859599516SKenneth E. Jansen
43959599516SKenneth E. Jansen              if (ipord == 3) then ! cubics - Recent Work
44059599516SKenneth E. Jansen                                ! l = l^a*1/Pe*b
44159599516SKenneth E. Jansen                                ! b is a real root of the
44259599516SKenneth E. Jansen                                ! following polynomial:
44359599516SKenneth E. Jansen             !  b^3+(-Pe*coth(Pe)b^2+(6/15*Pe^2-Pe*coth(Pe)+1)b+
44459599516SKenneth E. Jansen             !  +(-1/15*Pe^3*coth(Pe)+6/15*Pe^2-Pe*coth(Pe)+1) = 0
44559599516SKenneth E. Jansen             !  proceed setting up newton iteration w/ initial
44659599516SKenneth E. Jansen             !  guess coming from the quad estimate.
44759599516SKenneth E. Jansen
44859599516SKenneth E. Jansen                 Ak(:)=1.0      ! get parameters for iteration
44959599516SKenneth E. Jansen
45059599516SKenneth E. Jansen                 where(Pe.lt.5.0) ! approx. to hyp. cothangent
45159599516SKenneth E. Jansen                    alphap = exp(Pe)
45259599516SKenneth E. Jansen                    betaT = exp(-Pe)
45359599516SKenneth E. Jansen                    c = (alphap+betaT)/(alphap-betaT)
45459599516SKenneth E. Jansen                 elsewhere
45559599516SKenneth E. Jansen                    c = one
45659599516SKenneth E. Jansen                 endwhere
45759599516SKenneth E. Jansen
45859599516SKenneth E. Jansen                 B= -Pe*c + Ak
45959599516SKenneth E. Jansen                 D= 0.4 * (Pe**2) + B
46059599516SKenneth E. Jansen                 E=-0.066666667 * (Pe**3) * c +D
46159599516SKenneth E. Jansen
46259599516SKenneth E. Jansen                                ! initial guess, use betaT
46359599516SKenneth E. Jansen                 betaT(:) = Pe(:)*min(pt33*pt5*Pe(:),pt5)
46459599516SKenneth E. Jansen
46559599516SKenneth E. Jansen                                ! iteration - 3 iterations sufficient
46659599516SKenneth E. Jansen                 do j = 1, 3
46759599516SKenneth E. Jansen
46859599516SKenneth E. Jansen                    betaT=betaT-(Ak*betaT**3+B*betaT**2+D*betaT+E)/(3*Ak
46959599516SKenneth E. Jansen     &                   *betaT**2+2*B*betaT+D)
47059599516SKenneth E. Jansen                 enddo
47159599516SKenneth E. Jansen
47259599516SKenneth E. Jansen                 rlam(:,i) = rlam(:,i)*(1/Pe(:))*betaT(:)
47359599516SKenneth E. Jansen
47459599516SKenneth E. Jansen              endif             ! done w/ different polynomial orders
47559599516SKenneth E. Jansen
47659599516SKenneth E. Jansen           enddo                ! done with loop over dof's
47759599516SKenneth E. Jansen
47859599516SKenneth E. Jansen        endif                   ! done with diffusive correction
47959599516SKenneth E. Jansen
48059599516SKenneth E. Jansen
48159599516SKenneth E. Jansenc
48259599516SKenneth E. Jansenc.... form Tau (symmetric - entropy variables - then convert)
48359599516SKenneth E. Jansenc
48459599516SKenneth E. Jansen        STau(:, 1) = rlam(:,1) * Q(:,1,1) * Q(:,1,1) +
48559599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,1,2) * Q(:,1,2) +
48659599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,1,3) * Q(:,1,3) +
48759599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,1,4) * Q(:,1,4) +
48859599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,1,5) * Q(:,1,5)
48959599516SKenneth E. Jansenc
49059599516SKenneth E. Jansen        STau(:, 2) = rlam(:,1) * Q(:,1,1) * Q(:,2,1) +
49159599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,1,2) * Q(:,2,2) +
49259599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,1,3) * Q(:,2,3) +
49359599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,1,4) * Q(:,2,4) +
49459599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,1,5) * Q(:,2,5)
49559599516SKenneth E. Jansenc
49659599516SKenneth E. Jansen        STau(:, 3) = rlam(:,1) * Q(:,2,1) * Q(:,2,1) +
49759599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,2,2) * Q(:,2,2) +
49859599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,2,3) * Q(:,2,3) +
49959599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,2,4) * Q(:,2,4) +
50059599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,2,5) * Q(:,2,5)
50159599516SKenneth E. Jansenc
50259599516SKenneth E. Jansen        STau(:, 4) = rlam(:,1) * Q(:,1,1) * Q(:,3,1) +
50359599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,1,2) * Q(:,3,2) +
50459599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,1,3) * Q(:,3,3) +
50559599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,1,4) * Q(:,3,4) +
50659599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,1,5) * Q(:,3,5)
50759599516SKenneth E. Jansenc
50859599516SKenneth E. Jansen        STau(:, 5) = rlam(:,1) * Q(:,2,1) * Q(:,3,1) +
50959599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,2,2) * Q(:,3,2) +
51059599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,2,3) * Q(:,3,3) +
51159599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,2,4) * Q(:,3,4) +
51259599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,2,5) * Q(:,3,5)
51359599516SKenneth E. Jansenc
51459599516SKenneth E. Jansen        STau(:, 6) = rlam(:,1) * Q(:,3,1) * Q(:,3,1) +
51559599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,3,2) * Q(:,3,2) +
51659599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,3,3) * Q(:,3,3) +
51759599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,3,4) * Q(:,3,4) +
51859599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,3,5) * Q(:,3,5)
51959599516SKenneth E. Jansenc
52059599516SKenneth E. Jansen        STau(:, 7) = rlam(:,1) * Q(:,1,1) * Q(:,4,1) +
52159599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,1,2) * Q(:,4,2) +
52259599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,1,3) * Q(:,4,3) +
52359599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,1,4) * Q(:,4,4) +
52459599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,1,5) * Q(:,4,5)
52559599516SKenneth E. Jansenc
52659599516SKenneth E. Jansen        STau(:, 8) = rlam(:,1) * Q(:,2,1) * Q(:,4,1) +
52759599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,2,2) * Q(:,4,2) +
52859599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,2,3) * Q(:,4,3) +
52959599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,2,4) * Q(:,4,4) +
53059599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,2,5) * Q(:,4,5)
53159599516SKenneth E. Jansenc
53259599516SKenneth E. Jansen        STau(:, 9) = rlam(:,1) * Q(:,3,1) * Q(:,4,1) +
53359599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,3,2) * Q(:,4,2) +
53459599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,3,3) * Q(:,4,3) +
53559599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,3,4) * Q(:,4,4) +
53659599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,3,5) * Q(:,4,5)
53759599516SKenneth E. Jansenc
53859599516SKenneth E. Jansen        STau(:,10) = rlam(:,1) * Q(:,4,1) * Q(:,4,1) +
53959599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,4,2) * Q(:,4,2) +
54059599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,4,3) * Q(:,4,3) +
54159599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,4,4) * Q(:,4,4) +
54259599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,4,5) * Q(:,4,5)
54359599516SKenneth E. Jansenc
54459599516SKenneth E. Jansen        STau(:,11) = rlam(:,1) * Q(:,1,1) * Q(:,5,1) +
54559599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,1,2) * Q(:,5,2) +
54659599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,1,3) * Q(:,5,3) +
54759599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,1,4) * Q(:,5,4) +
54859599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,1,5) * Q(:,5,5)
54959599516SKenneth E. Jansenc
55059599516SKenneth E. Jansen        STau(:,12) = rlam(:,1) * Q(:,2,1) * Q(:,5,1) +
55159599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,2,2) * Q(:,5,2) +
55259599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,2,3) * Q(:,5,3) +
55359599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,2,4) * Q(:,5,4) +
55459599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,2,5) * Q(:,5,5)
55559599516SKenneth E. Jansenc
55659599516SKenneth E. Jansen        STau(:,13) = rlam(:,1) * Q(:,3,1) * Q(:,5,1) +
55759599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,3,2) * Q(:,5,2) +
55859599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,3,3) * Q(:,5,3) +
55959599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,3,4) * Q(:,5,4) +
56059599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,3,5) * Q(:,5,5)
56159599516SKenneth E. Jansenc
56259599516SKenneth E. Jansen        STau(:,14) = rlam(:,1) * Q(:,4,1) * Q(:,5,1) +
56359599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,4,2) * Q(:,5,2) +
56459599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,4,3) * Q(:,5,3) +
56559599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,4,4) * Q(:,5,4) +
56659599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,4,5) * Q(:,5,5)
56759599516SKenneth E. Jansenc
56859599516SKenneth E. Jansen        STau(:,15) = rlam(:,1) * Q(:,5,1) * Q(:,5,1) +
56959599516SKenneth E. Jansen     &                rlam(:,2) * Q(:,5,2) * Q(:,5,2) +
57059599516SKenneth E. Jansen     &                rlam(:,3) * Q(:,5,3) * Q(:,5,3) +
57159599516SKenneth E. Jansen     &                rlam(:,4) * Q(:,5,4) * Q(:,5,4) +
57259599516SKenneth E. Jansen     &                rlam(:,5) * Q(:,5,5) * Q(:,5,5)
57359599516SKenneth E. Jansen
57459599516SKenneth E. Jansen
57559599516SKenneth E. Jansenc
57659599516SKenneth E. Jansenc... Form Primitive Variable Tau as [dY/dV]*tilde{Tau},
57759599516SKenneth E. Jansenc... see G.Hauke's thesis appendix for [dY/dV] matrix
57859599516SKenneth E. Jansenc
57959599516SKenneth E. Jansen        betaT = cp*T + pt5*(u1**2+u2**2+u3**2) !reuse betaT
58059599516SKenneth E. Jansen
58159599516SKenneth E. Jansen        Tau(:,1,1) = rho*T*(STau(:,1)+u1*STau(:,2)+
58259599516SKenneth E. Jansen     &         u2*STau(:,4)+u3*STau(:,7)+betaT*STau(:,11))
58359599516SKenneth E. Jansen        Tau(:,1,2) = rho*T*(STau(:,2)+u1*STau(:,3)+
58459599516SKenneth E. Jansen     &         u2*STau(:,5)+u3*STau(:,8)+betaT*STau(:,12))
58559599516SKenneth E. Jansen        Tau(:,1,3) = rho*T*(STau(:,4)+u1*STau(:,5)+
58659599516SKenneth E. Jansen     &         u2*STau(:,6)+u3*STau(:,9)+betaT*STau(:,13))
58759599516SKenneth E. Jansen        Tau(:,1,4) = rho*T*(STau(:,7)+u1*STau(:,8)+
58859599516SKenneth E. Jansen     &         u2*STau(:,9)+u3*STau(:,10)+betaT*STau(:,14))
58959599516SKenneth E. Jansen        Tau(:,1,5) = rho*T*(STau(:,11)+u1*STau(:,12)+
59059599516SKenneth E. Jansen     &         u2*STau(:,13)+u3*STau(:,14)+betaT*STau(:,15))
59159599516SKenneth E. Jansen
59259599516SKenneth E. Jansen
59359599516SKenneth E. Jansen        Tau(:,2,1) = T(:)*(STau(:,2) + u1(:)*STau(:,11))
59459599516SKenneth E. Jansen        Tau(:,2,2) = T(:)*(STau(:,3) + u1(:)*STau(:,12))
59559599516SKenneth E. Jansen        Tau(:,2,3) = T(:)*(STau(:,5) + u1(:)*STau(:,13))
59659599516SKenneth E. Jansen        Tau(:,2,4) = T(:)*(STau(:,8) + u1(:)*STau(:,14))
59759599516SKenneth E. Jansen        Tau(:,2,5) = T(:)*(STau(:,12) + u1(:)*STau(:,15))
59859599516SKenneth E. Jansen
59959599516SKenneth E. Jansen        Tau(:,3,1) = T(:)*(STau(:,4) + u2(:)*STau(:,11))
60059599516SKenneth E. Jansen        Tau(:,3,2) = T(:)*(STau(:,5) + u2(:)*STau(:,12))
60159599516SKenneth E. Jansen        Tau(:,3,3) = T(:)*(STau(:,6) + u2(:)*STau(:,13))
60259599516SKenneth E. Jansen        Tau(:,3,4) = T(:)*(STau(:,9) + u2(:)*STau(:,14))
60359599516SKenneth E. Jansen        Tau(:,3,5) = T(:)*(STau(:,13) + u2(:)*STau(:,15))
60459599516SKenneth E. Jansen
60559599516SKenneth E. Jansen        Tau(:,4,1) = T(:)*(STau(:,7) + u3(:)*STau(:,11))
60659599516SKenneth E. Jansen        Tau(:,4,2) = T(:)*(STau(:,8) + u3(:)*STau(:,12))
60759599516SKenneth E. Jansen        Tau(:,4,3) = T(:)*(STau(:,9) + u3(:)*STau(:,13))
60859599516SKenneth E. Jansen        Tau(:,4,4) = T(:)*(STau(:,10) + u3(:)*STau(:,14))
60959599516SKenneth E. Jansen        Tau(:,4,5) = T(:)*(STau(:,14) + u3(:)*STau(:,15))
61059599516SKenneth E. Jansen
61159599516SKenneth E. Jansen        betaT = T**2
61259599516SKenneth E. Jansen
61359599516SKenneth E. Jansen        Tau(:,5,1) = betaT(:)*STau(:,11)
61459599516SKenneth E. Jansen        Tau(:,5,2) = betaT(:)*STau(:,12)
61559599516SKenneth E. Jansen        Tau(:,5,3) = betaT(:)*STau(:,13)
61659599516SKenneth E. Jansen        Tau(:,5,4) = betaT(:)*STau(:,14)
61759599516SKenneth E. Jansen        Tau(:,5,5) = betaT(:)*STau(:,15)
61859599516SKenneth E. Jansen
61959599516SKenneth E. Jansen
62059599516SKenneth E. Jansenc
62159599516SKenneth E. Jansenc...  done with conversion to pressure primitive variables
62259599516SKenneth E. Jansenc...  now need to interface with the rest of the computations
62359599516SKenneth E. Jansenc
62459599516SKenneth E. Jansen
62559599516SKenneth E. Jansenc...  finally multiply this tau matrix times the
62659599516SKenneth E. Jansenc     two residual vectors
62759599516SKenneth E. Jansenc
62859599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi)
62959599516SKenneth E. Jansenc ... storing rLyi for the DC term
63059599516SKenneth E. Jansen
63159599516SKenneth E. Jansen
63259599516SKenneth E. Jansen        if(iDC .ne. 0) rLyitemp=rLyi
63359599516SKenneth E. Jansen
63459599516SKenneth E. Jansen        if(ires.eq.3 .or. ires .eq. 1) then
63559599516SKenneth E. Jansen           eigmax = rLyi  !reuse
63659599516SKenneth E. Jansen           rLyi = zero
63759599516SKenneth E. Jansen           do i = 1, nflow
63859599516SKenneth E. Jansen              do  j = 1, nflow
63959599516SKenneth E. Jansen                 rLyi(:,i) = rLyi(:,i) + Tau(:,i,j) * eigmax(:,j)
64059599516SKenneth E. Jansen              enddo
64159599516SKenneth E. Jansen           enddo
64259599516SKenneth E. Jansen        endif
64359599516SKenneth E. Jansen
64459599516SKenneth E. Jansen
64559599516SKenneth E. Jansen        if(iDC .ne. 0) then
64659599516SKenneth E. Jansenc.....calculation of rTLS & raLS for DC term
64759599516SKenneth E. Jansenc
64859599516SKenneth E. Jansenc.....calculation of (Ly - S).tau^tilda*(Ly - S)
64959599516SKenneth E. Jansenc
65059599516SKenneth E. Jansen           rTLS = rLYItemp(:,1)       * (rLyi(:,1)*dVdY(:,1)
65159599516SKenneth E. Jansen     &        + dVdY(:,2)*rLyi(:,2) + dVdY(:,4)*rLyi(:,3)
65259599516SKenneth E. Jansen     &        + rLyi(:,4)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5))
65359599516SKenneth E. Jansen     &        + rLyitemp(:,2)       * (rLyi(:,2)*dVdY(:,3)
65459599516SKenneth E. Jansen     &        + rLyi(:,3)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4)
65559599516SKenneth E. Jansen     &        + rLyi(:,5)*dVdY(:,12))
65659599516SKenneth E. Jansen     &        + rLyitemp(:,3)       * (rLyi(:,3)*dVdY(:,6)
65759599516SKenneth E. Jansen     &        + dVdY(:,9)*rLyi(:,4) + dVdY(:,13)*rLyi(:,5))
65859599516SKenneth E. Jansen     &        + rLyitemp(:,4)       * (rLyi(:,4)*dVdY(:,10)
65959599516SKenneth E. Jansen     &        + dVdY(:,14)*rLyi(:,5))
66059599516SKenneth E. Jansen     &        + rLyitemp(:,5)       * (dVdY(:,15)*rLyi(:,5))
66159599516SKenneth E. Jansen
66259599516SKenneth E. Jansenc
66359599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S)
66459599516SKenneth E. Jansenc
66559599516SKenneth E. Jansen           raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15)
66659599516SKenneth E. Jansen     &          + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14)
66759599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6)
66859599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10)
66959599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11)
67059599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7)
67159599516SKenneth E. Jansen     &          + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13)
67259599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12)
67359599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8)
67459599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9)
67559599516SKenneth E. Jansen     &          + rLyitemp(:,1)**2*A0inv(:,1)
67659599516SKenneth E. Jansen     &          + rLyitemp(:,2)**2*A0inv(:,2)
67759599516SKenneth E. Jansen     &          + rLyitemp(:,3)**2*A0inv(:,3)
67859599516SKenneth E. Jansen     &          + rLyitemp(:,4)**2*A0inv(:,4)
67959599516SKenneth E. Jansen     &          + rLyitemp(:,5)**2*A0inv(:,5)
68059599516SKenneth E. Jansenc
68159599516SKenneth E. Jansenc.....****************calculation of giju for DC term***************
68259599516SKenneth E. Jansenc
68359599516SKenneth E. Jansenc.... for the notation of different numbering
68459599516SKenneth E. Jansenc
68559599516SKenneth E. Jansen           call e3gijd( dxidx, gijd )
68659599516SKenneth E. Jansen
68759599516SKenneth E. Jansen           gijdu(:,1)=gijd(:,1)
68859599516SKenneth E. Jansen           gijdu(:,2)=gijd(:,3)
68959599516SKenneth E. Jansen           gijdu(:,3)=gijd(:,6)
69059599516SKenneth E. Jansen           gijdu(:,4)=gijd(:,2)
69159599516SKenneth E. Jansen           gijdu(:,5)=gijd(:,4)
69259599516SKenneth E. Jansen           gijdu(:,6)=gijd(:,5)
69359599516SKenneth E. Jansenc
69459599516SKenneth E. Jansenc
69559599516SKenneth E. Jansen           detgijI = one/(
69659599516SKenneth E. Jansen     &          gijdu(:,1) * gijdu(:,2) * gijdu(:,3)
69759599516SKenneth E. Jansen     &          - gijdu(:,1) * gijdu(:,6) * gijdu(:,6)
69859599516SKenneth E. Jansen     &          - gijdu(:,4) * gijdu(:,4) * gijdu(:,3)
69959599516SKenneth E. Jansen     &          + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two
70059599516SKenneth E. Jansen     &          - gijdu(:,5) * gijdu(:,5) * gijdu(:,2)
70159599516SKenneth E. Jansen     &          )
70259599516SKenneth E. Jansen           giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3)
70359599516SKenneth E. Jansen     &               - gijdu(:,6)**2)
70459599516SKenneth E. Jansen           giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3)
70559599516SKenneth E. Jansen     &               - gijdu(:,5)**2)
70659599516SKenneth E. Jansen           giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2)
70759599516SKenneth E. Jansen     &               - gijdu(:,4)**2)
70859599516SKenneth E. Jansen           giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6)
70959599516SKenneth E. Jansen     &               - gijdu(:,4)*gijdu(:,3) )
71059599516SKenneth E. Jansen           giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6)
71159599516SKenneth E. Jansen     &               - gijdu(:,5)*gijdu(:,2) )
71259599516SKenneth E. Jansen           giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5)
71359599516SKenneth E. Jansen     &               - gijdu(:,1)*gijdu(:,6) )
71459599516SKenneth E. Jansenc
71559599516SKenneth E. Jansen        endif                   ! end of iDC.ne.0
71659599516SKenneth E. Jansenc
71759599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi)
71859599516SKenneth E. Jansenc
71959599516SKenneth E. Jansen        if(ires.ne.1 ) then
72059599516SKenneth E. Jansen           eigmax = rLymi
72159599516SKenneth E. Jansen           rLymi = zero
72259599516SKenneth E. Jansen           do i = 1, nflow
72359599516SKenneth E. Jansen              do j = 1, nflow
72459599516SKenneth E. Jansen                 rLymi(:,i) = rLymi(:,i) + Tau(:,i,j) * eigmax(:,j)
72559599516SKenneth E. Jansen              enddo
72659599516SKenneth E. Jansen           enddo
72759599516SKenneth E. Jansen        endif
72859599516SKenneth E. Jansenc
72959599516SKenneth E. Jansenc  INCORRECT NOW         flops = flops + 255*npro
73059599516SKenneth E. Jansenc
73159599516SKenneth E. Jansenc
73259599516SKenneth E. Jansenc.... return
73359599516SKenneth E. Jansenc
73459599516SKenneth E. Jansen      return
73559599516SKenneth E. Jansen      end
73659599516SKenneth E. Jansenc
73759599516SKenneth E. Jansen
73859599516SKenneth E. Jansen
73959599516SKenneth E. Jansen      subroutine e3tau_nd_modal  (rho,    cp,	    rmu,   T,
74059599516SKenneth E. Jansen     &     u1,              u2,             u3,
74159599516SKenneth E. Jansen     &     a1,              a2,             a3,
74259599516SKenneth E. Jansen     &     con,             dxidx,          rLyi,
74359599516SKenneth E. Jansen     &     rLymi,           Tau,            rk,
74459599516SKenneth E. Jansen     &     giju,            rTLS,           raLS,
74559599516SKenneth E. Jansen     &     cv,              compK,          pres,
74659599516SKenneth E. Jansen     &     A0inv,           dVdY)
74759599516SKenneth E. Jansenc
74859599516SKenneth E. Jansenc----------------------------------------------------------------------
74959599516SKenneth E. Jansenc
75059599516SKenneth E. Jansenc     This routine computes the diagonal Tau for least-squares operator.
75159599516SKenneth E. Jansenc
75259599516SKenneth E. Jansenc We receive the regular residual L operator and a
75359599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for
75459599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past
75559599516SKenneth E. Jansenc ENSA codes
75659599516SKenneth E. Jansenc
75759599516SKenneth E. Jansenc input:
75859599516SKenneth E. Jansenc  rho    (npro)           : density
75959599516SKenneth E. Jansenc  T      (npro)           : temperature
76059599516SKenneth E. Jansenc  cp     (npro)           : specific heat at constant pressure
76159599516SKenneth E. Jansenc  u1     (npro)           : x1-velocity component
76259599516SKenneth E. Jansenc  u2     (npro)           : x2-velocity component
76359599516SKenneth E. Jansenc  u3     (npro)           : x3-velocity component
76459599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)   : inverse of deformation gradient
76559599516SKenneth E. Jansenc  rLyi   (npro,nflow)      : least-squares residual vector
76659599516SKenneth E. Jansenc  rLymi   (npro,nflow)     : modified least-squares residual vector
76759599516SKenneth E. Jansenc
76859599516SKenneth E. Jansenc output:
76959599516SKenneth E. Jansenc  rLyi   (npro,nflow)      : least-squares residual vector
77059599516SKenneth E. Jansenc  rLymi   (npro,nflow)     : modified least-squares residual vector
77159599516SKenneth E. Jansenc  Mtau    (npro,5,5)       : Matrix of Stabilized Parameters
77259599516SKenneth E. Jansenc
77359599516SKenneth E. Jansenc
77459599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2tau.f)
77559599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
77659599516SKenneth E. Jansenc----------------------------------------------------------------------
77759599516SKenneth E. Jansenc
77859599516SKenneth E. Jansen      include "common.h"
77959599516SKenneth E. Jansenc
78059599516SKenneth E. Jansen      dimension rho(npro),                 con(npro),
78159599516SKenneth E. Jansen     &            cp(npro),                  u1(npro),
78259599516SKenneth E. Jansen     &            u2(npro),                  u3(npro),
78359599516SKenneth E. Jansen     &            dxidx(npro,nsd,nsd),       rk(npro),
78459599516SKenneth E. Jansen     &            rLyi(npro,nflow,ipord),
78559599516SKenneth E. Jansen     &            rLymi(npro,nflow,ipord),   dVdY(npro,15),
78659599516SKenneth E. Jansen     &            rTLS(npro),                raLS(npro),
78759599516SKenneth E. Jansen     &            rLyitemp(npro,nflow),      detgijI(npro)
78859599516SKenneth E. Jansenc
78959599516SKenneth E. Jansen      dimension   rmu(npro),	 cv(npro),
79059599516SKenneth E. Jansen     &		  gijd(npro,6),
79159599516SKenneth E. Jansen     &		  fact(npro),	 giju(npro,6),
79259599516SKenneth E. Jansen     &            A0inv(npro,15),gijdu(npro,6), compK(npro,10),
79359599516SKenneth E. Jansen     &            a1(npro),    a2(npro),      a3(npro),
79459599516SKenneth E. Jansen     &            T(npro),      pres(npro),     alphap(npro),
79559599516SKenneth E. Jansen     &            betaT(npro),  gamb(npro),     c(npro),
79659599516SKenneth E. Jansen     &            u(npro),      eb1(npro),      Q(npro,5,5),
79759599516SKenneth E. Jansen     &            rlam(npro,5), eigmax(npro,5),   Pe(npro),
79859599516SKenneth E. Jansen     &            STau(npro,15, ipord),  Tau(npro,nflow,nflow,ipord),
79959599516SKenneth E. Jansen     &            rlamtmp(npro,5,ipord)
80059599516SKenneth E. Jansen
80159599516SKenneth E. Jansen
80259599516SKenneth E. Jansenc... build some necessary quantities at integration point:
80359599516SKenneth E. Jansen
80459599516SKenneth E. Jansenc      alfap = one / T
80559599516SKenneth E. Jansenc      betaT = one / pres
80659599516SKenneth E. Jansen      gamb  = gamma1
80759599516SKenneth E. Jansen      c  = sqrt( (gamma * Rgas) * T )
80859599516SKenneth E. Jansen      u = sqrt(u1**2+u2**2+u3**2)
80959599516SKenneth E. Jansen      eb1 = cp*T - pt5*(u1**2+u2**2+u3**2)
81059599516SKenneth E. Jansen
81159599516SKenneth E. Jansenc... get eigenvectors for diagonalizing Tau_adv (e.v) before final rotations
81259599516SKenneth E. Jansenc... Note: the ordering of eigenvectors corresponds to the following
81359599516SKenneth E. Jansenc... ordering of the eigenvalues in the 1-st Euler Jacobian rotated to
81459599516SKenneth E. Jansenc... the streamline coordinates
81559599516SKenneth E. Jansen
81659599516SKenneth E. Jansenc     |u+c      |
81759599516SKenneth E. Jansenc     |   u     |
81859599516SKenneth E. Jansenc     |    u    |
81959599516SKenneth E. Jansenc     |     u   |  ! for origins of this see Beam, Warming, Hyett
82059599516SKenneth E. Jansenc     |      u-c|  ! Mathematics of Computation vol. 29 No. 132 p. 1037
82159599516SKenneth E. Jansen
82259599516SKenneth E. Jansenc... different ordering assumed in Shakib/Johan entropy vars. code
82359599516SKenneth E. Jansen
82459599516SKenneth E. Jansen
82559599516SKenneth E. Jansen
82659599516SKenneth E. Jansen      call e3eig1 (rho,             T,               cp,
82759599516SKenneth E. Jansen     &               gamb,            c,               u1,
82859599516SKenneth E. Jansen     &               u2,              u3,              a1,
82959599516SKenneth E. Jansen     &               a2,              a3,              eb1,
83059599516SKenneth E. Jansen     &               dxidx,           u,               Q)
83159599516SKenneth E. Jansen
83259599516SKenneth E. Jansenc... Perform a Jacobi rotation on the Lambda matrix as well as adjust
83359599516SKenneth E. Jansenc... the eigenvectors. Tau still remains in entropy variables.
83459599516SKenneth E. Jansen
83559599516SKenneth E. Jansen
83659599516SKenneth E. Jansen
83759599516SKenneth E. Jansen      call e3eig2 (u,               c,               a1,
83859599516SKenneth E. Jansen     &             a2,              a3,              rlam,
83959599516SKenneth E. Jansen     &             Q,               eigmax)
84059599516SKenneth E. Jansen
84159599516SKenneth E. Jansenc
84259599516SKenneth E. Jansenc.... invert the eigenvalues
84359599516SKenneth E. Jansenc
84459599516SKenneth E. Jansen
84559599516SKenneth E. Jansen
84659599516SKenneth E. Jansen      where (rlam .gt. ((epsM**2) * eigmax))
84759599516SKenneth E. Jansen         rlam = one / sqrt(rlam)
84859599516SKenneth E. Jansen      elsewhere
84959599516SKenneth E. Jansen         rlam = zero
85059599516SKenneth E. Jansen      endwhere
85159599516SKenneth E. Jansen
85259599516SKenneth E. Jansen      do i = 1, ipord
85359599516SKenneth E. Jansen         rlamtmp(:,:,i) = rlam(:,:)
85459599516SKenneth E. Jansen      enddo
85559599516SKenneth E. Jansen
85659599516SKenneth E. Jansenc
85759599516SKenneth E. Jansenc.... flop count
85859599516SKenneth E. Jansenc
85959599516SKenneth E. Jansen        flops = flops + 65*npro
86059599516SKenneth E. Jansen
86159599516SKenneth E. Jansenc.... reduce the diffusion contribution
86259599516SKenneth E. Jansenc
86359599516SKenneth E. Jansen
86459599516SKenneth E. Jansen        if (Navier .eq. 1) then
86559599516SKenneth E. Jansenc
86659599516SKenneth E. Jansenc.... calculate sigma
86759599516SKenneth E. Jansenc
86859599516SKenneth E. Jansen
86959599516SKenneth E. Jansen           do i = 1, nflow       ! diff. corr for every mode of Tau
87059599516SKenneth E. Jansen
87159599516SKenneth E. Jansen              c(:) = pt33 * (
87259599516SKenneth E. Jansen     &    Q(:,2,i) * ( compK(:, 1) * Q(:,2,i) + compK(:, 2) * Q(:,3,i)
87359599516SKenneth E. Jansen     &               + compK(:, 4) * Q(:,4,i) + compK(:, 7) * Q(:,5,i) )
87459599516SKenneth E. Jansen     &  + Q(:,3,i) * ( compK(:, 2) * Q(:,2,i) + compK(:, 3) * Q(:,3,i)
87559599516SKenneth E. Jansen     &               + compK(:, 5) * Q(:,4,i) + compK(:, 8) * Q(:,5,i) )
87659599516SKenneth E. Jansen     &  + Q(:,4,i) * ( compK(:, 4) * Q(:,2,i) + compK(:, 5) * Q(:,3,i)
87759599516SKenneth E. Jansen     &               + compK(:, 6) * Q(:,4,i) + compK(:, 9) * Q(:,5,i) )
87859599516SKenneth E. Jansen     &  + Q(:,5,i) * ( compK(:, 7) * Q(:,2,i) + compK(:, 8) * Q(:,3,i)
87959599516SKenneth E. Jansen     &               + compK(:, 9) * Q(:,4,i) + compK(:,10) * Q(:,5,i) )
88059599516SKenneth E. Jansen     &                  )
88159599516SKenneth E. Jansen
88259599516SKenneth E. Jansenc... get Peclet Number
88359599516SKenneth E. Jansen
88459599516SKenneth E. Jansen
88559599516SKenneth E. Jansen              Pe(:) = one / (c(:)*rlam(:,i))
88659599516SKenneth E. Jansen
88759599516SKenneth E. Jansen
88859599516SKenneth E. Jansenc
88959599516SKenneth E. Jansenc...  branch out into different polynomial orders
89059599516SKenneth E. Jansenc
89159599516SKenneth E. Jansen
89259599516SKenneth E. Jansen
89359599516SKenneth E. Jansen              if (ipord == 1) then ! linears - l = l^a*(coth(Pe)-1/Pe)
89459599516SKenneth E. Jansen                                   ! approx. l = l^a*min(1/3*Pe,1)
89559599516SKenneth E. Jansen              rlamtmp(:,i,1) = rlamtmp(:,i,1)*min(pt33*Pe(:),one)
89659599516SKenneth E. Jansen
89759599516SKenneth E. Jansen              endif
89859599516SKenneth E. Jansen
89959599516SKenneth E. Jansen              if (ipord == 2) then
90059599516SKenneth E. Jansen
90159599516SKenneth E. Jansen              rlamtmp(:,i,1) = rlamtmp(:,i,1)*min((1.0/15.0)*Pe(:),pt33)
90259599516SKenneth E. Jansen              rlamtmp(:,i,2) = rlamtmp(:,i,2)*min((1.0/12.0)*Pe(:),pt5)
90359599516SKenneth E. Jansen
90459599516SKenneth E. Jansen              endif
90559599516SKenneth E. Jansen
90659599516SKenneth E. Jansen              if (ipord == 3) then ! cubics - Recent Work
90759599516SKenneth E. Jansen
90859599516SKenneth E. Jansen                 do ii = 1, npro
90959599516SKenneth E. Jansen                    if (Pe(ii).lt.3.0) then
91059599516SKenneth E. Jansen                       rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*
91159599516SKenneth E. Jansen     &                      0.00054*Pe(ii)**2
91259599516SKenneth E. Jansen                    endif
91359599516SKenneth E. Jansen
91459599516SKenneth E. Jansen                    if ((Pe(ii).ge.3).and.(Pe(ii).lt.17.20)) then
91559599516SKenneth E. Jansen                       rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*(0.0114*Pe(ii)
91659599516SKenneth E. Jansen     &                      -0.0294)
91759599516SKenneth E. Jansen                    endif
91859599516SKenneth E. Jansen
91959599516SKenneth E. Jansen                    if (Pe(ii).ge.17.20) then
92059599516SKenneth E. Jansen                       rlamtmp(ii,i,1) = rlamtmp(ii,i,1)*(1.0/6.0)
92159599516SKenneth E. Jansen                    endif
92259599516SKenneth E. Jansen
92359599516SKenneth E. Jansen                 enddo
92459599516SKenneth E. Jansen
92559599516SKenneth E. Jansen                 rlamtmp(:,i,2) = rlamtmp(:,i,2)*min((1.0/45.0)*Pe(:)
92659599516SKenneth E. Jansen     &                ,0.2d0)
92759599516SKenneth E. Jansen                 rlamtmp(:,i,3) = rlamtmp(:,i,3)*min((1.0/25.0)*Pe(:)
92859599516SKenneth E. Jansen     &                ,pt33)
92959599516SKenneth E. Jansen
93059599516SKenneth E. Jansen
93159599516SKenneth E. Jansen              endif             ! done w/ different polynomial orders
93259599516SKenneth E. Jansen
93359599516SKenneth E. Jansen           enddo                ! done with loop over dof's
93459599516SKenneth E. Jansen
93559599516SKenneth E. Jansen        endif                   ! done with diffusive correction
93659599516SKenneth E. Jansen
93759599516SKenneth E. Jansen
93859599516SKenneth E. Jansenc
93959599516SKenneth E. Jansenc.... form Tau (symmetric - entropy variables - then convert)
94059599516SKenneth E. Jansenc
94159599516SKenneth E. Jansen        do i = 1, ipord
94259599516SKenneth E. Jansen
94359599516SKenneth E. Jansen        STau(:, 1, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,1,1) +
94459599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,1,2) * Q(:,1,2) +
94559599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,1,3) * Q(:,1,3) +
94659599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,1,4) * Q(:,1,4) +
94759599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,1,5) * Q(:,1,5)
94859599516SKenneth E. Jansenc
94959599516SKenneth E. Jansen        STau(:, 2, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,2,1) +
95059599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,1,2) * Q(:,2,2) +
95159599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,1,3) * Q(:,2,3) +
95259599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,1,4) * Q(:,2,4) +
95359599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,1,5) * Q(:,2,5)
95459599516SKenneth E. Jansenc
95559599516SKenneth E. Jansen        STau(:, 3, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,2,1) +
95659599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,2,2) * Q(:,2,2) +
95759599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,2,3) * Q(:,2,3) +
95859599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,2,4) * Q(:,2,4) +
95959599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,2,5) * Q(:,2,5)
96059599516SKenneth E. Jansenc
96159599516SKenneth E. Jansen        STau(:, 4, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,3,1) +
96259599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,1,2) * Q(:,3,2) +
96359599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,1,3) * Q(:,3,3) +
96459599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,1,4) * Q(:,3,4) +
96559599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,1,5) * Q(:,3,5)
96659599516SKenneth E. Jansenc
96759599516SKenneth E. Jansen        STau(:, 5, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,3,1) +
96859599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,2,2) * Q(:,3,2) +
96959599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,2,3) * Q(:,3,3) +
97059599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,2,4) * Q(:,3,4) +
97159599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,2,5) * Q(:,3,5)
97259599516SKenneth E. Jansenc
97359599516SKenneth E. Jansen        STau(:, 6, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,3,1) +
97459599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,3,2) * Q(:,3,2) +
97559599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,3,3) * Q(:,3,3) +
97659599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,3,4) * Q(:,3,4) +
97759599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,3,5) * Q(:,3,5)
97859599516SKenneth E. Jansenc
97959599516SKenneth E. Jansen        STau(:, 7, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,4,1) +
98059599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,1,2) * Q(:,4,2) +
98159599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,1,3) * Q(:,4,3) +
98259599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,1,4) * Q(:,4,4) +
98359599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,1,5) * Q(:,4,5)
98459599516SKenneth E. Jansenc
98559599516SKenneth E. Jansen        STau(:, 8, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,4,1) +
98659599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,2,2) * Q(:,4,2) +
98759599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,2,3) * Q(:,4,3) +
98859599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,2,4) * Q(:,4,4) +
98959599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,2,5) * Q(:,4,5)
99059599516SKenneth E. Jansenc
99159599516SKenneth E. Jansen        STau(:, 9, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,4,1) +
99259599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,3,2) * Q(:,4,2) +
99359599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,3,3) * Q(:,4,3) +
99459599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,3,4) * Q(:,4,4) +
99559599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,3,5) * Q(:,4,5)
99659599516SKenneth E. Jansenc
99759599516SKenneth E. Jansen        STau(:,10, i) = rlamtmp(:,1,i) * Q(:,4,1) * Q(:,4,1) +
99859599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,4,2) * Q(:,4,2) +
99959599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,4,3) * Q(:,4,3) +
100059599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,4,4) * Q(:,4,4) +
100159599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,4,5) * Q(:,4,5)
100259599516SKenneth E. Jansenc
100359599516SKenneth E. Jansen        STau(:,11, i) = rlamtmp(:,1,i) * Q(:,1,1) * Q(:,5,1) +
100459599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,1,2) * Q(:,5,2) +
100559599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,1,3) * Q(:,5,3) +
100659599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,1,4) * Q(:,5,4) +
100759599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,1,5) * Q(:,5,5)
100859599516SKenneth E. Jansenc
100959599516SKenneth E. Jansen        STau(:,12, i) = rlamtmp(:,1,i) * Q(:,2,1) * Q(:,5,1) +
101059599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,2,2) * Q(:,5,2) +
101159599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,2,3) * Q(:,5,3) +
101259599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,2,4) * Q(:,5,4) +
101359599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,2,5) * Q(:,5,5)
101459599516SKenneth E. Jansenc
101559599516SKenneth E. Jansen        STau(:,13, i) = rlamtmp(:,1,i) * Q(:,3,1) * Q(:,5,1) +
101659599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,3,2) * Q(:,5,2) +
101759599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,3,3) * Q(:,5,3) +
101859599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,3,4) * Q(:,5,4) +
101959599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,3,5) * Q(:,5,5)
102059599516SKenneth E. Jansenc
102159599516SKenneth E. Jansen        STau(:,14, i) = rlamtmp(:,1,i) * Q(:,4,1) * Q(:,5,1) +
102259599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,4,2) * Q(:,5,2) +
102359599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,4,3) * Q(:,5,3) +
102459599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,4,4) * Q(:,5,4) +
102559599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,4,5) * Q(:,5,5)
102659599516SKenneth E. Jansenc
102759599516SKenneth E. Jansen        STau(:,15, i) = rlamtmp(:,1,i) * Q(:,5,1) * Q(:,5,1) +
102859599516SKenneth E. Jansen     &                rlamtmp(:,2,i) * Q(:,5,2) * Q(:,5,2) +
102959599516SKenneth E. Jansen     &                rlamtmp(:,3,i) * Q(:,5,3) * Q(:,5,3) +
103059599516SKenneth E. Jansen     &                rlamtmp(:,4,i) * Q(:,5,4) * Q(:,5,4) +
103159599516SKenneth E. Jansen     &                rlamtmp(:,5,i) * Q(:,5,5) * Q(:,5,5)
103259599516SKenneth E. Jansen
103359599516SKenneth E. Jansen      enddo
103459599516SKenneth E. Jansen
103559599516SKenneth E. Jansenc
103659599516SKenneth E. Jansenc... Form Primitive Variable Tau as [dY/dV]*tilde{Tau},
103759599516SKenneth E. Jansenc... see G.Hauke's thesis appendix for [dY/dV] matrix
103859599516SKenneth E. Jansenc
103959599516SKenneth E. Jansen      do k = 1, ipord
104059599516SKenneth E. Jansen
104159599516SKenneth E. Jansen         betaT = cp*T + pt5*(u1**2+u2**2+u3**2) !reuse betaT
104259599516SKenneth E. Jansen
104359599516SKenneth E. Jansen         Tau(:,1,1,k) = rho*T*(STau(:,1,k)+u1*STau(:,2,k)+
104459599516SKenneth E. Jansen     &        u2*STau(:,4,k)+u3*STau(:,7,k)+betaT*STau(:,11,k))
104559599516SKenneth E. Jansen         Tau(:,1,2,k) = rho*T*(STau(:,2,k)+u1*STau(:,3,k)+
104659599516SKenneth E. Jansen     &        u2*STau(:,5,k)+u3*STau(:,8,k)+betaT*STau(:,12,k))
104759599516SKenneth E. Jansen         Tau(:,1,3,k) = rho*T*(STau(:,4,k)+u1*STau(:,5,k)+
104859599516SKenneth E. Jansen     &        u2*STau(:,6,k)+u3*STau(:,9,k)+betaT*STau(:,13,k))
104959599516SKenneth E. Jansen         Tau(:,1,4,k) = rho*T*(STau(:,7,k)+u1*STau(:,8,k)+
105059599516SKenneth E. Jansen     &        u2*STau(:,9,k)+u3*STau(:,10,k)+betaT*STau(:,14,k))
105159599516SKenneth E. Jansen         Tau(:,1,5,k) = rho*T*(STau(:,11,k)+u1*STau(:,12,k)+
105259599516SKenneth E. Jansen     &        u2*STau(:,13,k)+u3*STau(:,14,k)+betaT*STau(:,15,k))
105359599516SKenneth E. Jansen
105459599516SKenneth E. Jansen
105559599516SKenneth E. Jansen         Tau(:,2,1,k) = T(:)*(STau(:,2,k) + u1(:)*STau(:,11,k))
105659599516SKenneth E. Jansen         Tau(:,2,2,k) = T(:)*(STau(:,3,k) + u1(:)*STau(:,12,k))
105759599516SKenneth E. Jansen         Tau(:,2,3,k) = T(:)*(STau(:,5,k) + u1(:)*STau(:,13,k))
105859599516SKenneth E. Jansen         Tau(:,2,4,k) = T(:)*(STau(:,8,k) + u1(:)*STau(:,14,k))
105959599516SKenneth E. Jansen         Tau(:,2,5,k) = T(:)*(STau(:,12,k) + u1(:)*STau(:,15,k))
106059599516SKenneth E. Jansen
106159599516SKenneth E. Jansen         Tau(:,3,1,k) = T(:)*(STau(:,4,k) + u2(:)*STau(:,11,k))
106259599516SKenneth E. Jansen         Tau(:,3,2,k) = T(:)*(STau(:,5,k) + u2(:)*STau(:,12,k))
106359599516SKenneth E. Jansen         Tau(:,3,3,k) = T(:)*(STau(:,6,k) + u2(:)*STau(:,13,k))
106459599516SKenneth E. Jansen         Tau(:,3,4,k) = T(:)*(STau(:,9,k) + u2(:)*STau(:,14,k))
106559599516SKenneth E. Jansen         Tau(:,3,5,k) = T(:)*(STau(:,13,k) + u2(:)*STau(:,15,k))
106659599516SKenneth E. Jansen
106759599516SKenneth E. Jansen         Tau(:,4,1,k) = T(:)*(STau(:,7,k) + u3(:)*STau(:,11,k))
106859599516SKenneth E. Jansen         Tau(:,4,2,k) = T(:)*(STau(:,8,k) + u3(:)*STau(:,12,k))
106959599516SKenneth E. Jansen         Tau(:,4,3,k) = T(:)*(STau(:,9,k) + u3(:)*STau(:,13,k))
107059599516SKenneth E. Jansen         Tau(:,4,4,k) = T(:)*(STau(:,10,k) + u3(:)*STau(:,14,k))
107159599516SKenneth E. Jansen         Tau(:,4,5,k) = T(:)*(STau(:,14,k) + u3(:)*STau(:,15,k))
107259599516SKenneth E. Jansen
107359599516SKenneth E. Jansen         betaT = T**2
107459599516SKenneth E. Jansen
107559599516SKenneth E. Jansen         Tau(:,5,1,k) = betaT(:)*STau(:,11,k)
107659599516SKenneth E. Jansen         Tau(:,5,2,k) = betaT(:)*STau(:,12,k)
107759599516SKenneth E. Jansen         Tau(:,5,3,k) = betaT(:)*STau(:,13,k)
107859599516SKenneth E. Jansen         Tau(:,5,4,k) = betaT(:)*STau(:,14,k)
107959599516SKenneth E. Jansen         Tau(:,5,5,k) = betaT(:)*STau(:,15,k)
108059599516SKenneth E. Jansen
108159599516SKenneth E. Jansen      enddo
108259599516SKenneth E. Jansen
108359599516SKenneth E. Jansenc
108459599516SKenneth E. Jansenc...  done with conversion to pressure primitive variables
108559599516SKenneth E. Jansenc...  now need to interface with the rest of the computations
108659599516SKenneth E. Jansenc
108759599516SKenneth E. Jansen
108859599516SKenneth E. Jansenc...  finally multiply this tau matrix times the
108959599516SKenneth E. Jansenc     two residual vectors
109059599516SKenneth E. Jansenc
109159599516SKenneth E. Jansenc ... calculate (tau Ly) --> (rLyi)
109259599516SKenneth E. Jansenc ... storing rLyi for the DC term
109359599516SKenneth E. Jansen
109459599516SKenneth E. Jansen
109559599516SKenneth E. Jansen        if(iDC .ne. 0) rLyitemp(:,:)=rLyi(:,:,1)
109659599516SKenneth E. Jansen
109759599516SKenneth E. Jansen        if(ires.eq.3 .or. ires .eq. 1) then
109859599516SKenneth E. Jansen           eigmax(:,:) = rLyi(:,:,1) !reuse
109959599516SKenneth E. Jansen           rLyi = zero
110059599516SKenneth E. Jansen           do k = 1, ipord
110159599516SKenneth E. Jansen              do i = 1, nflow
110259599516SKenneth E. Jansen                 do  j = 1, nflow
110359599516SKenneth E. Jansen                    rLyi(:,i,k) = rLyi(:,i,k)+Tau(:,i,j,k)*eigmax(:,j)
110459599516SKenneth E. Jansen                 enddo
110559599516SKenneth E. Jansen              enddo
110659599516SKenneth E. Jansen           enddo
110759599516SKenneth E. Jansen        endif
110859599516SKenneth E. Jansen
110959599516SKenneth E. Jansen
111059599516SKenneth E. Jansen        if(iDC .ne. 0) then
111159599516SKenneth E. Jansenc.....calculation of rTLS & raLS for DC term
111259599516SKenneth E. Jansenc
111359599516SKenneth E. Jansenc.....calculation of (Ly - S).tau^tilda*(Ly - S)
111459599516SKenneth E. Jansenc
111559599516SKenneth E. Jansen           rTLS = rLYItemp(:,1)     * (rLyi(:,1,1)*dVdY(:,1)
111659599516SKenneth E. Jansen     &        + dVdY(:,2)*rLyi(:,2,1) + dVdY(:,4)*rLyi(:,3,1)
111759599516SKenneth E. Jansen     &        + rLyi(:,4,1)*dVdY(:,7) + dVdY(:,11)*rLyi(:,5,1))
111859599516SKenneth E. Jansen     &        + rLyitemp(:,2)       * (rLyi(:,2,1)*dVdY(:,3)
111959599516SKenneth E. Jansen     &        + rLyi(:,3,1)*dVdY(:,5) + dVdY(:,8)*rLyi(:,4,1)
112059599516SKenneth E. Jansen     &        + rLyi(:,5,1)*dVdY(:,12))
112159599516SKenneth E. Jansen     &        + rLyitemp(:,3)       * (rLyi(:,3,1)*dVdY(:,6)
112259599516SKenneth E. Jansen     &        + dVdY(:,9)*rLyi(:,4,1) + dVdY(:,13)*rLyi(:,5,1))
112359599516SKenneth E. Jansen     &        + rLyitemp(:,4)       * (rLyi(:,4,1)*dVdY(:,10)
112459599516SKenneth E. Jansen     &        + dVdY(:,14)*rLyi(:,5,1))
112559599516SKenneth E. Jansen     &        + rLyitemp(:,5)       * (dVdY(:,15)*rLyi(:,5,1))
112659599516SKenneth E. Jansen
112759599516SKenneth E. Jansenc
112859599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S)
112959599516SKenneth E. Jansenc
113059599516SKenneth E. Jansen           raLS = two*rLyitemp(:,4)*rLyitemp(:,5)*A0inv(:,15)
113159599516SKenneth E. Jansen     &          + two*rLyitemp(:,3)*rLyitemp(:,5)*A0inv(:,14)
113259599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,2)*A0inv( :,6)
113359599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,3)*A0inv(:,10)
113459599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,4)*A0inv(:,11)
113559599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,3)*A0inv( :,7)
113659599516SKenneth E. Jansen     &          + two*rLyitemp(:,3)*rLyitemp(:,4)*A0inv(:,13)
113759599516SKenneth E. Jansen     &          + two*rLyitemp(:,2)*rLyitemp(:,5)*A0inv(:,12)
113859599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,4)*A0inv( :,8)
113959599516SKenneth E. Jansen     &          + two*rLyitemp(:,1)*rLyitemp(:,5)*A0inv( :,9)
114059599516SKenneth E. Jansen     &          + rLyitemp(:,1)**2*A0inv(:,1)
114159599516SKenneth E. Jansen     &          + rLyitemp(:,2)**2*A0inv(:,2)
114259599516SKenneth E. Jansen     &          + rLyitemp(:,3)**2*A0inv(:,3)
114359599516SKenneth E. Jansen     &          + rLyitemp(:,4)**2*A0inv(:,4)
114459599516SKenneth E. Jansen     &          + rLyitemp(:,5)**2*A0inv(:,5)
114559599516SKenneth E. Jansenc
114659599516SKenneth E. Jansenc.....****************calculation of giju for DC term***************
114759599516SKenneth E. Jansenc
114859599516SKenneth E. Jansenc.... for the notation of different numbering
114959599516SKenneth E. Jansenc
115059599516SKenneth E. Jansen           gijdu(:,1)=gijd(:,1)
115159599516SKenneth E. Jansen           gijdu(:,2)=gijd(:,3)
115259599516SKenneth E. Jansen           gijdu(:,3)=gijd(:,6)
115359599516SKenneth E. Jansen           gijdu(:,4)=gijd(:,2)
115459599516SKenneth E. Jansen           gijdu(:,5)=gijd(:,4)
115559599516SKenneth E. Jansen           gijdu(:,6)=gijd(:,5)
115659599516SKenneth E. Jansenc
115759599516SKenneth E. Jansenc
115859599516SKenneth E. Jansen           detgijI = one/(
115959599516SKenneth E. Jansen     &          gijdu(:,1) * gijdu(:,2) * gijdu(:,3)
116059599516SKenneth E. Jansen     &          - gijdu(:,1) * gijdu(:,6) * gijdu(:,6)
116159599516SKenneth E. Jansen     &          - gijdu(:,4) * gijdu(:,4) * gijdu(:,3)
116259599516SKenneth E. Jansen     &          + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two
116359599516SKenneth E. Jansen     &          - gijdu(:,5) * gijdu(:,5) * gijdu(:,2)
116459599516SKenneth E. Jansen     &          )
116559599516SKenneth E. Jansen           giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3)
116659599516SKenneth E. Jansen     &               - gijdu(:,6)**2)
116759599516SKenneth E. Jansen           giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3)
116859599516SKenneth E. Jansen     &               - gijdu(:,5)**2)
116959599516SKenneth E. Jansen           giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2)
117059599516SKenneth E. Jansen     &               - gijdu(:,4)**2)
117159599516SKenneth E. Jansen           giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6)
117259599516SKenneth E. Jansen     &               - gijdu(:,4)*gijdu(:,3) )
117359599516SKenneth E. Jansen           giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6)
117459599516SKenneth E. Jansen     &               - gijdu(:,5)*gijdu(:,2) )
117559599516SKenneth E. Jansen           giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5)
117659599516SKenneth E. Jansen     &               - gijdu(:,1)*gijdu(:,6) )
117759599516SKenneth E. Jansenc
117859599516SKenneth E. Jansen        endif                   ! end of iDC.ne.0
117959599516SKenneth E. Jansenc
118059599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi)
118159599516SKenneth E. Jansenc
118259599516SKenneth E. Jansen        if(ires.ne.1 ) then
118359599516SKenneth E. Jansen           eigmax(:,:) = rLymi(:,:,1)
118459599516SKenneth E. Jansen           rLymi = zero
118559599516SKenneth E. Jansen           do k = 1, ipord
118659599516SKenneth E. Jansen              do i = 1, nflow
118759599516SKenneth E. Jansen                 do j = 1, nflow
118859599516SKenneth E. Jansen         rLymi(:,i,k) = rLymi(:,i,k)+Tau(:,i,j,k)*eigmax(:,j)
118959599516SKenneth E. Jansen                 enddo
119059599516SKenneth E. Jansen              enddo
119159599516SKenneth E. Jansen           enddo
119259599516SKenneth E. Jansen        endif
119359599516SKenneth E. Jansenc
119459599516SKenneth E. Jansenc  INCORRECT NOW         flops = flops + 255*npro
119559599516SKenneth E. Jansenc
119659599516SKenneth E. Jansenc
119759599516SKenneth E. Jansenc.... return
119859599516SKenneth E. Jansenc
119959599516SKenneth E. Jansen      return
120059599516SKenneth E. Jansen      end
120159599516SKenneth E. Jansenc
120259599516SKenneth E. Jansen
120359599516SKenneth E. Jansen
120459599516SKenneth E. Jansen
120559599516SKenneth E. Jansen        subroutine e3tauSclr(rho,    rmu,    A0t,
120659599516SKenneth E. Jansen     &                       u1,     u2,     u3,
120759599516SKenneth E. Jansen     &                       dxidx,  rLyti,  rLymti,
120859599516SKenneth E. Jansen     &                       taut,   rk,     raLSt,
120959599516SKenneth E. Jansen     &                       rTLSt,  giju)
121059599516SKenneth E. Jansenc
121159599516SKenneth E. Jansenc----------------------------------------------------------------------
121259599516SKenneth E. Jansenc
121359599516SKenneth E. Jansenc This routine computes the diagonal Tau for least-squares operator.
121459599516SKenneth E. Jansenc This Tau is the one proposed for nearly incompressible flows by
121559599516SKenneth E. Jansenc Franca and Frey.  We receive the regular residual L operator and a
121659599516SKenneth E. Jansenc modified residual L operator, calculate tau, and return values for
121759599516SKenneth E. Jansenc tau and tau times these operators to maintain the format of past
121859599516SKenneth E. Jansenc ENSA codes
121959599516SKenneth E. Jansenc
122059599516SKenneth E. Jansenc input:
122159599516SKenneth E. Jansenc  rho    (npro)           : density
122259599516SKenneth E. Jansenc  T      (npro)           : temperature
122359599516SKenneth E. Jansenc  cp     (npro)           : specific heat at constant pressure
122459599516SKenneth E. Jansenc  u1     (npro)           : x1-velocity component
122559599516SKenneth E. Jansenc  u2     (npro)           : x2-velocity component
122659599516SKenneth E. Jansenc  u3     (npro)           : x3-velocity component
122759599516SKenneth E. Jansenc  dxidx  (npro,nsd,nsd)   : inverse of deformation gradient
122859599516SKenneth E. Jansenc  rLyti   (npro)          : least-squares residual vector
122959599516SKenneth E. Jansenc  rLymti   (npro)         : modified least-squares residual vector
123059599516SKenneth E. Jansenc
123159599516SKenneth E. Jansenc output:
123259599516SKenneth E. Jansenc  rLyti   (npro,nflow)     : least-squares residual vector
123359599516SKenneth E. Jansenc  rLymti   (npro,nflow)    : modified least-squares residual vector
123459599516SKenneth E. Jansenc  tau    (npro,3)         : 3 taus
123559599516SKenneth E. Jansenc
123659599516SKenneth E. Jansenc
123759599516SKenneth E. Jansenc Zdenek Johan, Summer 1990.  (Modified from e2tau.f)
123859599516SKenneth E. Jansenc Zdenek Johan, Winter 1991.  (Fortran 90)
123959599516SKenneth E. Jansenc----------------------------------------------------------------------
124059599516SKenneth E. Jansenc
124159599516SKenneth E. Jansen      use turbSA
124259599516SKenneth E. Jansen      include "common.h"
124359599516SKenneth E. Jansenc
124459599516SKenneth E. Jansen      dimension rho(npro),                 T(npro),
124559599516SKenneth E. Jansen     &            cp(npro),                  u1(npro),
124659599516SKenneth E. Jansen     &            u2(npro),                  u3(npro),
124759599516SKenneth E. Jansen     &            dxidx(npro,nsd,nsd),       rk(npro),
124859599516SKenneth E. Jansen     &            taut(npro),                rLyti(npro),
124959599516SKenneth E. Jansen     &            rLymti(npro)
125059599516SKenneth E. Jansenc
125159599516SKenneth E. Jansen        dimension rmu(npro),                 A0t(npro),
125259599516SKenneth E. Jansen     &		  gijd(npro,6),              uh1(npro),
125359599516SKenneth E. Jansen     &		  fact(npro),	             h2o2u(npro),
125459599516SKenneth E. Jansen     &            rlytitemp(npro),           raLSt(npro),
125559599516SKenneth E. Jansen     &            rTLSt(npro),               gijdu(npro,6),
125659599516SKenneth E. Jansen     &            giju(npro,6),              detgijI(npro)
125759599516SKenneth E. Jansenc
125859599516SKenneth E. Jansenc
125959599516SKenneth E. Jansen      call e3gijd( dxidx, gijd )
126059599516SKenneth E. Jansen
126159599516SKenneth E. Jansenc
126259599516SKenneth E. Jansenc  next form the diffusive length scale |u| h_1 = 2 ( ui (gijd)-1 uj)^{1/2}
126359599516SKenneth E. Jansenc
126459599516SKenneth E. Jansenc   dividing factor for the inverse of gijd
126559599516SKenneth E. Jansenc
126659599516SKenneth E. Jansen      fact = gijd(:,1) * gijd(:,3) * gijd(:,6)
126759599516SKenneth E. Jansen     &     - gijd(:,1) * gijd(:,5) * gijd(:,5)
126859599516SKenneth E. Jansen     &     - gijd(:,3) * gijd(:,4) * gijd(:,4)
126959599516SKenneth E. Jansen     &     - gijd(:,6) * gijd(:,2) * gijd(:,2)
127059599516SKenneth E. Jansen     &     + gijd(:,2) * gijd(:,4) * gijd(:,5) * two
127159599516SKenneth E. Jansenc
127259599516SKenneth E. Jansen      uh1=    u1*u1*(gijd(:,3)*gijd(:,6)-gijd(:,5)*gijd(:,5))
127359599516SKenneth E. Jansen     &     + u2*u2*(gijd(:,1)*gijd(:,6)-gijd(:,4)*gijd(:,4))
127459599516SKenneth E. Jansen     &     + u3*u3*(gijd(:,1)*gijd(:,3)-gijd(:,2)*gijd(:,2))
127559599516SKenneth E. Jansen     &     + two *(u1*u2*(gijd(:,4)*gijd(:,5)-gijd(:,2)*gijd(:,6))
127659599516SKenneth E. Jansen     &     + u1*u3*(gijd(:,2)*gijd(:,5)-gijd(:,4)*gijd(:,3))
127759599516SKenneth E. Jansen     &     + u2*u3*(gijd(:,4)*gijd(:,2)-gijd(:,1)*gijd(:,5)))
127859599516SKenneth E. Jansenc
127959599516SKenneth E. Jansenc   at this point we have (u h1)^2 * inverse coefficient^2 / 4
128059599516SKenneth E. Jansenc
128159599516SKenneth E. Jansenc                                    ^ fact
128259599516SKenneth E. Jansenc
128359599516SKenneth E. Jansen
128459599516SKenneth E. Jansen      uh1= two * sqrt(uh1/fact)
128559599516SKenneth E. Jansen
128659599516SKenneth E. Jansenc
128759599516SKenneth E. Jansenc  next form the advective length scale |u|/h_2 = 2 ( ui (gijd) uj)^{1/2}
128859599516SKenneth E. Jansenc
128959599516SKenneth E. Jansen      h2o2u =   u1*u1*gijd(:,1)
129059599516SKenneth E. Jansen     &     + u2*u2*gijd(:,3)
129159599516SKenneth E. Jansen     &     + u3*u3*gijd(:,6)
129259599516SKenneth E. Jansen     &     +(u1*u2*gijd(:,2)
129359599516SKenneth E. Jansen     &     + u1*u3*gijd(:,4)
129459599516SKenneth E. Jansen     &     + u2*u3*gijd(:,5))*two  + 1.0e-15 !FIX FOR INVALID MESHES
129559599516SKenneth E. Jansenc
129659599516SKenneth E. Jansenc  at this point we have (2 u / h_2)^2
129759599516SKenneth E. Jansenc
129859599516SKenneth E. Jansen
129959599516SKenneth E. Jansenc       call tnanqe(h2o2u,1,"riaconv ")
130059599516SKenneth E. Jansen
130159599516SKenneth E. Jansen      h2o2u = one / sqrt(h2o2u) ! this flips it over leaves it h_2/(2u)
130259599516SKenneth E. Jansenc
130359599516SKenneth E. Jansenc...  momentum tau
130459599516SKenneth E. Jansenc
130559599516SKenneth E. Jansenc
130659599516SKenneth E. Jansenc... rmu will now hold the total (molecular plus eddy) viscosity...
130759599516SKenneth E. Jansen      dts=one/(Dtgl*dtsfct)
130859599516SKenneth E. Jansen      if(iremoveStabTimeTerm.gt.0) dts = dts*100000  ! remove time term from scalar
1309*513954efSKenneth E. Jansen! Duct code had this       dts=1.0e16
131059599516SKenneth E. Jansen      taut(:)=min(dts,h2o2u)
131159599516SKenneth E. Jansen      taut(:)=taut(:)/rho
131259599516SKenneth E. Jansen      taut(:)=min(taut(:),h2o2u*h2o2u*rk*pt66*saSigma/rmu)
131359599516SKenneth E. Jansenc
131459599516SKenneth E. Jansenc...  finally multiply this tau matrix times the
131559599516SKenneth E. Jansenc     two residual vectors
131659599516SKenneth E. Jansenc
131759599516SKenneth E. Jansenc.... calculate (tau Lyt) --> (rLyti)
131859599516SKenneth E. Jansenc
131959599516SKenneth E. Jansenc.... storing rLyi for the DC term
132059599516SKenneth E. Jansen          rLytitemp=rLyti
132159599516SKenneth E. Jansen
132259599516SKenneth E. Jansen	if(ires.eq.3 .or. ires .eq. 1) then
132359599516SKenneth E. Jansen          rLyti(:) = taut(:) * rLyti(:)
132459599516SKenneth E. Jansen
132559599516SKenneth E. Jansen        endif
132659599516SKenneth E. Jansen        if(iDCSclr(1) .ne. 0) then
132759599516SKenneth E. Jansenc..... calculation of rTLS & raLS for DC term
132859599516SKenneth E. Jansenc..... calculation of (Ly - S).tau^tilda*(Ly - S)
132959599516SKenneth E. Jansenc
133059599516SKenneth E. Jansen         rTLSt = rLYtItemp(:)*rLyti(:)
133159599516SKenneth E. Jansenc
133259599516SKenneth E. Jansenc...... calculation of (Ly - S).A0inv*(Ly - S)
133359599516SKenneth E. Jansenc
133459599516SKenneth E. Jansen         raLSt = rLYtItemp(:) * rLYtItemp(:)
133559599516SKenneth E. Jansenc.....*****************calculation of giju for DC term******************
133659599516SKenneth E. Jansenc
133759599516SKenneth E. Jansenc.... for the notation of different numbering
133859599516SKenneth E. Jansenc
133959599516SKenneth E. Jansen           gijdu(:,1)=gijd(:,1)
134059599516SKenneth E. Jansen           gijdu(:,2)=gijd(:,3)
134159599516SKenneth E. Jansen           gijdu(:,3)=gijd(:,6)
134259599516SKenneth E. Jansen           gijdu(:,4)=gijd(:,2)
134359599516SKenneth E. Jansen           gijdu(:,5)=gijd(:,4)
134459599516SKenneth E. Jansen           gijdu(:,6)=gijd(:,5)
134559599516SKenneth E. Jansenc
134659599516SKenneth E. Jansenc  we are going to need this in the dc factor later so we calculate it.
134759599516SKenneth E. Jansenc
134859599516SKenneth E. Jansen         detgijI = one/(
134959599516SKenneth E. Jansen     &             gijdu(:,1) * gijdu(:,2) * gijdu(:,3)
135059599516SKenneth E. Jansen     &           - gijdu(:,1) * gijdu(:,6) * gijdu(:,6)
135159599516SKenneth E. Jansen     &           - gijdu(:,4) * gijdu(:,4) * gijdu(:,3)
135259599516SKenneth E. Jansen     &           + gijdu(:,4) * gijdu(:,5) * gijdu(:,6) * two
135359599516SKenneth E. Jansen     &           - gijdu(:,5) * gijdu(:,5) * gijdu(:,2)
135459599516SKenneth E. Jansen     &                 )
135559599516SKenneth E. Jansen          giju(:,1) = detgijI * (gijdu(:,2)*gijdu(:,3)
135659599516SKenneth E. Jansen     &              - gijdu(:,6)**2)
135759599516SKenneth E. Jansen          giju(:,2) = detgijI * (gijdu(:,1)*gijdu(:,3)
135859599516SKenneth E. Jansen     &              - gijdu(:,5)**2)
135959599516SKenneth E. Jansen          giju(:,3) = detgijI * (gijdu(:,1)*gijdu(:,2)
136059599516SKenneth E. Jansen     &              - gijdu(:,4)**2)
136159599516SKenneth E. Jansen          giju(:,4) = detgijI * (gijdu(:,5)*gijdu(:,6)
136259599516SKenneth E. Jansen     &              - gijdu(:,4)*gijdu(:,3) )
136359599516SKenneth E. Jansen          giju(:,5) = detgijI * (gijdu(:,4)*gijdu(:,6)
136459599516SKenneth E. Jansen     &              - gijdu(:,5)*gijdu(:,2) )
136559599516SKenneth E. Jansen          giju(:,6) = detgijI * (gijdu(:,4)*gijdu(:,5)
136659599516SKenneth E. Jansen     &              - gijdu(:,1)*gijdu(:,6) )
136759599516SKenneth E. Jansenc
136859599516SKenneth E. Jansen         endif    ! end of iDCSclr(1).ne.0
136959599516SKenneth E. Jansenc
137059599516SKenneth E. Jansenc.... calculate (tau Lym) --> (rLymi)
137159599516SKenneth E. Jansenc
137259599516SKenneth E. Jansenc        if(ires.ne.1 ) then
137359599516SKenneth E. Jansenc          rLymi(:,1) = tau(:,1) * rLymi(:,1)
137459599516SKenneth E. Jansenc          rLymi(:,2) = tau(:,2) * rLymi(:,2)
137559599516SKenneth E. Jansenc          rLymi(:,3) = tau(:,2) * rLymi(:,3)
137659599516SKenneth E. Jansenc          rLymi(:,4) = tau(:,2) * rLymi(:,4)
137759599516SKenneth E. Jansenc          rLymi(:,5) = tau(:,3) * rLymi(:,5)
137859599516SKenneth E. Jansenc        endif
137959599516SKenneth E. Jansenc
138059599516SKenneth E. Jansenc  INCORRECT NOW         flops = flops + 255*npro
138159599516SKenneth E. Jansenc
138259599516SKenneth E. Jansenc
138359599516SKenneth E. Jansenc.... return
138459599516SKenneth E. Jansenc
138559599516SKenneth E. Jansen      return
138659599516SKenneth E. Jansen      end
138759599516SKenneth E. Jansen
138859599516SKenneth E. Jansenc-----------------------------------------------------------------------
138959599516SKenneth E. Jansenc get the metric tensor g_{ij}=xi_{k,i} xi_{k,j}.
139059599516SKenneth E. Jansenc-----------------------------------------------------------------------
139159599516SKenneth E. Jansen      subroutine e3gijd( dxidx,  gijd )
139259599516SKenneth E. Jansen
139359599516SKenneth E. Jansen      include "common.h"
139459599516SKenneth E. Jansen
139559599516SKenneth E. Jansen      real*8  dxidx(npro,nsd,nsd),  gijd(npro,6),
139659599516SKenneth E. Jansen     &        tmp1(npro),           tmp2(npro),
139759599516SKenneth E. Jansen     &        tmp3(npro)
139859599516SKenneth E. Jansenc  form metric tensor g_{ij}=xi_{k,i} xi_{k,j}.  It is a symmetric
139959599516SKenneth E. Jansenc  tensor so we only form 6 components and use symmetric matrix numbering.
140059599516SKenneth E. Jansenc  (d for down since giju=[gijd]^{-1})
140159599516SKenneth E. Jansenc  (Note FARZIN and others use numbering of 1,2,3 being diagonal 456 off)
140259599516SKenneth E. Jansen      if (lcsyst .ge. 2) then
140359599516SKenneth E. Jansen
140459599516SKenneth E. Jansen         gijd(:,1) = dxidx(:,1,1) * dxidx(:,1,1)
140559599516SKenneth E. Jansen     &            + dxidx(:,2,1) * dxidx(:,2,1)
140659599516SKenneth E. Jansen     &            + dxidx(:,3,1) * dxidx(:,3,1)
140759599516SKenneth E. Jansenc
140859599516SKenneth E. Jansen         gijd(:,2) = dxidx(:,1,1) * dxidx(:,1,2)
140959599516SKenneth E. Jansen     &            + dxidx(:,2,1) * dxidx(:,2,2)
141059599516SKenneth E. Jansen     &            + dxidx(:,3,1) * dxidx(:,3,2)
141159599516SKenneth E. Jansenc
141259599516SKenneth E. Jansen         gijd(:,3) = dxidx(:,1,2) * dxidx(:,1,2)
141359599516SKenneth E. Jansen     &            + dxidx(:,2,2) * dxidx(:,2,2)
141459599516SKenneth E. Jansen     &            + dxidx(:,3,2) * dxidx(:,3,2)
141559599516SKenneth E. Jansenc
141659599516SKenneth E. Jansen         gijd(:,4) = dxidx(:,1,1) * dxidx(:,1,3)
141759599516SKenneth E. Jansen     &            + dxidx(:,2,1) * dxidx(:,2,3)
141859599516SKenneth E. Jansen     &            + dxidx(:,3,1) * dxidx(:,3,3)
141959599516SKenneth E. Jansenc
142059599516SKenneth E. Jansen         gijd(:,5) = dxidx(:,1,2) * dxidx(:,1,3)
142159599516SKenneth E. Jansen     &            + dxidx(:,2,2) * dxidx(:,2,3)
142259599516SKenneth E. Jansen     &            + dxidx(:,3,2) * dxidx(:,3,3)
142359599516SKenneth E. Jansenc
142459599516SKenneth E. Jansen         gijd(:,6) = dxidx(:,1,3) * dxidx(:,1,3)
142559599516SKenneth E. Jansen     &            + dxidx(:,2,3) * dxidx(:,2,3)
142659599516SKenneth E. Jansen     &        + dxidx(:,3,3) * dxidx(:,3,3)
142759599516SKenneth E. Jansenc
142859599516SKenneth E. Jansen      else   if (lcsyst .eq. 1) then
142959599516SKenneth E. Jansenc
143059599516SKenneth E. Jansenc  There is an invariance problem with tets
143159599516SKenneth E. Jansenc  It is fixed by the following modifications to gijd
143259599516SKenneth E. Jansenc
143359599516SKenneth E. Jansen
143459599516SKenneth E. Jansen         c1 = 1.259921049894873D+00
143559599516SKenneth E. Jansen         c2 = 6.299605249474365D-01
143659599516SKenneth E. Jansenc
143759599516SKenneth E. Jansen         tmp1(:) = c1 * dxidx(:,1,1) + c2 *(dxidx(:,2,1)+dxidx(:,3,1))
143859599516SKenneth E. Jansen         tmp2(:) = c1 * dxidx(:,2,1) + c2 *(dxidx(:,1,1)+dxidx(:,3,1))
143959599516SKenneth E. Jansen         tmp3(:) = c1 * dxidx(:,3,1) + c2 *(dxidx(:,1,1)+dxidx(:,2,1))
144059599516SKenneth E. Jansen         gijd(:,1) = dxidx(:,1,1) * tmp1
144159599516SKenneth E. Jansen     1             + dxidx(:,2,1) * tmp2
144259599516SKenneth E. Jansen     2             + dxidx(:,3,1) * tmp3
144359599516SKenneth E. Jansenc
144459599516SKenneth E. Jansen         tmp1(:) = c1 * dxidx(:,1,2) + c2 *(dxidx(:,2,2)+dxidx(:,3,2))
144559599516SKenneth E. Jansen         tmp2(:) = c1 * dxidx(:,2,2) + c2 *(dxidx(:,1,2)+dxidx(:,3,2))
144659599516SKenneth E. Jansen         tmp3(:) = c1 * dxidx(:,3,2) + c2 *(dxidx(:,1,2)+dxidx(:,2,2))
144759599516SKenneth E. Jansen         gijd(:,2) = dxidx(:,1,1) * tmp1
144859599516SKenneth E. Jansen     1             + dxidx(:,2,1) * tmp2
144959599516SKenneth E. Jansen     2             + dxidx(:,3,1) * tmp3
145059599516SKenneth E. Jansenc
145159599516SKenneth E. Jansen         gijd(:,3) = dxidx(:,1,2) * tmp1
145259599516SKenneth E. Jansen     1             + dxidx(:,2,2) * tmp2
145359599516SKenneth E. Jansen     2             + dxidx(:,3,2) * tmp3
145459599516SKenneth E. Jansenc
145559599516SKenneth E. Jansen         tmp1(:) = c1 * dxidx(:,1,3) + c2 *(dxidx(:,2,3)+dxidx(:,3,3))
145659599516SKenneth E. Jansen         tmp2(:) = c1 * dxidx(:,2,3) + c2 *(dxidx(:,1,3)+dxidx(:,3,3))
145759599516SKenneth E. Jansen         tmp3(:) = c1 * dxidx(:,3,3) + c2 *(dxidx(:,1,3)+dxidx(:,2,3))
145859599516SKenneth E. Jansen         gijd(:,4) = dxidx(:,1,1) * tmp1
145959599516SKenneth E. Jansen     1             + dxidx(:,2,1) * tmp2
146059599516SKenneth E. Jansen     2             + dxidx(:,3,1) * tmp3
146159599516SKenneth E. Jansenc
146259599516SKenneth E. Jansen         gijd(:,5) = dxidx(:,1,2) * tmp1
146359599516SKenneth E. Jansen     1             + dxidx(:,2,2) * tmp2
146459599516SKenneth E. Jansen     2             + dxidx(:,3,2) * tmp3
146559599516SKenneth E. Jansenc
146659599516SKenneth E. Jansen         gijd(:,6) = dxidx(:,1,3) * tmp1
146759599516SKenneth E. Jansen     1             + dxidx(:,2,3) * tmp2
146859599516SKenneth E. Jansen     2             + dxidx(:,3,3) * tmp3
146959599516SKenneth E. Jansenc
147059599516SKenneth E. Jansen      else
147159599516SKenneth E. Jansenc  This is just the hex copied from above.  I have
147259599516SKenneth E. Jansenc  to find my notes on invariance factors for wedges
147359599516SKenneth E. Jansenc
147459599516SKenneth E. Jansen
147559599516SKenneth E. Jansen         gijd(:,1) = dxidx(:,1,1) * dxidx(:,1,1)
147659599516SKenneth E. Jansen     &            + dxidx(:,2,1) * dxidx(:,2,1)
147759599516SKenneth E. Jansen     &            + dxidx(:,3,1) * dxidx(:,3,1)
147859599516SKenneth E. Jansenc
147959599516SKenneth E. Jansen         gijd(:,2) = dxidx(:,1,1) * dxidx(:,1,2)
148059599516SKenneth E. Jansen     &            + dxidx(:,2,1) * dxidx(:,2,2)
148159599516SKenneth E. Jansen     &            + dxidx(:,3,1) * dxidx(:,3,2)
148259599516SKenneth E. Jansenc
148359599516SKenneth E. Jansen         gijd(:,3) = dxidx(:,1,2) * dxidx(:,1,2)
148459599516SKenneth E. Jansen     &            + dxidx(:,2,2) * dxidx(:,2,2)
148559599516SKenneth E. Jansen     &            + dxidx(:,3,2) * dxidx(:,3,2)
148659599516SKenneth E. Jansenc
148759599516SKenneth E. Jansen         gijd(:,4) = dxidx(:,1,1) * dxidx(:,1,3)
148859599516SKenneth E. Jansen     &            + dxidx(:,2,1) * dxidx(:,2,3)
148959599516SKenneth E. Jansen     &            + dxidx(:,3,1) * dxidx(:,3,3)
149059599516SKenneth E. Jansenc
149159599516SKenneth E. Jansen         gijd(:,5) = dxidx(:,1,2) * dxidx(:,1,3)
149259599516SKenneth E. Jansen     &            + dxidx(:,2,2) * dxidx(:,2,3)
149359599516SKenneth E. Jansen     &            + dxidx(:,3,2) * dxidx(:,3,3)
149459599516SKenneth E. Jansenc
149559599516SKenneth E. Jansen         gijd(:,6) = dxidx(:,1,3) * dxidx(:,1,3)
149659599516SKenneth E. Jansen     &            + dxidx(:,2,3) * dxidx(:,2,3)
149759599516SKenneth E. Jansen     &            + dxidx(:,3,3) * dxidx(:,3,3)
149859599516SKenneth E. Jansen      endif
149959599516SKenneth E. Jansenc
150059599516SKenneth E. Jansen      return
150159599516SKenneth E. Jansen      end
150259599516SKenneth E. Jansen
1503