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~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~pivot_partial pivot_partial proc~pivot_partial->proc~identity_n proc~pivot_total pivot_total proc~pivot_total->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~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