anchor.diff:  
         !----- SOLVE [Kt]{du}={R}
         if( sub_step == restrt_step_num .and. iter == 1 ) hecMAT%Iarray(98) = 1
  -
  -      !call hecmw_trans_b_33(hecMESH, hecMAT, hecMAT%B, P, tcomm)
  -      call hecmw_InnerProduct_R(hecMESH, ndof, hecMAT%B, hecMAT%B, res)
  -
  -      if(iter == 1)then
  -        if(res == 0.0d0)then
  -          resb = 1.0d0
  -        else
  -          resb = res
  -        endif
  -      else
  -        rres = dsqrt(res/resb)
  -        if( hecMESH%my_rank == 0 ) then
  -          write(*,"(a,i8,a,1pe11.4)")" iter:", iter-1, ", residual:", rres
  -        endif
  -        if( rres < fstrSOLID%step_ctrl(cstep)%converg ) exit
  -      endif
  -
         if( iter == 1 ) then
           hecMAT%Iarray(97) = 2   !Force numerical factorization
         else
           hecMAT%Iarray(97) = 1   !Need numerical factorization
         endif
  -
         hecMAT%X = 0.0d0
         call fstr_set_current_config_to_mesh(hecMESH,fstrSOLID,coord)
         call solve_LINEQ(hecMESH,hecMAT)
  
positive.code:       call fstr_Update_NDForce(cstep, hecMESH, hecMAT, fstrSOLID)
  
        if( isLinear ) exit
  
        ! ----- check divergence
        if( iter == fstrSOLID%step_ctrl(cstep)%max_iter .or. rres > fstrSOLID%step_ctrl(cstep)%maxres ) then
  
negative.code:     integer(kind=kint) :: i, iter
      integer(kind=kint) :: stepcnt
      integer(kind=kint) :: restrt_step_num
      real(kind=kreal)   :: tt0, tt, res, qnrm, rres, tincr, xnrm, dunrm, rxnrm
      real(kind=kreal), pointer :: coord(:), P(:)
      logical :: isLinear = .false.
  
  