d_get_tridiag Subroutine

subroutine d_get_tridiag(Amat, sub, diag, over)

Arguments

Type IntentOptional Attributes Name
real(kind=8), dimension(:,:) :: Amat
real(kind=8), dimension(size(Amat,1)-1) :: sub
real(kind=8), dimension(size(Amat,1)) :: diag
real(kind=8), optional, dimension(size(Amat,1)-1) :: over

Calls

proc~~d_get_tridiag~~CallsGraph proc~d_get_tridiag d_get_tridiag assert_shape assert_shape proc~d_get_tridiag->assert_shape

Source Code

subroutine d_get_tridiag(Amat,sub,diag,over)
  real(8),dimension(:,:)                     :: Amat
  real(8),dimension(size(Amat,1))            :: diag
  real(8),dimension(size(Amat,1)-1)          :: sub
  real(8),dimension(size(Amat,1)-1),optional :: over
  real(8),dimension(size(Amat,1)-1)          :: over_
  integer                                    :: i,N
  N=size(Amat,1)
  call assert_shape(Amat,[N,N],"d_get_tridiag","Amat")
  forall(i=1:N-1)
     sub(i)  = Amat(i+1,i)
     diag(i) = Amat(i,i)
     over_(i)= Amat(i,i+1)
  end forall
  diag(N) = Amat(N,N)
  if(present(over))over=over_
end subroutine d_get_tridiag