c_check_tridiag_block Function

function c_check_tridiag_block(Nblock, Nsize, Amat) result(Mcheck)

Arguments

Type IntentOptional Attributes Name
integer :: Nblock
integer :: Nsize
complex(kind=8), dimension(Nblock*Nsize,Nblock*Nsize) :: Amat

Return Value logical


Source Code

function c_check_tridiag_block(Nblock,Nsize,Amat) result(Mcheck)
  integer                                         :: Nblock
  integer                                         :: Nsize
  complex(8),dimension(Nblock*Nsize,Nblock*Nsize) :: Amat
  logical,dimension(Nblock*Nsize,Nblock*Nsize)    :: Lmat
  integer                                         :: i,j,iblock,is,js
  logical                                         :: Mcheck
  Lmat=.true.
  do iblock=1,Nblock-1
     do i=1,Nsize
        do j=1,Nsize
           is = i + (iblock-1)*Nsize
           js = j + (iblock-1)*Nsize
           Lmat(Nsize+is,js) =.false.
           Lmat(is,js)       =.false.
           Lmat(is,Nsize+js) =.false.
        enddo
     enddo
  enddo
  do i=1,Nsize
     do j=1,Nsize
        is = i + (Nblock-1)*Nsize
        js = j + (Nblock-1)*Nsize
        Lmat(is,js)=.false.
     enddo
  enddo
  Mcheck = .not.(sum(abs(Amat),mask=Lmat)>0d0)
end function c_check_tridiag_block