subroutine da_initialize_cv(cv_size, cv) 5,6
!---------------------------------------------------------------------------
! Purpose: Initialize components of control variable.
!---------------------------------------------------------------------------
implicit none
integer, intent(in) :: cv_size
real, intent(out) :: cv(1:cv_size) ! Control variable structure.
integer :: i
real :: z, mean_cv, rms_cv, std_dev_cv
if (trace_use) call da_trace_entry
("da_initialize_cv")
!---------------------------------------------------------------------------
! [1.0] Initialize cv:
!---------------------------------------------------------------------------
if (anal_type_randomcv) then
! [2.1] Initialize random number generator and scalars:
call da_random_seed
if( use_rf )then
! [2.2] Calculate random numbers with Gaussian distribution:
do i = 1, cv_size
call da_gauss_noise
(z)
cv(i) = z
end do
else
write(unit=message(1),fmt='(a)')'Need to inject CV into wavelet space'
call da_error
(__FILE__,__LINE__,message(1:1))
endif
mean_cv = sum(cv) / real(cv_size)
rms_cv = sqrt(sum(cv*cv) / real(cv_size))
std_dev_cv = sqrt(rms_cv * rms_cv - mean_cv * mean_cv)
write(unit=message(1),fmt='(a)')' Gaussian (Normal) noise statistics:'
write(unit=message(2),fmt='(a,f15.5)')' Mean = ',mean_cv
write(unit=message(3),fmt='(a,f15.5)')' RMS = ', rms_cv
write(unit=message(4),fmt='(a,f15.5)')' STD DEV = ', std_dev_cv
call da_message
(message(1:4))
else
cv = 0.0
end if
if (trace_use) call da_trace_exit
("da_initialize_cv")
end subroutine da_initialize_cv