<HTML> <BODY BGCOLOR=#ccccdd LINK=#0000aa VLINK=#0000ff ALINK=#ff0000 ><BASE TARGET="bottom_target"><PRE>
<A NAME='DA_SET_RANDOMCV'><A href='../../html_code/tools/da_set_randomcv.inc.html#DA_SET_RANDOMCV' TARGET='top_target'><IMG SRC="../../gif/bar_red.gif" border=0></A>

subroutine da_set_randomcv(cv_size, rcv) 1,4

   !---------------------------------------------------------------------------
   ! Purpose: Allocate components of control variable.
   !
   ! Method:  Allocate component in turn.
   !---------------------------------------------------------------------------

   implicit none

   integer, intent(in) :: cv_size
   real, intent(inout) :: rcv(1:cv_size)     ! Control variable structure.

   integer             :: i
   real                :: mean_cv, rms_cv, std_dev_cv
   real                :: sum_cv, sum_cv2

   if (trace_use) call da_trace_entry("da_set_randomcv")

   ! [1] Initialize random number generator and scalars:

   call da_random_seed

   sum_cv = 0.0
   sum_cv2 = 0.0

   ! [2] Calculate random numbers with Gaussian distribution:

   do i = 1, cv_size
      call da_gauss_noise(rcv(i))

      sum_cv = sum_cv + rcv(i)
      sum_cv2 = sum_cv2 + rcv(i) * rcv(i)
   end do

   mean_cv = sum_cv / real(cv_size)
   rms_cv = sqrt(sum_cv2 / real(cv_size))
   std_dev_cv = sqrt(rms_cv * rms_cv - mean_cv * mean_cv)

   write(unit=stdout,fmt=*)
   write(unit=stdout,fmt='(a)')' Gaussian (Normal) noise statistics:'
   write(unit=stdout,fmt='(a,f15.5)')' Mean = ',mean_cv
   write(unit=stdout,fmt='(a,f15.5)')' RMS = ', rms_cv
   write(unit=stdout,fmt='(a,f15.5)')' STD DEV = ', std_dev_cv

   if (trace_use) call da_trace_exit("da_set_randomcv")

end subroutine da_set_randomcv