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