| domshrink.f.html |   | 
  | Source file:   domshrink.f | 
| Directory:    /Users/rjl/git/rjleveque/clawpack-4.6.3/amrclaw/2d/lib | 
| Converted:    Mon Jan 21 2013 at 20:15:10 
  using clawcode2html | 
| This documentation file will 
not reflect any later changes in the source file. | 
 
c
c ----------------------------------------------------
c
      subroutine domshrink(iflags2,iflags,idim,jdim)
      implicit double precision (a-h, o-z)
      include  "call.i"
      integer*1  iflags2(0:idim+1,0:jdim+1)
      integer*1  iflags (0:idim+1,0:jdim+1)
c
c :::::::::::::::::::::::::  DOMSHRINK ::::::::::::::::::::::::::::
c
c  shrink domain flags one cell for allowable properly nested domain
c  This is needed even for lcheck = lbase. More shrinking needed
c  for finer levels.
c
c :::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
      if (dprint) then
        write(outunit,*)" from domshrink: on entry, iflags2"
        do 10 jj = 1, jdim
        j = jdim + 1 - jj
        write(outunit,100)(iflags2(i,j),i=1,idim)
 100    format(80i1)
 10     continue
      endif
      do 40 j = 1, jdim
      do 40 i = 1, idim
         iflags(i,j) = iflags2(i,j)
         if (iflags2(i  ,j  ) .le. 0 .or.
     1       iflags2(i+1,j  ) .le. 0 .or. iflags2(i-1,j  ) .le. 0 .or. 
     2       iflags2(i+1,j+1) .le. 0 .or. iflags2(i-1,j+1) .le. 0 .or. 
     3       iflags2(i  ,j-1) .le. 0 .or. iflags2(i  ,j+1) .le. 0 .or.
     4       iflags2(i+1,j-1) .le. 0 .or. iflags2(i-1,j-1) .le. 0) then
                 iflags(i,j) = 0
          endif
 40   continue
c
c if border of domain touches a physical boundary then set domain in
c ghost cell as well
c
C WHY DOESNT THIS HAVE TO HAVE PERIODIC CLAUSE(AND spheredom)
       if (.not. xperdom) then
         do 55 j = 1, jdim
           if (iflags(1,j) .eq. 1) iflags(0,j) = 1
           if (iflags(idim,j) .eq. 1) iflags(idim+1,j) = 1
 55      continue
       endif
       if (.not. yperdom) then
         do 65 i = 1, idim
           if (iflags(i,1) .eq. 1) iflags(i,0) = 1
           if (iflags(i,jdim) .eq. 1) iflags(i,jdim+1) = 1
 65      continue
       endif
      if (dprint) then
        write(outunit,*)" from domshrink: on exit, iflags"
        do 70 jj = 1, jdim
        j = jdim + 1 - jj
        write(outunit,100)(iflags(i,j),i=1,idim)
 70     continue
      endif
      return
      end