anchor.diff:      endif
   
       ! exchange diagonal elements of overlap region
  -    !call hecmw_mat_diag_sr(hecMESH, hecTKT)
  -
       call hecmw_mat_dump(hecTKT, hecMESH)
       call hecmw_matvec_set_async(hecTKT)
   
  
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: 
      !C MPC Preproc
      S_TIME= HECMW_WTIME()
      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)
        if (hecMESH%my_rank.eq.0) then
          write(*,*) 'Time MPC pre'
          write(*,*) '  Max     :',t_max
  