sum_vector_sp Function

private function sum_vector_sp(vector, threaded) result(res)

perform the total sum of all components of type sp in a vector

Arguments

Type IntentOptional Attributes Name
real(kind=sp), intent(in) :: vector(:)
logical, intent(in), optional :: threaded

Return Value real(kind=sp)


Calls

proc~~sum_vector_sp~~CallsGraph proc~sum_vector_sp sum_vector_sp interface~pic_optional pic_optional proc~sum_vector_sp->interface~pic_optional proc~optional_char optional_char interface~pic_optional->proc~optional_char proc~optional_dp optional_dp interface~pic_optional->proc~optional_dp proc~optional_int32 optional_int32 interface~pic_optional->proc~optional_int32 proc~optional_int64 optional_int64 interface~pic_optional->proc~optional_int64 proc~optional_logical optional_logical interface~pic_optional->proc~optional_logical proc~optional_sp optional_sp interface~pic_optional->proc~optional_sp

Called by

proc~~sum_vector_sp~~CalledByGraph proc~sum_vector_sp sum_vector_sp interface~pic_sum pic_sum interface~pic_sum->proc~sum_vector_sp

Variables

Type Visibility Attributes Name Initial
integer(kind=default_int), private :: i
logical, private :: use_threads

Source Code

   function sum_vector_sp(vector, threaded) result(res)
        !! perform the total sum of all components of type sp in a vector
      real(sp), intent(in)  :: vector(:)
      logical, intent(in), optional :: threaded
      logical :: use_threads
      real(sp) :: res
      integer(default_int) :: i
      res = 0_sp
      use_threads = pic_optional(threaded, use_threaded_default)
      if (use_threads) then
         !$omp parallel do private(i) collapse(1) reduction(+:res)
         do i = 1, size(vector, 1)
            res = res + vector(i)
         end do
         !$omp end parallel do
      else
         res = sum(vector)
      end if
   end function sum_vector_sp