c*******************************************************************************
c* Fine to coarse grid interpolation using 4X4 bi-cubic interpolation.
c*     fine: The fine grid.
c*   coarse: The coarse grid.
c*  fext(6): The "extent" of the fine grid,
c*           fine(fext(1):fext(4),fext(2):fext(5),fext(3):fext(6))
c*  ffil(6): The "fill" of the fine grid.  The range of indices for which
c*           the fine grid containts valid points for use in interpolation.
c*  cint(6): The "interior" of the coarse grid.  The range of indices which
c*           are to be filled by the interpolation.
c*  cext(6): The "extent" of the coarse grid,
c*           coarse(cext(1):cext(4),cext(2):cext(5),cext(3):cext(6))
c*******************************************************************************
c* Implimentation notes:
c*    ffil must always be a superset of cint, ie.
c*          ffil(1) <= 2*cint(1) - 1,
c*          ffil(2) <= 2*cint(2) - 1,
c*          ffil(3) <= 2*cint(3) - 1,
c*          ffil(5) >= 2*cint(4)    ,
c*          ffil(5) >= 2*cint(5)    ,
c*          ffil(6) >= 2*cint(6)    .
c*******************************************************************************
      subroutine ftoc4x4x4(fine,coarse,fext,ffil,cint,cext)
      implicit none
      integer fext(6),ffil(6),cint(6),cext(6)
      real*8 fine(fext(1):fext(4),fext(2):fext(5),fext(3):fext(6))
      real*8 coarse(cext(1):cext(4),cext(2):cext(5),cext(3):cext(6))
      integer c1i,c1f,c2i,c2f,c3i,c3f
      integer f1i,f2i,f3i
      integer c1,c2,c3
      integer f10,f11,f12,f13,f20,f21,f22,f23,f30,f31,f32,f33
      real*8 F1o4096,F3375,F2025,F1215,F1125,F729,F675,F375,
     &       F405,F225,F135,F125,F81,F75,F45,F25,F15,F9,F5,F1
      parameter( F1o4096 = 1.D0/4096.D0, F3375 = 3375.D0,
     &           F2025 = 2025.D0, F1215 = 1215.D0, F1125 = 1125.D0,
     &           F729 = 729.D0, F675 = 675.D0, F375 = 375.D0,
     &           F405 = 405.D0, F225 = 225.D0, F135 = 135.D0,
     &           F125 = 125.D0, F81 = 81.D0, F75 = 75.D0,
     &           F45 = 45.D0, F25 = 25.D0, F15 = 15.D0,
     &           F9 = 9.D0, F5 = 5.D0, F1 = 1.D0)
c
c Make sure the "fill" region of the fine grid is at least 4X4.
      if(((ffil(4) - ffil(1)).lt.3).or.
     .   ((ffil(5) - ffil(2)).lt.3).or.((ffil(6) - ffil(3)).lt.3)) then
        write(*,*) "ftoc4x4x4: fill region smaller than 4X4X4!"
        stop
      end if
c
c Set the coarse interior which can be filled by "centered" 4X4X4 interpolation.
		c1i = cint(1)
		if(ffil(1).eq.(2*c1i-1)) c1i = c1i + 1
      f1i = 2*c1i
		c2i = cint(2)
		if(ffil(2).eq.(2*c2i-1)) c2i = c2i + 1
      f2i = 2*c2i
		c3i = cint(3)
		if(ffil(3).eq.(2*c3i-1)) c3i = c3i + 1
      f3i = 2*c3i
		c1f = cint(4)
		if(ffil(4).eq.(2*c1f)) c1f = c1f - 1
		c2f = cint(5)
		if(ffil(5).eq.(2*c2f)) c2f = c2f - 1
		c3f = cint(6)
		if(ffil(6).eq.(2*c3f)) c3f = c3f - 1
c-----------------------------------------------------------------------
c 
      f31 = f3i
      do c3 = c3i,c3f
        f21 = f2i
        do c2 = c2i,c2f
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &  F729*(fine( f11-1, f21-1, f31-1) + fine( f11  , f21-1, f31-1) +
     &        fine( f11-1, f21  , f31-1) + fine( f11  , f21  , f31-1) +
     &        fine( f11-1, f21-1, f31  ) + fine( f11  , f21-1, f31  ) +
     &        fine( f11-1, f21  , f31  ) + fine( f11  , f21  , f31  )  )
     & - F81*(fine( f11-1, f21-1, f31-2) + fine( f11  , f21-1, f31-2) +
     &        fine( f11-1, f21  , f31-2) + fine( f11  , f21  , f31-2) +
     &        fine( f11-1, f21-2, f31-1) + fine( f11  , f21-2, f31-1) +
     &        fine( f11-2, f21-1, f31-1) + fine( f11+1, f21-1, f31-1) +
     &        fine( f11-2, f21  , f31-1) + fine( f11+1, f21  , f31-1) +
     &        fine( f11-1, f21+1, f31-1) + fine( f11  , f21+1, f31-1) +
     &        fine( f11-1, f21-2, f31  ) + fine( f11  , f21-2, f31  ) +
     &        fine( f11-2, f21-1, f31  ) + fine( f11+1, f21-1, f31  ) +
     &        fine( f11-2, f21  , f31  ) + fine( f11+1, f21  , f31  ) +
     &        fine( f11-1, f21+1, f31  ) + fine( f11  , f21+1, f31  ) +
     &        fine( f11-1, f21-1, f31+1) + fine( f11  , f21-1, f31+1) +
     &        fine( f11-1, f21  , f31+1) + fine( f11  , f21  , f31+1)  )
     & +  F9*(fine( f11-1, f21-2, f31-2) + fine( f11  , f21-2, f31-2) +
     &        fine( f11-2, f21-1, f31-2) + fine( f11+1, f21-1, f31-2) +
     &        fine( f11-2, f21  , f31-2) + fine( f11+1, f21  , f31-2) +
     &        fine( f11-1, f21+1, f31-2) + fine( f11  , f21+1, f31-2) +
     &        fine( f11-2, f21-2, f31-1) + fine( f11+1, f21-2, f31-1) +
     &        fine( f11-2, f21+1, f31-1) + fine( f11+1, f21+1, f31-1) +
     &        fine( f11-2, f21-2, f31  ) + fine( f11+1, f21-2, f31  ) +
     &        fine( f11-2, f21+1, f31  ) + fine( f11+1, f21+1, f31  ) +
     &        fine( f11-1, f21-2, f31+1) + fine( f11  , f21-2, f31+1) +
     &        fine( f11-2, f21-1, f31+1) + fine( f11+1, f21-1, f31+1) +
     &        fine( f11-2, f21  , f31+1) + fine( f11+1, f21  , f31+1) +
     &        fine( f11-1, f21+1, f31+1) + fine( f11  , f21+1, f31+1)  )
     & -  F1*(fine( f11-2, f21-2, f31-2) + fine( f11+1, f21-2, f31-2) +
     &        fine( f11-2, f21+1, f31-2) + fine( f11+1, f21+1, f31-2) +
     &        fine( f11-2, f21-2, f31+1) + fine( f11+1, f21-2, f31+1) +
     &        fine( f11-2, f21+1, f31+1) + fine( f11+1, f21+1, f31+1)  )
     &      )
            f11 = f11 + 2
          end do
          f21 = f21 + 2
        end do
        f31 = f31 + 2
      end do
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c
c Set cint(1) boundary
      if(c1i.gt.cint(1)) then
        c1 = cint(1)
        f10 = 2*c1- 1 
        f11 = f10 + 1
        f12 = f11 + 1
        f13 = f12 + 1
c
c Set cint(1)-cint(3) edge
        if(c3i.gt.cint(3)) then
          c3 = cint(3)
          f30 = 2*c3- 1
          f31 = f30 + 1
          f32 = f31 + 1
          f33 = f32 + 1
          f21 = f2i
          do c2 = c2i,c2f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21-1, f31) + fine( f11, f21  , f31)  )
     &        + F675*(fine( f11, f21-1, f30) + fine( f11, f21  , f30) +
     &                fine( f10, f21-1, f31) + fine( f10, f21  , f31) -
     &                fine( f12, f21-1, f31) - fine( f12, f21  , f31) -
     &                fine( f11, f21-1, f32) - fine( f11, f21  , f32)  )
     &        + F225*(fine( f10, f21-1, f30) + fine( f10, f21  , f30) -
     &                fine( f12, f21-1, f30) - fine( f12, f21  , f30) -
     &                fine( f11, f21-2, f31) - fine( f11, f21+1, f31) -
     &                fine( f10, f21-1, f32) - fine( f10, f21  , f32) +
     &                fine( f12, f21-1, f32) + fine( f12, f21  , f32)  )
     &        + F135*(fine( f13, f21-1, f31) + fine( f13, f21  , f31) +
     &                fine( f11, f21-1, f33) + fine( f11, f21  , f33)  )
     &        -  F75*(fine( f11, f21-2, f30) + fine( f11, f21+1, f30) +
     &                fine( f10, f21-2, f31) + fine( f10, f21+1, f31) -
     &                fine( f12, f21-2, f31) - fine( f12, f21+1, f31) -
     &                fine( f11, f21-2, f32) - fine( f11, f21+1, f32)  )
     &        +  F45*(fine( f13, f21-1, f30) + fine( f13, f21  , f30) -
     &                fine( f13, f21-1, f32) - fine( f13, f21  , f32) +
     &                fine( f10, f21-1, f33) + fine( f10, f21  , f33) -
     &                fine( f12, f21-1, f33) - fine( f12, f21  , f33)  )
     &        -  F25*(fine( f10, f21-2, f30) + fine( f10, f21+1, f30) -
     &                fine( f12, f21-2, f30) - fine( f12, f21+1, f30) -
     &                fine( f10, f21-2, f32) - fine( f10, f21+1, f32) +
     &                fine( f12, f21-2, f32) + fine( f12, f21+1, f32)  )
     &        -  F15*(fine( f13, f21-2, f31) + fine( f13, f21+1, f31) +
     &                fine( f11, f21-2, f33) + fine( f11, f21+1, f33)  )
     &        +   F9*(fine( f13, f21-1, f33) + fine( f13, f21  , f33)  )
     &        -   F5*(fine( f13, f21-2, f30) + fine( f13, f21+1, f30) -
     &                fine( f13, f21-2, f32) - fine( f13, f21+1, f32) +
     &                fine( f10, f21-2, f33) + fine( f10, f21+1, f33) -
     &                fine( f12, f21-2, f33) - fine( f12, f21+1, f33)  )
     &        -   F1*(fine( f13, f21-2, f33) + fine( f13, f21+1, f33)  )
     &      )
            f21 = f21 + 2
          end do
        end if
c
c Set cint(1) face
        f31 = f3i
        do c3 = c3i,c3f
          f21 = f2i
          do c2 = c2i,c2f
            coarse(c1,c2,c3) = F1o4096*(
     &     F1215*(fine( f11, f21-1, f31-1) + fine( f11, f21  , f31-1) +
     &            fine( f11, f21-1, f31  ) + fine( f11, f21  , f31  )  )
     &    + F405*(fine( f10, f21-1, f31-1) + fine( f10, f21  , f31-1) -
     &            fine( f12, f21-1, f31-1) - fine( f12, f21  , f31-1) +
     &            fine( f10, f21-1, f31  ) + fine( f10, f21  , f31  ) -
     &            fine( f12, f21-1, f31  ) - fine( f12, f21  , f31  )  )
     &    - F135*(fine( f11, f21-1, f31-2) + fine( f11, f21  , f31-2) +
     &            fine( f11, f21-2, f31-1) + fine( f11, f21+1, f31-1) +
     &            fine( f11, f21-2, f31  ) + fine( f11, f21+1, f31  ) +
     &            fine( f11, f21-1, f31+1) + fine( f11, f21  , f31+1)  )
     &    +  F81*(fine( f13, f21-1, f31-1) + fine( f13, f21  , f31-1) +
     &            fine( f13, f21-1, f31  ) + fine( f13, f21  , f31  )  )
     &    -  F45*(fine( f10, f21-1, f31-2) + fine( f10, f21  , f31-2) -
     &            fine( f12, f21-1, f31-2) - fine( f12, f21  , f31-2) +
     &            fine( f10, f21-2, f31-1) + fine( f10, f21+1, f31-1) -
     &            fine( f12, f21-2, f31-1) - fine( f12, f21+1, f31-1) +
     &            fine( f10, f21-2, f31  ) + fine( f10, f21+1, f31  ) -
     &            fine( f12, f21-2, f31  ) - fine( f12, f21+1, f31  ) +
     &            fine( f10, f21-1, f31+1) + fine( f10, f21  , f31+1) -
     &            fine( f12, f21-1, f31+1) - fine( f12, f21  , f31+1)  )
     &    +  F15*(fine( f11, f21-2, f31-2) + fine( f11, f21+1, f31-2) +
     &            fine( f11, f21-2, f31+1) + fine( f11, f21+1, f31+1)  )
     &    -   F9*(fine( f13, f21-1, f31-2) + fine( f13, f21  , f31-2) +
     &            fine( f13, f21-2, f31-1) + fine( f13, f21+1, f31-1) +
     &            fine( f13, f21-2, f31  ) + fine( f13, f21+1, f31  ) +
     &            fine( f13, f21-1, f31+1) + fine( f13, f21  , f31+1)  )
     &    +   F5*(fine( f10, f21-2, f31-2) + fine( f10, f21+1, f31-2) -
     &            fine( f12, f21-2, f31-2) - fine( f12, f21+1, f31-2) +
     &            fine( f10, f21-2, f31+1) + fine( f10, f21+1, f31+1) -
     &            fine( f12, f21-2, f31+1) - fine( f12, f21+1, f31+1)  )
     &    +   F1*(fine( f13, f21-2, f31-2) + fine( f13, f21+1, f31-2) +
     &            fine( f13, f21-2, f31+1) + fine( f13, f21+1, f31+1)  )
     &      )
            f21 = f21 + 2
          end do
          f31 = f31 + 2
        end do
c
c Set cint(1)-cint(6) edge
        if(c3f.lt.cint(6)) then
          c3 = cint(6)
          f30 = 2*c3
          f31 = f30 - 1
          f32 = f31 - 1
          f33 = f32 - 1
          f21 = f2i
          do c2 = c2i,c2f
            coarse(c1,c2,c3) = F1o4096*(
     &       + F2025*(fine( f11, f21-1, f31) + fine( f11, f21  , f31)  )
     &        + F675*(fine( f11, f21-1, f30) + fine( f11, f21  , f30) +
     &                fine( f10, f21-1, f31) + fine( f10, f21  , f31) -
     &                fine( f12, f21-1, f31) - fine( f12, f21  , f31) -
     &                fine( f11, f21-1, f32) - fine( f11, f21  , f32)  )
     &        + F225*(fine( f10, f21-1, f30) + fine( f10, f21  , f30) -
     &                fine( f12, f21-1, f30) - fine( f12, f21  , f30) -
     &                fine( f11, f21-2, f31) - fine( f11, f21+1, f31) -
     &                fine( f10, f21-1, f32) - fine( f10, f21  , f32) +
     &                fine( f12, f21-1, f32) + fine( f12, f21  , f32)  )
     &        + F135*(fine( f13, f21-1, f31) + fine( f13, f21  , f31) +
     &                fine( f11, f21-1, f33) + fine( f11, f21  , f33)  )
     &        -  F75*(fine( f11, f21-2, f30) + fine( f11, f21+1, f30) +
     &                fine( f10, f21-2, f31) + fine( f10, f21+1, f31) -
     &                fine( f12, f21-2, f31) - fine( f12, f21+1, f31) -
     &                fine( f11, f21-2, f32) - fine( f11, f21+1, f32)  )
     &        +  F45*(fine( f13, f21-1, f30) + fine( f13, f21  , f30) -
     &                fine( f13, f21-1, f32) - fine( f13, f21  , f32) +
     &                fine( f10, f21-1, f33) + fine( f10, f21  , f33) -
     &                fine( f12, f21-1, f33) - fine( f12, f21  , f33)  )
     &        -  F25*(fine( f10, f21-2, f30) + fine( f10, f21+1, f30) -
     &                fine( f12, f21-2, f30) - fine( f12, f21+1, f30) -
     &                fine( f10, f21-2, f32) - fine( f10, f21+1, f32) +
     &                fine( f12, f21-2, f32) + fine( f12, f21+1, f32)  )
     &        -  F15*(fine( f13, f21-2, f31) + fine( f13, f21+1, f31) +
     &                fine( f11, f21-2, f33) + fine( f11, f21+1, f33)  )
     &        +   F9*(fine( f13, f21-1, f33) + fine( f13, f21  , f33)  )
     &        -   F5*(fine( f13, f21-2, f30) + fine( f13, f21+1, f30) -
     &                fine( f13, f21-2, f32) - fine( f13, f21+1, f32) +
     &                fine( f10, f21-2, f33) + fine( f10, f21+1, f33) -
     &                fine( f12, f21-2, f33) - fine( f12, f21+1, f33)  )
     &        -   F1*(fine( f13, f21-2, f33) + fine( f13, f21+1, f33)  )
     &      )
            f21 = f21 + 2
          end do
        end if
c
c Set cint(1)--cint(5) edge
        if(c2f.lt.cint(5)) then
          c2 = cint(5)
          f20 = 2*c2
          f21 = f20 - 1
          f22 = f21 - 1
          f23 = f22 - 1
c
c Set cint(1)-cint(5)-cint(3) corner
          if(c3i.gt.cint(3)) then
            c3 = cint(3)
            f30 = 2*c3- 1
            f31 = f30 + 1
            f32 = f31 + 1
            f33 = f32 + 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
c
c Set cint(1)-cint(5) edge
          f31 = f3i
          do c3 = c3i,c3f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21, f31-1) + fine( f11, f21, f31  )  )
     &        + F675*(fine( f11, f20, f31-1) + fine( f10, f21, f31-1) -
     &                fine( f12, f21, f31-1) - fine( f11, f22, f31-1) +
     &                fine( f11, f20, f31  ) + fine( f10, f21, f31  ) -
     &                fine( f12, f21, f31  ) - fine( f11, f22, f31  )  )
     &        - F225*(fine( f11, f21, f31-2) - fine( f10, f20, f31-1) +
     &                fine( f12, f20, f31-1) + fine( f10, f22, f31-1) -
     &                fine( f12, f22, f31-1) - fine( f10, f20, f31  ) +
     &                fine( f12, f20, f31  ) + fine( f10, f22, f31  ) -
     &                fine( f12, f22, f31  ) + fine( f11, f21, f31+1)  )
     &        + F135*(fine( f13, f21, f31-1) + fine( f11, f23, f31-1) +
     &                fine( f13, f21, f31  ) + fine( f11, f23, f31  )  )
     &        -  F75*(fine( f11, f20, f31-2) + fine( f10, f21, f31-2) -
     &                fine( f12, f21, f31-2) - fine( f11, f22, f31-2) +
     &                fine( f11, f20, f31+1) + fine( f10, f21, f31+1) -
     &                fine( f12, f21, f31+1) - fine( f11, f22, f31+1)  )
     &        +  F45*(fine( f13, f20, f31-1) - fine( f13, f22, f31-1) +
     &                fine( f10, f23, f31-1) - fine( f12, f23, f31-1) +
     &                fine( f13, f20, f31  ) - fine( f13, f22, f31  ) +
     &                fine( f10, f23, f31  ) - fine( f12, f23, f31  )  )
     &        -  F25*(fine( f10, f20, f31-2) - fine( f12, f20, f31-2) -
     &                fine( f10, f22, f31-2) + fine( f12, f22, f31-2) +
     &                fine( f10, f20, f31+1) - fine( f12, f20, f31+1) -
     &                fine( f10, f22, f31+1) + fine( f12, f22, f31+1)  )
     &        -  F15*(fine( f13, f21, f31-2) + fine( f11, f23, f31-2) +
     &                fine( f13, f21, f31+1) + fine( f11, f23, f31+1)  )
     &        +   F9*(fine( f13, f23, f31-1) + fine( f13, f23, f31  )  )
     &        -   F5*(fine( f13, f20, f31-2) - fine( f13, f22, f31-2) +
     &                fine( f10, f23, f31-2) - fine( f12, f23, f31-2) +
     &                fine( f13, f20, f31+1) - fine( f13, f22, f31+1) +
     &                fine( f10, f23, f31+1) - fine( f12, f23, f31+1)  )
     &        -   F1*(fine( f13, f23, f31-2) + fine( f13, f23, f31+1)  )
     &      )
            f31 = f31 + 2
          end do
c
c Set cint(1)-cint(5)-cint(6) corner
          if(c3f.lt.cint(6)) then
            c3 = cint(6)
            f30 = 2*c3
            f31 = f30 - 1
            f32 = f31 - 1
            f33 = f32 - 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
        end if
      end if
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c
c Set cint(2) boundary
      if(c2i.gt.cint(2)) then
        c2 = cint(2)
        f20 = 2*c2 -1
        f21 = f20 + 1
        f22 = f21 + 1
        f23 = f22 + 1
c
c Set cint(2)--cint(1) edge
        if(c1i.gt.cint(1)) then
          c1 = cint(1)
          f10 = 2*c1 -1
          f11 = f10 + 1
          f12 = f11 + 1
          f13 = f12 + 1
c
c Set cint(2)-cint(1)-cint(3) corner
          if(c3i.gt.cint(3)) then
            c3 = cint(3)
            f30 = 2*c3- 1
            f31 = f30 + 1
            f32 = f31 + 1
            f33 = f32 + 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
c
c Set cint(2)-cint(1) edge
          f31 = f3i
          do c3 = c3i,c3f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21, f31-1) + fine( f11, f21, f31  )  )
     &        + F675*(fine( f11, f20, f31-1) + fine( f10, f21, f31-1) -
     &                fine( f12, f21, f31-1) - fine( f11, f22, f31-1) +
     &                fine( f11, f20, f31  ) + fine( f10, f21, f31  ) -
     &                fine( f12, f21, f31  ) - fine( f11, f22, f31  )  )
     &        - F225*(fine( f11, f21, f31-2) - fine( f10, f20, f31-1) +
     &                fine( f12, f20, f31-1) + fine( f10, f22, f31-1) -
     &                fine( f12, f22, f31-1) - fine( f10, f20, f31  ) +
     &                fine( f12, f20, f31  ) + fine( f10, f22, f31  ) -
     &                fine( f12, f22, f31  ) + fine( f11, f21, f31+1)  )
     &        + F135*(fine( f13, f21, f31-1) + fine( f11, f23, f31-1) +
     &                fine( f13, f21, f31  ) + fine( f11, f23, f31  )  )
     &        -  F75*(fine( f11, f20, f31-2) + fine( f10, f21, f31-2) -
     &                fine( f12, f21, f31-2) - fine( f11, f22, f31-2) +
     &                fine( f11, f20, f31+1) + fine( f10, f21, f31+1) -
     &                fine( f12, f21, f31+1) - fine( f11, f22, f31+1)  )
     &        +  F45*(fine( f13, f20, f31-1) - fine( f13, f22, f31-1) +
     &                fine( f10, f23, f31-1) - fine( f12, f23, f31-1) +
     &                fine( f13, f20, f31  ) - fine( f13, f22, f31  ) +
     &                fine( f10, f23, f31  ) - fine( f12, f23, f31  )  )
     &        -  F25*(fine( f10, f20, f31-2) - fine( f12, f20, f31-2) -
     &                fine( f10, f22, f31-2) + fine( f12, f22, f31-2) +
     &                fine( f10, f20, f31+1) - fine( f12, f20, f31+1) -
     &                fine( f10, f22, f31+1) + fine( f12, f22, f31+1)  )
     &        -  F15*(fine( f13, f21, f31-2) + fine( f11, f23, f31-2) +
     &                fine( f13, f21, f31+1) + fine( f11, f23, f31+1)  )
     &        +   F9*(fine( f13, f23, f31-1) + fine( f13, f23, f31  )  )
     &        -   F5*(fine( f13, f20, f31-2) - fine( f13, f22, f31-2) +
     &                fine( f10, f23, f31-2) - fine( f12, f23, f31-2) +
     &                fine( f13, f20, f31+1) - fine( f13, f22, f31+1) +
     &                fine( f10, f23, f31+1) - fine( f12, f23, f31+1)  )
     &        -   F1*(fine( f13, f23, f31-2) + fine( f13, f23, f31+1)  )
     &      )
            f31 = f31 + 2
          end do
c
c Set cint(2)-cint(1)-cint(6) corner
          if(c3f.lt.cint(6)) then
            c3 = cint(6)
            f30 = 2*c3
            f31 = f30 - 1
            f32 = f31 - 1
            f33 = f32 - 1
            coarse(c1,c2,c3) = F1o4096*(
     &           + F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
        end if
c
c Set cint(2)-cint(3) edge
        if(c3i.gt.cint(3)) then
          c3 = cint(3)
          f30 = 2*c3- 1
          f31 = f30 + 1
          f32 = f31 + 1
          f33 = f32 + 1
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11-1, f21, f31) + fine( f11  , f21, f31)  )
     &        + F675*(fine( f11-1, f21, f30) + fine( f11  , f21, f30) +
     &                fine( f11-1, f20, f31) + fine( f11  , f20, f31) -
     &                fine( f11-1, f22, f31) - fine( f11  , f22, f31) -
     &                fine( f11-1, f21, f32) - fine( f11  , f21, f32)  )
     &        + F225*(fine( f11-1, f20, f30) + fine( f11  , f20, f30) -
     &                fine( f11-1, f22, f30) - fine( f11  , f22, f30) -
     &                fine( f11-2, f21, f31) - fine( f11+1, f21, f31) -
     &                fine( f11-1, f20, f32) - fine( f11  , f20, f32) +
     &                fine( f11-1, f22, f32) + fine( f11  , f22, f32)  )
     &        + F135*(fine( f11-1, f23, f31) + fine( f11  , f23, f31) +
     &                fine( f11-1, f21, f33) + fine( f11  , f21, f33)  )
     &        -  F75*(fine( f11-2, f21, f30) + fine( f11+1, f21, f30) +
     &                fine( f11-2, f20, f31) + fine( f11+1, f20, f31) -
     &                fine( f11-2, f22, f31) - fine( f11+1, f22, f31) -
     &                fine( f11-2, f21, f32) - fine( f11+1, f21, f32)  )
     &        +  F45*(fine( f11-1, f23, f30) + fine( f11  , f23, f30) -
     &                fine( f11-1, f23, f32) - fine( f11  , f23, f32) +
     &                fine( f11-1, f20, f33) + fine( f11  , f20, f33) -
     &                fine( f11-1, f22, f33) - fine( f11  , f22, f33)  )
     &        -  F25*(fine( f11-2, f20, f30) + fine( f11+1, f20, f30) -
     &                fine( f11-2, f22, f30) - fine( f11+1, f22, f30) -
     &                fine( f11-2, f20, f32) - fine( f11+1, f20, f32) +
     &                fine( f11-2, f22, f32) + fine( f11+1, f22, f32)  )
     &        -  F15*(fine( f11-2, f23, f31) + fine( f11+1, f23, f31) +
     &                fine( f11-2, f21, f33) + fine( f11+1, f21, f33)  )
     &        +   F9*(fine( f11-1, f23, f33) + fine( f11  , f23, f33)  )
     &        -   F5*(fine( f11-2, f23, f30) + fine( f11+1, f23, f30) -
     &                fine( f11-2, f23, f32) - fine( f11+1, f23, f32) +
     &                fine( f11-2, f20, f33) + fine( f11+1, f20, f33) -
     &                fine( f11-2, f22, f33) - fine( f11+1, f22, f33)  )
     &        -   F1*(fine( f11-2, f23, f33) + fine( f11+1, f23, f33)  )
     &      )
            f11 = f11 + 2
          end do
        end if
c
c Set cint(2) face
        f31 = f3i
        do c3 = c3i,c3f
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &     F1215*(fine( f11-1, f21, f31-1) + fine( f11  , f21, f31-1) +
     &            fine( f11-1, f21, f31  ) + fine( f11  , f21, f31  )  )
     &    + F405*(fine( f11-1, f20, f31-1) + fine( f11  , f20, f31-1) -
     &            fine( f11-1, f22, f31-1) - fine( f11  , f22, f31-1) +
     &            fine( f11-1, f20, f31  ) + fine( f11  , f20, f31  ) -
     &            fine( f11-1, f22, f31  ) - fine( f11  , f22, f31  )  )
     &    - F135*(fine( f11-1, f21, f31-2) + fine( f11  , f21, f31-2) +
     &            fine( f11-2, f21, f31-1) + fine( f11+1, f21, f31-1) +
     &            fine( f11-2, f21, f31  ) + fine( f11+1, f21, f31  ) +
     &            fine( f11-1, f21, f31+1) + fine( f11  , f21, f31+1)  )
     &    +  F81*(fine( f11-1, f23, f31-1) + fine( f11  , f23, f31-1) +
     &            fine( f11-1, f23, f31  ) + fine( f11  , f23, f31  )  )
     &    -  F45*(fine( f11-1, f20, f31-2) + fine( f11  , f20, f31-2) -
     &            fine( f11-1, f22, f31-2) - fine( f11  , f22, f31-2) +
     &            fine( f11-2, f20, f31-1) + fine( f11+1, f20, f31-1) -
     &            fine( f11-2, f22, f31-1) - fine( f11+1, f22, f31-1) +
     &            fine( f11-2, f20, f31  ) + fine( f11+1, f20, f31  ) -
     &            fine( f11-2, f22, f31  ) - fine( f11+1, f22, f31  ) +
     &            fine( f11-1, f20, f31+1) + fine( f11  , f20, f31+1) -
     &            fine( f11-1, f22, f31+1) - fine( f11  , f22, f31+1)  )
     &    +  F15*(fine( f11-2, f21, f31-2) + fine( f11+1, f21, f31-2) +
     &            fine( f11-2, f21, f31+1) + fine( f11+1, f21, f31+1)  )
     &    -   F9*(fine( f11-1, f23, f31-2) + fine( f11  , f23, f31-2) +
     &            fine( f11-2, f23, f31-1) + fine( f11+1, f23, f31-1) +
     &            fine( f11-2, f23, f31  ) + fine( f11+1, f23, f31  ) +
     &            fine( f11-1, f23, f31+1) + fine( f11  , f23, f31+1)  )
     &    +   F5*(fine( f11-2, f20, f31-2) + fine( f11+1, f20, f31-2) -
     &            fine( f11-2, f22, f31-2) - fine( f11+1, f22, f31-2) +
     &            fine( f11-2, f20, f31+1) + fine( f11+1, f20, f31+1) -
     &            fine( f11-2, f22, f31+1) - fine( f11+1, f22, f31+1)  )
     &    +   F1*(fine( f11-2, f23, f31-2) + fine( f11+1, f23, f31-2) +
     &            fine( f11-2, f23, f31+1) + fine( f11+1, f23, f31+1)  )
     &      )
            f11 = f11 + 2
          end do
          f31 = f31 + 2
        end do
c
c Set cint(2)-cint(6) edge
        if(c3f.lt.cint(6)) then
          c3 = cint(6)
          f30 = 2*c3
          f31 = f30 - 1
          f32 = f31 - 1
          f33 = f32 - 1
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11-1, f21, f31) + fine( f11  , f21, f31)  )
     &        + F675*(fine( f11-1, f21, f30) + fine( f11  , f21, f30) +
     &                fine( f11-1, f20, f31) + fine( f11  , f20, f31) -
     &                fine( f11-1, f22, f31) - fine( f11  , f22, f31) -
     &                fine( f11-1, f21, f32) - fine( f11  , f21, f32)  )
     &        + F225*(fine( f11-1, f20, f30) + fine( f11  , f20, f30) -
     &                fine( f11-1, f22, f30) - fine( f11  , f22, f30) -
     &                fine( f11-2, f21, f31) - fine( f11+1, f21, f31) -
     &                fine( f11-1, f20, f32) - fine( f11  , f20, f32) +
     &                fine( f11-1, f22, f32) + fine( f11  , f22, f32)  )
     &        + F135*(fine( f11-1, f23, f31) + fine( f11  , f23, f31) +
     &                fine( f11-1, f21, f33) + fine( f11  , f21, f33)  )
     &        -  F75*(fine( f11-2, f21, f30) + fine( f11+1, f21, f30) +
     &                fine( f11-2, f20, f31) + fine( f11+1, f20, f31) -
     &                fine( f11-2, f22, f31) - fine( f11+1, f22, f31) -
     &                fine( f11-2, f21, f32) - fine( f11+1, f21, f32)  )
     &        +  F45*(fine( f11-1, f23, f30) + fine( f11  , f23, f30) -
     &                fine( f11-1, f23, f32) - fine( f11  , f23, f32) +
     &                fine( f11-1, f20, f33) + fine( f11  , f20, f33) -
     &                fine( f11-1, f22, f33) - fine( f11  , f22, f33)  )
     &        -  F25*(fine( f11-2, f20, f30) + fine( f11+1, f20, f30) -
     &                fine( f11-2, f22, f30) - fine( f11+1, f22, f30) -
     &                fine( f11-2, f20, f32) - fine( f11+1, f20, f32) +
     &                fine( f11-2, f22, f32) + fine( f11+1, f22, f32)  )
     &        -  F15*(fine( f11-2, f23, f31) + fine( f11+1, f23, f31) +
     &                fine( f11-2, f21, f33) + fine( f11+1, f21, f33)  )
     &        +   F9*(fine( f11-1, f23, f33) + fine( f11  , f23, f33)  )
     &        -   F5*(fine( f11-2, f23, f30) + fine( f11+1, f23, f30) -
     &                fine( f11-2, f23, f32) - fine( f11+1, f23, f32) +
     &                fine( f11-2, f20, f33) + fine( f11+1, f20, f33) -
     &                fine( f11-2, f22, f33) - fine( f11+1, f22, f33)  )
     &        -   F1*(fine( f11-2, f23, f33) + fine( f11+1, f23, f33)  )
     &      )
            f11 = f11 + 2
          end do
        end if
      end if
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c
c Set cint(3) boundary
      if(c3i.gt.cint(3)) then
        c3 = cint(3)
        f30 = 2*c3- 1
        f31 = f30 + 1
        f32 = f31 + 1
        f33 = f32 + 1
        f21 = f2i
        do c2 = c2i,c2f
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &     F1215*(fine( f11-1, f21-1, f31) + fine( f11  , f21-1, f31) +
     &            fine( f11-1, f21  , f31) + fine( f11  , f21  , f31)  )
     &    + F405*(fine( f11-1, f21-1, f30) + fine( f11  , f21-1, f30) +
     &            fine( f11-1, f21  , f30) + fine( f11  , f21  , f30) -
     &            fine( f11-1, f21-1, f32) - fine( f11  , f21-1, f32) -
     &            fine( f11-1, f21  , f32) - fine( f11  , f21  , f32)  )
     &    - F135*(fine( f11-1, f21-2, f31) + fine( f11  , f21-2, f31) +
     &            fine( f11-2, f21-1, f31) + fine( f11+1, f21-1, f31) +
     &            fine( f11-2, f21  , f31) + fine( f11+1, f21  , f31) +
     &            fine( f11-1, f21+1, f31) + fine( f11  , f21+1, f31)  )
     &    +  F81*(fine( f11-1, f21-1, f33) + fine( f11  , f21-1, f33) +
     &            fine( f11-1, f21  , f33) + fine( f11  , f21  , f33)  )
     &    -  F45*(fine( f11-1, f21-2, f30) + fine( f11  , f21-2, f30) +
     &            fine( f11-2, f21-1, f30) + fine( f11+1, f21-1, f30) +
     &            fine( f11-2, f21  , f30) + fine( f11+1, f21  , f30) +
     &            fine( f11-1, f21+1, f30) + fine( f11  , f21+1, f30) -
     &            fine( f11-1, f21-2, f32) - fine( f11  , f21-2, f32) -
     &            fine( f11-2, f21-1, f32) - fine( f11+1, f21-1, f32) -
     &            fine( f11-2, f21  , f32) - fine( f11+1, f21  , f32) -
     &            fine( f11-1, f21+1, f32) - fine( f11  , f21+1, f32)  )
     &    +  F15*(fine( f11-2, f21-2, f31) + fine( f11+1, f21-2, f31) +
     &            fine( f11-2, f21+1, f31) + fine( f11+1, f21+1, f31)  )
     &    -   F9*(fine( f11-1, f21-2, f33) + fine( f11  , f21-2, f33) +
     &            fine( f11-2, f21-1, f33) + fine( f11+1, f21-1, f33) +
     &            fine( f11-2, f21  , f33) + fine( f11+1, f21  , f33) +
     &            fine( f11-1, f21+1, f33) + fine( f11  , f21+1, f33)  )
     &    +   F5*(fine( f11-2, f21-2, f30) + fine( f11+1, f21-2, f30) +
     &            fine( f11-2, f21+1, f30) + fine( f11+1, f21+1, f30) -
     &            fine( f11-2, f21-2, f32) - fine( f11+1, f21-2, f32) -
     &            fine( f11-2, f21+1, f32) - fine( f11+1, f21+1, f32)  )
     &    +   F1*(fine( f11-2, f21-2, f33) + fine( f11+1, f21-2, f33) +
     &            fine( f11-2, f21+1, f33) + fine( f11+1, f21+1, f33)  )
     &      )
            f11 = f11 + 2
          end do
          f21 = f21 + 2
        end do
      end if
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c
c Set cint(4) boundary
      if(c1f.lt.cint(4)) then
        c1 = cint(4)
        f10 = 2*c1
        f11 = f10 - 1
        f12 = f11 - 1
        f13 = f12 - 1
c
c Set cint(4)--cint(2) edge
        if(c2i.gt.cint(2)) then
          c2 = cint(2)
          f20 = 2*c2 -1
          f21 = f20 + 1
          f22 = f21 + 1
          f23 = f22 + 1
c
c Set cint(4)-cint(2)-cint(3) corner
          if(c3i.gt.cint(3)) then
            c3 = cint(3)
            f30 = 2*c3- 1
            f31 = f30 + 1
            f32 = f31 + 1
            f33 = f32 + 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
c
c Set cint(4)-cint(2) edge
          f31 = f3i
          do c3 = c3i,c3f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21, f31-1) + fine( f11, f21, f31  )  )
     &        + F675*(fine( f11, f20, f31-1) + fine( f10, f21, f31-1) -
     &                fine( f12, f21, f31-1) - fine( f11, f22, f31-1) +
     &                fine( f11, f20, f31  ) + fine( f10, f21, f31  ) -
     &                fine( f12, f21, f31  ) - fine( f11, f22, f31  )  )
     &        - F225*(fine( f11, f21, f31-2) - fine( f10, f20, f31-1) +
     &                fine( f12, f20, f31-1) + fine( f10, f22, f31-1) -
     &                fine( f12, f22, f31-1) - fine( f10, f20, f31  ) +
     &                fine( f12, f20, f31  ) + fine( f10, f22, f31  ) -
     &                fine( f12, f22, f31  ) + fine( f11, f21, f31+1)  )
     &        + F135*(fine( f13, f21, f31-1) + fine( f11, f23, f31-1) +
     &                fine( f13, f21, f31  ) + fine( f11, f23, f31  )  )
     &        -  F75*(fine( f11, f20, f31-2) + fine( f10, f21, f31-2) -
     &                fine( f12, f21, f31-2) - fine( f11, f22, f31-2) +
     &                fine( f11, f20, f31+1) + fine( f10, f21, f31+1) -
     &                fine( f12, f21, f31+1) - fine( f11, f22, f31+1)  )
     &        +  F45*(fine( f13, f20, f31-1) - fine( f13, f22, f31-1) +
     &                fine( f10, f23, f31-1) - fine( f12, f23, f31-1) +
     &                fine( f13, f20, f31  ) - fine( f13, f22, f31  ) +
     &                fine( f10, f23, f31  ) - fine( f12, f23, f31  )  )
     &        -  F25*(fine( f10, f20, f31-2) - fine( f12, f20, f31-2) -
     &                fine( f10, f22, f31-2) + fine( f12, f22, f31-2) +
     &                fine( f10, f20, f31+1) - fine( f12, f20, f31+1) -
     &                fine( f10, f22, f31+1) + fine( f12, f22, f31+1)  )
     &        -  F15*(fine( f13, f21, f31-2) + fine( f11, f23, f31-2) +
     &                fine( f13, f21, f31+1) + fine( f11, f23, f31+1)  )
     &        +   F9*(fine( f13, f23, f31-1) + fine( f13, f23, f31  )  )
     &        -   F5*(fine( f13, f20, f31-2) - fine( f13, f22, f31-2) +
     &                fine( f10, f23, f31-2) - fine( f12, f23, f31-2) +
     &                fine( f13, f20, f31+1) - fine( f13, f22, f31+1) +
     &                fine( f10, f23, f31+1) - fine( f12, f23, f31+1)  )
     &        -   F1*(fine( f13, f23, f31-2) + fine( f13, f23, f31+1)  )
     &      )
            f31 = f31 + 2
          end do
c
c Set cint(4)-cint(2)-cint(6) corner
          if(c3f.lt.cint(6)) then
            c3 = cint(6)
            f30 = 2*c3
            f31 = f30 - 1
            f32 = f31 - 1
            f33 = f32 - 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
        end if
c
c Set cint(4)-cint(3) edge
        if(c3i.gt.cint(3)) then
          c3 = cint(3)
          f30 = 2*c3- 1
          f31 = f30 + 1
          f32 = f31 + 1
          f33 = f32 + 1
          f21 = f2i
          do c2 = c2i,c2f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21-1, f31) + fine( f11, f21  , f31)  )
     &        + F675*(fine( f11, f21-1, f30) + fine( f11, f21  , f30) +
     &                fine( f10, f21-1, f31) + fine( f10, f21  , f31) -
     &                fine( f12, f21-1, f31) - fine( f12, f21  , f31) -
     &                fine( f11, f21-1, f32) - fine( f11, f21  , f32)  )
     &        + F225*(fine( f10, f21-1, f30) + fine( f10, f21  , f30) -
     &                fine( f12, f21-1, f30) - fine( f12, f21  , f30) -
     &                fine( f11, f21-2, f31) - fine( f11, f21+1, f31) -
     &                fine( f10, f21-1, f32) - fine( f10, f21  , f32) +
     &                fine( f12, f21-1, f32) + fine( f12, f21  , f32)  )
     &        + F135*(fine( f13, f21-1, f31) + fine( f13, f21  , f31) +
     &                fine( f11, f21-1, f33) + fine( f11, f21  , f33)  )
     &        -  F75*(fine( f11, f21-2, f30) + fine( f11, f21+1, f30) +
     &                fine( f10, f21-2, f31) + fine( f10, f21+1, f31) -
     &                fine( f12, f21-2, f31) - fine( f12, f21+1, f31) -
     &                fine( f11, f21-2, f32) - fine( f11, f21+1, f32)  )
     &        +  F45*(fine( f13, f21-1, f30) + fine( f13, f21  , f30) -
     &                fine( f13, f21-1, f32) - fine( f13, f21  , f32) +
     &                fine( f10, f21-1, f33) + fine( f10, f21  , f33) -
     &                fine( f12, f21-1, f33) - fine( f12, f21  , f33)  )
     &        -  F25*(fine( f10, f21-2, f30) + fine( f10, f21+1, f30) -
     &                fine( f12, f21-2, f30) - fine( f12, f21+1, f30) -
     &                fine( f10, f21-2, f32) - fine( f10, f21+1, f32) +
     &                fine( f12, f21-2, f32) + fine( f12, f21+1, f32)  )
     &        -  F15*(fine( f13, f21-2, f31) + fine( f13, f21+1, f31) +
     &                fine( f11, f21-2, f33) + fine( f11, f21+1, f33)  )
     &        +   F9*(fine( f13, f21-1, f33) + fine( f13, f21  , f33)  )
     &        -   F5*(fine( f13, f21-2, f30) + fine( f13, f21+1, f30) -
     &                fine( f13, f21-2, f32) - fine( f13, f21+1, f32) +
     &                fine( f10, f21-2, f33) + fine( f10, f21+1, f33) -
     &                fine( f12, f21-2, f33) - fine( f12, f21+1, f33)  )
     &        -   F1*(fine( f13, f21-2, f33) + fine( f13, f21+1, f33)  )
     &      )
            f21 = f21 + 2
          end do
        end if
c
c Set cint(4) face
        f31 = f3i
        do c3 = c3i,c3f
          f21 = f2i
          do c2 = c2i,c2f
            coarse(c1,c2,c3) = F1o4096*(
     &     F1215*(fine( f11, f21-1, f31-1) + fine( f11, f21  , f31-1) +
     &            fine( f11, f21-1, f31  ) + fine( f11, f21  , f31  )  )
     &    + F405*(fine( f10, f21-1, f31-1) + fine( f10, f21  , f31-1) -
     &            fine( f12, f21-1, f31-1) - fine( f12, f21  , f31-1) +
     &            fine( f10, f21-1, f31  ) + fine( f10, f21  , f31  ) -
     &            fine( f12, f21-1, f31  ) - fine( f12, f21  , f31  )  )
     &    - F135*(fine( f11, f21-1, f31-2) + fine( f11, f21  , f31-2) +
     &            fine( f11, f21-2, f31-1) + fine( f11, f21+1, f31-1) +
     &            fine( f11, f21-2, f31  ) + fine( f11, f21+1, f31  ) +
     &            fine( f11, f21-1, f31+1) + fine( f11, f21  , f31+1)  )
     &    +  F81*(fine( f13, f21-1, f31-1) + fine( f13, f21  , f31-1) +
     &            fine( f13, f21-1, f31  ) + fine( f13, f21  , f31  )  )
     &    -  F45*(fine( f10, f21-1, f31-2) + fine( f10, f21  , f31-2) -
     &            fine( f12, f21-1, f31-2) - fine( f12, f21  , f31-2) +
     &            fine( f10, f21-2, f31-1) + fine( f10, f21+1, f31-1) -
     &            fine( f12, f21-2, f31-1) - fine( f12, f21+1, f31-1) +
     &            fine( f10, f21-2, f31  ) + fine( f10, f21+1, f31  ) -
     &            fine( f12, f21-2, f31  ) - fine( f12, f21+1, f31  ) +
     &            fine( f10, f21-1, f31+1) + fine( f10, f21  , f31+1) -
     &            fine( f12, f21-1, f31+1) - fine( f12, f21  , f31+1)  )
     &    +  F15*(fine( f11, f21-2, f31-2) + fine( f11, f21+1, f31-2) +
     &            fine( f11, f21-2, f31+1) + fine( f11, f21+1, f31+1)  )
     &    -   F9*(fine( f13, f21-1, f31-2) + fine( f13, f21  , f31-2) +
     &            fine( f13, f21-2, f31-1) + fine( f13, f21+1, f31-1) +
     &            fine( f13, f21-2, f31  ) + fine( f13, f21+1, f31  ) +
     &            fine( f13, f21-1, f31+1) + fine( f13, f21  , f31+1)  )
     &    +   F5*(fine( f10, f21-2, f31-2) + fine( f10, f21+1, f31-2) -
     &            fine( f12, f21-2, f31-2) - fine( f12, f21+1, f31-2) +
     &            fine( f10, f21-2, f31+1) + fine( f10, f21+1, f31+1) -
     &            fine( f12, f21-2, f31+1) - fine( f12, f21+1, f31+1)  )
     &    +   F1*(fine( f13, f21-2, f31-2) + fine( f13, f21+1, f31-2) +
     &            fine( f13, f21-2, f31+1) + fine( f13, f21+1, f31+1)  )
     &      )
            f21 = f21 + 2
          end do
          f31 = f31 + 2
        end do
c
c Set cint(4)-cint(6) edge
        if(c3f.lt.cint(6)) then
          c3 = cint(6)
          f30 = 2*c3
          f31 = f30 - 1
          f32 = f31 - 1
          f33 = f32 - 1
          f21 = f2i
          do c2 = c2i,c2f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21-1, f31) + fine( f11, f21  , f31)  )
     &        + F675*(fine( f11, f21-1, f30) + fine( f11, f21  , f30) +
     &                fine( f10, f21-1, f31) + fine( f10, f21  , f31) -
     &                fine( f12, f21-1, f31) - fine( f12, f21  , f31) -
     &                fine( f11, f21-1, f32) - fine( f11, f21  , f32)  )
     &        + F225*(fine( f10, f21-1, f30) + fine( f10, f21  , f30) -
     &                fine( f12, f21-1, f30) - fine( f12, f21  , f30) -
     &                fine( f11, f21-2, f31) - fine( f11, f21+1, f31) -
     &                fine( f10, f21-1, f32) - fine( f10, f21  , f32) +
     &                fine( f12, f21-1, f32) + fine( f12, f21  , f32)  )
     &        + F135*(fine( f13, f21-1, f31) + fine( f13, f21  , f31) +
     &                fine( f11, f21-1, f33) + fine( f11, f21  , f33)  )
     &        -  F75*(fine( f11, f21-2, f30) + fine( f11, f21+1, f30) +
     &                fine( f10, f21-2, f31) + fine( f10, f21+1, f31) -
     &                fine( f12, f21-2, f31) - fine( f12, f21+1, f31) -
     &                fine( f11, f21-2, f32) - fine( f11, f21+1, f32)  )
     &        +  F45*(fine( f13, f21-1, f30) + fine( f13, f21  , f30) -
     &                fine( f13, f21-1, f32) - fine( f13, f21  , f32) +
     &                fine( f10, f21-1, f33) + fine( f10, f21  , f33) -
     &                fine( f12, f21-1, f33) - fine( f12, f21  , f33)  )
     &        -  F25*(fine( f10, f21-2, f30) + fine( f10, f21+1, f30) -
     &                fine( f12, f21-2, f30) - fine( f12, f21+1, f30) -
     &                fine( f10, f21-2, f32) - fine( f10, f21+1, f32) +
     &                fine( f12, f21-2, f32) + fine( f12, f21+1, f32)  )
     &        -  F15*(fine( f13, f21-2, f31) + fine( f13, f21+1, f31) +
     &                fine( f11, f21-2, f33) + fine( f11, f21+1, f33)  )
     &        +   F9*(fine( f13, f21-1, f33) + fine( f13, f21  , f33)  )
     &        -   F5*(fine( f13, f21-2, f30) + fine( f13, f21+1, f30) -
     &                fine( f13, f21-2, f32) - fine( f13, f21+1, f32) +
     &                fine( f10, f21-2, f33) + fine( f10, f21+1, f33) -
     &                fine( f12, f21-2, f33) - fine( f12, f21+1, f33)  )
     &        -   F1*(fine( f13, f21-2, f33) + fine( f13, f21+1, f33)  )
     &      )
            f21 = f21 + 2
          end do
        end if
      end if
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c
c Set cint(5) boundary
      if(c2f.lt.cint(5)) then
        c2 = cint(5)
        f20 = 2*c2
        f21 = f20 - 1
        f22 = f21 - 1
        f23 = f22 - 1
c
c Set cint(5)-cint(3) edge
        if(c3i.gt.cint(3)) then
          c3 = cint(3)
          f30 = 2*c3- 1
          f31 = f30 + 1
          f32 = f31 + 1
          f33 = f32 + 1
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11-1, f21, f31) + fine( f11  , f21, f31)  )
     &        + F675*(fine( f11-1, f21, f30) + fine( f11  , f21, f30) +
     &                fine( f11-1, f20, f31) + fine( f11  , f20, f31) -
     &                fine( f11-1, f22, f31) - fine( f11  , f22, f31) -
     &                fine( f11-1, f21, f32) - fine( f11  , f21, f32)  )
     &        + F225*(fine( f11-1, f20, f30) + fine( f11  , f20, f30) -
     &                fine( f11-1, f22, f30) - fine( f11  , f22, f30) -
     &                fine( f11-2, f21, f31) - fine( f11+1, f21, f31) -
     &                fine( f11-1, f20, f32) - fine( f11  , f20, f32) +
     &                fine( f11-1, f22, f32) + fine( f11  , f22, f32)  )
     &        + F135*(fine( f11-1, f23, f31) + fine( f11  , f23, f31) +
     &                fine( f11-1, f21, f33) + fine( f11  , f21, f33)  )
     &        -  F75*(fine( f11-2, f21, f30) + fine( f11+1, f21, f30) +
     &                fine( f11-2, f20, f31) + fine( f11+1, f20, f31) -
     &                fine( f11-2, f22, f31) - fine( f11+1, f22, f31) -
     &                fine( f11-2, f21, f32) - fine( f11+1, f21, f32)  )
     &        +  F45*(fine( f11-1, f23, f30) + fine( f11  , f23, f30) -
     &                fine( f11-1, f23, f32) - fine( f11  , f23, f32) +
     &                fine( f11-1, f20, f33) + fine( f11  , f20, f33) -
     &                fine( f11-1, f22, f33) - fine( f11  , f22, f33)  )
     &        -  F25*(fine( f11-2, f20, f30) + fine( f11+1, f20, f30) -
     &                fine( f11-2, f22, f30) - fine( f11+1, f22, f30) -
     &                fine( f11-2, f20, f32) - fine( f11+1, f20, f32) +
     &                fine( f11-2, f22, f32) + fine( f11+1, f22, f32)  )
     &        -  F15*(fine( f11-2, f23, f31) + fine( f11+1, f23, f31) +
     &                fine( f11-2, f21, f33) + fine( f11+1, f21, f33)  )
     &        +   F9*(fine( f11-1, f23, f33) + fine( f11  , f23, f33)  )
     &        -   F5*(fine( f11-2, f23, f30) + fine( f11+1, f23, f30) -
     &                fine( f11-2, f23, f32) - fine( f11+1, f23, f32) +
     &                fine( f11-2, f20, f33) + fine( f11+1, f20, f33) -
     &                fine( f11-2, f22, f33) - fine( f11+1, f22, f33)  )
     &        -   F1*(fine( f11-2, f23, f33) + fine( f11+1, f23, f33)  )
     &      )
            f11 = f11 + 2
          end do
        end if
c
c Set cint(5) face
        f31 = f3i
        do c3 = c3i,c3f
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &     F1215*(fine( f11-1, f21, f31-1) + fine( f11  , f21, f31-1) +
     &            fine( f11-1, f21, f31  ) + fine( f11  , f21, f31  )  )
     &    + F405*(fine( f11-1, f20, f31-1) + fine( f11  , f20, f31-1) -
     &            fine( f11-1, f22, f31-1) - fine( f11  , f22, f31-1) +
     &            fine( f11-1, f20, f31  ) + fine( f11  , f20, f31  ) -
     &            fine( f11-1, f22, f31  ) - fine( f11  , f22, f31  )  )
     &    - F135*(fine( f11-1, f21, f31-2) + fine( f11  , f21, f31-2) +
     &            fine( f11-2, f21, f31-1) + fine( f11+1, f21, f31-1) +
     &            fine( f11-2, f21, f31  ) + fine( f11+1, f21, f31  ) +
     &            fine( f11-1, f21, f31+1) + fine( f11  , f21, f31+1)  )
     &    +  F81*(fine( f11-1, f23, f31-1) + fine( f11  , f23, f31-1) +
     &            fine( f11-1, f23, f31  ) + fine( f11  , f23, f31  )  )
     &    -  F45*(fine( f11-1, f20, f31-2) + fine( f11  , f20, f31-2) -
     &            fine( f11-1, f22, f31-2) - fine( f11  , f22, f31-2) +
     &            fine( f11-2, f20, f31-1) + fine( f11+1, f20, f31-1) -
     &            fine( f11-2, f22, f31-1) - fine( f11+1, f22, f31-1) +
     &            fine( f11-2, f20, f31  ) + fine( f11+1, f20, f31  ) -
     &            fine( f11-2, f22, f31  ) - fine( f11+1, f22, f31  ) +
     &            fine( f11-1, f20, f31+1) + fine( f11  , f20, f31+1) -
     &            fine( f11-1, f22, f31+1) - fine( f11  , f22, f31+1)  )
     &    +  F15*(fine( f11-2, f21, f31-2) + fine( f11+1, f21, f31-2) +
     &            fine( f11-2, f21, f31+1) + fine( f11+1, f21, f31+1)  )
     &    -   F9*(fine( f11-1, f23, f31-2) + fine( f11  , f23, f31-2) +
     &            fine( f11-2, f23, f31-1) + fine( f11+1, f23, f31-1) +
     &            fine( f11-2, f23, f31  ) + fine( f11+1, f23, f31  ) +
     &            fine( f11-1, f23, f31+1) + fine( f11  , f23, f31+1)  )
     &    +   F5*(fine( f11-2, f20, f31-2) + fine( f11+1, f20, f31-2) -
     &            fine( f11-2, f22, f31-2) - fine( f11+1, f22, f31-2) +
     &            fine( f11-2, f20, f31+1) + fine( f11+1, f20, f31+1) -
     &            fine( f11-2, f22, f31+1) - fine( f11+1, f22, f31+1)  )
     &    +   F1*(fine( f11-2, f23, f31-2) + fine( f11+1, f23, f31-2) +
     &            fine( f11-2, f23, f31+1) + fine( f11+1, f23, f31+1)  )
     &      )
            f11 = f11 + 2
          end do
          f31 = f31 + 2
        end do
c
c Set cint(5)-cint(6) edge
        if(c3f.lt.cint(6)) then
          c3 = cint(6)
          f30 = 2*c3
          f31 = f30 - 1
          f32 = f31 - 1
          f33 = f32 - 1
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11-1, f21, f31) + fine( f11  , f21, f31)  )
     &        + F675*(fine( f11-1, f21, f30) + fine( f11  , f21, f30) +
     &                fine( f11-1, f20, f31) + fine( f11  , f20, f31) -
     &                fine( f11-1, f22, f31) - fine( f11  , f22, f31) -
     &                fine( f11-1, f21, f32) - fine( f11  , f21, f32)  )
     &        + F225*(fine( f11-1, f20, f30) + fine( f11  , f20, f30) -
     &                fine( f11-1, f22, f30) - fine( f11  , f22, f30) -
     &                fine( f11-2, f21, f31) - fine( f11+1, f21, f31) -
     &                fine( f11-1, f20, f32) - fine( f11  , f20, f32) +
     &                fine( f11-1, f22, f32) + fine( f11  , f22, f32)  )
     &        + F135*(fine( f11-1, f23, f31) + fine( f11  , f23, f31) +
     &                fine( f11-1, f21, f33) + fine( f11  , f21, f33)  )
     &        -  F75*(fine( f11-2, f21, f30) + fine( f11+1, f21, f30) +
     &                fine( f11-2, f20, f31) + fine( f11+1, f20, f31) -
     &                fine( f11-2, f22, f31) - fine( f11+1, f22, f31) -
     &                fine( f11-2, f21, f32) - fine( f11+1, f21, f32)  )
     &        +  F45*(fine( f11-1, f23, f30) + fine( f11  , f23, f30) -
     &                fine( f11-1, f23, f32) - fine( f11  , f23, f32) +
     &                fine( f11-1, f20, f33) + fine( f11  , f20, f33) -
     &                fine( f11-1, f22, f33) - fine( f11  , f22, f33)  )
     &        -  F25*(fine( f11-2, f20, f30) + fine( f11+1, f20, f30) -
     &                fine( f11-2, f22, f30) - fine( f11+1, f22, f30) -
     &                fine( f11-2, f20, f32) - fine( f11+1, f20, f32) +
     &                fine( f11-2, f22, f32) + fine( f11+1, f22, f32)  )
     &        -  F15*(fine( f11-2, f23, f31) + fine( f11+1, f23, f31) +
     &                fine( f11-2, f21, f33) + fine( f11+1, f21, f33)  )
     &        +   F9*(fine( f11-1, f23, f33) + fine( f11  , f23, f33)  )
     &        -   F5*(fine( f11-2, f23, f30) + fine( f11+1, f23, f30) -
     &                fine( f11-2, f23, f32) - fine( f11+1, f23, f32) +
     &                fine( f11-2, f20, f33) + fine( f11+1, f20, f33) -
     &                fine( f11-2, f22, f33) - fine( f11+1, f22, f33)  )
     &        -   F1*(fine( f11-2, f23, f33) + fine( f11+1, f23, f33)  )
     &      )
            f11 = f11 + 2
          end do
        end if
c
c Set cint(5)--cint(4) edge
        if(c1f.lt.cint(4)) then
          c1 = cint(4)
          f10 = 2*c1
          f11 = f10 - 1
          f12 = f11 - 1
          f13 = f12 - 1
c
c Set cint(5)-cint(4)-cint(3) corner
          if(c3i.gt.cint(3)) then
            c3 = cint(3)
            f30 = 2*c3- 1
            f31 = f30 + 1
            f32 = f31 + 1
            f33 = f32 + 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
c
c Set cint(5)-cint(4) edge
          f31 = f3i
          do c3 = c3i,c3f
            coarse(c1,c2,c3) = F1o4096*(
     &         F2025*(fine( f11, f21, f31-1) + fine( f11, f21, f31  )  )
     &        + F675*(fine( f11, f20, f31-1) + fine( f10, f21, f31-1) -
     &                fine( f12, f21, f31-1) - fine( f11, f22, f31-1) +
     &                fine( f11, f20, f31  ) + fine( f10, f21, f31  ) -
     &                fine( f12, f21, f31  ) - fine( f11, f22, f31  )  )
     &        - F225*(fine( f11, f21, f31-2) - fine( f10, f20, f31-1) +
     &                fine( f12, f20, f31-1) + fine( f10, f22, f31-1) -
     &                fine( f12, f22, f31-1) - fine( f10, f20, f31  ) +
     &                fine( f12, f20, f31  ) + fine( f10, f22, f31  ) -
     &                fine( f12, f22, f31  ) + fine( f11, f21, f31+1)  )
     &        + F135*(fine( f13, f21, f31-1) + fine( f11, f23, f31-1) +
     &                fine( f13, f21, f31  ) + fine( f11, f23, f31  )  )
     &        -  F75*(fine( f11, f20, f31-2) + fine( f10, f21, f31-2) -
     &                fine( f12, f21, f31-2) - fine( f11, f22, f31-2) +
     &                fine( f11, f20, f31+1) + fine( f10, f21, f31+1) -
     &                fine( f12, f21, f31+1) - fine( f11, f22, f31+1)  )
     &        +  F45*(fine( f13, f20, f31-1) - fine( f13, f22, f31-1) +
     &                fine( f10, f23, f31-1) - fine( f12, f23, f31-1) +
     &                fine( f13, f20, f31  ) - fine( f13, f22, f31  ) +
     &                fine( f10, f23, f31  ) - fine( f12, f23, f31  )  )
     &        -  F25*(fine( f10, f20, f31-2) - fine( f12, f20, f31-2) -
     &                fine( f10, f22, f31-2) + fine( f12, f22, f31-2) +
     &                fine( f10, f20, f31+1) - fine( f12, f20, f31+1) -
     &                fine( f10, f22, f31+1) + fine( f12, f22, f31+1)  )
     &        -  F15*(fine( f13, f21, f31-2) + fine( f11, f23, f31-2) +
     &                fine( f13, f21, f31+1) + fine( f11, f23, f31+1)  )
     &        +   F9*(fine( f13, f23, f31-1) + fine( f13, f23, f31  )  )
     &        -   F5*(fine( f13, f20, f31-2) - fine( f13, f22, f31-2) +
     &                fine( f10, f23, f31-2) - fine( f12, f23, f31-2) +
     &                fine( f13, f20, f31+1) - fine( f13, f22, f31+1) +
     &                fine( f10, f23, f31+1) - fine( f12, f23, f31+1)  )
     &        -   F1*(fine( f13, f23, f31-2) + fine( f13, f23, f31+1)  )
     &      )
            f31 = f31 + 2
          end do
c
c Set cint(5)-cint(4)-cint(6) corner
          if(c3f.lt.cint(6)) then
            c3 = cint(6)
            f30 = 2*c3
            f31 = f30 - 1
            f32 = f31 - 1
            f33 = f32 - 1
            coarse(c1,c2,c3) = F1o4096*(
     &             F3375*(fine( f11, f21, f31)                         )
     &           + F1125*(fine( f11, f21, f30) + fine( f11, f20, f31) +
     &                    fine( f10, f21, f31) - fine( f12, f21, f31) -
     &                    fine( f11, f22, f31) - fine( f11, f21, f32)  )
     &           +  F375*(fine( f11, f20, f30) + fine( f10, f21, f30) -
     &                    fine( f12, f21, f30) - fine( f11, f22, f30) +
     &                    fine( f10, f20, f31) - fine( f12, f20, f31) -
     &                    fine( f10, f22, f31) + fine( f12, f22, f31) -
     &                    fine( f11, f20, f32) - fine( f10, f21, f32) +
     &                    fine( f12, f21, f32) + fine( f11, f22, f32)  )
     &           +  F225*(fine( f13, f21, f31) + fine( f11, f23, f31) +
     &                    fine( f11, f21, f33)                         )
     &           +  F125*(fine( f10, f20, f30) - fine( f12, f20, f30) -
     &                    fine( f10, f22, f30) + fine( f12, f22, f30) -
     &                    fine( f10, f20, f32) + fine( f12, f20, f32) +
     &                    fine( f10, f22, f32) - fine( f12, f22, f32)  )
     &           +   F75*(fine( f13, f21, f30) + fine( f11, f23, f30) +
     &                    fine( f13, f20, f31) - fine( f13, f22, f31) +
     &                    fine( f10, f23, f31) - fine( f12, f23, f31) -
     &                    fine( f13, f21, f32) - fine( f11, f23, f32) +
     &                    fine( f11, f20, f33) + fine( f10, f21, f33) -
     &                    fine( f12, f21, f33) - fine( f11, f22, f33)  )
     &           +   F25*(fine( f13, f20, f30) - fine( f13, f22, f30) +
     &                    fine( f10, f23, f30) - fine( f12, f23, f30) -
     &                    fine( f13, f20, f32) + fine( f13, f22, f32) -
     &                    fine( f10, f23, f32) + fine( f12, f23, f32) +
     &                    fine( f10, f20, f33) - fine( f12, f20, f33) -
     &                    fine( f10, f22, f33) + fine( f12, f22, f33)  )
     &           +   F15*(fine( f13, f23, f31) + fine( f13, f21, f33) +
     &                    fine( f11, f23, f33)                         )
     &           +    F5*(fine( f13, f23, f30) - fine( f13, f23, f32) +
     &                    fine( f13, f20, f33) - fine( f13, f22, f33) +
     &                    fine( f10, f23, f33) - fine( f12, f23, f33)  )
     &           +    F1*(fine( f13, f23, f33)                         )
     &      )
          end if
        end if
      end if
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c-----------------------------------------------------------------------
c
c Set cint(6) boundary
      if(c3f.lt.cint(6)) then
        c3 = cint(6)
        f30 = 2*c3
        f31 = f30 - 1
        f32 = f31 - 1
        f33 = f32 - 1
        f21 = f2i
        do c2 = c2i,c2f
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = F1o4096*(
     &     F1215*(fine( f11-1, f21-1, f31) + fine( f11  , f21-1, f31) +
     &            fine( f11-1, f21  , f31) + fine( f11  , f21  , f31)  )
     &    + F405*(fine( f11-1, f21-1, f30) + fine( f11  , f21-1, f30) +
     &            fine( f11-1, f21  , f30) + fine( f11  , f21  , f30) -
     &            fine( f11-1, f21-1, f32) - fine( f11  , f21-1, f32) -
     &            fine( f11-1, f21  , f32) - fine( f11  , f21  , f32)  )
     &    - F135*(fine( f11-1, f21-2, f31) + fine( f11  , f21-2, f31) +
     &            fine( f11-2, f21-1, f31) + fine( f11+1, f21-1, f31) +
     &            fine( f11-2, f21  , f31) + fine( f11+1, f21  , f31) +
     &            fine( f11-1, f21+1, f31) + fine( f11  , f21+1, f31)  )
     &    +  F81*(fine( f11-1, f21-1, f33) + fine( f11  , f21-1, f33) +
     &            fine( f11-1, f21  , f33) + fine( f11  , f21  , f33)  )
     &    -  F45*(fine( f11-1, f21-2, f30) + fine( f11  , f21-2, f30) +
     &            fine( f11-2, f21-1, f30) + fine( f11+1, f21-1, f30) +
     &            fine( f11-2, f21  , f30) + fine( f11+1, f21  , f30) +
     &            fine( f11-1, f21+1, f30) + fine( f11  , f21+1, f30) -
     &            fine( f11-1, f21-2, f32) - fine( f11  , f21-2, f32) -
     &            fine( f11-2, f21-1, f32) - fine( f11+1, f21-1, f32) -
     &            fine( f11-2, f21  , f32) - fine( f11+1, f21  , f32) -
     &            fine( f11-1, f21+1, f32) - fine( f11  , f21+1, f32)  )
     &    +  F15*(fine( f11-2, f21-2, f31) + fine( f11+1, f21-2, f31) +
     &            fine( f11-2, f21+1, f31) + fine( f11+1, f21+1, f31)  )
     &    -   F9*(fine( f11-1, f21-2, f33) + fine( f11  , f21-2, f33) +
     &            fine( f11-2, f21-1, f33) + fine( f11+1, f21-1, f33) +
     &            fine( f11-2, f21  , f33) + fine( f11+1, f21  , f33) +
     &            fine( f11-1, f21+1, f33) + fine( f11  , f21+1, f33)  )
     &    +   F5*(fine( f11-2, f21-2, f30) + fine( f11+1, f21-2, f30) +
     &            fine( f11-2, f21+1, f30) + fine( f11+1, f21+1, f30) -
     &            fine( f11-2, f21-2, f32) - fine( f11+1, f21-2, f32) -
     &            fine( f11-2, f21+1, f32) - fine( f11+1, f21+1, f32)  )
     &    +   F1*(fine( f11-2, f21-2, f33) + fine( f11+1, f21-2, f33) +
     &            fine( f11-2, f21+1, f33) + fine( f11+1, f21+1, f33)  )
     &      )
            f11 = f11 + 2
          end do
          f21 = f21 + 2
        end do
      end if
c
      return
      end
c*******************************************************************************
c* Fine to coarse grid residual transfer operation
c*     fine: The fine grid.
c*   coarse: The coarse grid.
c*  fext(6): The "extent" of the fine grid,
c*           fine(fext(1):fext(4),fext(2):fext(5),fext(3):fext(6))
c*  cint(6): The "interior" of the coarse grid.  The range of indices which
c*           are to be filled by the interpolation.
c*  cext(6): The "extent" of the coarse grid,
c*           coarse(cext(1):cext(4),cext(2):cext(5),cext(3):cext(6))
c*******************************************************************************
      subroutine resid_trans(fine,coarse,fext,cint,cext)
      implicit none
      integer fext(6),cint(6),cext(6)
      real*8 fine(fext(1):fext(4),fext(2):fext(5),fext(3):fext(6))
      real*8 coarse(cext(1):cext(4),cext(2):cext(5),cext(3):cext(6))
      integer c1i,c1f,c2i,c2f,c3i,c3f
      integer f1i,f2i,f3i
      integer c1,c2,c3,f11,f21,f31
c
c Set the coarse interior to be filled
      c1i = cint(1)
      f1i = 2*c1i
      c2i = cint(2)
      f2i = 2*c2i
      c3i = cint(3)
      f3i = 2*c3i
      c1f = cint(4)
      c2f = cint(5)
      c3f = cint(6)
c
      f31 = f3i
      do c3 = c3i,c3f
        f21 = f2i
        do c2 = c2i,c2f
          f11 = f1i
          do c1 = c1i,c1f
            coarse(c1,c2,c3) = 
     &         fine( f11-1, f21-1, f31-1) + fine( f11  , f21-1, f31-1) +
     &         fine( f11-1, f21  , f31-1) + fine( f11  , f21  , f31-1) +
     &         fine( f11-1, f21-1, f31  ) + fine( f11  , f21-1, f31  ) +
     &         fine( f11-1, f21  , f31  ) + fine( f11  , f21  , f31  )
            f11 = f11 + 2
          end do
          f21 = f21 + 2
        end do
        f31 = f31 + 2
      end do
c
      return
      end
