Calculate_Gauss_Seidel_preconditioner Function

public function Calculate_Gauss_Seidel_preconditioner(A) result(L)

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_gauss_seidel_preconditioner~~CallsGraph proc~calculate_gauss_seidel_preconditioner Calculate_Gauss_Seidel_preconditioner proc~diag Diag proc~calculate_gauss_seidel_preconditioner->proc~diag

Source Code

    function Calculate_Gauss_Seidel_preconditioner(A) result(L)
        real(dp), dimension(:, :), intent(in) :: A
        real(dp), dimension(size(A, 1), size(A, 2)) :: L
        integer :: N, i, j

        N = size(A, 1)

        L = 0.d0

        if (any(Diag(A) < TOL_CONVERGENCE_dp)) stop "ERROR :: Zero diagonal in Gauss-Seidel preconditioner"
        forall (i=1:size(A, 1), j=1:size(A, 2), i >= j) L(i, j) = A(i, j)

    end function Calculate_Gauss_Seidel_preconditioner