anchor.diff:            scalerval(i)=dsqrt(dabs(M%diag(i)))
           enddo
           do i=M%mtx_bbs(1,1),M%mtx_bbe(M%nblocks,M%nblocks)
  -          M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indi(i))
  -          M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indj(i))
  +          !M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indi(i))
  +          !M%val_intf_full(i)=M%val_intf_full(i)*scalerval(M%indj(i))
  +          M%val(i)=M%val(i)*scalerval(M%indi(i))
  +          M%val(i)=M%val(i)*scalerval(M%indj(i))
           enddo
           do i=M%mtx_bbe(M%nblocks,M%nblocks)+1,M%nnz
             M%val(i)=M%val(i)*scalerval(M%indi(i))
  
positive.code:         elseif (layer<=lastlayer) then ! the node on ol_outer
  !rite(stream,*)'adding to outer: node=',node,' layer=',layer
            M%ol_outer(k)%ninds=M%ol_outer(k)%ninds+1
            M%ol_outer(k)%inds(M%ol_outer(k)%ninds)=node
          endif
        enddo
        call quicksort(M%ol_inner(k)%ninds,M%ol_inner(k)%inds)
  write(stream,*)k,':ol_inner:::',M%ol_inner(k)%inds
        call quicksort(M%ol_outer(k)%ninds,M%ol_outer(k)%inds)
  write(stream,*)k,':ol_outer:::',M%ol_outer(k)%inds
        call quicksort(M%ax_sendidx(k)%ninds,M%ax_sendidx(k)%inds)
  write(stream,*)k,':ax_sendidx:::',M%ax_sendidx(k)%inds
        call quicksort(M%ax_recvidx(k)%ninds,M%ax_recvidx(k)%inds)
  write(stream,*)k,':ax_recvidx:::',M%ax_recvidx(k)%inds
        M%ol_solve(k)%ninds=M%ol_outer(k)%ninds+&
                            M%ol_inner(k)%ninds
        allocate(M%ol_solve(k)%inds(M%ol_solve(k)%ninds))
        j=M%ol_outer(k)%ninds
        M%ol_solve(k)%inds(1:j)=M%ol_outer(k)%inds(:)
        jj=j+M%ol_inner(k)%ninds
        M%ol_solve(k)%inds(j+1:jj)=M%ol_inner(k)%inds(:)
        call quicksort(M%ol_solve(k)%ninds,M%ol_solve(k)%inds)
  write(stream,*)k,':ol_solve:::',M%ol_solve(k)%inds
      enddo ! k 
      ! note: actually, interf/inner may contain also interf/receive_nodes
      !         connections 
  
negative.code:         allocate(M%diag(ndiags))
        endif
        allocate(scalerval(ndiags))
        !do i=1,M%nnz
        do i=1,M%mtx_bbe(2,2)
          if (M%indi(i)==M%indj(i)) then
            j=M%indi(i)
            if (j<M%mtx_inner_bound) then
              !M%diag(j)=M%val_intf_full(i)
              M%diag(j)=M%val(i)
            else
              M%diag(j)=M%val(i)
            endif
  