Identity_n Function

public function Identity_n(N, use_concurrent) result(Identity)

function that returns the identity matrix for a given size N

Arguments

Type IntentOptional Attributes Name
integer, intent(in) :: N
logical, intent(in), optional :: use_concurrent

Return Value real(kind=dp), DIMENSION(N, N)


Called by

proc~~identity_n~~CalledByGraph proc~identity_n Identity_n proc~eigen Eigen proc~eigen->proc~identity_n proc~qr_decomposition QR_decomposition proc~eigen->proc~qr_decomposition proc~faddeev_leverrier Faddeev_Leverrier proc~faddeev_leverrier->proc~identity_n proc~ilu_decomposition ILU_decomposition proc~ilu_decomposition->proc~identity_n proc~incomplete_cholesky_decomposition Incomplete_Cholesky_decomposition proc~incomplete_cholesky_decomposition->proc~identity_n proc~is_orthogonal is_orthogonal proc~is_orthogonal->proc~identity_n proc~ldl_cholesky_decomposition LDL_Cholesky_decomposition proc~ldl_cholesky_decomposition->proc~identity_n proc~qr_givens_decomposition QR_Givens_decomposition proc~qr_givens_decomposition->proc~identity_n proc~rotation_matrix rotation_matrix proc~qr_givens_decomposition->proc~rotation_matrix proc~qr_householder_decomposition QR_Householder_decomposition proc~qr_householder_decomposition->proc~identity_n proc~rotation_matrix->proc~identity_n proc~calculate_icf_preconditioner Calculate_ICF_preconditioner proc~calculate_icf_preconditioner->proc~incomplete_cholesky_decomposition proc~calculate_ilu_preconditioner Calculate_ILU_preconditioner proc~calculate_ilu_preconditioner->proc~ilu_decomposition proc~is_spd is_SPD proc~is_spd->proc~eigen proc~qr_decomposition->proc~qr_givens_decomposition proc~qr_decomposition->proc~qr_householder_decomposition

Source Code

     FUNCTION Identity_n(N, use_concurrent) RESULT(Identity)
        INTEGER, INTENT(IN) :: N
        LOGICAL, INTENT(IN), OPTIONAL :: use_concurrent
        REAL(dp), DIMENSION(N, N) :: Identity
        INTEGER :: i
        LOGICAL :: concurrent_mode

        concurrent_mode = .FALSE.
        IF (PRESENT(use_concurrent)) concurrent_mode = use_concurrent

        Identity = 0.d0

        IF (concurrent_mode) THEN
            DO CONCURRENT (i = 1:N)
                Identity(i, i) = 1.0_dp
            END DO
        ELSE
            FORALL(i = 1:N) Identity(i, i) = 1.0_dp
        END IF
        
    END FUNCTION Identity_n