Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_tools / da_add_noise_new.inc
blobf73d6f1b1ead30c60aa7bbcf6857241557dd8c6a
1 subroutine da_add_noise_new (qc, error, inv, yo, z)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    integer, intent(in)              :: qc
10    real, intent(in)                 :: error
11    real, intent(inout)              :: inv
12    real, intent(inout)              :: yo      ! Observation.
13    real, intent(out)                :: z       ! Random number.
15    real                             :: noise
17    if (trace_use) call da_trace_entry("da_add_noise_new")
19    z = missing_r
21    if (qc >= obs_qc_pointer) then
22       ! [1] Calculate scaled Gaussian noise:
24       call da_gauss_noise (z)      
25       noise = error * z
26       
27       ! [3] Recalculate corresponding O and O-B:
28       yo = yo + noise
29       inv = inv + noise
30    end if
32    if (trace_use) call da_trace_exit("da_add_noise_new")
34 end subroutine da_add_noise_new