function that returns the identity matrix for a given size N
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer, | intent(in) | :: | N | |||
| logical, | intent(in), | optional | :: | use_concurrent |
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