1*59599516SKenneth E. Jansen subroutine AsIGMR (y, ac, x, xmudmi, 2*59599516SKenneth E. Jansen & shp, shgl, ien, 3*59599516SKenneth E. Jansen & res, qres, 4*59599516SKenneth E. Jansen & xKebe, xGoC, rerr, CFLworst) 5*59599516SKenneth E. Jansenc 6*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 7*59599516SKenneth E. Jansenc 8*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 9*59599516SKenneth E. Jansenc interior elements. 10*59599516SKenneth E. Jansenc 11*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 12*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 13*59599516SKenneth E. Jansenc 14*59599516SKenneth E. Jansen use stats 15*59599516SKenneth E. Jansen use rlssave ! Use the resolved Leonard stresses at the nodes. 16*59599516SKenneth E. Jansen use timedata ! time series 17*59599516SKenneth E. Jansen use turbsa ! access to d2wall 18*59599516SKenneth E. Jansen 19*59599516SKenneth E. Jansen 20*59599516SKenneth E. Jansen include "common.h" 21*59599516SKenneth E. Jansenc 22*59599516SKenneth E. Jansen dimension y(nshg,ndofl), ac(nshg,ndofl), 23*59599516SKenneth E. Jansen & x(numnp,nsd), 24*59599516SKenneth E. Jansen & shp(nshl,ngauss), shgl(nsd,nshl,ngauss), 25*59599516SKenneth E. Jansen & ien(npro,nshl), 26*59599516SKenneth E. Jansen & res(nshg,nflow), 27*59599516SKenneth E. Jansen & qres(nshg,idflx) 28*59599516SKenneth E. Jansen 29*59599516SKenneth E. Jansenc 30*59599516SKenneth E. Jansen dimension yl(npro,nshl,ndofl), acl(npro,nshl,ndofl), 31*59599516SKenneth E. Jansen & xl(npro,nenl,nsd), dwl(npro,nenl), 32*59599516SKenneth E. Jansen & rl(npro,nshl,nflow), 33*59599516SKenneth E. Jansen & ql(npro,nshl,idflx) 34*59599516SKenneth E. Jansenc 35*59599516SKenneth E. Jansen dimension xKebe(npro,9,nshl,nshl), 36*59599516SKenneth E. Jansen & xGoC(npro,4,nshl,nshl) 37*59599516SKenneth E. Jansenc 38*59599516SKenneth E. Jansen dimension rlsl(npro,nshl,6) 39*59599516SKenneth E. Jansen 40*59599516SKenneth E. Jansenc 41*59599516SKenneth E. Jansen real*8 lStsVec(npro,nshl,nResDims) 42*59599516SKenneth E. Jansen 43*59599516SKenneth E. Jansen dimension xmudmi(npro,ngauss) 44*59599516SKenneth E. Jansen dimension sgn(npro,nshl) 45*59599516SKenneth E. Jansen dimension CFLworst(npro) 46*59599516SKenneth E. Jansenc 47*59599516SKenneth E. Jansen real*8 rerrl(npro,nshl,6), rerr(nshg,10) 48*59599516SKenneth E. Jansenc 49*59599516SKenneth E. Jansenc.... gather the variables 50*59599516SKenneth E. Jansenc 51*59599516SKenneth E. Jansenc 52*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions. 53*59599516SKenneth E. Jansenc 54*59599516SKenneth E. Jansen if (ipord .gt. 1) then 55*59599516SKenneth E. Jansen call getsgn(ien,sgn) 56*59599516SKenneth E. Jansen endif 57*59599516SKenneth E. Jansen 58*59599516SKenneth E. Jansen call localy(y, yl, ien, ndofl, 'gather ') 59*59599516SKenneth E. Jansen call localy(ac, acl, ien, ndofl, 'gather ') 60*59599516SKenneth E. Jansen call localx(x, xl, ien, nsd, 'gather ') 61*59599516SKenneth E. Jansen call local (qres, ql, ien, idflx, 'gather ') 62*59599516SKenneth E. Jansen if (iRANS .eq. -2) then ! kay-epsilon 63*59599516SKenneth E. Jansen call localx (d2wall, dwl, ien, 1, 'gather ') 64*59599516SKenneth E. Jansen endif 65*59599516SKenneth E. Jansen 66*59599516SKenneth E. Jansen if( (iLES.gt.10).and.(iLES.lt.20)) then ! bardina 67*59599516SKenneth E. Jansen call local (rls, rlsl, ien, 6, 'gather ') 68*59599516SKenneth E. Jansen else 69*59599516SKenneth E. Jansen rlsl = zero 70*59599516SKenneth E. Jansen endif 71*59599516SKenneth E. Jansen 72*59599516SKenneth E. Jansenc 73*59599516SKenneth E. Jansenc.... zero the matrices if they are being recalculated 74*59599516SKenneth E. Jansenc 75*59599516SKenneth E. Jansen if (lhs. eq. 1) then 76*59599516SKenneth E. Jansen xKebe = zero 77*59599516SKenneth E. Jansen xGoC = zero 78*59599516SKenneth E. Jansen endif 79*59599516SKenneth E. Jansenc 80*59599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner 81*59599516SKenneth E. Jansenc 82*59599516SKenneth E. Jansen rl = zero 83*59599516SKenneth E. Jansen 84*59599516SKenneth E. Jansen if(ierrcalc.eq.1) rerrl = zero 85*59599516SKenneth E. Jansen 86*59599516SKenneth E. Jansen call e3 (yl, acl, dwl, shp, 87*59599516SKenneth E. Jansen & shgl, xl, rl, 88*59599516SKenneth E. Jansen & ql, xKebe, xGoC, xmudmi, 89*59599516SKenneth E. Jansen & sgn, rerrl, rlsl, CFLworst) 90*59599516SKenneth E. Jansenc 91*59599516SKenneth E. Jansenc.... assemble the statistics residual 92*59599516SKenneth E. Jansenc 93*59599516SKenneth E. Jansen if ( stsResFlg .eq. 1 ) then 94*59599516SKenneth E. Jansen call e3StsRes ( xl, rl, lStsVec ) 95*59599516SKenneth E. Jansen call local( stsVec, lStsVec, ien, nResDims, 'scatter ') 96*59599516SKenneth E. Jansen else 97*59599516SKenneth E. Jansenc 98*59599516SKenneth E. Jansenc.... assemble the residual 99*59599516SKenneth E. Jansenc 100*59599516SKenneth E. Jansen call local (res, rl, ien, nflow, 'scatter ') 101*59599516SKenneth E. Jansen 102*59599516SKenneth E. Jansen if ( ierrcalc .eq. 1 ) then 103*59599516SKenneth E. Jansen call local (rerr, rerrl, ien, 6, 'scatter ') 104*59599516SKenneth E. Jansen endif 105*59599516SKenneth E. Jansen endif 106*59599516SKenneth E. Jansenc 107*59599516SKenneth E. Jansenc.... end 108*59599516SKenneth E. Jansenc 109*59599516SKenneth E. Jansen if (exts.and.ires.ne.2) then 110*59599516SKenneth E. Jansen if ((iter.eq.1).and.(mod(lstep,freq).eq.0)) then 111*59599516SKenneth E. Jansen call timeseries(yl,xl,ien,sgn) 112*59599516SKenneth E. Jansen endif 113*59599516SKenneth E. Jansen endif 114*59599516SKenneth E. Jansen 115*59599516SKenneth E. Jansen return 116*59599516SKenneth E. Jansen end 117*59599516SKenneth E. Jansen 118*59599516SKenneth E. Jansen 119*59599516SKenneth E. Jansen 120*59599516SKenneth E. JansenC^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ 121*59599516SKenneth E. Jansenc----------------------------------------------------------------------- 122*59599516SKenneth E. Jansenc======================================================================= 123*59599516SKenneth E. Jansen 124*59599516SKenneth E. Jansen 125*59599516SKenneth E. Jansen subroutine AsIGMRSclr(y, ac, x, 126*59599516SKenneth E. Jansen & shp, shgl, ien, 127*59599516SKenneth E. Jansen & res, qres, xSebe, xmudmi ) 128*59599516SKenneth E. Jansenc 129*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 130*59599516SKenneth E. Jansenc 131*59599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 132*59599516SKenneth E. Jansenc interior elements. 133*59599516SKenneth E. Jansenc 134*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 135*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 136*59599516SKenneth E. Jansenc 137*59599516SKenneth E. Jansen use turbSA 138*59599516SKenneth E. Jansen include "common.h" 139*59599516SKenneth E. Jansenc 140*59599516SKenneth E. Jansen dimension y(nshg,ndofl), ac(nshg,ndofl), 141*59599516SKenneth E. Jansen & x(numnp,nsd), 142*59599516SKenneth E. Jansen & shp(nshl,ngauss), shgl(nsd,nshl,ngauss), 143*59599516SKenneth E. Jansen & ien(npro,nshl), 144*59599516SKenneth E. Jansen & res(nshg), qres(nshg,nsd) 145*59599516SKenneth E. Jansen 146*59599516SKenneth E. Jansenc 147*59599516SKenneth E. Jansen real*8 yl(npro,nshl,ndofl), acl(npro,nshl,ndofl), 148*59599516SKenneth E. Jansen & xl(npro,nenl,nsd), 149*59599516SKenneth E. Jansen & rl(npro,nshl), ql(npro,nshl,nsd), 150*59599516SKenneth E. Jansen & dwl(npro,nenl) 151*59599516SKenneth E. Jansenc 152*59599516SKenneth E. Jansen real*8 xSebe(npro,nshl,nshl), xmudmi(npro,ngauss) 153*59599516SKenneth E. Jansenc 154*59599516SKenneth E. Jansenc.... gather the variables 155*59599516SKenneth E. Jansenc 156*59599516SKenneth E. Jansen real*8 sgn(npro,nshl) 157*59599516SKenneth E. Jansenc 158*59599516SKenneth E. Jansenc.... get the matrix of mode signs for the hierarchic basis functions. 159*59599516SKenneth E. Jansenc 160*59599516SKenneth E. Jansen if (ipord .gt. 1) then 161*59599516SKenneth E. Jansen call getsgn(ien,sgn) 162*59599516SKenneth E. Jansen endif 163*59599516SKenneth E. Jansen 164*59599516SKenneth E. Jansen call localy(y, yl, ien, ndofl, 'gather ') 165*59599516SKenneth E. Jansen call localy(ac, acl, ien, ndofl, 'gather ') 166*59599516SKenneth E. Jansen call localx(x, xl, ien, nsd, 'gather ') 167*59599516SKenneth E. Jansen if(iRANS.lt. 0) 168*59599516SKenneth E. Jansen & call localx(d2wall, dwl, ien, 1, 'gather ') 169*59599516SKenneth E. Jansen call local (qres, ql, ien, nsd, 'gather ') 170*59599516SKenneth E. Jansenc 171*59599516SKenneth E. Jansenc.... zero the matrices if they are being recalculated 172*59599516SKenneth E. Jansenc 173*59599516SKenneth E. Jansen if (lhs. eq. 1) then 174*59599516SKenneth E. Jansen xSebe = zero 175*59599516SKenneth E. Jansen endif 176*59599516SKenneth E. Jansenc 177*59599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner 178*59599516SKenneth E. Jansenc 179*59599516SKenneth E. Jansen rl = zero 180*59599516SKenneth E. Jansen call e3Sclr (yl, acl, shp, 181*59599516SKenneth E. Jansen & shgl, xl, dwl, 182*59599516SKenneth E. Jansen & rl, ql, xSebe, 183*59599516SKenneth E. Jansen & sgn, xmudmi) 184*59599516SKenneth E. Jansenc 185*59599516SKenneth E. Jansenc.... assemble the residual 186*59599516SKenneth E. Jansenc 187*59599516SKenneth E. Jansen call local (res, rl, ien, 1, 'scatter ') 188*59599516SKenneth E. Jansenc 189*59599516SKenneth E. Jansenc.... end 190*59599516SKenneth E. Jansenc 191*59599516SKenneth E. Jansen return 192*59599516SKenneth E. Jansen end 193