create_preconditioner_jacobi Module Subroutine

module subroutine create_preconditioner_jacobi(N, A, M)

Arguments

Type IntentOptional Attributes Name
integer(kind=int32), intent(in) :: N
type(type_crs), intent(in) :: A
real(kind=real64), intent(inout) :: M(:)

Calls

proc~~create_preconditioner_jacobi~~CallsGraph proc~create_preconditioner_jacobi create_preconditioner_jacobi ind ind proc~create_preconditioner_jacobi->ind ptr ptr proc~create_preconditioner_jacobi->ptr val val proc~create_preconditioner_jacobi->val

Called by

proc~~create_preconditioner_jacobi~~CalledByGraph proc~create_preconditioner_jacobi create_preconditioner_jacobi proc~create_preconditioner_sparse_crs_bicgstab create_preconditioner_sparse_crs_bicgstab proc~create_preconditioner_sparse_crs_bicgstab->proc~create_preconditioner_jacobi

Source Code

    module subroutine create_preconditioner_jacobi(N, A, M)
        implicit none
        integer(int32), intent(in) :: N
        type(type_crs), intent(in) :: A
        real(real64), intent(inout) :: M(:)
        integer(int32) :: i, j

        !$omp parallel do private(i, j)
        do i = 1, N
            do j = A%ptr(i), A%ptr(i + 1) - 1
                if (i == A%Ind(j)) then
                    M(i) = 1.0d0 / A%Val(j)
                end if
            end do
        end do
        !$omp end parallel do

    end subroutine create_preconditioner_jacobi