da_transform_xtoy_adj.inc

References to this file elsewhere.
1 subroutine da_transform_xtoy_adj(xb, iv, xp, jo_grad_y, jo_grad_x)
2 
3    !--------------------------------------------------------------------------
4    ! Purpose: TBD
5    !--------------------------------------------------------------------------
6    
7    implicit none
8    
9    type (xb_type), intent(in)        :: xb          ! first guess state.
10    type (ob_type), intent(in)        :: iv          ! obs. inc vector (o-b).
11    type (xpose_type), intent(in)     :: xp          ! Domain decomposition vars.
12    type (y_type), intent(inout)      :: jo_grad_y   ! grad_y(jo)
13    type (x_type), intent(inout)      :: jo_grad_x   ! grad_x(jo)
14 
15    if (trace_use) call da_trace_entry("da_transform_xtoy_adj")
16   
17    !--------------------------------------------------------------------------
18    ! [1.0] Radiosonde observation operator y = H(x):
19    !--------------------------------------------------------------------------
20 
21    call da_transform_xtoy_sound_adj (iv, xp, jo_grad_y, jo_grad_x)
22    call da_transform_xtoy_sonde_sfc_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
23 
24    !---------------------------------------------------------------------------
25    ! [2.0] Surface observation operator y = H(x):
26    !---------------------------------------------------------------------------
27 
28    call da_transform_xtoy_synop_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
29 
30    !---------------------------------------------------------------------------
31    ! [3.0] Cloud track wind observation operator y = H(x):
32    !---------------------------------------------------------------------------
33 
34    ! Geostationary Satellite
35    call da_transform_xtoy_geoamv_adj (iv, xp, jo_grad_y, jo_grad_x)
36 
37    ! Polar orbitting Satellite
38    call da_transform_xtoy_polaramv_adj (iv, xp, jo_grad_y, jo_grad_x)
39 
40    !---------------------------------------------------------------------------
41    ! [4.0] Aircraft observation operator y = H(x):
42    !---------------------------------------------------------------------------
43 
44    call da_transform_xtoy_airep_adj (iv, xp, jo_grad_y, jo_grad_x)
45 
46    !---------------------------------------------------------------------------
47    ! [5.0] Metar observation operator y = H(x):
48    !---------------------------------------------------------------------------
49 
50    call da_transform_xtoy_metar_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
51 
52    !---------------------------------------------------------------------------
53    ! [6.0] Ship observation operator y = H(x):
54    !---------------------------------------------------------------------------
55 
56    call da_transform_xtoy_ships_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
57 
58    !---------------------------------------------------------------------------
59    ! [7.0] GPS TPW/ZTD observation operator y = H(x):
60    !---------------------------------------------------------------------------
61 
62    call da_transform_xtoy_gpspw_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
63 
64    !---------------------------------------------------------------------------
65    ! [8.0] SSMI observation operator y = H(x):
66    !---------------------------------------------------------------------------
67 
68    call da_transform_xtoy_ssmi_adj (xb, iv, jo_grad_y, jo_grad_x)
69 
70    !---------------------------------------------------------------------------
71    ! [9.0] Pilot observation operator y = H(x):
72    !---------------------------------------------------------------------------
73 
74    call da_transform_xtoy_pilot_adj (iv, xp, jo_grad_y, jo_grad_x)
75 
76    !---------------------------------------------------------------------------
77    ! [10.0] Pseudo obs observation operator y = H(x):
78    !---------------------------------------------------------------------------
79 
80    call da_transform_xtoy_pseudo_adj (iv, xp, jo_grad_y, jo_grad_x)
81 
82    !---------------------------------------------------------------------------
83    ! [11.0] Satem observation operator y = H(x):
84    !---------------------------------------------------------------------------
85 
86    call da_transform_xtoy_satem_adj (iv, xp, jo_grad_y, jo_grad_x, xb)
87 
88    !---------------------------------------------------------------------------
89    ! [12.0] SSM/T1 observation operator y = H(x):
90    !---------------------------------------------------------------------------
91 
92    call da_transform_xtoy_ssmt1_adj (iv, xp, jo_grad_y, jo_grad_x)
93 
94    !---------------------------------------------------------------------------
95    ! [13.0] SSM/T2 observation operator y = H(x):
96    !---------------------------------------------------------------------------
97 
98    call da_transform_xtoy_ssmt2_adj (iv, xp, jo_grad_y, jo_grad_x)
99 
100    !---------------------------------------------------------------------------
101    ! [14.0] Scatterometer observation operator y = H(x):
102    !---------------------------------------------------------------------------
103 
104    call da_transform_xtoy_qscat_adj (iv, xp, jo_grad_y, jo_grad_x)
105 
106    !---------------------------------------------------------------------------
107    ! [15.0] Scatterometer observation operator y = H(x):
108    !---------------------------------------------------------------------------
109 
110    call da_transform_xtoy_profiler_adj (iv, xp, jo_grad_y, jo_grad_x)
111 
112    !---------------------------------------------------------------------------
113    ! [16.0] Scatterometer observation operator y = H(x):
114    !---------------------------------------------------------------------------
115 
116    call da_transform_xtoy_buoy_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
117 
118    !---------------------------------------------------------------------------
119    ! [17.0] GPS Refractivity observation operator y = H(x):
120    !---------------------------------------------------------------------------
121 
122    call da_transform_xtoy_gpsref_adj(iv, xp, jo_grad_y, jo_grad_x)
123 
124    !---------------------------------------------------------------------------
125    ! [18.0] Radar observation operator y = H(x):
126    !---------------------------------------------------------------------------
127 
128    call da_transform_xtoy_radar_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
129 
130    !---------------------------------------------------------------------------
131    ! [19.0] TC bogus observation operator y = H(x):
132    !---------------------------------------------------------------------------
133 
134    call da_transform_xtoy_bogus_adj (xb, iv, xp, jo_grad_y, jo_grad_x)
135 
136    !---------------------------------------------------------------------------
137    ! [20.0] Radiance observation operator y = H(x):
138    !---------------------------------------------------------------------------
139 
140    if (use_rad) then
141       if (rtm_option == rtm_option_rttov) then
142          call da_transform_xtoy_rttov_adj (iv, xp, jo_grad_y, jo_grad_x)
143       elseif (rtm_option == rtm_option_crtm) then
144 #ifdef CRTM
145          !if (use_crtm_kmatrix) then
146          !   call da_transform_xtoy_crtmk_adj (iv, xp, jo_grad_y, jo_grad_x)
147          !else if (use_crtm_kmatrix_fast) then
148          !   call da_transform_xtoy_crtmk_f_adj (iv, xp, jo_grad_y, jo_grad_x)
149          !else
150             call da_transform_xtoy_crtm_adj (iv, xp, jo_grad_y, jo_grad_x)
151          !end if
152 #endif
153       else
154          call da_warning(__FILE__,__LINE__,(/"Unknown radiative transfer model"/))
155       endif
156    end if
157 
158    !---------------------------------------------------------------------------
159    ! [21.0]  AIRS retrievals adjoint observation operator y = H(x):
160    !---------------------------------------------------------------------------
161 
162    call da_transform_xtoy_airsr_adj (iv, xp, jo_grad_y, jo_grad_x)
163 
164    if (trace_use) call da_trace_exit("da_transform_xtoy_adj")
165 
166 end subroutine da_transform_xtoy_adj
167 
168