159599516SKenneth E. Jansen subroutine AsIGMR (y, ac, x, xmudmi, 259599516SKenneth E. Jansen & shp, shgl, ien, 359599516SKenneth E. Jansen & mater, res, rmes, 459599516SKenneth E. Jansen & BDiag, qres, EGmass, rerr) 559599516SKenneth E. Jansenc 659599516SKenneth E. Jansenc---------------------------------------------------------------------- 759599516SKenneth E. Jansenc 859599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 959599516SKenneth E. Jansenc interior elements. 1059599516SKenneth E. Jansenc 1159599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 1259599516SKenneth E. Jansenc---------------------------------------------------------------------- 1359599516SKenneth E. Jansenc 1459599516SKenneth E. Jansen use rlssave ! Use the resolved Leonard stresses at the nodes. 15*0d32f9a8SKenneth E. Jansen use timedataC ! time series 1659599516SKenneth E. Jansen use specialBC ! get ytarget to localize and send down 1759599516SKenneth E. Jansen include "common.h" 1859599516SKenneth E. Jansenc 1959599516SKenneth E. Jansen dimension y(nshg,ndofl), ac(nshg,ndofl), 2059599516SKenneth E. Jansen & x(numnp,nsd), 2159599516SKenneth E. Jansen & shp(nshl,MAXQPT), 2259599516SKenneth E. Jansen & shgl(nsd,nshl,MAXQPT), 2359599516SKenneth E. Jansen & ien(npro,nshl), 2459599516SKenneth E. Jansen & mater(npro), res(nshg,nflow), 2559599516SKenneth E. Jansen & rmes(nshg,nflow), BDiag(nshg,nflow,nflow), 2659599516SKenneth E. Jansen & qres(nshg,idflx) 2759599516SKenneth E. Jansen 2859599516SKenneth E. Jansenc 2959599516SKenneth E. Jansen dimension ycl(npro,nshl,ndofl), acl(npro,nshl,ndof), 3059599516SKenneth E. Jansen & xl(npro,nenl,nsd), ytargetl(npro,nshl,nflow), 3159599516SKenneth E. Jansen & rl(npro,nshl,nflow), rml(npro,nshl,nflow), 3259599516SKenneth E. Jansen & BDiagl(npro,nshl,nflow,nflow), 3359599516SKenneth E. Jansen & ql(npro,nshl,idflx) 3459599516SKenneth E. Jansenc 3559599516SKenneth E. Jansen dimension xmudmi(npro,ngauss) 3659599516SKenneth E. Jansen dimension sgn(npro,nshl), EGmass(npro,nedof,nedof) 3759599516SKenneth E. Jansen 3859599516SKenneth E. Jansen dimension rlsl(npro,nshl,6) 3959599516SKenneth E. Jansen real*8 rerrl(npro,nshl,6), rerr(nshg,10) 4059599516SKenneth E. Jansen 4159599516SKenneth E. Jansenc 4259599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis 4359599516SKenneth E. Jansenc functions. 4459599516SKenneth E. Jansenc 4559599516SKenneth E. Jansenc 4659599516SKenneth E. Jansen if (ipord .gt. 1) then 4759599516SKenneth E. Jansen call getsgn(ien,sgn) 4859599516SKenneth E. Jansen endif 4959599516SKenneth E. Jansenc 5059599516SKenneth E. Jansenc.... gather the variables 5159599516SKenneth E. Jansenc 5259599516SKenneth E. Jansen call localy(y, ycl, ien, ndofl, 'gather ') 5359599516SKenneth E. Jansen call localy(ac, acl, ien, ndofl, 'gather ') 5459599516SKenneth E. Jansen call localx(x, xl, ien, nsd, 'gather ') 5559599516SKenneth E. Jansen call local (qres, ql, ien, idflx, 'gather ') 5659599516SKenneth E. Jansen 5759599516SKenneth E. Jansen if(matflg(5,1).ge.4 ) 5859599516SKenneth E. Jansen & call localy (ytarget, ytargetl, ien, nflow, 'gather ') 5959599516SKenneth E. Jansen 6059599516SKenneth E. Jansen 6159599516SKenneth E. Jansen if( (iLES.gt.10).and.(iLES.lt.20)) then ! bardina 6259599516SKenneth E. Jansen call local (rls, rlsl, ien, 6, 'gather ') 6359599516SKenneth E. Jansen else 6459599516SKenneth E. Jansen rlsl = zero 6559599516SKenneth E. Jansen endif 6659599516SKenneth E. Jansenc 6759599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner 6859599516SKenneth E. Jansenc 6959599516SKenneth E. Jansen rl = zero 7059599516SKenneth E. Jansen BDiagl = zero 7159599516SKenneth E. Jansen 7259599516SKenneth E. Jansen if(ierrcalc.eq.1) rerrl = zero 7359599516SKenneth E. Jansen ttim(31) = ttim(31) - secs(0.0) 7459599516SKenneth E. Jansen 7559599516SKenneth E. Jansen call e3 (ycl, ycl, acl, shp, 7659599516SKenneth E. Jansen & shgl, xl, rl, rml, xmudmi, 7759599516SKenneth E. Jansen & BDiagl, ql, sgn, rlsl, EGmass, 7859599516SKenneth E. Jansen & rerrl, ytargetl) 7959599516SKenneth E. Jansen 8059599516SKenneth E. Jansen ttim(31) = ttim(31) + secs(0.0) 8159599516SKenneth E. Jansenc 8259599516SKenneth E. Jansenc.... assemble the residual and modified residual 8359599516SKenneth E. Jansenc 8459599516SKenneth E. Jansen call local (res, rl, ien, nflow, 'scatter ') 8559599516SKenneth E. Jansenc 8659599516SKenneth E. Jansen if ( ierrcalc .eq. 1 ) then 8759599516SKenneth E. Jansen call local (rerr, rerrl, ien, 6, 'scatter ') 8859599516SKenneth E. Jansen endif 8959599516SKenneth E. Jansenc 9059599516SKenneth E. Jansenc.... extract and assemble the Block-Diagonal (see note in elmgmr, line 280) 9159599516SKenneth E. Jansenc 9259599516SKenneth E. Jansen if (iprec .ne. 0) then 9359599516SKenneth E. Jansen do i = 1, nshl 9459599516SKenneth E. Jansen do j = 1, nflow 9559599516SKenneth E. Jansen i0 = (i - 1) * nflow + j 9659599516SKenneth E. Jansen do k = 1, nflow 9759599516SKenneth E. Jansen j0 = (i - 1) * nflow + k 9859599516SKenneth E. Jansen BDiagl(:,i,j,k) = EGmass(:,i0,j0) 9959599516SKenneth E. Jansen enddo 10059599516SKenneth E. Jansen enddo 10159599516SKenneth E. Jansen enddo 10259599516SKenneth E. Jansen call local (BDiag, BDiagl, ien, nflow*nflow, 'scatter ') 10359599516SKenneth E. Jansen endif 10459599516SKenneth E. Jansen 10559599516SKenneth E. Jansenc 10659599516SKenneth E. Jansenc... call timeseries 10759599516SKenneth E. Jansenc 10859599516SKenneth E. Jansen 10959599516SKenneth E. Jansen if (exts) then 11059599516SKenneth E. Jansen if ((iter.eq.1).and.(mod(lstep,freq).eq.0)) then 11159599516SKenneth E. Jansen call timeseries(ycl,xl,ien,sgn) 11259599516SKenneth E. Jansen endif 11359599516SKenneth E. Jansen endif 11459599516SKenneth E. Jansen 11559599516SKenneth E. Jansenc 11659599516SKenneth E. Jansenc.... end 11759599516SKenneth E. Jansenc 11859599516SKenneth E. Jansen return 11959599516SKenneth E. Jansen end 12059599516SKenneth E. Jansenc 12159599516SKenneth E. Jansenc 12259599516SKenneth E. Jansenc 12359599516SKenneth E. Jansen subroutine AsIGMRSclr (y, ac, 12459599516SKenneth E. Jansen & x, elDwl, 12559599516SKenneth E. Jansen & shp, shgl, ien, 12659599516SKenneth E. Jansen & mater, rest, rmest, 12759599516SKenneth E. Jansen & qrest, EGmasst, Diag) 12859599516SKenneth E. Jansenc 12959599516SKenneth E. Jansenc---------------------------------------------------------------------- 13059599516SKenneth E. Jansenc 13159599516SKenneth E. Jansenc This routine computes and assembles the data corresponding to the 13259599516SKenneth E. Jansenc interior elements. 13359599516SKenneth E. Jansenc 13459599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 13559599516SKenneth E. Jansenc---------------------------------------------------------------------- 13659599516SKenneth E. Jansenc 13759599516SKenneth E. Jansen use turbSA 13859599516SKenneth E. Jansen include "common.h" 13959599516SKenneth E. Jansenc 14059599516SKenneth E. Jansen dimension y(nshg,ndof), 14159599516SKenneth E. Jansen & ac(nshg,ndof), 14259599516SKenneth E. Jansen & x(numnp,nsd), 14359599516SKenneth E. Jansen & shp(nshl,MAXQPT), shgl(nsd,nshl,MAXQPT), 14459599516SKenneth E. Jansen & ien(npro,nshl), 14559599516SKenneth E. Jansen & mater(npro), rest(nshg), 14659599516SKenneth E. Jansen & rmest(nshg), Diag(nshg), 14759599516SKenneth E. Jansen & qrest(nshg) 14859599516SKenneth E. Jansen 14959599516SKenneth E. Jansenc 15059599516SKenneth E. Jansen dimension ycl(npro,nshl,ndof), 15159599516SKenneth E. Jansen & acl(npro,nshl,ndof), dwl(npro,nenl), 15259599516SKenneth E. Jansen & xl(npro,nenl,nsd), Diagl(npro,nshl), 15359599516SKenneth E. Jansen & rtl(npro,nshl), rmtl(npro,nshl), 15459599516SKenneth E. Jansen & qtl(npro,nshl), sgn(npro,nshl) 15559599516SKenneth E. Jansenc 15659599516SKenneth E. Jansen dimension EGmasst(npro,nshape, nshape) 15759599516SKenneth E. Jansen real*8 elDwl(npro) 15859599516SKenneth E. Jansenc.... create the matrix of mode signs for the hierarchic basis 15959599516SKenneth E. Jansenc functions. 16059599516SKenneth E. Jansenc 16159599516SKenneth E. Jansen call getsgn(ien,sgn) 16259599516SKenneth E. Jansenc 16359599516SKenneth E. Jansenc 16459599516SKenneth E. Jansenc.... gather the variables 16559599516SKenneth E. Jansenc 16659599516SKenneth E. Jansen call localy (y, ycl, ien, ndof, 'gather ') 16759599516SKenneth E. Jansen call localy (ac, acl, ien, ndof, 'gather ') 16859599516SKenneth E. Jansen call localx (x, xl, ien, nsd, 'gather ') 16959599516SKenneth E. Jansenc call local (qrest, qtl, ien, 1, 'gather ') 17059599516SKenneth E. Jansen if (iRANS .lt. 0) then 17159599516SKenneth E. Jansen call localx (d2wall, dwl, ien, 1, 'gather ') 17259599516SKenneth E. Jansen endif 17359599516SKenneth E. Jansenc 17459599516SKenneth E. Jansenc.... get the element residuals, LHS matrix, and preconditioner 17559599516SKenneth E. Jansenc 17659599516SKenneth E. Jansen rtl = zero 17759599516SKenneth E. Jansen Diagl = zero 17859599516SKenneth E. Jansen 17959599516SKenneth E. Jansen ttim(31) = ttim(31) - tmr() 18059599516SKenneth E. Jansen 18159599516SKenneth E. Jansen call e3Sclr (ycl, acl, 18259599516SKenneth E. Jansen & dwl, elDwl, shp, 18359599516SKenneth E. Jansen & sgn, shgl, xl, 18459599516SKenneth E. Jansen & rtl, rmtl, 18559599516SKenneth E. Jansen & qtl, EGmasst ) 18659599516SKenneth E. Jansen 18759599516SKenneth E. Jansen ttim(31) = ttim(31) + tmr() 18859599516SKenneth E. Jansenc 18959599516SKenneth E. Jansenc.... assemble the residual and modified residual 19059599516SKenneth E. Jansenc 19159599516SKenneth E. Jansen call local (rest, rtl, ien, 1, 'scatter ') 19259599516SKenneth E. Jansenc 19359599516SKenneth E. Jansenc.... extract and assemble the Diagonal 19459599516SKenneth E. Jansenc 19559599516SKenneth E. Jansen if (iprec .ne. 0) then 19659599516SKenneth E. Jansen do i=1,nshl 19759599516SKenneth E. Jansen Diagl(:,i)=EGmassT(:,i,i) 19859599516SKenneth E. Jansen enddo 19959599516SKenneth E. Jansen call local(Diag, Diagl, ien, 1, 'scatter ') 20059599516SKenneth E. Jansen endif 20159599516SKenneth E. Jansenc 20259599516SKenneth E. Jansenc.... end 20359599516SKenneth E. Jansenc 20459599516SKenneth E. Jansen return 20559599516SKenneth E. Jansen end 20659599516SKenneth E. Jansen 20759599516SKenneth E. Jansen 208