| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| real(kind=dp), | intent(in), | dimension(:, :) | :: | A | ||
| real(kind=dp), | intent(out), | dimension(size(A, 1), size(A, 2)) | :: | L | ||
| real(kind=dp), | intent(out), | dimension(size(A, 1), size(A, 2)) | :: | D | ||
| real(kind=dp), | intent(in) | :: | omega | |||
| real(kind=dp), | intent(in) | :: | alpha |
subroutine Calculate_SSOR_preconditioner(A, L, D, omega, alpha) real(dp), dimension(:, :), intent(in) :: A real(dp), intent(in) :: omega, alpha real(dp), dimension(size(A, 1), size(A, 2)), intent(out) :: L, D integer :: N, i N = size(A, 1) L = 0.d0 D = 0.d0 do i = 1, size(A, 1) L(i, i) = 1.d0 / omega * A(i, i) L(i, 1:i - 1) = A(i, 1:i - 1) D(i, i) = A(i, i) end do L = (alpha * omega) / (2 - omega) * L end subroutine Calculate_SSOR_preconditioner