da_calculate_residual.inc
References to this file elsewhere.
1 subroutine da_calculate_residual(iv, y, re)
2
3 !-----------------------------------------------------------------------
4 ! Purpose: Calculate residuals
5 !-----------------------------------------------------------------------
6
7 implicit none
8
9 type (ob_type), intent(in) :: iv ! Innovation vector (O-B).
10 type (y_type), intent(in) :: y ! y = H (xa)
11 type (y_type), intent(inout) :: re ! Residual (O-A).
12
13 integer :: np_available, np_obs_used, np_missing , np_bad_data
14
15 if (trace_use) call da_trace_entry("da_calculate_residual")
16
17 np_available = 0
18 np_obs_used = 0
19 np_missing = 0
20 np_bad_data = 0
21
22 !-------------------------------------------------------------------------
23 ! [1.0] (O-A) = (O-B) - H x~:
24 !-------------------------------------------------------------------------
25
26 ! for radiosonde:
27
28 call da_residual_sound(iv, y, re, np_missing, np_bad_data, &
29 np_obs_used, np_available)
30
31 call da_residual_sonde_sfc(iv, y, re, np_missing, np_bad_data, &
32 np_obs_used, np_available)
33
34 ! for surface
35
36 call da_residual_synop(iv, y, re, np_missing, np_bad_data, &
37 np_obs_used, np_available)
38
39 ! for Geo. Satellite AMVs :
40
41 call da_residual_geoamv(iv, y, re, np_missing, np_bad_data, &
42 np_obs_used, np_available)
43
44 ! for Polar Satellite AMVs :
45
46 call da_residual_polaramv(iv, y, re, np_missing, np_bad_data, &
47 np_obs_used, np_available)
48
49 ! for airep:
50
51 call da_residual_airep(iv, y, re, np_missing, np_bad_data, &
52 np_obs_used, np_available)
53
54 ! for metar
55
56 call da_residual_metar(iv, y, re, np_missing, np_bad_data, &
57 np_obs_used, np_available)
58
59 ! for ships
60
61 call da_residual_ships(iv, y, re, np_missing, np_bad_data, &
62 np_obs_used, np_available)
63
64 ! GPSPW:
65
66 call da_residual_gpspw(iv, y, re, np_missing, np_bad_data, &
67 np_obs_used, np_available)
68
69 ! GPSRF:
70
71 call da_residual_gpsref(iv, y, re, np_missing, np_bad_data, &
72 np_obs_used, np_available)
73
74 ! for SSMI
75
76 call da_residual_ssmi(iv, y, re, np_missing, np_bad_data, &
77 np_obs_used, np_available)
78 ! for SSMT1
79
80 call da_residual_ssmt1(iv, y, re, np_missing, np_bad_data, &
81 np_obs_used, np_available)
82
83 ! for SSMT2
84
85 call da_residual_ssmt2(iv, y, re, np_missing, np_bad_data, &
86 np_obs_used, np_available)
87
88 ! for pilot
89
90 call da_residual_pilot(iv, y, re, np_missing, np_bad_data, &
91 np_obs_used, np_available)
92
93 ! for TC bogus
94
95 call da_residual_bogus(iv, y, re, np_missing, np_bad_data, &
96 np_obs_used, np_available)
97
98 ! for Satem
99
100 call da_residual_satem(iv, y, re, np_missing, np_bad_data, &
101 np_obs_used, np_available)
102
103 ! Pseudo-obs
104
105 call da_residual_pseudo(iv, y, re, &
106 np_missing, np_bad_data, &
107 np_obs_used, np_available)
108 ! Quikscat scatterometer:
109
110 call da_residual_qscat(iv, y, re, &
111 np_missing, np_bad_data, &
112 np_obs_used, np_available)
113
114 ! for Radar
115
116 call da_residual_radar(iv, y, re, &
117 np_missing, np_bad_data, &
118 np_obs_used, np_available)
119
120 ! for profiler
121
122 call da_residual_profiler(iv, y, re, np_missing, np_bad_data, &
123 np_obs_used, np_available)
124
125 ! for buoy
126
127 call da_residual_buoy(iv, y, re, np_missing, np_bad_data, &
128 np_obs_used, np_available)
129
130 ! for radiance
131 call da_residual_rad(iv, y, re, np_missing, np_bad_data, &
132 np_obs_used, np_available)
133
134 ! for AIRS retrievals
135
136 call da_residual_airsr(iv, y, re, np_missing, np_bad_data, &
137 np_obs_used, np_available)
138
139 if (trace_use) call da_trace_exit("da_calculate_residual")
140
141
142 end subroutine da_calculate_residual
143
144