anchor.diff:      FILTER= hecMAT%Rarray(5)
   
       Write(*,"(a,F15.8)")"### RIF FILTER   :",FILTER
  -    Write(*,"(a)")"This precoditioner is incomplete implementation. Please use other preconditioner"
   
       call hecmw_rif_nn(hecMAT)
   
  
positive.code:     subroutine hecmw_rif_nn(hecMAT)
      implicit none
      type (hecmwST_matrix)     :: hecMAT
      integer(kind=kint) :: i, j, jS, jE, in, itr, iitr, ind(9), PRECOND, NP, NDOF, NDOF2,idof,jdof,k
      real(kind=krealp) :: YV1, YV2, YV3, X1, X2, X3, dd, dd1, dd2, dd3, dtemp(3)
      real(kind=krealp) :: YV(hecMAT%NDOF), X(hecMAT%NDOF)
      real(kind=krealp) :: FILTER, SIGMA_DIAG
      real(kind=krealp), allocatable :: zz(:), vv(:)
  
  
negative.code:     implicit none
      real(kind=kreal), intent(inout)  :: ZP(:)
      integer(kind=kint) :: in, i, j, isL, ieL, isU, ieU, k, iold, rcm,NDOF,NDOF2,idof,jdof
      real(kind=kreal) :: SW(NDOF),X(NDOF)
      NDOF2=NDOF*NDOF
      !C-- FORWARD
      do i= 1, N
        do idof = 1, NDOF
          SW(idof) = ZP(NDOF*(i-1)+idof)
        end do 
        isL= inumFI1L(i-1)+1
        ieL= inumFI1L(i)
        do j= isL, ieL
          in= FI1L(j)
          do idof = 1, NDOF
            X(idof) = ZP(NDOF*(in-1)+idof)
          end do 
          do idof = 1, NDOF
            do jdof = 1, NDOF
              SW(idof) = SW(idof) - RIFL(NDOF2*(j-1)+NDOF*(idof-1)+jdof)*X(jdof)
            end do 
          end do 
        enddo
        X = SW
        do idof = 2,NDOF
          do jdof = 1, idof-1
             X(idof) = X(idof) - RIFD(NDOF2*(i-1)+NDOF*(idof-1)+jdof )*X(jdof)
          end do 
        end do
        ZP(NDOF*(i-1)+1:NDOF*(i-1)+NDOF) = X(1:NDOF)
      enddo
  
      do i=1, N
        do idof=1,NDOF
          ZP(NDOF*(i-1)+idof)= ZP(NDOF*(i-1)+idof)*RIFD(NDOF2*(i-1)+(idof-1)*NDOF+idof)
        end do
      enddo
    !C-- BACKWARD
      do i= N, 1, -1
        do idof = 1, NDOF
          SW(idof) = ZP(NDOF*(i-1)+idof)
        end do 
        isL= inumFI1U(i-1) + 1
        ieL= inumFI1U(i)
        do j= ieL, isL, -1
          in= FI1U(j)
          do idof = 1, NDOF
            X(idof) = ZP(NDOF*(in-1)+idof)
          end do 
          do idof = 1, NDOF
            do jdof = 1, NDOF
              SW(idof) = SW(idof) - RIFU(NDOF2*(j-1)+NDOF*(idof-1)+jdof)*X(jdof)
            end do 
          end do 
        enddo
        X=SW
        do idof = NDOF, 1, -1
          do jdof = NDOF, idof+1, -1
            X(idof) = X(idof) - RIFD(NDOF*NDOF*(i-1)+NDOF*(jdof-1)+idof)*X(jdof)          
          end do 
        end do
        do idof = 1, NDOF
          ZP(NDOF*(i-1)+idof) = X(idof)
        end do 
      enddo
    end subroutine hecmw_precond_RIF_nn_apply
  
  
  