anchor.diff:    
     integer,parameter,public::TET_SURF_NUM=4 !< number of surfaces per tet
     integer,parameter,public::HEX_SURF_NUM=6 !< number of surfaces per hex
  +  
  +  integer,parameter,public::INTF_NEIB_BLOCK_NUM=2 !< number of neighbour blocks per interface
     
     integer,public::TET_SURF_TAB(TRI_NODE_NUM,TET_SURF_NUM) !< table of surface nodes for tet
     parameter(TET_SURF_TAB=reshape([1,3,2,1,2,4,1,4,3,2,3,4],[TRI_NODE_NUM,TET_SURF_NUM]))
  
positive.code:     integer,allocatable::lDmn(:) !< list of physical domains
      integer nPrt !< number of partitions
      integer,allocatable::lPrt(:) !< list of partitions
      ! auxiliary grid data
      logical isUpNodeNeibBlock !< if the node neighbour block is updated
      type(typeHtr1DIArr),allocatable::NodeNeibBlock(:) !< node neighbour block
      logical isUpPointPos !< if the point position is updated
      double precision,allocatable::PointPos(:,:) !< point position
      logical isUpLinePos !< if the line position is updated
      double precision,allocatable::LinePos(:,:) !< line position
      logical isUpFacetPos !< if the facet position is updated
      double precision,allocatable::FacetPos(:,:) !< facet position
      logical isUpBlockPos !< if the block position is updated
      double precision,allocatable::BlockPos(:,:) !< block position
      logical isUpLineLen !< if the line length is updated
      double precision,allocatable::LineLen(:) !< line length
      logical isUpFacetArea !< if the facet area is updated
      double precision,allocatable::FacetArea(:) !< facet area
      logical isUpBlockVol !< if the block volume is updated
      double precision,allocatable::BlockVol(:) !< block volume
      logical isUpFacetNorm !< if the facet normal vector is updated
      double precision,allocatable::FacetNorm(:,:) !< facet normal vector
    contains
  
negative.code:         end do
        end do
        this%isUpNodeNeibBlock=.true.
      end if
    end subroutine
    
    !> update the interface between blocks
    elemental subroutine updateIntf(this)
      class(typeGrid),intent(inout)::this !< this grid
      
      if(.not.this%isUpIntf)then
        !TODO:count interface num
        this%nIntf=3
        if(allocated(this%Intf))then
          if(size(this%Intf)/=this%nIntf)then
            deallocate(this%Intf)
            allocate(this%Intf(this%nIntf))
          end if
        else
          allocate(this%Intf(this%nIntf))
        end if
        call reallocArr(this%IntfNeibBlock,INTF_NEIB_BLOCK_NUM,this%nIntf)
        !TODO:save interfaces
        this%isUpIntf=.true.
      end if
    end subroutine
    
  