type_dense_add Subroutine

private subroutine type_dense_add(alpha, A, B, C)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: alpha
type(type_dense), intent(in) :: A
type(type_dense), intent(in) :: B
type(type_dense), intent(inout) :: C

Called by

proc~~type_dense_add~~CalledByGraph proc~type_dense_add type_dense_add interface~add add interface~add->proc~type_dense_add

Source Code

    subroutine type_dense_add(alpha, A, B, C)
        ! C := alpha*A + B
        !
        ! [ATTENTION] Assumes A, B, and C have the exact same sparsity pattern.
        !
        implicit none
        real(real64), intent(in) :: alpha
        type(type_dense), intent(in) :: A
        type(type_dense), intent(in) :: B
        type(type_dense), intent(inout) :: C

        integer(int32) :: i, j

        !$omp parallel do private(i, j) collapse(2)
        do i = 1, size(A%val, 1)
            do j = 1, size(A%val, 2)
                C%val(i, j) = alpha * A%val(i, j) + B%val(i, j)
            end do
        end do
        !$omp end parallel do

    end subroutine type_dense_add