da_obs_missing.inc
References to this file elsewhere.
1 subroutine da_obs_missing (obs, miss)
2
3 !-----------------------------------------------------------------------
4 ! Purpose: TBD
5 !-----------------------------------------------------------------------
6
7 implicit none
8
9 type(multi_level_type), intent(inout) :: obs
10 logical, intent(out) :: miss
11
12 integer :: i
13
14 if (trace_use_frequent) call da_trace_entry("da_obs_missing")
15
16 miss = .true.
17
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
25
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
33
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
42
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
50
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
58
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
66
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
74
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
82
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
90
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
99
100 if (trace_use_frequent) call da_trace_exit("da_obs_missing")
101
102 end subroutine da_obs_missing
103
104