1*59599516SKenneth E. Jansen subroutine ItrRes (yp, yc, x, 2*59599516SKenneth E. Jansen & shp, shgl, 3*59599516SKenneth E. Jansen & iBC, BC, shpb, 4*59599516SKenneth E. Jansen & shglb, rmes, iper, 5*59599516SKenneth E. Jansen & ilwork, ac) 6*59599516SKenneth E. Jansenc 7*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 8*59599516SKenneth E. Jansenc 9*59599516SKenneth E. Jansenc This routine calculates the modified residual vector. 10*59599516SKenneth E. Jansenc 11*59599516SKenneth E. Jansenc 12*59599516SKenneth E. Jansenc Zdenek Johan, Winter 1991. (Fortran 90) 13*59599516SKenneth E. Jansenc---------------------------------------------------------------------- 14*59599516SKenneth E. Jansenc 15*59599516SKenneth E. Jansen use pointer_data 16*59599516SKenneth E. Jansenc 17*59599516SKenneth E. Jansen include "common.h" 18*59599516SKenneth E. Jansen include "mpif.h" 19*59599516SKenneth E. Jansen include "auxmpi.h" 20*59599516SKenneth E. Jansenc 21*59599516SKenneth E. Jansen dimension yp(nshg,nflow), yc(nshg,ndof), 22*59599516SKenneth E. Jansen & x(numnp,nsd), ac(nshg,ndof), 23*59599516SKenneth E. Jansen & iBC(nshg), BC(nshg,ndofBC), 24*59599516SKenneth E. Jansen & rmes(nshg,nflow), ilwork(nlwork), 25*59599516SKenneth E. Jansen & iper(nshg) 26*59599516SKenneth E. Jansenc 27*59599516SKenneth E. Jansen dimension shp(MAXTOP,maxsh,MAXQPT), 28*59599516SKenneth E. Jansen & shgl(MAXTOP,nsd,maxsh,MAXQPT), 29*59599516SKenneth E. Jansen & shpb(MAXTOP,maxsh,MAXQPT), 30*59599516SKenneth E. Jansen & shglb(MAXTOP,nsd,maxsh,MAXQPT) 31*59599516SKenneth E. Jansen 32*59599516SKenneth E. Jansen real*8, allocatable :: tmpshp(:,:), tmpshgl(:,:,:) 33*59599516SKenneth E. Jansen real*8, allocatable :: tmpshpb(:,:), tmpshglb(:,:,:) 34*59599516SKenneth E. Jansen 35*59599516SKenneth E. Jansen ttim(81) = ttim(81) - secs(0.0) 36*59599516SKenneth E. Jansen 37*59599516SKenneth E. Jansenc 38*59599516SKenneth E. Jansenc.... --------------------> interior elements <-------------------- 39*59599516SKenneth E. Jansenc 40*59599516SKenneth E. Jansen jump = 0 41*59599516SKenneth E. Jansen ires = 2 42*59599516SKenneth E. Jansen iprec = 0 43*59599516SKenneth E. Jansenc 44*59599516SKenneth E. Jansenc.... loop over the element-blocks 45*59599516SKenneth E. Jansenc 46*59599516SKenneth E. Jansen do iblk = 1, nelblk 47*59599516SKenneth E. Jansenc 48*59599516SKenneth E. Jansenc.... set up the parameters 49*59599516SKenneth E. Jansenc$$$c 50*59599516SKenneth E. Jansenc$$$ iel = lcblk(1,iblk) 51*59599516SKenneth E. Jansenc$$$ nenl = lcblk(5,iblk) 52*59599516SKenneth E. Jansenc$$$ mattyp = lcblk(7,iblk) 53*59599516SKenneth E. Jansenc$$$ ndofl = lcblk(8,iblk) 54*59599516SKenneth E. Jansenc$$$ npro = lcblk(1,iblk+1) - iel 55*59599516SKenneth E. Jansenc 56*59599516SKenneth E. Jansen nenl = lcblk(5,iblk) ! no. of vertices per element 57*59599516SKenneth E. Jansen iel = lcblk(1,iblk) 58*59599516SKenneth E. Jansen lelCat = lcblk(2,iblk) 59*59599516SKenneth E. Jansen lcsyst = lcblk(3,iblk) 60*59599516SKenneth E. Jansen iorder = lcblk(4,iblk) 61*59599516SKenneth E. Jansen nenl = lcblk(5,iblk) ! no. of vertices per element 62*59599516SKenneth E. Jansen nshl = lcblk(10,iblk) 63*59599516SKenneth E. Jansen mattyp = lcblk(7,iblk) 64*59599516SKenneth E. Jansen ndofl = lcblk(8,iblk) 65*59599516SKenneth E. Jansen nsymdl = lcblk(9,iblk) 66*59599516SKenneth E. Jansen npro = lcblk(1,iblk+1) - iel 67*59599516SKenneth E. Jansen ngauss = nint(lcsyst) 68*59599516SKenneth E. Jansenc 69*59599516SKenneth E. Jansenc 70*59599516SKenneth E. Jansenc.... compute and assemble the residuals and the preconditioner 71*59599516SKenneth E. Jansenc 72*59599516SKenneth E. Jansen allocate (tmpshp(nshl, MAXQPT)) 73*59599516SKenneth E. Jansen allocate (tmpshgl(nsd,nshl,MAXQPT)) 74*59599516SKenneth E. Jansen 75*59599516SKenneth E. Jansen tmpshp(1:nshl,:) = shp(lcsyst,1:nshl,:) 76*59599516SKenneth E. Jansen tmpshgl(:,1:nshl,:) = shgl(lcsyst,:,1:nshl,:) 77*59599516SKenneth E. Jansen 78*59599516SKenneth E. Jansen call AsIRes (yp, yc, 79*59599516SKenneth E. Jansen & x, mxmudmi(iblk)%p, 80*59599516SKenneth E. Jansen & tmpshp, tmpshgl, 81*59599516SKenneth E. Jansen & mien(iblk)%p, mmat(iblk)%p, 82*59599516SKenneth E. Jansen & rmes, ac) 83*59599516SKenneth E. Jansen 84*59599516SKenneth E. Jansen deallocate (tmpshp) 85*59599516SKenneth E. Jansen deallocate (tmpshgl) 86*59599516SKenneth E. Jansen 87*59599516SKenneth E. Jansenc 88*59599516SKenneth E. Jansenc.... end of interior element loop 89*59599516SKenneth E. Jansenc 90*59599516SKenneth E. Jansen enddo 91*59599516SKenneth E. Jansenc 92*59599516SKenneth E. Jansenc.... --------------------> boundary elements <-------------------- 93*59599516SKenneth E. Jansenc 94*59599516SKenneth E. Jansen if (Navier .eq. 1 .and. Jactyp.ne.0) then 95*59599516SKenneth E. Jansenc 96*59599516SKenneth E. Jansenc.... loop over the elements 97*59599516SKenneth E. Jansenc 98*59599516SKenneth E. Jansen do iblk = 1, nelblb 99*59599516SKenneth E. Jansenc 100*59599516SKenneth E. Jansenc.... set up the parameters 101*59599516SKenneth E. Jansenc$$$c 102*59599516SKenneth E. Jansenc$$$ iel = lcblkb(1,iblk) 103*59599516SKenneth E. Jansenc$$$ nenl = lcblkb(5,iblk) 104*59599516SKenneth E. Jansenc$$$ nenbl = lcblkb(6,iblk) 105*59599516SKenneth E. Jansenc$$$ mattyp = lcblkb(7,iblk) 106*59599516SKenneth E. Jansenc$$$ ndofl = lcblkb(8,iblk) 107*59599516SKenneth E. Jansenc$$$ npro = lcblkb(1,iblk+1) - iel 108*59599516SKenneth E. Jansenc$$$c 109*59599516SKenneth E. Jansenc 110*59599516SKenneth E. Jansen iel = lcblkb(1,iblk) 111*59599516SKenneth E. Jansen lelCat = lcblkb(2,iblk) 112*59599516SKenneth E. Jansen lcsyst = lcblkb(3,iblk) 113*59599516SKenneth E. Jansen iorder = lcblkb(4,iblk) 114*59599516SKenneth E. Jansen nenl = lcblkb(5,iblk) ! no. of vertices per element 115*59599516SKenneth E. Jansen nenbl = lcblkb(6,iblk) ! no. of vertices per bdry. face 116*59599516SKenneth E. Jansen mattyp = lcblkb(7,iblk) 117*59599516SKenneth E. Jansen ndofl = lcblkb(8,iblk) 118*59599516SKenneth E. Jansen nshl = lcblkb(9,iblk) 119*59599516SKenneth E. Jansen nshlb = lcblkb(10,iblk) 120*59599516SKenneth E. Jansen npro = lcblkb(1,iblk+1) - iel 121*59599516SKenneth E. Jansen if(lcsyst.eq.3) lcsyst=nenbl 122*59599516SKenneth E. Jansen ngaussb = nintb(lcsyst) 123*59599516SKenneth E. Jansenc 124*59599516SKenneth E. Jansen allocate (tmpshpb(nshl,MAXQPT)) 125*59599516SKenneth E. Jansen allocate (tmpshglb(nsd,nshl,MAXQPT)) 126*59599516SKenneth E. Jansen 127*59599516SKenneth E. Jansen tmpshpb(1:nshl,:) = shpb(lcsyst,1:nshl,:) 128*59599516SKenneth E. Jansen tmpshglb(:,1:nshl,:) = shglb(lcsyst,:,1:nshl,:) 129*59599516SKenneth E. Jansen 130*59599516SKenneth E. Jansenc 131*59599516SKenneth E. Jansenc.... compute and assemble the residuals 132*59599516SKenneth E. Jansenc 133*59599516SKenneth E. Jansen 134*59599516SKenneth E. Jansen call AsBRes (yp, yc, x, 135*59599516SKenneth E. Jansen & tmpshpb, tmpshglb, 136*59599516SKenneth E. Jansen & mienb(iblk)%p, mmatb(iblk)%p, 137*59599516SKenneth E. Jansen & miBCB(iblk)%p, mBCB(iblk)%p, 138*59599516SKenneth E. Jansen & rmes) 139*59599516SKenneth E. Jansenc 140*59599516SKenneth E. Jansen 141*59599516SKenneth E. Jansen deallocate (tmpshpb) 142*59599516SKenneth E. Jansen deallocate (tmpshglb) 143*59599516SKenneth E. Jansenc.... end of boundary element loop 144*59599516SKenneth E. Jansenc 145*59599516SKenneth E. Jansen enddo 146*59599516SKenneth E. Jansen 147*59599516SKenneth E. Jansen endif 148*59599516SKenneth E. Jansen 149*59599516SKenneth E. Jansen ttim(81) = ttim(81) + secs(0.0) 150*59599516SKenneth E. Jansen 151*59599516SKenneth E. Jansenc 152*59599516SKenneth E. Jansenc.... ----------------------> communications <----------------------- 153*59599516SKenneth E. Jansenc 154*59599516SKenneth E. Jansen if((iabc==1)) !are there any axisym bc's 155*59599516SKenneth E. Jansen & call rotabc(rmes(1,2), iBC, 'in ') 156*59599516SKenneth E. Jansenc 157*59599516SKenneth E. Jansen if (numpe > 1) then 158*59599516SKenneth E. Jansen call commu (rmes, ilwork, nflow, 'in ') 159*59599516SKenneth E. Jansen endif 160*59599516SKenneth E. Jansen 161*59599516SKenneth E. Jansenc 162*59599516SKenneth E. Jansenc.... ----------------------> post processing <---------------------- 163*59599516SKenneth E. Jansenc 164*59599516SKenneth E. Jansenc.... satisfy the BCs on the modified residual 165*59599516SKenneth E. Jansenc 166*59599516SKenneth E. Jansen call bc3Res (yc, iBC, BC, rmes, iper, ilwork) 167*59599516SKenneth E. Jansenc 168*59599516SKenneth E. Jansenc.... return 169*59599516SKenneth E. Jansenc 170*59599516SKenneth E. Jansen return 171*59599516SKenneth E. Jansen end 172