anchor.diff:          enddo
           deallocate(Btmp)
         else if (MPC_METHOD == 3) then  ! elimination
  -        !write(0,*) "DEBUG: MPC: solve done"
           call hecmw_tback_x_33(hecMESH, hecTKT%X, time_dumm)
           do i=1,hecMAT%NP * hecMAT%NDOF
             hecMAT%X(i)=hecTKT%X(i)
           enddo
  -        !write(0,*) "DEBUG: MPC: recover solution done"
           call hecmw_mat_finalize(hecTKT)
           deallocate(hecTKT)
         endif
  
positive.code:         call hecmw_trans_b_33(hecMESH, hecMAT, Btmp, hecMAT%B, time_dumm)
          hecTKT => hecMAT
        else if (MPC_METHOD == 3) then  ! elimination
          write(0,*) "DEBUG: MPC Method: Elimination"
          allocate(hecTKT)
          call hecmw_mat_init(hecTKT)
          !write(0,*) "DEBUG: MPC: eliminating slave DOF"
          call hecmw_trimatmul_TtKT_mpc(hecMESH, hecMAT, hecTKT)
          !write(0,*) "DEBUG: MPC: trimatmul done"
          call hecmw_trans_b_33(hecMESH, hecMAT, hecMAT%B, hecTKT%B, time_dumm)
          !write(0,*) "DEBUG: MPC: make new RHS done"
        endif
      else
        hecTKT => hecMAT
  
negative.code:       if (MPC_METHOD < 1 .or. 3 < MPC_METHOD) MPC_METHOD = 3
  
        if (MPC_METHOD == 1) then  ! penalty
          !if (hecMESH%my_rank.eq.0) write(0,*) "MPC Method: Penalty"
          call hecmw_mat_ass_equation ( hecMESH, hecMAT )
          hecTKT => hecMAT
        else if (MPC_METHOD == 2) then  ! MPCCG
          !if (hecMESH%my_rank.eq.0) write(0,*) "MPC Method: MPC-CG"
          call hecmw_matvec_33_set_mpcmatvec_flg (.true.)
          allocate(Btmp(hecMAT%NP * hecMAT%NDOF))
          do i=1,hecMAT%NP * hecMAT%NDOF
  