anchor.diff:  
   !> foeuler main program
   program foeuler
  +  use moduleBasicDataStruct
     use moduleFileIO
     use moduleGrid
  +  use moduleGridOperation
  +  use moduleInterpolation
     use moduleFVMGrad
     use moduleFVMConvect
     use moduleMPIComm
     use gVarEuler
  +  double precision,allocatable::rhoNode(:) !< density at node
  +  double precision,allocatable::uBlock(:,:) !< velocity at block
  +  double precision,allocatable::uIntf(:,:) !< velocity at interface
  +  double precision,allocatable::pIntf(:) !< pressure at interface
  +  double precision,allocatable::tempMass(:) !< temporary block mass
  +  double precision,allocatable::tempMom(:,:) !< temporary extensive node momentum
  +  double precision,allocatable::tempEnergy(:) !< temporary extensive block energy
  +  double precision pWork !< pressure work done on block surface
     
     call initMPI()
     if(pidMPI==0)then
       ! read grid
       open(12,file='bin/gridGMSH5.msh',status='old')
       call readGMSH(12,grid)
  +    call grid%updateIntf()
       close(12)
       ! allocate storage
       allocate(rho(grid%nBlock))
  
positive.code:     call writeGMSH(13,p,grid,BIND_BLOCK,'p',0,t)
      ! advance in time
      do iStep=1,nStep
        ! Lagrangian step
        ! Euler rezoning
        t=t+dt
        ! write results
        call writeGMSH(13,rho,grid,BIND_BLOCK,'rho',iStep,t)
        call writeGMSH(13,u,grid,BIND_NODE,'u',iStep,t)
        call writeGMSH(13,p,grid,BIND_BLOCK,'p',iStep,t)
      end do
      close(13)
    else
    end if
  
negative.code:     allocate(E(grid%nBlock))
      allocate(rhou(DIMS,grid%nNode))
      allocate(rhoE(grid%nBlock))
      allocate(rhoNode(grid%nNode))
      allocate(uBlock(DIMS,grid%nBlock))
      allocate(uIntf(DIMS,grid%nIntf))
      allocate(pIntf(grid%nIntf))
      allocate(tempMass(grid%nBlock))
      allocate(tempMom(DIMS,grid%nNode))
      allocate(tempEnergy(grid%nBlock))
      ! simulation control
      dt=1d-6
      dFinal=1d-4
  