anchor.diff:        real(kind=kreal), pointer :: AL(:), AU(:), D(:)
   
         ! added for turning >>>
  -      integer, save :: numOfBlockPerThread = 128
  +      integer, parameter :: numOfBlockPerThread = 100
         logical, save :: isFirst = .true.
         integer, save :: numOfThread = 1
         integer, save, allocatable :: startPos(:), endPos(:)
         integer(kind=kint), save :: sectorCacheSize0, sectorCacheSize1
         integer(kind=kint) :: threadNum, blockNum, numOfBlock
         integer(kind=kint) :: numOfElement, elementCount, blockIndex
  -      real(kind=kreal) :: numOfElementPerBlock, numOfElementPerRow
  +      real(kind=kreal) :: numOfElementPerBlock
         ! <<< added for turning
   
         IF (hecmw_mat_get_usejad(hecMAT).ne.0) THEN
  
positive.code:           endif
          enddo
          endPos(blockNum) = N
          ! for irregular data
          do i= blockNum+1, numOfBlock-1
            startPos(i) = N
            endPos(i) = N
          end do
          ! write(9000+hecMESH%my_rank,*) mod(blockNum, numOfThread), &
          !      startPos(blockNum), endPos(blockNum)
  
          ! calculate sector cache size
          sectorCacheSize1 = int((dble(NP) * 3 * kreal / (4096 * 128)) + 0.999)
  
negative.code:       ! added for turning >>>
        if (isFirst .eqv. .true.) then
          !$ numOfThread = omp_get_max_threads()
          numOfBlock = numOfThread * numOfBlockPerThread
          allocate (startPos(0 : numOfBlock - 1), endPos(0 : numOfBlock - 1))
          numOfElement = N + indexL(N) + indexU(N)
          numOfElementPerBlock = dble(numOfElement) / numOfBlock
          blockNum = 0
          elementCount = 0
          startPos(blockNum) = 1
  