c_invert_tridiag_block_matrix_mat Subroutine

subroutine c_invert_tridiag_block_matrix_mat(Nb, N, Amat)

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: Nb
integer, intent(in) :: N
complex(kind=8), intent(inout), dimension(Nb*N,Nb*N) :: Amat

Calls

proc~~c_invert_tridiag_block_matrix_mat~2~~CallsGraph proc~c_invert_tridiag_block_matrix_mat~2 c_invert_tridiag_block_matrix_mat get_tridiag get_tridiag proc~c_invert_tridiag_block_matrix_mat~2->get_tridiag inv_tridiag inv_tridiag proc~c_invert_tridiag_block_matrix_mat~2->inv_tridiag

Source Code

subroutine c_invert_tridiag_block_matrix_mat(Nb,N,Amat)
  integer,intent(in)                            :: Nb
  integer,intent(in)                            :: N
  complex(8),dimension(Nb*N,Nb*N),intent(inout) :: Amat
  complex(8),dimension(Nb-1,N,N)                :: sub_
  complex(8),dimension(Nb,N,N)                  :: diag_
  complex(8),dimension(Nb-1,N,N)                :: over_
  complex(8),dimension(Nb,N,N)                  :: Inv
  integer                                       :: i,j,is,js,iblock
  call get_tridiag(Nb,N,Amat,sub_,diag_,over_)
  call inv_tridiag(Nb,N,sub_,diag_,over_,Inv)
  Amat= dcmplx(0d0,0d0)
  do iblock=1,Nb
     do i=1,N
        do j=1,N
           is = i + (iblock-1)*N
           js = j + (iblock-1)*N
           Amat(is,js) = Inv(iblock,i,j)
        enddo
     enddo
  enddo
end subroutine c_invert_tridiag_block_matrix_mat