anchor.diff:  
       !C MPC Preproc
       S_TIME= HECMW_WTIME()
  -    call hecmw_solve_prempc (hecMESH, hecMAT, hecTKT, Btmp,first_call)
  +    totalmpc = hecMESH%mpc%n_mpc
  +    call hecmw_allreduce_I1 (hecMESH, totalmpc, hecmw_sum)
  +    if (totalmpc > 0) then
  +      call hecmw_solve_prempc (hecMESH, hecMAT, hecTKT, Btmp,first_call)
  +    else
  +      hecTKT=>hecMAT
  +    end if 
  +    
       !C-- RECYCLE SETTING OF PRECONDITIONER
       call hecmw_mat_recycle_precond_setting(hecMAT)
   
       E_TIME= HECMW_WTIME()
       if (TIMElog.eq.2) then
  -      call hecmw_time_statistics(hecMESH, E_TIME - S_TIME, &
  -           t_max, t_min, t_avg, t_sd)
  +      call hecmw_time_statistics(hecMESH, E_TIME - S_TIME, t_max, t_min, t_avg, t_sd)
         if (hecMESH%my_rank.eq.0) then
           write(*,*) 'Time MPC pre'
           write(*,*) '  Max     :',t_max
  
positive.code:     type (hecmwST_matrix), pointer :: hecTKT
      real(kind=kreal), pointer :: Btmp(:)
      real(kind=kreal) :: time_dumm
      integer(kind=kint) :: totalmpc, MPC_METHOD
      integer(kind=kint) ::  i
      logical :: first_call
  
      totalmpc = hecMESH%mpc%n_mpc
      call hecmw_allreduce_I1 (hecMESH, totalmpc, hecmw_sum)
      if (totalmpc > 0) then
        call hecmw_mpc_scale(hecMESH)
  
        SELECT CASE(hecmw_mat_get_mpc_method(hecMAT))
  
negative.code:             call hecmw_trimatmul_TtKT_mpc(hecMESH, hecMAT, hecTKT)
            endif
            call hecmw_trans_b(hecMESH, hecMAT, hecMAT%B, hecTKT%B, time_dumm)
        END SELECT   
      
    end subroutine hecmw_solve_prempc
    subroutine hecmw_solve_postmpc (hecMESH, hecMAT, hecTKT, Btmp)
  