s_spline_matrix_dense__mat_add Subroutine

private subroutine s_spline_matrix_dense__mat_add(self, a, amat, b, bmat)

Type Bound

sll_t_spline_matrix_dense

Arguments

Type IntentOptional Attributes Name
class(sll_t_spline_matrix_dense), intent(inout) :: self
real(kind=wp), intent(in) :: a
class(sll_c_spline_matrix), intent(in) :: amat
real(kind=wp), intent(in) :: b
class(sll_c_spline_matrix), intent(in) :: bmat

Source Code

  subroutine s_spline_matrix_dense__mat_add( self,a,amat,b,bmat) !self=a*amat+b*bmat
    class(sll_t_spline_matrix_dense), intent(inout) :: self
    real(wp)                        , intent(in   ) :: a
    class(sll_c_spline_matrix      ), intent(in   ) :: amat
    real(wp)                        , intent(in   ) :: b
    class(sll_c_spline_matrix      ), intent(in   ) :: bmat

    select type(amat); type is(sll_t_spline_matrix_dense)
    select type(bmat); type is(sll_t_spline_matrix_dense)
    SLL_ASSERT( amat%n == self%n )
    SLL_ASSERT( bmat%n == self%n )
    SLL_ASSERT( .NOT.amat%factorized )
    SLL_ASSERT( .NOT.bmat%factorized )

    self%a(:,:) = a*amat%a(:,:)+b*bmat%a(:,:)
    self%ipiv(:)=0
    self%factorized=.FALSE.
    end select
    end select
  end subroutine s_spline_matrix_dense__mat_add