saveqc.f.html | ![]() |
Source file: saveqc.f | |
Directory: /home/rjl/git/rjleveque/clawpack-4.x/amrclaw/2d/lib | |
Converted: Sun May 15 2011 at 19:16:15 using clawcode2html | |
This documentation file will not reflect any later changes in the source file. |
c c ================================================================ subroutine saveqc(level,nvar,naux) c ================================================================ c implicit double precision (a-h,o-z) include "call.i" logical sticksout c c ::::::::::::::::::::::::: SAVEQC ::::::::::::::::::::::::::::::::: c prepare new fine grids to save fluxes after each integration step c for future conservative fix-up on coarse grids. c save all boundary fluxes of fine grid (even if on a phys. bndry.) - c but only save space for every intrat of them. c::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::: c levc = level - 1 hxc = hxposs(levc) hyc = hyposs(levc) mkid = lstart(level) 10 if (mkid .eq. 0) go to 99 nx = node(ndihi,mkid)-node(ndilo,mkid) + 1 ny = node(ndjhi,mkid)-node(ndjlo,mkid) + 1 ikeep = nx/intratx(level-1) jkeep = ny/intraty(level-1) lenbc = 2*(ikeep+jkeep) ist = node(ffluxptr,mkid) time = rnode(timemult,mkid) c make coarsened enlarged patch for conservative fixup ilo = node(ndilo,mkid) jlo = node(ndjlo,mkid) ihi = node(ndihi,mkid) jhi = node(ndjhi,mkid) iclo = ilo/intratx(level-1) - 1 jclo = jlo/intraty(level-1) - 1 ichi = (ihi+1)/intratx(level-1) jchi = (jhi+1)/intraty(level-1) nrow = ichi-iclo+1 ncol = jchi-jclo+1 xl = rnode(cornxlo,mkid) - hxc yb = rnode(cornylo,mkid) - hyc xr = rnode(cornxhi,mkid) + hxc yt = rnode(cornyhi,mkid) + hyc loctmp = igetsp(nrow*ncol*(nvar+naux)) loctx = loctmp + nrow*ncol*nvar locaux = node(storeaux,mkid) if (iclo .lt. 0 .or. ichi .eq. iregsz(levc) .or. & jclo .lt. 0 .or. jchi .eq. jregsz(levc)) then sticksout = .true. else sticksout = .false. endif if (sticksout .and. (xperdom.or.yperdom.or.spheredom)) then iperim = nrow*ncol locflip = igetsp(iperim*(nvar+naux)) call preicall(alloc(loctmp),alloc(loctx),nrow,ncol,nvar, . naux,iclo,ichi,jclo,jchi,level-1,locflip) call reclam(locflip,iperim*(nvar+naux)) else call icall(alloc(loctmp),alloc(loctx),nrow,ncol,nvar,naux, . iclo,ichi,jclo,jchi,level-1,1,1,sticksout) endif call bc2amr(alloc(loctmp),alloc(loctx),nrow,ncol,nvar,naux, . hxc,hyc,level,time, . xl,xr,yb,yt, . xlower,ylower,xupper,yupper, . xperdom,yperdom,spheredom) call cstore(alloc(loctmp),nrow,ncol,nvar, . alloc(ist+nvar*lenbc),lenbc,naux,alloc(loctx), . alloc(ist+2*nvar*lenbc)) call reclam(loctmp,nrow*ncol*(nvar+naux)) mkid = node(levelptr,mkid) go to 10 99 return end