Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / var / da / da_obs / da_obs_missing.inc
blobecb70b4c981a4361ea82f67125cb59113a081527
1 subroutine da_obs_missing (obs, miss)
3    !-----------------------------------------------------------------------
4    ! Purpose: TBD
5    !-----------------------------------------------------------------------
7    implicit none
9    type(multi_level_type), intent(inout) :: obs
10    logical,                intent(out)   :: miss
12    integer :: i
14    if (trace_use_frequent) call da_trace_entry("da_obs_missing")
16    miss = .true.
18    ! PW:
19    if (abs(obs % loc % pw  % inv - missing_r) > 1.0) then
20       miss = .false.
21    else
22       if (obs % loc % pw  % qc /= missing_data) &
23          obs % loc % pw  % qc = missing_data
24    end if
26    ! SLP:
27    if (abs(obs % loc % slp % inv - missing_r) > 1.0) then
28       miss = .false.
29    else
30       if (obs % loc % slp % qc /= missing_data) &
31         obs % loc % slp % qc = missing_data
32    end if
34    do i = 1, obs % info % levels
35       ! U:  
36       if (abs(obs % each(i) % u    % inv - missing_r) > 1.0) then
37          miss = .false.
38       else
39          if (obs % each(i) % u    % qc /= missing_data) &
40             obs % each(i) % u    % qc = missing_data
41       end if
43       ! V:
44       if (abs(obs % each(i) % v    % inv - missing_r) > 1.0) then
45          miss = .false.
46       else
47          if (obs % each(i) % v    % qc /= missing_data) &
48             obs % each(i) % v    % qc = missing_data
49       end if
51       ! P:
52       if (abs(obs % each(i) % p    % inv - missing_r) > 1.0) then
53          miss = .false.
54       else
55          if (obs % each(i) % p    % qc /= missing_data) &
56             obs % each(i) % p    % qc = missing_data
57       end if
59       ! T:
60       if (abs(obs % each(i) % t    % inv - missing_r) > 1.0) then
61          miss = .false.
62       else
63          if (obs % each(i) % t    % qc /= missing_data) &
64             obs % each(i) % t    % qc = missing_data
65       end if
67       ! Q:
68       if (abs(obs % each(i) % q    % inv - missing_r) > 1.0) then
69          miss = .false.
70       else
71          if (obs % each(i) % q    % qc /= missing_data) &
72             obs % each(i) % q    % qc = missing_data
73       end if
75       ! RH:
76       if (abs(obs % each(i) % rh  % inv - missing_r) > 1.0) then
77          miss = .false.
78       else
79          if (obs % each(i) % rh  % qc /= missing_data) &
80             obs % each(i) % rh  % qc = missing_data
81       end if
83       ! TD:
84       if (abs(obs % each(i) % td   % inv - missing_r) > 1.0) then
85          miss = .false.
86       else
87          if (obs % each(i) % td   % qc /= missing_data) &
88             obs % each(i) % td   % qc = missing_data
89       end if
91       ! SPEED:
92       if (abs(obs % each(i) % speed % inv - missing_r) > 1.0) then
93          miss = .false.
94       else
95          if (obs % each(i) % speed % qc /= missing_data) &
96             obs % each(i) % speed % qc = missing_data
97       end if
98    end do 
100    if (trace_use_frequent) call da_trace_exit("da_obs_missing")
102 end subroutine da_obs_missing