Calculate_Jacobi_preconditioner Function

public function Calculate_Jacobi_preconditioner(A) result(D)

Arguments

Type IntentOptional Attributes Name
real(kind=dp), intent(in), DIMENSION(:, :) :: A

Return Value real(kind=dp), DIMENSION(SIZE(A, 1), SIZE(A, 2))


Calls

proc~~calculate_jacobi_preconditioner~~CallsGraph proc~calculate_jacobi_preconditioner Calculate_Jacobi_preconditioner proc~diag Diag proc~calculate_jacobi_preconditioner->proc~diag

Source Code

    FUNCTION Calculate_Jacobi_preconditioner(A) RESULT(D)
        REAL(dp), DIMENSION(:, :), INTENT(IN) :: A
        REAL(dp), DIMENSION(SIZE(A, 1), SIZE(A, 2)) :: D
        INTEGER :: N, i

        N = SIZE(A, 1)

        D = 0.d0

        IF (ANY(Diag(A) < epsi)) STOP "ERROR :: Zero diagonal in Jacobi preconditioner"
        FORALL(i = 1:N) D(i, i) = 1.d0 / A(i, i)

    END FUNCTION Calculate_Jacobi_preconditioner