d_invert_tridiag_block_matrix_mat Subroutine

subroutine d_invert_tridiag_block_matrix_mat(Nb, N, Amat)

Arguments

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

Calls

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

Source Code

subroutine d_invert_tridiag_block_matrix_mat(Nb,N,Amat)
  integer,intent(in)                         :: Nb
  integer,intent(in)                         :: N
  real(8),dimension(Nb*N,Nb*N),intent(inout) :: Amat
  real(8),dimension(Nb-1,N,N)                :: sub_
  real(8),dimension(Nb,N,N)                  :: diag_
  real(8),dimension(Nb-1,N,N)                :: over_
  real(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=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 d_invert_tridiag_block_matrix_mat