anchor.diff:    !C*** hecmw_mpc_mat_ass
     !C***
     !C
  -  subroutine hecmw_mpc_mat_ass(hecMESH, hecMAT, hecMATmpc)
  -    implicit none
  -    type (hecmwST_local_mesh), intent(inout) :: hecMESH
  +  subroutine hecmw_mpc_mat_ass(hecMESH, hecMAT, hecMESHmpc, hecMATmpc)
  +    implicit none
  +    type (hecmwST_local_mesh), intent(in) :: hecMESH
       type (hecmwST_matrix), intent(inout) :: hecMAT
  +    type (hecmwST_local_mesh), pointer :: hecMESHmpc
       type (hecmwST_matrix), pointer :: hecMATmpc
       real(kind=kreal) :: time_dumm
       integer(kind=kint) :: totalmpc, MPC_METHOD, SOLVER_TYPE
  
positive.code: 
      select case (MPC_METHOD)
      case (1)  ! penalty
        hecMATmpc => hecMAT
      case (2)  ! MPCCG
        hecMATmpc => hecMAT
      case (3)  ! elimination
        allocate(hecMATmpc)
        call hecmw_mat_init(hecMATmpc)
      end select
  
negative.code: 
      select case (MPC_METHOD)
      case (1)  ! penalty
        nullify(hecMESHmpc)
        nullify(hecMATmpc)
      case (2) ! MPCCG
        nullify(hecMESHmpc)
        nullify(hecMATmpc)
      case (3) ! elimination
        call hecmw_mpc_mesh_free(hecMESHmpc)
        deallocate(hecMESHmpc)
        nullify(hecMESHmpc)
        call hecmw_mat_finalize(hecMATmpc)
        deallocate(hecMATmpc)
        nullify(hecMATmpc)
  