da_initialize_cv.inc

References to this file elsewhere.
1 subroutine da_initialize_cv(cv_size, cv)
2 
3    !---------------------------------------------------------------------------
4    ! Purpose: Initialize components of control variable.
5    !---------------------------------------------------------------------------
6 
7    implicit none
8 
9    integer, intent(in)   :: cv_size
10    real,    intent(out)  :: cv(1:cv_size)    ! Control variable structure.
11 
12    integer                              :: count, i
13    real                                 :: z, mean_cv, rms_cv, std_dev_cv
14    real                                 :: sum_cv, sum_cv2
15 
16    if (trace_use) call da_trace_entry("da_initialize_cv")
17 
18    !---------------------------------------------------------------------------
19    ! [1.0] Initialize cv:
20    !---------------------------------------------------------------------------
21 
22    if (anal_type_randomcv) then
23    
24       ! [2.1] Initialize random number generator and scalars:
25 
26       call da_random_seed
27       
28       sum_cv = 0.0
29       sum_cv2 = 0.0
30       count = 0
31 
32       ! [2.2] Calculate random numbers with Gaussian distribution:
33 
34       do i = 1, cv_size
35          call da_gauss_noise(z)
36          cv(i) = z
37 
38          sum_cv = sum_cv + cv(i)
39          sum_cv2 = sum_cv2 + cv(i) * cv(i)
40          count = count + 1
41 
42          mean_cv = sum_cv / real(count)
43          rms_cv = sqrt(sum_cv2 / real(count))
44          std_dev_cv = sqrt(rms_cv * rms_cv - mean_cv * mean_cv)
45       end do
46 
47       write(unit=stdout,fmt=*)
48       write(unit=stdout,fmt='(a)')' Gaussian (Normal) noise statistics:'
49       write(unit=stdout,fmt='(a,f15.5)')' Mean = ',mean_cv
50       write(unit=stdout,fmt='(a,f15.5)')' RMS = ', rms_cv
51       write(unit=stdout,fmt='(a,f15.5)')' STD DEV = ', std_dev_cv
52    else
53       cv = 0.0
54    end if
55 
56    if (trace_use) call da_trace_exit("da_initialize_cv")
57 
58 end subroutine da_initialize_cv
59 
60