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    miss = .true.
15 
16    ! PW:
17    if (abs(obs % loc % pw  % inv - missing_r) > 1.0) then
18       miss = .false.
19    else
20       if (obs % loc % pw  % qc /= missing_data) &
21          obs % loc % pw  % qc = missing_data
22    end if
23 
24    ! SLP:
25    if (abs(obs % loc % slp % inv - missing_r) > 1.0) then
26       miss = .false.
27    else
28       if (obs % loc % slp % qc /= missing_data) &
29         obs % loc % slp % qc = missing_data
30    end if
31 
32    do i = 1, obs % info % levels
33       ! U:  
34       if (abs(obs % each(i) % u    % inv - missing_r) > 1.0) then
35          miss = .false.
36       else
37          if (obs % each(i) % u    % qc /= missing_data) &
38             obs % each(i) % u    % qc = missing_data
39       end if
40 
41       ! V:
42       if (abs(obs % each(i) % v    % inv - missing_r) > 1.0) then
43          miss = .false.
44       else
45          if (obs % each(i) % v    % qc /= missing_data) &
46             obs % each(i) % v    % qc = missing_data
47       end if
48 
49       ! P:
50       if (abs(obs % each(i) % p    % inv - missing_r) > 1.0) then
51          miss = .false.
52       else
53          if (obs % each(i) % p    % qc /= missing_data) &
54             obs % each(i) % p    % qc = missing_data
55       end if
56 
57       ! T:
58       if (abs(obs % each(i) % t    % inv - missing_r) > 1.0) then
59          miss = .false.
60       else
61          if (obs % each(i) % t    % qc /= missing_data) &
62             obs % each(i) % t    % qc = missing_data
63       end if
64 
65       ! Q:
66       if (abs(obs % each(i) % q    % inv - missing_r) > 1.0) then
67          miss = .false.
68       else
69          if (obs % each(i) % q    % qc /= missing_data) &
70             obs % each(i) % q    % qc = missing_data
71       end if
72 
73       ! RH:
74       if (abs(obs % each(i) % rh  % inv - missing_r) > 1.0) then
75          miss = .false.
76       else
77          if (obs % each(i) % rh  % qc /= missing_data) &
78             obs % each(i) % rh  % qc = missing_data
79       end if
80 
81       ! TD:
82       if (abs(obs % each(i) % td   % inv - missing_r) > 1.0) then
83          miss = .false.
84       else
85          if (obs % each(i) % td   % qc /= missing_data) &
86             obs % each(i) % td   % qc = missing_data
87       end if
88 
89       ! SPEED:
90       if (abs(obs % each(i) % speed % inv - missing_r) > 1.0) then
91          miss = .false.
92       else
93          if (obs % each(i) % speed % qc /= missing_data) &
94             obs % each(i) % speed % qc = missing_data
95       end if
96    end do 
97  
98 end subroutine da_obs_missing
99 
100