type_coo_gemv Subroutine

private subroutine type_coo_gemv(alpha, A, x, beta, y)

Arguments

Type IntentOptional Attributes Name
real(kind=real64), intent(in) :: alpha
type(type_coo), intent(in) :: A
real(kind=real64), intent(in) :: x(:)
real(kind=real64), intent(in) :: beta
real(kind=real64), intent(inout) :: y(:)

Called by

proc~~type_coo_gemv~~CalledByGraph proc~type_coo_gemv type_coo_gemv interface~gemv gemv interface~gemv->proc~type_coo_gemv proc~process_element_hydraulic_linear_1 process_element_hydraulic_linear_1 proc~process_element_hydraulic_linear_1->interface~gemv proc~hydraulic_assemble_system_linear_1 hydraulic_assemble_system_linear_1 proc~hydraulic_assemble_system_linear_1->proc~process_element_hydraulic_linear_1 proc~hydraulic_assemble_system_linear_1_parallel hydraulic_assemble_system_linear_1_parallel proc~hydraulic_assemble_system_linear_1_parallel->proc~process_element_hydraulic_linear_1

Source Code

    subroutine type_coo_gemv(alpha, A, x, beta, y)
        ! y := alpha*A*x + beta*y
        implicit none
        real(real64), intent(in) :: alpha
        type(type_coo), intent(in) :: A
        real(real64), intent(in) :: x(:)
        real(real64), intent(in) :: beta
        real(real64), intent(inout) :: y(:)

        integer(int32) :: i

        !$omp parallel do default(shared) private(i)
        do i = 1, A%nnz
            !$omp atomic
            y(A%row(i)) = alpha * A%val(i) * x(A%col(i)) + beta * y(A%row(i))
        end do
        !$omp end parallel do

    end subroutine type_coo_gemv