updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_tools / da_random_omb.inc
blob9165b13c8379bacca8ee6d1b58b10e8657bdc27d
1 subroutine da_random_omb(std_dev, yo, qc_flag, omb)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
8    
9    real, intent(in)     :: std_dev      ! Standard deviation scaling.
10    real, intent(inout)  :: yo           ! Observatopn.
11    integer, intent(in)  :: qc_flag      ! Ob QC flag.
12    real, intent(inout)  :: omb          ! O-B.
14    real :: xb           ! Background value.
15    real :: z            ! Gaussian noise.
17    if (trace_use) call da_trace_entry("da_random_omb")
19    if (qc_flag >= obs_qc_pointer) then
20       ! [1] Calculate background value from old O, O-B:
21       xb = yo - omb
22    
23       ! [2] Calculate new O-B as scaled Gaussian noise:
25       call da_gauss_noise(z)   
26       omb = set_omb_rand_fac * std_dev * z
28       ! [3] Recalculate corresponding observation:
29       yo = xb + omb
30    end if
32    if (trace_use) call da_trace_exit("da_random_omb")
34 end subroutine da_random_omb