s_spline_matrix_banded__matvec_prod Function

private function s_spline_matrix_banded__matvec_prod(self, v_in) result(v_out)

Type Bound

sll_t_spline_matrix_banded

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_matrix_banded), intent(in) :: self
real(kind=wp), intent(in) :: v_in(:)

Return Value real(kind=wp), (size(v_in))


Source Code

  function s_spline_matrix_banded__matvec_prod( self, v_in) result(v_out )
    class(sll_t_spline_matrix_banded), intent(in) :: self
    real(wp)                         , intent(in) :: v_in(:)
    real(wp)                                      :: v_out(size(v_in))
    integer                                       :: j,imin,imax

    SLL_ASSERT( size(v_in,1) == self%n )
    SLL_ASSERT( .not.self%factorized   )

    DO j=1,self%n
      imin=max(1,j-self%ku)
      imax=min(self%n,j+self%kl)
      v_out(j)=DOT_PRODUCT(self%q(self%kl+self%ku+1+imin-j:self%kl+self%ku+1+imax-j,j),v_in(imin:imax))
    END DO

  end function s_spline_matrix_banded__matvec_prod