updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_tools / da_add_noise.inc
blob6e78f5d45e88a03a0795ced3eecbf280032f2f4f
1 subroutine da_add_noise (fld, yo, z)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    type (field_type), intent(inout) :: fld     ! O-B sub-type.
10    real, intent(inout)              :: yo      ! Observation.
11    real, intent(out)                :: z       ! Random number.
13    real                             :: noise
15    if (trace_use) call da_trace_entry("da_add_noise")
17    z = missing_r
19    if (fld % qc >= obs_qc_pointer) then
20       ! [1] Calculate scaled Gaussian noise:
22       call da_gauss_noise (z)      
23       noise = fld % error * z
24       
25       ! [3] Recalculate corresponding O and O-B:
26       yo = yo + noise
27       fld % inv = fld % inv + noise
28    end if
30    if (trace_use) call da_trace_exit("da_add_noise")
32 end subroutine da_add_noise