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 (iv_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    if (iv%info(sound)%nlocal > 0) then
27       call da_residual_sound(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
28       call da_residual_sonde_sfc(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
29    end if
30 
31    if (iv%info(synop)%nlocal > 0) &
32       call da_residual_synop(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
33 
34    if (iv%info(geoamv)%nlocal > 0) &
35       call da_residual_geoamv(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
36 
37    if (iv%info(polaramv)%nlocal > 0) &
38       call da_residual_polaramv(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
39 
40    if (iv%info(airep)%nlocal > 0) &
41       call da_residual_airep(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
42 
43    if (iv%info(metar)%nlocal > 0) &
44       call da_residual_metar(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
45 
46    if (iv%info(ships)%nlocal > 0) &
47       call da_residual_ships(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
48 
49    if (iv%info(gpspw)%nlocal > 0) &
50       call da_residual_gpspw(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
51 
52    if (iv%info(gpsref)%nlocal > 0) &
53       call da_residual_gpsref(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
54 
55    if (iv%info(ssmi_tb)%nlocal > 0) &
56       call da_residual_ssmi_tb(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
57 
58    if (iv%info(ssmi_rv)%nlocal > 0) &
59       call da_residual_ssmi_rv(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
60 
61    if ( iv%info(ssmt2)%nlocal > 0) &
62       call da_residual_ssmt1(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
63 
64    if (iv%info(ssmt2)%nlocal > 0) &
65       call da_residual_ssmt2(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
66 
67    if (iv%info(pilot)%nlocal > 0) &
68       call da_residual_pilot(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
69 
70    if (iv%info(bogus)%nlocal > 0) &
71       call da_residual_bogus(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
72 
73    if (iv%info(satem)%nlocal > 0) &
74       call da_residual_satem(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
75 
76    if (num_pseudo > 0) &
77       call da_residual_pseudo(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
78 
79    if (iv%info(qscat)%nlocal > 0) &
80       call da_residual_qscat(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
81 
82    if (iv%info(radar)%nlocal > 0) &
83       call da_residual_radar(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
84 
85    if (iv%info(profiler)%nlocal > 0) &
86       call da_residual_profiler(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
87 
88    if (iv%info(buoy)%nlocal > 0) &
89       call da_residual_buoy(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
90 
91    if (iv%num_inst > 0) &
92       call da_residual_rad(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
93 
94    if (iv%info(airsr)%nlocal > 0) &
95       call da_residual_airsr(iv, y, re, np_missing, np_bad_data, np_obs_used, np_available)
96 
97    if (trace_use) call da_trace_exit("da_calculate_residual")
98 
99 end subroutine da_calculate_residual
100 
101