Merge remote-tracking branch 'origin/release-v4.5.2'
[WRF.git] / wrftladj / module_adtl_grid_utilities.F
blob982b0c77ccd30dd78861f234e93bc6489caaa2c3
1 !WRF:MEDIATION_LAYER:adtl_grid_utilities
4 MODULE module_adtl_grid_utilities
5 USE module_domain, ONLY : domain, get_ijk_from_grid
6 USE module_configure, ONLY : grid_config_rec_type
7 USE module_state_description, ONLY : PARAM_FIRST_SCALAR, num_moist, num_scalar, num_tracer
8 USE module_tiles, ONLY : set_tiles
9 USE module_driver_constants, ONLY: max_sens
11 REAL, ALLOCATABLE :: s_u_2(:,:,:), s_v_2(:,:,:), s_w_2(:,:,:)
12 REAL, ALLOCATABLE :: s_ph_2(:,:,:), s_t_2(:,:,:), s_mu_2(:,:)
13 REAL, ALLOCATABLE :: s_moist(:,:,:,:), s_scalar(:,:,:,:), s_tracer(:,:,:,:)
14 REAL, ALLOCATABLE :: s_tke_2(:,:,:)
16 REAL, ALLOCATABLE :: s_p(:,:,:), s_al(:,:,:), s_h_diabatic(:,:,:)
17 REAL, ALLOCATABLE :: s_qv_diabatic(:,:,:), s_qc_diabatic(:,:,:)
18 REAL, ALLOCATABLE :: s_ustm(:,:), s_hfx(:,:), s_qfx(:,:)
20 REAL, ALLOCATABLE :: s_dtaux3d(:,:,:), s_dtauy3d(:,:,:)
21 REAL, ALLOCATABLE :: s_dusfcg(:,:), s_dvsfcg(:,:)
23 REAL, ALLOCATABLE :: s_u_bxs(:,:,:), s_u_bxe(:,:,:), s_u_bys(:,:,:), s_u_bye(:,:,:)
24 REAL, ALLOCATABLE :: s_u_btxs(:,:,:), s_u_btxe(:,:,:), s_u_btys(:,:,:), s_u_btye(:,:,:)
25 REAL, ALLOCATABLE :: s_v_bxs(:,:,:), s_v_bxe(:,:,:), s_v_bys(:,:,:), s_v_bye(:,:,:)
26 REAL, ALLOCATABLE :: s_v_btxs(:,:,:), s_v_btxe(:,:,:), s_v_btys(:,:,:), s_v_btye(:,:,:)
27 REAL, ALLOCATABLE :: s_w_bxs(:,:,:), s_w_bxe(:,:,:), s_w_bys(:,:,:), s_w_bye(:,:,:)
28 REAL, ALLOCATABLE :: s_w_btxs(:,:,:), s_w_btxe(:,:,:), s_w_btys(:,:,:), s_w_btye(:,:,:)
29 REAL, ALLOCATABLE :: s_ph_bxs(:,:,:), s_ph_bxe(:,:,:), s_ph_bys(:,:,:), s_ph_bye(:,:,:)
30 REAL, ALLOCATABLE :: s_ph_btxs(:,:,:), s_ph_btxe(:,:,:), s_ph_btys(:,:,:), s_ph_btye(:,:,:)
31 REAL, ALLOCATABLE :: s_t_bxs(:,:,:), s_t_bxe(:,:,:), s_t_bys(:,:,:), s_t_bye(:,:,:)
32 REAL, ALLOCATABLE :: s_t_btxs(:,:,:), s_t_btxe(:,:,:), s_t_btys(:,:,:), s_t_btye(:,:,:)
33 REAL, ALLOCATABLE :: s_mu_bxs(:,:,:), s_mu_bxe(:,:,:), s_mu_bys(:,:,:), s_mu_bye(:,:,:)
34 REAL, ALLOCATABLE :: s_mu_btxs(:,:,:), s_mu_btxe(:,:,:), s_mu_btys(:,:,:), s_mu_btye(:,:,:)
35 REAL, ALLOCATABLE :: s_moist_bxs(:,:,:,:), s_moist_bxe(:,:,:,:), s_moist_bys(:,:,:,:), s_moist_bye(:,:,:,:)
36 REAL, ALLOCATABLE :: s_moist_btxs(:,:,:,:), s_moist_btxe(:,:,:,:), s_moist_btys(:,:,:,:), s_moist_btye(:,:,:,:)
37 REAL, ALLOCATABLE :: s_scalar_bxs(:,:,:,:), s_scalar_bxe(:,:,:,:), s_scalar_bys(:,:,:,:), s_scalar_bye(:,:,:,:)
38 REAL, ALLOCATABLE :: s_scalar_btxs(:,:,:,:), s_scalar_btxe(:,:,:,:), s_scalar_btys(:,:,:,:), s_scalar_btye(:,:,:,:)
39 REAL, ALLOCATABLE :: s_tracer_bxs(:,:,:,:), s_tracer_bxe(:,:,:,:), s_tracer_bys(:,:,:,:), s_tracer_bye(:,:,:,:)
40 REAL, ALLOCATABLE :: s_tracer_btxs(:,:,:,:), s_tracer_btxe(:,:,:,:), s_tracer_btys(:,:,:,:), s_tracer_btye(:,:,:,:)
42 REAL, ALLOCATABLE :: b_u_2(:,:,:), b_v_2(:,:,:), b_w_2(:,:,:)
43 REAL, ALLOCATABLE :: b_ph_2(:,:,:), b_t_2(:,:,:), b_mu_2(:,:)
44 REAL, ALLOCATABLE :: b_moist(:,:,:,:), b_scalar(:,:,:,:), b_tracer(:,:,:,:)
45 REAL, ALLOCATABLE :: b_tke_2(:,:,:)
47 REAL, ALLOCATABLE :: b_p(:,:,:), b_al(:,:,:), b_h_diabatic(:,:,:)
48 REAL, ALLOCATABLE :: b_qv_diabatic(:,:,:), b_qc_diabatic(:,:,:)
49 REAL, ALLOCATABLE :: b_ustm(:,:), b_hfx(:,:), b_qfx(:,:)
51 REAL, ALLOCATABLE :: b_dtaux3d(:,:,:), b_dtauy3d(:,:,:)
52 REAL, ALLOCATABLE :: b_dusfcg(:,:), b_dvsfcg(:,:)
54 REAL, ALLOCATABLE :: b_u_bxs(:,:,:), b_u_bxe(:,:,:), b_u_bys(:,:,:), b_u_bye(:,:,:)
55 REAL, ALLOCATABLE :: b_u_btxs(:,:,:), b_u_btxe(:,:,:), b_u_btys(:,:,:), b_u_btye(:,:,:)
56 REAL, ALLOCATABLE :: b_v_bxs(:,:,:), b_v_bxe(:,:,:), b_v_bys(:,:,:), b_v_bye(:,:,:)
57 REAL, ALLOCATABLE :: b_v_btxs(:,:,:), b_v_btxe(:,:,:), b_v_btys(:,:,:), b_v_btye(:,:,:)
58 REAL, ALLOCATABLE :: b_w_bxs(:,:,:), b_w_bxe(:,:,:), b_w_bys(:,:,:), b_w_bye(:,:,:)
59 REAL, ALLOCATABLE :: b_w_btxs(:,:,:), b_w_btxe(:,:,:), b_w_btys(:,:,:), b_w_btye(:,:,:)
60 REAL, ALLOCATABLE :: b_ph_bxs(:,:,:), b_ph_bxe(:,:,:), b_ph_bys(:,:,:), b_ph_bye(:,:,:)
61 REAL, ALLOCATABLE :: b_ph_btxs(:,:,:), b_ph_btxe(:,:,:), b_ph_btys(:,:,:), b_ph_btye(:,:,:)
62 REAL, ALLOCATABLE :: b_t_bxs(:,:,:), b_t_bxe(:,:,:), b_t_bys(:,:,:), b_t_bye(:,:,:)
63 REAL, ALLOCATABLE :: b_t_btxs(:,:,:), b_t_btxe(:,:,:), b_t_btys(:,:,:), b_t_btye(:,:,:)
64 REAL, ALLOCATABLE :: b_mu_bxs(:,:,:), b_mu_bxe(:,:,:), b_mu_bys(:,:,:), b_mu_bye(:,:,:)
65 REAL, ALLOCATABLE :: b_mu_btxs(:,:,:), b_mu_btxe(:,:,:), b_mu_btys(:,:,:), b_mu_btye(:,:,:)
66 REAL, ALLOCATABLE :: b_moist_bxs(:,:,:,:), b_moist_bxe(:,:,:,:), b_moist_bys(:,:,:,:), b_moist_bye(:,:,:,:)
67 REAL, ALLOCATABLE :: b_moist_btxs(:,:,:,:), b_moist_btxe(:,:,:,:), b_moist_btys(:,:,:,:), b_moist_btye(:,:,:,:)
68 REAL, ALLOCATABLE :: b_scalar_bxs(:,:,:,:), b_scalar_bxe(:,:,:,:), b_scalar_bys(:,:,:,:), b_scalar_bye(:,:,:,:)
69 REAL, ALLOCATABLE :: b_scalar_btxs(:,:,:,:), b_scalar_btxe(:,:,:,:), b_scalar_btys(:,:,:,:), b_scalar_btye(:,:,:,:)
70 REAL, ALLOCATABLE :: b_tracer_bxs(:,:,:,:), b_tracer_bxe(:,:,:,:), b_tracer_bys(:,:,:,:), b_tracer_bye(:,:,:,:)
71 REAL, ALLOCATABLE :: b_tracer_btxs(:,:,:,:), b_tracer_btxe(:,:,:,:), b_tracer_btys(:,:,:,:), b_tracer_btye(:,:,:,:)
73 REAL, ALLOCATABLE :: b_rainnc(:,:), b_rainncv(:,:)
74 REAL, ALLOCATABLE :: b_rainc(:,:), b_raincv(:,:)
76 INTEGER :: sm31, em31, sm32, em32, sm33, em33, spec_bdy_width, kts, kte
77 INTEGER :: gwd_opt
79 INTEGER                         :: ids , ide , jds , jde , kds , kde , &
80                                    ims , ime , jms , jme , kms , kme , &
81                                    ips , ipe , jps , jpe , kps , kpe
84 CONTAINS
86   SUBROUTINE init_domain_size ( grid, config_flags )
87    TYPE (domain), INTENT(INOUT) :: grid
88    TYPE (grid_config_rec_type), INTENT(IN) :: config_flags
89    INTEGER :: ierr
91 !  Obtain dimension information stored in the grid data structure.
93    CALL get_ijk_from_grid (  grid ,                   &
94                              ids, ide, jds, jde, kds, kde,    &
95                              ims, ime, jms, jme, kms, kme,    &
96                              ips, ipe, jps, jpe, kps, kpe     )
98 !  Compute these starting and stopping locations for each tile and number of tiles.
99 !  See: http://www.mmm.ucar.edu/wrf/WG2/topics/settiles
100    CALL set_tiles ( grid , ids , ide , jds , jde , ips , ipe , jps , jpe )
102    sm31 = grid%sm31
103    em31 = grid%em31
104    sm32 = grid%sm32
105    em32 = grid%em32
106    sm33 = grid%sm33
107    em33 = grid%em33
109    kts = kps
110    kte = kpe
112    CALL nl_get_spec_bdy_width( 1, spec_bdy_width )
113    CALL nl_get_gwd_opt( 1, gwd_opt )
115   END SUBROUTINE init_domain_size
117   SUBROUTINE allocate_grid ( )
119    ALLOCATE ( s_scalar(sm31:em31, sm32:em32, sm33:em33, num_scalar), STAT=ierr )
120    IF (ierr.NE.0) THEN
121      CALL wrf_error_fatal ( &
122      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar(sm31:em31, sm32:em32, sm33:em33, num_scalar). ')
123    ENDIF
124    ALLOCATE ( s_tke_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
125    IF (ierr.NE.0) THEN
126      CALL wrf_error_fatal ( &
127      'share/module_adtl_grid_utilities.f: Failed to allocate s_tke_2(sm31:em31, sm32:em32, sm33:em33). ')
128    ENDIF
130    ALLOCATE ( s_p(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
131    IF (ierr.NE.0) THEN
132      CALL wrf_error_fatal ( &
133      'share/module_adtl_grid_utilities.f: Failed to allocate s_p(sm31:em31, sm32:em32, sm33:em33). ')
134    ENDIF
135    ALLOCATE ( s_al(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
136    IF (ierr.NE.0) THEN
137      CALL wrf_error_fatal ( &
138      'share/module_adtl_grid_utilities.f: Failed to allocate s_al(sm31:em31, sm32:em32, sm33:em33). ')
139    ENDIF
140    ALLOCATE ( s_h_diabatic(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
141    IF (ierr.NE.0) THEN
142      CALL wrf_error_fatal ( &
143      'share/module_adtl_grid_utilities.f: Failed to allocate s_h_diabatic(sm31:em31, sm32:em32, sm33:em33). ')
144    ENDIF
145    ALLOCATE ( s_qv_diabatic(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
146    IF (ierr.NE.0) THEN
147      CALL wrf_error_fatal ( &
148      'share/module_adtl_grid_utilities.f: Failed to allocate s_qv_diabatic(sm31:em31, sm32:em32, sm33:em33). ')
149    ENDIF
150    ALLOCATE ( s_qc_diabatic(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
151    IF (ierr.NE.0) THEN
152      CALL wrf_error_fatal ( &
153      'share/module_adtl_grid_utilities.f: Failed to allocate s_qc_diabatic(sm31:em31, sm32:em32, sm33:em33). ')
154    ENDIF
156    ALLOCATE ( s_ustm(sm31:em31, sm33:em33), STAT=ierr )
157    IF (ierr.NE.0) THEN
158      CALL wrf_error_fatal ( &
159      'share/module_adtl_grid_utilities.f: Failed to allocate s_ustm(sm31:em31, sm33:em33). ')
160    ENDIF
161    ALLOCATE ( s_hfx(sm31:em31, sm33:em33), STAT=ierr )
162    IF (ierr.NE.0) THEN
163      CALL wrf_error_fatal ( &
164      'share/module_adtl_grid_utilities.f: Failed to allocate s_hfx(sm31:em31, sm33:em33). ')
165    ENDIF
166    ALLOCATE ( s_qfx(sm31:em31, sm33:em33), STAT=ierr )
167    IF (ierr.NE.0) THEN
168      CALL wrf_error_fatal ( &
169      'share/module_adtl_grid_utilities.f: Failed to allocate s_qfx(sm31:em31, sm33:em33). ')
170    ENDIF
172    IF (gwd_opt .EQ. 1) THEN
174    ALLOCATE ( s_dtaux3d(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
175    IF (ierr.NE.0) THEN
176      CALL wrf_error_fatal ( &
177      'share/module_adtl_grid_utilities.f: Failed to allocate s_dtaux3d(sm31:em31, sm32:em32, sm33:em33). ')
178    ENDIF
179    ALLOCATE ( s_dtauy3d(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
180    IF (ierr.NE.0) THEN
181      CALL wrf_error_fatal ( &
182      'share/module_adtl_grid_utilities.f: Failed to allocate s_dtauy3d(sm31:em31, sm32:em32, sm33:em33). ')
183    ENDIF
184    ALLOCATE ( s_dusfcg(sm31:em31, sm33:em33), STAT=ierr )
185    IF (ierr.NE.0) THEN
186      CALL wrf_error_fatal ( &
187      'share/module_adtl_grid_utilities.f: Failed to allocate s_dusfcg(sm31:em31, sm33:em33). ')
188    ENDIF
189    ALLOCATE ( s_dvsfcg(sm31:em31, sm33:em33), STAT=ierr )
190    IF (ierr.NE.0) THEN
191      CALL wrf_error_fatal ( &
192      'share/module_adtl_grid_utilities.f: Failed to allocate s_dvsfcg(sm31:em31, sm33:em33). ')
193    ENDIF
195    ENDIF
197    !  Scalar Boundary
198    ALLOCATE(s_scalar_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
199    IF (ierr.NE.0) THEN
200      CALL wrf_error_fatal ( &
201      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
202    ENDIF
203    ALLOCATE(s_scalar_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
204    IF (ierr.NE.0) THEN
205      CALL wrf_error_fatal ( &
206      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
207    ENDIF
208    ALLOCATE(s_scalar_bys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
209    IF (ierr.NE.0) THEN
210      CALL wrf_error_fatal ( &
211      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_bys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
212    ENDIF
213    ALLOCATE(s_scalar_bye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
214    IF (ierr.NE.0) THEN
215      CALL wrf_error_fatal ( &
216      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_bye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
217    ENDIF
218    ALLOCATE(s_scalar_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
219    IF (ierr.NE.0) THEN
220      CALL wrf_error_fatal ( &
221      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
222    ENDIF
223    ALLOCATE(s_scalar_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
224    IF (ierr.NE.0) THEN
225      CALL wrf_error_fatal ( &
226      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
227    ENDIF
228    ALLOCATE(s_scalar_btys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
229    IF (ierr.NE.0) THEN
230      CALL wrf_error_fatal ( &
231      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_btys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
232    ENDIF
233    ALLOCATE(s_scalar_btye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
234    IF (ierr.NE.0) THEN
235      CALL wrf_error_fatal ( &
236      'share/module_adtl_grid_utilities.f: Failed to allocate s_scalar_btye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
237    ENDIF
239    ALLOCATE ( s_u_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
240    IF (ierr.NE.0) THEN
241      CALL wrf_error_fatal ( &
242      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_2(sm31:em31, sm32:em32, sm33:em33). ')
243    ENDIF
244    ALLOCATE ( s_v_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
245    IF (ierr.NE.0) THEN
246      CALL wrf_error_fatal ( &
247      'share/module_adtl_grid_utilities.f: Failed to allocate s_v_2(sm31:em31, sm32:em32, sm33:em33). ')
248    ENDIF
249    ALLOCATE ( s_w_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
250    IF (ierr.NE.0) THEN
251      CALL wrf_error_fatal ( &
252      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_2(sm31:em31, sm32:em32, sm33:em33). ')
253    ENDIF
254    ALLOCATE ( s_ph_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
255    IF (ierr.NE.0) THEN
256      CALL wrf_error_fatal ( &
257      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_2(sm31:em31, sm32:em32, sm33:em33). ')
258    ENDIF
259    ALLOCATE ( s_t_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
260    IF (ierr.NE.0) THEN
261      CALL wrf_error_fatal ( &
262      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_2(sm31:em31, sm32:em32, sm33:em33). ')
263    ENDIF
264    ALLOCATE ( s_mu_2(sm31:em31, sm33:em33), STAT=ierr )
265    IF (ierr.NE.0) THEN
266      CALL wrf_error_fatal ( &
267      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_2(sm31:em31, sm33:em33). ')
268    ENDIF
269    ALLOCATE ( s_moist(sm31:em31, sm32:em32, sm33:em33, num_moist), STAT=ierr )
270    IF (ierr.NE.0) THEN
271      CALL wrf_error_fatal ( &
272      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist(sm31:em31, sm32:em32, sm33:em33, num_moist). ')
273    ENDIF
274    ALLOCATE ( s_tracer(sm31:em31, sm32:em32, sm33:em33, num_tracer), STAT=ierr )
275    IF (ierr.NE.0) THEN
276      CALL wrf_error_fatal ( &
277      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer(sm31:em31, sm32:em32, sm33:em33, num_tracer). ')
278    ENDIF
279    !  U Boundary
280    ALLOCATE(s_u_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
281    IF (ierr.NE.0) THEN
282      CALL wrf_error_fatal ( &
283      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
284    ENDIF
285    ALLOCATE(s_u_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
286    IF (ierr.NE.0) THEN
287      CALL wrf_error_fatal ( &
288      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
289    ENDIF
290    ALLOCATE(s_u_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
291    IF (ierr.NE.0) THEN
292      CALL wrf_error_fatal ( &
293      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
294    ENDIF
295    ALLOCATE(s_u_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
296    IF (ierr.NE.0) THEN
297      CALL wrf_error_fatal ( &
298      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
299    ENDIF
300    ALLOCATE(s_u_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
301    IF (ierr.NE.0) THEN
302      CALL wrf_error_fatal ( &
303      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
304    ENDIF
305    ALLOCATE(s_u_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
306    IF (ierr.NE.0) THEN
307      CALL wrf_error_fatal ( &
308      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
309    ENDIF
310    ALLOCATE(s_u_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
311    IF (ierr.NE.0) THEN
312      CALL wrf_error_fatal ( &
313      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
314    ENDIF
315    ALLOCATE(s_u_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
316    IF (ierr.NE.0) THEN
317      CALL wrf_error_fatal ( &
318      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
319    ENDIF
321    !  V Boundary
322    ALLOCATE(s_v_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
323    IF (ierr.NE.0) THEN
324      CALL wrf_error_fatal ( &
325      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
326    ENDIF
327    ALLOCATE(s_v_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
328    IF (ierr.NE.0) THEN
329      CALL wrf_error_fatal ( &
330      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
331    ENDIF
332    ALLOCATE(s_v_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
333    IF (ierr.NE.0) THEN
334      CALL wrf_error_fatal ( &
335      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
336    ENDIF
337    ALLOCATE(s_v_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
338    IF (ierr.NE.0) THEN
339      CALL wrf_error_fatal ( &
340      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
341    ENDIF
342    ALLOCATE(s_v_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
343    IF (ierr.NE.0) THEN
344      CALL wrf_error_fatal ( &
345      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
346    ENDIF
347    ALLOCATE(s_v_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
348    IF (ierr.NE.0) THEN
349      CALL wrf_error_fatal ( &
350      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
351    ENDIF
352    ALLOCATE(s_v_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
353    IF (ierr.NE.0) THEN
354      CALL wrf_error_fatal ( &
355      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
356    ENDIF
357    ALLOCATE(s_v_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
358    IF (ierr.NE.0) THEN
359      CALL wrf_error_fatal ( &
360      'share/module_adtl_grid_utilities.f: Failed to allocate s_u_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
361    ENDIF
363    !  T Boundary
364    ALLOCATE(s_t_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
365    IF (ierr.NE.0) THEN
366      CALL wrf_error_fatal ( &
367      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
368    ENDIF
369    ALLOCATE(s_t_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
370    IF (ierr.NE.0) THEN
371      CALL wrf_error_fatal ( &
372      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
373    ENDIF
374    ALLOCATE(s_t_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
375    IF (ierr.NE.0) THEN
376      CALL wrf_error_fatal ( &
377      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
378    ENDIF
379    ALLOCATE(s_t_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
380    IF (ierr.NE.0) THEN
381      CALL wrf_error_fatal ( &
382      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
383    ENDIF
384    ALLOCATE(s_t_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
385    IF (ierr.NE.0) THEN
386      CALL wrf_error_fatal ( &
387      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
388    ENDIF
389    ALLOCATE(s_t_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
390    IF (ierr.NE.0) THEN
391      CALL wrf_error_fatal ( &
392      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
393    ENDIF
394    ALLOCATE(s_t_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
395    IF (ierr.NE.0) THEN
396      CALL wrf_error_fatal ( &
397      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
398    ENDIF
399    ALLOCATE(s_t_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
400    IF (ierr.NE.0) THEN
401      CALL wrf_error_fatal ( &
402      'share/module_adtl_grid_utilities.f: Failed to allocate s_t_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
403    ENDIF
405    !  W Boundary
406    ALLOCATE(s_w_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
407    IF (ierr.NE.0) THEN
408      CALL wrf_error_fatal ( &
409      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
410    ENDIF
411    ALLOCATE(s_w_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
412    IF (ierr.NE.0) THEN
413      CALL wrf_error_fatal ( &
414      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
415    ENDIF
416    ALLOCATE(s_w_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
417    IF (ierr.NE.0) THEN
418      CALL wrf_error_fatal ( &
419      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
420    ENDIF
421    ALLOCATE(s_w_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
422    IF (ierr.NE.0) THEN
423      CALL wrf_error_fatal ( &
424      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
425    ENDIF
426    ALLOCATE(s_w_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
427    IF (ierr.NE.0) THEN
428      CALL wrf_error_fatal ( &
429      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
430    ENDIF
431    ALLOCATE(s_w_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
432    IF (ierr.NE.0) THEN
433      CALL wrf_error_fatal ( &
434      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
435    ENDIF
436    ALLOCATE(s_w_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
437    IF (ierr.NE.0) THEN
438      CALL wrf_error_fatal ( &
439      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
440    ENDIF
441    ALLOCATE(s_w_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
442    IF (ierr.NE.0) THEN
443      CALL wrf_error_fatal ( &
444      'share/module_adtl_grid_utilities.f: Failed to allocate s_w_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
445    ENDIF
447    !  PH Boundary
448    ALLOCATE(s_ph_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
449    IF (ierr.NE.0) THEN
450      CALL wrf_error_fatal ( &
451      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
452    ENDIF
453    ALLOCATE(s_ph_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
454    IF (ierr.NE.0) THEN
455      CALL wrf_error_fatal ( &
456      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
457    ENDIF
458    ALLOCATE(s_ph_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
459    IF (ierr.NE.0) THEN
460      CALL wrf_error_fatal ( &
461      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
462    ENDIF
463    ALLOCATE(s_ph_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
464    IF (ierr.NE.0) THEN
465      CALL wrf_error_fatal ( &
466      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
467    ENDIF
468    ALLOCATE(s_ph_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
469    IF (ierr.NE.0) THEN
470      CALL wrf_error_fatal ( &
471      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
472    ENDIF
473    ALLOCATE(s_ph_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
474    IF (ierr.NE.0) THEN
475      CALL wrf_error_fatal ( &
476      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
477    ENDIF
478    ALLOCATE(s_ph_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
479    IF (ierr.NE.0) THEN
480      CALL wrf_error_fatal ( &
481      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
482    ENDIF
483    ALLOCATE(s_ph_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
484    IF (ierr.NE.0) THEN
485      CALL wrf_error_fatal ( &
486      'share/module_adtl_grid_utilities.f: Failed to allocate s_ph_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
487    ENDIF
489    !  MU Boundary
490    ALLOCATE(s_mu_bxs(sm33:em33,1,spec_bdy_width),STAT=ierr) 
491    IF (ierr.NE.0) THEN
492      CALL wrf_error_fatal ( &
493      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_bxs(sm33:em33,1,spec_bdy_width). ')
494    ENDIF
495    ALLOCATE(s_mu_bxe(sm33:em33,1,spec_bdy_width),STAT=ierr) 
496    IF (ierr.NE.0) THEN
497      CALL wrf_error_fatal ( &
498      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_bxe(sm33:em33,1,spec_bdy_width). ')
499    ENDIF
500    ALLOCATE(s_mu_bys(sm31:em31,1,spec_bdy_width),STAT=ierr) 
501    IF (ierr.NE.0) THEN
502      CALL wrf_error_fatal ( &
503      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_bys(sm31:em31,1,spec_bdy_width). ')
504    ENDIF
505    ALLOCATE(s_mu_bye(sm31:em31,1,spec_bdy_width),STAT=ierr) 
506    IF (ierr.NE.0) THEN
507      CALL wrf_error_fatal ( &
508      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_bye(sm31:em31,1,spec_bdy_width). ')
509    ENDIF
510    ALLOCATE(s_mu_btxs(sm33:em33,1,spec_bdy_width),STAT=ierr) 
511    IF (ierr.NE.0) THEN
512      CALL wrf_error_fatal ( &
513      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_btxs(sm33:em33,1,spec_bdy_width). ')
514    ENDIF
515    ALLOCATE(s_mu_btxe(sm33:em33,1,spec_bdy_width),STAT=ierr) 
516    IF (ierr.NE.0) THEN
517      CALL wrf_error_fatal ( &
518      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_btxe(sm33:em33,1,spec_bdy_width). ')
519    ENDIF
520    ALLOCATE(s_mu_btys(sm31:em31,1,spec_bdy_width),STAT=ierr) 
521    IF (ierr.NE.0) THEN
522      CALL wrf_error_fatal ( &
523      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_btys(sm31:em31,1,spec_bdy_width). ')
524    ENDIF
525    ALLOCATE(s_mu_btye(sm31:em31,1,spec_bdy_width),STAT=ierr) 
526    IF (ierr.NE.0) THEN
527      CALL wrf_error_fatal ( &
528      'share/module_adtl_grid_utilities.f: Failed to allocate s_mu_btye(sm31:em31,1,spec_bdy_width). ')
529    ENDIF
531    !  Moist Boundary
532    ALLOCATE(s_moist_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
533    IF (ierr.NE.0) THEN
534      CALL wrf_error_fatal ( &
535      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
536    ENDIF
537    ALLOCATE(s_moist_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
538    IF (ierr.NE.0) THEN
539      CALL wrf_error_fatal ( &
540      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
541    ENDIF
542    ALLOCATE(s_moist_bys(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
543    IF (ierr.NE.0) THEN
544      CALL wrf_error_fatal ( &
545      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_bys(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
546    ENDIF
547    ALLOCATE(s_moist_bye(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
548    IF (ierr.NE.0) THEN
549      CALL wrf_error_fatal ( &
550      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_bye(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
551    ENDIF
552    ALLOCATE(s_moist_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
553    IF (ierr.NE.0) THEN
554      CALL wrf_error_fatal ( &
555      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
556    ENDIF
557    ALLOCATE(s_moist_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
558    IF (ierr.NE.0) THEN
559      CALL wrf_error_fatal ( &
560      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
561    ENDIF
562    ALLOCATE(s_moist_btys(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
563    IF (ierr.NE.0) THEN
564      CALL wrf_error_fatal ( &
565      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_btys(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
566    ENDIF
567    ALLOCATE(s_moist_btye(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
568    IF (ierr.NE.0) THEN
569      CALL wrf_error_fatal ( &
570      'share/module_adtl_grid_utilities.f: Failed to allocate s_moist_btye(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
571    ENDIF
573    !  Tracer Boundary
574    ALLOCATE(s_tracer_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
575    IF (ierr.NE.0) THEN
576      CALL wrf_error_fatal ( &
577      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
578    ENDIF
579    ALLOCATE(s_tracer_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
580    IF (ierr.NE.0) THEN
581      CALL wrf_error_fatal ( &
582      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
583    ENDIF
584    ALLOCATE(s_tracer_bys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
585    IF (ierr.NE.0) THEN
586      CALL wrf_error_fatal ( &
587      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_bys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
588    ENDIF
589    ALLOCATE(s_tracer_bye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
590    IF (ierr.NE.0) THEN
591      CALL wrf_error_fatal ( &
592      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_bye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
593    ENDIF
594    ALLOCATE(s_tracer_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
595    IF (ierr.NE.0) THEN
596      CALL wrf_error_fatal ( &
597      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
598    ENDIF
599    ALLOCATE(s_tracer_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
600    IF (ierr.NE.0) THEN
601      CALL wrf_error_fatal ( &
602      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
603    ENDIF
604    ALLOCATE(s_tracer_btys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
605    IF (ierr.NE.0) THEN
606      CALL wrf_error_fatal ( &
607      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_btys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
608    ENDIF
609    ALLOCATE(s_tracer_btye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
610    IF (ierr.NE.0) THEN
611      CALL wrf_error_fatal ( &
612      'share/module_adtl_grid_utilities.f: Failed to allocate s_tracer_btye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
613    ENDIF
615    ALLOCATE ( b_scalar(sm31:em31, sm32:em32, sm33:em33, num_scalar), STAT=ierr )
616    IF (ierr.NE.0) THEN
617      CALL wrf_error_fatal ( &
618      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar(sm31:em31, sm32:em32, sm33:em33, num_scalar). ')
619    ENDIF
620    ALLOCATE ( b_tke_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
621    IF (ierr.NE.0) THEN
622      CALL wrf_error_fatal ( &
623      'share/module_adtl_grid_utilities.f: Failed to allocate b_tke_2(sm31:em31, sm32:em32, sm33:em33). ')
624    ENDIF
626    ALLOCATE ( b_p(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
627    IF (ierr.NE.0) THEN
628      CALL wrf_error_fatal ( &
629      'share/module_adtl_grid_utilities.f: Failed to allocate b_p(sm31:em31, sm32:em32, sm33:em33). ')
630    ENDIF
631    ALLOCATE ( b_al(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
632    IF (ierr.NE.0) THEN
633      CALL wrf_error_fatal ( &
634      'share/module_adtl_grid_utilities.f: Failed to allocate b_al(sm31:em31, sm32:em32, sm33:em33). ')
635    ENDIF
636    ALLOCATE ( b_h_diabatic(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
637    IF (ierr.NE.0) THEN
638      CALL wrf_error_fatal ( &
639      'share/module_adtl_grid_utilities.f: Failed to allocate b_h_diabatic(sm31:em31, sm32:em32, sm33:em33). ')
640    ENDIF
641    ALLOCATE ( b_qv_diabatic(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
642    IF (ierr.NE.0) THEN
643      CALL wrf_error_fatal ( &
644      'share/module_adtl_grid_utilities.f: Failed to allocate b_qv_diabatic(sm31:em31, sm32:em32, sm33:em33). ')
645    ENDIF
646    ALLOCATE ( b_qc_diabatic(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
647    IF (ierr.NE.0) THEN
648      CALL wrf_error_fatal ( &
649      'share/module_adtl_grid_utilities.f: Failed to allocate b_qc_diabatic(sm31:em31, sm32:em32, sm33:em33). ')
650    ENDIF
652    ALLOCATE ( b_ustm(sm31:em31, sm33:em33), STAT=ierr )
653    IF (ierr.NE.0) THEN
654      CALL wrf_error_fatal ( &
655      'share/module_adtl_grid_utilities.f: Failed to allocate b_ustm(sm31:em31, sm33:em33). ')
656    ENDIF
657    ALLOCATE ( b_hfx(sm31:em31, sm33:em33), STAT=ierr )
658    IF (ierr.NE.0) THEN
659      CALL wrf_error_fatal ( &
660      'share/module_adtl_grid_utilities.f: Failed to allocate b_hfx(sm31:em31, sm33:em33). ')
661    ENDIF
662    ALLOCATE ( b_qfx(sm31:em31, sm33:em33), STAT=ierr )
663    IF (ierr.NE.0) THEN
664      CALL wrf_error_fatal ( &
665      'share/module_adtl_grid_utilities.f: Failed to allocate b_qfx(sm31:em31, sm33:em33). ')
666    ENDIF
668    IF (gwd_opt .EQ. 1) THEN
670    ALLOCATE ( b_dtaux3d(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
671    IF (ierr.NE.0) THEN
672      CALL wrf_error_fatal ( &
673      'share/module_adtl_grid_utilities.f: Failed to allocate b_dtaux3d(sm31:em31, sm32:em32, sm33:em33). ')
674    ENDIF
675    ALLOCATE ( b_dtauy3d(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
676    IF (ierr.NE.0) THEN
677      CALL wrf_error_fatal ( &
678      'share/module_adtl_grid_utilities.f: Failed to allocate b_dtauy3d(sm31:em31, sm32:em32, sm33:em33). ')
679    ENDIF
680    ALLOCATE ( b_dusfcg(sm31:em31, sm33:em33), STAT=ierr )
681    IF (ierr.NE.0) THEN
682      CALL wrf_error_fatal ( &
683      'share/module_adtl_grid_utilities.f: Failed to allocate b_dusfcg(sm31:em31, sm33:em33). ')
684    ENDIF
685    ALLOCATE ( b_dvsfcg(sm31:em31, sm33:em33), STAT=ierr )
686    IF (ierr.NE.0) THEN
687      CALL wrf_error_fatal ( &
688      'share/module_adtl_grid_utilities.f: Failed to allocate b_dvsfcg(sm31:em31, sm33:em33). ')
689    ENDIF
691    ENDIF
693    !  Scalar Boundary
694    ALLOCATE(b_scalar_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
695    IF (ierr.NE.0) THEN
696      CALL wrf_error_fatal ( &
697      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
698    ENDIF
699    ALLOCATE(b_scalar_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
700    IF (ierr.NE.0) THEN
701      CALL wrf_error_fatal ( &
702      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
703    ENDIF
704    ALLOCATE(b_scalar_bys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
705    IF (ierr.NE.0) THEN
706      CALL wrf_error_fatal ( &
707      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_bys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
708    ENDIF
709    ALLOCATE(b_scalar_bye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
710    IF (ierr.NE.0) THEN
711      CALL wrf_error_fatal ( &
712      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_bye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
713    ENDIF
714    ALLOCATE(b_scalar_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
715    IF (ierr.NE.0) THEN
716      CALL wrf_error_fatal ( &
717      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
718    ENDIF
719    ALLOCATE(b_scalar_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
720    IF (ierr.NE.0) THEN
721      CALL wrf_error_fatal ( &
722      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_scalar). ')
723    ENDIF
724    ALLOCATE(b_scalar_btys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
725    IF (ierr.NE.0) THEN
726      CALL wrf_error_fatal ( &
727      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_btys(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
728    ENDIF
729    ALLOCATE(b_scalar_btye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar),STAT=ierr) 
730    IF (ierr.NE.0) THEN
731      CALL wrf_error_fatal ( &
732      'share/module_adtl_grid_utilities.f: Failed to allocate b_scalar_btye(sm31:em31,sm32:em32,spec_bdy_width,num_scalar). ')
733    ENDIF
735    ALLOCATE ( b_u_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
736    IF (ierr.NE.0) THEN
737      CALL wrf_error_fatal ( &
738      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_2(sm31:em31, sm32:em32, sm33:em33). ')
739    ENDIF
740    ALLOCATE ( b_v_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
741    IF (ierr.NE.0) THEN
742      CALL wrf_error_fatal ( &
743      'share/module_adtl_grid_utilities.f: Failed to allocate b_v_2(sm31:em31, sm32:em32, sm33:em33). ')
744    ENDIF
745    ALLOCATE ( b_w_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
746    IF (ierr.NE.0) THEN
747      CALL wrf_error_fatal ( &
748      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_2(sm31:em31, sm32:em32, sm33:em33). ')
749    ENDIF
750    ALLOCATE ( b_ph_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
751    IF (ierr.NE.0) THEN
752      CALL wrf_error_fatal ( &
753      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_2(sm31:em31, sm32:em32, sm33:em33). ')
754    ENDIF
755    ALLOCATE ( b_t_2(sm31:em31, sm32:em32, sm33:em33), STAT=ierr )
756    IF (ierr.NE.0) THEN
757      CALL wrf_error_fatal ( &
758      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_2(sm31:em31, sm32:em32, sm33:em33). ')
759    ENDIF
760    ALLOCATE ( b_mu_2(sm31:em31, sm33:em33), STAT=ierr )
761    IF (ierr.NE.0) THEN
762      CALL wrf_error_fatal ( &
763      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_2(sm31:em31, sm33:em33). ')
764    ENDIF
765    ALLOCATE ( b_moist(sm31:em31, sm32:em32, sm33:em33, num_moist), STAT=ierr )
766    IF (ierr.NE.0) THEN
767      CALL wrf_error_fatal ( &
768      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist(sm31:em31, sm32:em32, sm33:em33, num_moist). ')
769    ENDIF
770    ALLOCATE ( b_tracer(sm31:em31, sm32:em32, sm33:em33, num_tracer), STAT=ierr )
771    IF (ierr.NE.0) THEN
772      CALL wrf_error_fatal ( &
773      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer(sm31:em31, sm32:em32, sm33:em33, num_tracer). ')
774    ENDIF
776    !  U Boundary
777    ALLOCATE(b_u_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
778    IF (ierr.NE.0) THEN
779      CALL wrf_error_fatal ( &
780      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
781    ENDIF
782    ALLOCATE(b_u_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
783    IF (ierr.NE.0) THEN
784      CALL wrf_error_fatal ( &
785      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
786    ENDIF
787    ALLOCATE(b_u_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
788    IF (ierr.NE.0) THEN
789      CALL wrf_error_fatal ( &
790      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
791    ENDIF
792    ALLOCATE(b_u_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
793    IF (ierr.NE.0) THEN
794      CALL wrf_error_fatal ( &
795      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
796    ENDIF
797    ALLOCATE(b_u_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
798    IF (ierr.NE.0) THEN
799      CALL wrf_error_fatal ( &
800      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
801    ENDIF
802    ALLOCATE(b_u_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
803    IF (ierr.NE.0) THEN
804      CALL wrf_error_fatal ( &
805      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
806    ENDIF
807    ALLOCATE(b_u_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
808    IF (ierr.NE.0) THEN
809      CALL wrf_error_fatal ( &
810      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
811    ENDIF
812    ALLOCATE(b_u_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
813    IF (ierr.NE.0) THEN
814      CALL wrf_error_fatal ( &
815      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
816    ENDIF
818    !  V Boundary
819    ALLOCATE(b_v_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
820    IF (ierr.NE.0) THEN
821      CALL wrf_error_fatal ( &
822      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
823    ENDIF
824    ALLOCATE(b_v_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
825    IF (ierr.NE.0) THEN
826      CALL wrf_error_fatal ( &
827      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
828    ENDIF
829    ALLOCATE(b_v_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
830    IF (ierr.NE.0) THEN
831      CALL wrf_error_fatal ( &
832      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
833    ENDIF
834    ALLOCATE(b_v_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
835    IF (ierr.NE.0) THEN
836      CALL wrf_error_fatal ( &
837      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
838    ENDIF
839    ALLOCATE(b_v_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
840    IF (ierr.NE.0) THEN
841      CALL wrf_error_fatal ( &
842      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
843    ENDIF
844    ALLOCATE(b_v_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
845    IF (ierr.NE.0) THEN
846      CALL wrf_error_fatal ( &
847      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
848    ENDIF
849    ALLOCATE(b_v_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
850    IF (ierr.NE.0) THEN
851      CALL wrf_error_fatal ( &
852      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
853    ENDIF
854    ALLOCATE(b_v_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
855    IF (ierr.NE.0) THEN
856      CALL wrf_error_fatal ( &
857      'share/module_adtl_grid_utilities.f: Failed to allocate b_u_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
858    ENDIF
860    !  T Boundary
861    ALLOCATE(b_t_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
862    IF (ierr.NE.0) THEN
863      CALL wrf_error_fatal ( &
864      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
865    ENDIF
866    ALLOCATE(b_t_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
867    IF (ierr.NE.0) THEN
868      CALL wrf_error_fatal ( &
869      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
870    ENDIF
871    ALLOCATE(b_t_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
872    IF (ierr.NE.0) THEN
873      CALL wrf_error_fatal ( &
874      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
875    ENDIF
876    ALLOCATE(b_t_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
877    IF (ierr.NE.0) THEN
878      CALL wrf_error_fatal ( &
879      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
880    ENDIF
881    ALLOCATE(b_t_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
882    IF (ierr.NE.0) THEN
883      CALL wrf_error_fatal ( &
884      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
885    ENDIF
886    ALLOCATE(b_t_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
887    IF (ierr.NE.0) THEN
888      CALL wrf_error_fatal ( &
889      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
890    ENDIF
891    ALLOCATE(b_t_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
892    IF (ierr.NE.0) THEN
893      CALL wrf_error_fatal ( &
894      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
895    ENDIF
896    ALLOCATE(b_t_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
897    IF (ierr.NE.0) THEN
898      CALL wrf_error_fatal ( &
899      'share/module_adtl_grid_utilities.f: Failed to allocate b_t_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
900    ENDIF
902    !  W Boundary
903    ALLOCATE(b_w_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
904    IF (ierr.NE.0) THEN
905      CALL wrf_error_fatal ( &
906      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
907    ENDIF
908    ALLOCATE(b_w_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
909    IF (ierr.NE.0) THEN
910      CALL wrf_error_fatal ( &
911      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
912    ENDIF
913    ALLOCATE(b_w_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
914    IF (ierr.NE.0) THEN
915      CALL wrf_error_fatal ( &
916      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
917    ENDIF
918    ALLOCATE(b_w_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
919    IF (ierr.NE.0) THEN
920      CALL wrf_error_fatal ( &
921      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
922    ENDIF
923    ALLOCATE(b_w_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
924    IF (ierr.NE.0) THEN
925      CALL wrf_error_fatal ( &
926      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
927    ENDIF
928    ALLOCATE(b_w_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
929    IF (ierr.NE.0) THEN
930      CALL wrf_error_fatal ( &
931      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
932    ENDIF
933    ALLOCATE(b_w_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
934    IF (ierr.NE.0) THEN
935      CALL wrf_error_fatal ( &
936      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
937    ENDIF
938    ALLOCATE(b_w_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
939    IF (ierr.NE.0) THEN
940      CALL wrf_error_fatal ( &
941      'share/module_adtl_grid_utilities.f: Failed to allocate b_w_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
942    ENDIF
944    !  PH Boundary
945    ALLOCATE(b_ph_bxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
946    IF (ierr.NE.0) THEN
947      CALL wrf_error_fatal ( &
948      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_bxs(sm33:em33,sm32:em32,spec_bdy_width). ')
949    ENDIF
950    ALLOCATE(b_ph_bxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
951    IF (ierr.NE.0) THEN
952      CALL wrf_error_fatal ( &
953      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_bxe(sm33:em33,sm32:em32,spec_bdy_width). ')
954    ENDIF
955    ALLOCATE(b_ph_bys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
956    IF (ierr.NE.0) THEN
957      CALL wrf_error_fatal ( &
958      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_bys(sm31:em31,sm32:em32,spec_bdy_width). ')
959    ENDIF
960    ALLOCATE(b_ph_bye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
961    IF (ierr.NE.0) THEN
962      CALL wrf_error_fatal ( &
963      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_bye(sm31:em31,sm32:em32,spec_bdy_width). ')
964    ENDIF
965    ALLOCATE(b_ph_btxs(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
966    IF (ierr.NE.0) THEN
967      CALL wrf_error_fatal ( &
968      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_btxs(sm33:em33,sm32:em32,spec_bdy_width). ')
969    ENDIF
970    ALLOCATE(b_ph_btxe(sm33:em33,sm32:em32,spec_bdy_width),STAT=ierr) 
971    IF (ierr.NE.0) THEN
972      CALL wrf_error_fatal ( &
973      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_btxe(sm33:em33,sm32:em32,spec_bdy_width). ')
974    ENDIF
975    ALLOCATE(b_ph_btys(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
976    IF (ierr.NE.0) THEN
977      CALL wrf_error_fatal ( &
978      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_btys(sm31:em31,sm32:em32,spec_bdy_width). ')
979    ENDIF
980    ALLOCATE(b_ph_btye(sm31:em31,sm32:em32,spec_bdy_width),STAT=ierr) 
981    IF (ierr.NE.0) THEN
982      CALL wrf_error_fatal ( &
983      'share/module_adtl_grid_utilities.f: Failed to allocate b_ph_btye(sm31:em31,sm32:em32,spec_bdy_width). ')
984    ENDIF
986    !  MU Boundary
987    ALLOCATE(b_mu_bxs(sm33:em33,1,spec_bdy_width),STAT=ierr) 
988    IF (ierr.NE.0) THEN
989      CALL wrf_error_fatal ( &
990      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_bxs(sm33:em33,1,spec_bdy_width). ')
991    ENDIF
992    ALLOCATE(b_mu_bxe(sm33:em33,1,spec_bdy_width),STAT=ierr) 
993    IF (ierr.NE.0) THEN
994      CALL wrf_error_fatal ( &
995      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_bxe(sm33:em33,1,spec_bdy_width). ')
996    ENDIF
997    ALLOCATE(b_mu_bys(sm31:em31,1,spec_bdy_width),STAT=ierr) 
998    IF (ierr.NE.0) THEN
999      CALL wrf_error_fatal ( &
1000      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_bys(sm31:em31,1,spec_bdy_width). ')
1001    ENDIF
1002    ALLOCATE(b_mu_bye(sm31:em31,1,spec_bdy_width),STAT=ierr) 
1003    IF (ierr.NE.0) THEN
1004      CALL wrf_error_fatal ( &
1005      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_bye(sm31:em31,1,spec_bdy_width). ')
1006    ENDIF
1007    ALLOCATE(b_mu_btxs(sm33:em33,1,spec_bdy_width),STAT=ierr) 
1008    IF (ierr.NE.0) THEN
1009      CALL wrf_error_fatal ( &
1010      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_btxs(sm33:em33,1,spec_bdy_width). ')
1011    ENDIF
1012    ALLOCATE(b_mu_btxe(sm33:em33,1,spec_bdy_width),STAT=ierr) 
1013    IF (ierr.NE.0) THEN
1014      CALL wrf_error_fatal ( &
1015      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_btxe(sm33:em33,1,spec_bdy_width). ')
1016    ENDIF
1017    ALLOCATE(b_mu_btys(sm31:em31,1,spec_bdy_width),STAT=ierr) 
1018    IF (ierr.NE.0) THEN
1019      CALL wrf_error_fatal ( &
1020      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_btys(sm31:em31,1,spec_bdy_width). ')
1021    ENDIF
1022    ALLOCATE(b_mu_btye(sm31:em31,1,spec_bdy_width),STAT=ierr) 
1023    IF (ierr.NE.0) THEN
1024      CALL wrf_error_fatal ( &
1025      'share/module_adtl_grid_utilities.f: Failed to allocate b_mu_btye(sm31:em31,1,spec_bdy_width). ')
1026    ENDIF
1028    !  Moist Boundary
1029    ALLOCATE(b_moist_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1030    IF (ierr.NE.0) THEN
1031      CALL wrf_error_fatal ( &
1032      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
1033    ENDIF
1034    ALLOCATE(b_moist_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1035    IF (ierr.NE.0) THEN
1036      CALL wrf_error_fatal ( &
1037      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
1038    ENDIF
1039    ALLOCATE(b_moist_bys(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1040    IF (ierr.NE.0) THEN
1041      CALL wrf_error_fatal ( &
1042      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_bys(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
1043    ENDIF
1044    ALLOCATE(b_moist_bye(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1045    IF (ierr.NE.0) THEN
1046      CALL wrf_error_fatal ( &
1047      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_bye(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
1048    ENDIF
1049    ALLOCATE(b_moist_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1050    IF (ierr.NE.0) THEN
1051      CALL wrf_error_fatal ( &
1052      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
1053    ENDIF
1054    ALLOCATE(b_moist_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1055    IF (ierr.NE.0) THEN
1056      CALL wrf_error_fatal ( &
1057      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_moist). ')
1058    ENDIF
1059    ALLOCATE(b_moist_btys(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1060    IF (ierr.NE.0) THEN
1061      CALL wrf_error_fatal ( &
1062      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_btys(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
1063    ENDIF
1064    ALLOCATE(b_moist_btye(sm31:em31,sm32:em32,spec_bdy_width,num_moist),STAT=ierr) 
1065    IF (ierr.NE.0) THEN
1066      CALL wrf_error_fatal ( &
1067      'share/module_adtl_grid_utilities.f: Failed to allocate b_moist_btye(sm31:em31,sm32:em32,spec_bdy_width,num_moist). ')
1068    ENDIF
1070    !  Tracer Boundary
1071    ALLOCATE(b_tracer_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1072    IF (ierr.NE.0) THEN
1073      CALL wrf_error_fatal ( &
1074      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_bxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
1075    ENDIF
1076    ALLOCATE(b_tracer_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1077    IF (ierr.NE.0) THEN
1078      CALL wrf_error_fatal ( &
1079      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_bxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
1080    ENDIF
1081    ALLOCATE(b_tracer_bys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1082    IF (ierr.NE.0) THEN
1083      CALL wrf_error_fatal ( &
1084      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_bys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
1085    ENDIF
1086    ALLOCATE(b_tracer_bye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1087    IF (ierr.NE.0) THEN
1088      CALL wrf_error_fatal ( &
1089      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_bye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
1090    ENDIF
1091    ALLOCATE(b_tracer_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1092    IF (ierr.NE.0) THEN
1093      CALL wrf_error_fatal ( &
1094      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_btxs(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
1095    ENDIF
1096    ALLOCATE(b_tracer_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1097    IF (ierr.NE.0) THEN
1098      CALL wrf_error_fatal ( &
1099      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_btxe(sm33:em33,sm32:em32,spec_bdy_width,num_tracer). ')
1100    ENDIF
1101    ALLOCATE(b_tracer_btys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1102    IF (ierr.NE.0) THEN
1103      CALL wrf_error_fatal ( &
1104      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_btys(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
1105    ENDIF
1106    ALLOCATE(b_tracer_btye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer),STAT=ierr) 
1107    IF (ierr.NE.0) THEN
1108      CALL wrf_error_fatal ( &
1109      'share/module_adtl_grid_utilities.f: Failed to allocate b_tracer_btye(sm31:em31,sm32:em32,spec_bdy_width,num_tracer). ')
1110    ENDIF
1112    ALLOCATE(b_rainnc(sm31:em31,sm33:em33),STAT=ierr) 
1113    IF (ierr.NE.0) THEN
1114      CALL wrf_error_fatal ( &
1115      'share/module_adtl_grid_utilities.f: Failed to allocate b_rainnc(sm31:em31,sm33:em33). ')
1116    ENDIF
1117    ALLOCATE(b_rainncv(sm31:em31,sm33:em33),STAT=ierr) 
1118    IF (ierr.NE.0) THEN
1119      CALL wrf_error_fatal ( &
1120      'share/module_adtl_grid_utilities.f: Failed to allocate b_rainncv(sm31:em31,sm33:em33). ')
1121    ENDIF
1122    ALLOCATE(b_rainc(sm31:em31,sm33:em33),STAT=ierr) 
1123    IF (ierr.NE.0) THEN
1124      CALL wrf_error_fatal ( &
1125      'share/module_adtl_grid_utilities.f: Failed to allocate b_rainc(sm31:em31,sm33:em33). ')
1126    ENDIF
1127    ALLOCATE(b_raincv(sm31:em31,sm33:em33),STAT=ierr) 
1128    IF (ierr.NE.0) THEN
1129      CALL wrf_error_fatal ( &
1130      'share/module_adtl_grid_utilities.f: Failed to allocate b_raincv(sm31:em31,sm33:em33). ')
1131    ENDIF
1133    RETURN
1134   END SUBROUTINE allocate_grid
1136   SUBROUTINE copy_grid_to_s ( grid, its, ite, jts, jte )
1137    TYPE (domain), INTENT(IN) :: grid
1138    INTEGER, INTENT(IN) :: its, ite, jts, jte
1140    s_u_2 = 0.0
1141    DO j = jts,MIN(jte,jde-1)
1142    DO k = kts,kte-1
1143    DO i = its,ite
1144       s_u_2(i,k,j) = grid%u_2(i,k,j)
1145    ENDDO
1146    ENDDO
1147    ENDDO
1149    s_v_2 = 0.0
1150    DO j = jts,jte
1151    DO k = kts,kte-1
1152    DO i = its,MIN(ite,ide-1)
1153       s_v_2(i,k,j) = grid%v_2(i,k,j)
1154    ENDDO
1155    ENDDO
1156    ENDDO
1158    s_w_2 = 0.0
1159    s_ph_2 = 0.0
1160    DO j = jts,MIN(jte,jde-1)
1161    DO k = kts,kte
1162    DO i = its,MIN(ite,ide-1)
1163       s_w_2(i,k,j) = grid%w_2(i,k,j)
1164       s_ph_2(i,k,j) = grid%ph_2(i,k,j)
1165    ENDDO
1166    ENDDO
1167    ENDDO
1169    s_t_2 = 0.0
1170    DO j = jts,MIN(jte,jde-1)
1171    DO k = kts,kte-1
1172    DO i = its,MIN(ite,ide-1)
1173       s_t_2(i,k,j) = grid%t_2(i,k,j)
1174    ENDDO
1175    ENDDO
1176    ENDDO
1178    s_mu_2 = 0.0
1179    DO j = jts,MIN(jte,jde-1)
1180    DO i = its,MIN(ite,ide-1)
1181       s_mu_2(i,j) = grid%mu_2(i,j)
1182    ENDDO
1183    ENDDO
1185    s_moist = 0.0
1186    DO mm = PARAM_FIRST_SCALAR, num_moist
1187    DO j = jts,MIN(jte,jde-1)
1188    DO k = kts,kte-1
1189    DO i = its,MIN(ite,ide-1)
1190       s_moist(i,k,j,mm) = grid%moist(i,k,j,mm)
1191    ENDDO
1192    ENDDO
1193    ENDDO
1194    ENDDO
1196    IF ( gwd_opt .EQ. 1 ) THEN
1197       s_dtaux3d = 0.0_8
1198       s_dtauy3d = 0.0_8
1199       s_dusfcg = 0.0_8
1200       s_dvsfcg = 0.0_8
1201       DO j = jts,MIN(jte,jde-1)
1202       DO k = kts,kte-1
1203       DO i = its,MIN(ite,ide-1)
1204          s_dtaux3d(i,k,j) = grid%dtaux3d(i,k,j)
1205          s_dtauy3d(i,k,j) = grid%dtauy3d(i,k,j)
1206       ENDDO
1207       ENDDO
1208       ENDDO
1209       DO j = jts,MIN(jte,jde-1)
1210       DO i = its,MIN(ite,ide-1)
1211          s_dusfcg(i,j) = grid%dusfcg(i,j)
1212          s_dvsfcg(i,j) = grid%dvsfcg(i,j)
1213       ENDDO
1214       ENDDO
1215    ENDIF
1217    s_tracer = 0.0
1218    DO mm = PARAM_FIRST_SCALAR, num_tracer
1219    DO j = jts,MIN(jte,jde-1)
1220    DO k = kts,kte-1
1221    DO i = its,MIN(ite,ide-1)
1222       s_tracer(i,k,j,mm) = grid%tracer(i,k,j,mm)
1223    ENDDO
1224    ENDDO
1225    ENDDO
1226    ENDDO
1228    s_scalar = 0.0
1229    DO mm = PARAM_FIRST_SCALAR, num_scalar
1230    DO j = jts,MIN(jte,jde-1)
1231    DO k = kts,kte-1
1232    DO i = its,MIN(ite,ide-1)
1233       s_scalar(i,k,j,mm) = grid%scalar(i,k,j,mm)
1234    ENDDO
1235    ENDDO
1236    ENDDO
1237    ENDDO
1239    s_tke_2 = grid%tke_2
1240    s_p = grid%p
1241    s_al = grid%al
1242    s_h_diabatic = grid%h_diabatic
1243    s_qv_diabatic = grid%qv_diabatic
1244    s_qc_diabatic = grid%qc_diabatic
1245    s_ustm = grid%ustm
1246    s_hfx = grid%hfx
1247    s_qfx = grid%qfx
1248    
1249    s_u_bxs = grid%u_bxs; s_u_bxe = grid%u_bxe; s_u_bys = grid%u_bys; s_u_bye = grid%u_bye
1250    s_u_btxs = grid%u_btxs; s_u_btxe = grid%u_btxe; s_u_btys = grid%u_btys; s_u_btye = grid%u_btye
1251    s_v_bxs = grid%v_bxs; s_v_bxe = grid%v_bxe; s_v_bys =grid%v_bys; s_v_bye=grid%v_bye
1252    s_v_btxs = grid%v_btxs; s_v_btxe = grid%v_btxe; s_v_btys =grid%v_btys; s_v_btye=grid%v_btye
1253    s_w_bxs = grid%w_bxs; s_w_bxe = grid%w_bxe; s_w_bys = grid%w_bys; s_w_bye = grid%w_bye
1254    s_w_btxs = grid%w_btxs; s_w_btxe = grid%w_btxe; s_w_btys = grid%w_btys; s_w_btye = grid%w_btye
1255    s_ph_bxs = grid%ph_bxs; s_ph_bxe = grid%ph_bxe; s_ph_bys = grid%ph_bys; s_ph_bye = grid%ph_bye
1256    s_ph_btxs = grid%ph_btxs; s_ph_btxe = grid%ph_btxe; s_ph_btys = grid%ph_btys; s_ph_btye = grid%ph_btye
1257    s_t_bxs = grid%t_bxs; s_t_bxe = grid%t_bxe; s_t_bys = grid%t_bys; s_t_bye = grid%t_bye
1258    s_t_btxs = grid%t_btxs; s_t_btxe = grid%t_btxe; s_t_btys = grid%t_btys; s_t_btye = grid%t_btye
1259    s_mu_bxs = grid%mu_bxs; s_mu_bxe = grid%mu_bxe; s_mu_bys = grid%mu_bys; s_mu_bye = grid%mu_bye
1260    s_mu_btxs = grid%mu_btxs; s_mu_btxe = grid%mu_btxe; s_mu_btys = grid%mu_btys; s_mu_btye = grid%mu_btye
1261    s_moist_bxs = grid%moist_bxs; s_moist_bxe = grid%moist_bxe; s_moist_bys = grid%moist_bys; s_moist_bye = grid%moist_bye
1262    s_moist_btxs = grid%moist_btxs; s_moist_btxe = grid%moist_btxe; s_moist_btys = grid%moist_btys; s_moist_btye = grid%moist_btye
1263    s_scalar_bxs = grid%scalar_bxs; s_scalar_bxe = grid%scalar_bxe; s_scalar_bys = grid%scalar_bys; s_scalar_bye = grid%scalar_bye
1264    s_scalar_btxs = grid%scalar_btxs; s_scalar_btxe = grid%scalar_btxe; s_scalar_btys = grid%scalar_btys; s_scalar_btye = grid%scalar_btye
1265    s_tracer_bxs = grid%tracer_bxs; s_tracer_bxe = grid%tracer_bxe; s_tracer_bys = grid%tracer_bys; s_tracer_bye = grid%tracer_bye
1266    s_tracer_btxs = grid%tracer_btxs; s_tracer_btxe = grid%tracer_btxe; s_tracer_btys = grid%tracer_btys; s_tracer_btye = grid%tracer_btye
1267    
1268    RETURN
1269   END SUBROUTINE copy_grid_to_s
1271   SUBROUTINE copy_grid_to_b ( grid )
1272    TYPE (domain), INTENT(IN) :: grid
1274    b_u_2 = grid%u_2
1275    b_v_2 = grid%v_2
1276    b_w_2 = grid%w_2
1277    b_ph_2 = grid%ph_2
1278    b_t_2 = grid%t_2
1279    b_mu_2 = grid%mu_2
1280    b_moist = grid%moist
1281    b_tracer = grid%tracer
1283    b_h_diabatic = grid%h_diabatic
1284    b_qv_diabatic = grid%qv_diabatic
1285    b_qc_diabatic = grid%qc_diabatic
1287    b_p = grid%p
1288    b_rainnc = grid%rainnc
1289    b_rainncv = grid%rainncv
1290    b_rainc = grid%rainc
1291    b_raincv = grid%raincv
1293    b_scalar = grid%scalar
1295    IF ( gwd_opt .EQ. 1 ) THEN
1296       b_dtaux3d = grid%dtaux3d
1297       b_dtauy3d = grid%dtauy3d
1298       b_dusfcg = grid%dusfcg
1299       b_dvsfcg = grid%dvsfcg
1300    ENDIF
1302 !   b_tke_2 = grid%tke_2
1304 !   b_al = grid%al
1305    
1306    RETURN
1307   END SUBROUTINE copy_grid_to_b
1309   SUBROUTINE restore_grid ( grid )
1310    TYPE (domain), INTENT(INOUT) :: grid
1312    grid%u_2 = s_u_2
1313    grid%v_2 = s_v_2
1314    grid%w_2 = s_w_2
1315    grid%ph_2 = s_ph_2
1316    grid%t_2 = s_t_2
1317    grid%mu_2 = s_mu_2
1318    grid%moist = s_moist
1319    grid%tracer = s_tracer
1320    grid%scalar = s_scalar
1321    grid%tke_2 = s_tke_2
1323    grid%p = s_p
1324    grid%al = s_al
1325    grid%h_diabatic = s_h_diabatic
1326    grid%qv_diabatic = s_qv_diabatic
1327    grid%qc_diabatic = s_qc_diabatic
1328    grid%ustm = s_ustm
1329    grid%hfx = s_hfx
1330    grid%qfx = s_qfx
1332    IF ( gwd_opt .EQ. 1 ) THEN
1333       grid%dtaux3d = s_dtaux3d
1334       grid%dtauy3d = s_dtauy3d
1335       grid%dusfcg = s_dusfcg
1336       grid%dvsfcg = s_dvsfcg
1337    ENDIF
1339    grid%u_bxs = s_u_bxs; grid%u_bxe = s_u_bxe; grid%u_bys = s_u_bys; grid%u_bye = s_u_bye
1340    grid%u_btxs = s_u_btxs; grid%u_btxe = s_u_btxe; grid%u_btys = s_u_btys; grid%u_btye = s_u_btye
1341    grid%v_bxs = s_v_bxs; grid%v_bxe = s_v_bxe; grid%v_bys = s_v_bys; grid%v_bye = s_v_bye
1342    grid%v_btxs = s_v_btxs; grid%v_btxe = s_v_btxe; grid%v_btys = s_v_btys; grid%v_btye = s_v_btye
1343    grid%w_bxs = s_w_bxs; grid%w_bxe = s_w_bxe; grid%w_bys = s_w_bys; grid%w_bye = s_w_bye
1344    grid%w_btxs = s_w_btxs; grid%w_btxe = s_w_btxe; grid%w_btys = s_w_btys; grid%w_btye = s_w_btye
1345    grid%ph_bxs = s_ph_bxs; grid%ph_bxe = s_ph_bxe; grid%ph_bys = s_ph_bys; grid%ph_bye = s_ph_bye
1346    grid%ph_btxs = s_ph_btxs; grid%ph_btxe = s_ph_btxe; grid%ph_btys = s_ph_btys; grid%ph_btye = s_ph_btye
1347    grid%t_bxs = s_t_bxs; grid%t_bxe = s_t_bxe; grid%t_bys = s_t_bys; grid%t_bye = s_t_bye
1348    grid%t_btxs = s_t_btxs; grid%t_btxe = s_t_btxe; grid%t_btys = s_t_btys; grid%t_btye = s_t_btye
1349    grid%mu_bxs = s_mu_bxs; grid%mu_bxe = s_mu_bxe; grid%mu_bys = s_mu_bys; grid%mu_bye = s_mu_bye
1350    grid%mu_btxs = s_mu_btxs; grid%mu_btxe = s_mu_btxe; grid%mu_btys = s_mu_btys; grid%mu_btye = s_mu_btye
1351    grid%moist_bxs = s_moist_bxs; grid%moist_bxe = s_moist_bxe; grid%moist_bys = s_moist_bys; grid%moist_bye = s_moist_bye
1352    grid%moist_btxs = s_moist_btxs; grid%moist_btxe = s_moist_btxe; grid%moist_btys = s_moist_btys; grid%moist_btye = s_moist_btye
1353    grid%scalar_bxs = s_scalar_bxs; grid%scalar_bxe = s_scalar_bxe; grid%scalar_bys = s_scalar_bys; grid%scalar_bye = s_scalar_bye
1354    grid%scalar_btxs = s_scalar_btxs; grid%scalar_btxe = s_scalar_btxe; grid%scalar_btys = s_scalar_btys; grid%scalar_btye = s_scalar_btye
1355    grid%tracer_bxs = s_tracer_bxs; grid%tracer_bxe = s_tracer_bxe; grid%tracer_bys = s_tracer_bys; grid%tracer_bye = s_tracer_bye
1356    grid%tracer_btxs = s_tracer_btxs; grid%tracer_btxe = s_tracer_btxe; grid%tracer_btys = s_tracer_btys; grid%tracer_btye = s_tracer_btye
1358   END SUBROUTINE restore_grid
1360   SUBROUTINE copy_s_to_g_adjtest ( grid, factor )
1361    TYPE (domain), INTENT(INOUT) :: grid
1362    REAL, INTENT(IN) :: factor
1363    REAL :: factor_u, factor_v, factor_w, factor_ph, factor_t, factor_mu, & 
1364            factor_moist, factor_tracer
1365    
1366    if (grid%check_u) then
1367       factor_u =factor
1368    else
1369       factor_u = 0.0
1370    endif
1371    if (grid%check_v) then
1372       factor_v =factor
1373    else
1374       factor_v = 0.0
1375    endif
1376    if (grid%check_w) then
1377       factor_w =factor
1378    else
1379       factor_w = 0.0
1380    endif
1381    if (grid%check_ph) then
1382       factor_ph =factor
1383    else
1384       factor_ph = 0.0
1385    endif
1386    if (grid%check_t) then
1387       factor_t =factor
1388    else
1389       factor_t = 0.0
1390    endif
1391    if (grid%check_mu) then
1392       factor_mu =factor
1393    else
1394       factor_mu = 0.0
1395    endif
1396    if (grid%check_moist) then
1397       factor_moist =factor
1398    else
1399       factor_moist = 0.0
1400    endif
1401    if (grid%check_tracer) then
1402       factor_tracer =factor
1403    else
1404       factor_tracer = 0.0
1405    endif
1407 ! I&O variables
1408    
1409    grid%g_u_2 = factor_u*s_u_2
1410    grid%g_v_2 = factor_v*s_v_2
1411    grid%g_w_2 = factor_w*s_w_2
1412    grid%g_ph_2 = factor_ph*s_ph_2
1413    grid%g_t_2 = factor_t*s_t_2
1414    grid%g_mu_2 = factor_mu*s_mu_2
1415    grid%g_moist = factor_moist*s_moist
1416    grid%g_tracer = factor_tracer*s_tracer
1418    grid%g_scalar = 0.0*s_scalar
1419    grid%g_tke_2 = 0.0*s_tke_2
1420    grid%g_p = 0.0*s_p
1421    grid%g_al = 0.0*s_al
1423 ! I variables
1424    grid%g_ustm = 0.0*s_ustm
1425    grid%g_hfx = 0.0*s_hfx
1426    grid%g_qfx = 0.0*s_qfx
1428    IF ( gwd_opt .EQ. 1 ) THEN
1429       grid%g_dtaux3d = factor_u*s_dtaux3d
1430       grid%g_dtauy3d = factor_u*s_dtauy3d
1431       grid%g_dusfcg = factor_u*s_dusfcg
1432       grid%g_dvsfcg = factor_u*s_dvsfcg
1433    ENDIF
1435    grid%g_u_bxs = factor_u*s_u_bxs; grid%g_u_bxe = factor_u*s_u_bxe; grid%g_u_bys = factor_u*s_u_bys; grid%g_u_bye = factor_u*s_u_bye
1436    grid%g_u_btxs = factor_u*s_u_btxs; grid%g_u_btxe = factor_u*s_u_btxe; grid%g_u_btys = factor_u*s_u_btys; grid%g_u_btye = factor_u*s_u_btye
1437    grid%g_v_bxs = factor_v*s_v_bxs; grid%g_v_bxe = factor_v*s_v_bxe; grid%g_v_bys = factor_v*s_v_bys; grid%g_v_bye = factor_v*s_v_bye
1438    grid%g_v_btxs = factor_v*s_v_btxs; grid%g_v_btxe = factor_v*s_v_btxe; grid%g_v_btys = factor_v*s_v_btys; grid%g_v_btye = factor_v*s_v_btye
1439    grid%g_w_bxs = factor_w*s_w_bxs; grid%g_w_bxe = factor_w*s_w_bxe; grid%g_w_bys = factor_w*s_w_bys; grid%g_w_bye = factor_w*s_w_bye
1440    grid%g_w_btxs = factor_w*s_w_btxs; grid%g_w_btxe = factor_w*s_w_btxe; grid%g_w_btys = factor_w*s_w_btys; grid%g_w_btye = factor_w*s_w_btye
1441    grid%g_ph_bxs = factor_ph*s_ph_bxs; grid%g_ph_bxe = factor_ph*s_ph_bxe; grid%g_ph_bys = factor_ph*s_ph_bys; grid%g_ph_bye = factor_ph*s_ph_bye
1442    grid%g_ph_btxs = factor_ph*s_ph_btxs; grid%g_ph_btxe = factor_ph*s_ph_btxe; grid%g_ph_btys = factor_ph*s_ph_btys; grid%g_ph_btye = factor_ph*s_ph_btye
1443    grid%g_t_bxs = factor_t*s_t_bxs; grid%g_t_bxe = factor_t*s_t_bxe; grid%g_t_bys = factor_t*s_t_bys; grid%g_t_bye = factor_t*s_t_bye
1444    grid%g_t_btxs = factor_t*s_t_btxs; grid%g_t_btxe = factor_t*s_t_btxe; grid%g_t_btys = factor_t*s_t_btys; grid%g_t_btye = factor_t*s_t_btye
1445    grid%g_mu_bxs = factor_mu*s_mu_bxs; grid%g_mu_bxe = factor_mu*s_mu_bxe; grid%g_mu_bys = factor_mu*s_mu_bys; grid%g_mu_bye = factor_mu*s_mu_bye
1446    grid%g_mu_btxs = factor_mu*s_mu_btxs; grid%g_mu_btxe = factor_mu*s_mu_btxe; grid%g_mu_btys = factor_mu*s_mu_btys; grid%g_mu_btye = factor_mu*s_mu_btye
1447    grid%g_moist_bxs = factor_moist*s_moist_bxs; grid%g_moist_bxe = factor_moist*s_moist_bxe; grid%g_moist_bys = factor_moist*s_moist_bys; grid%g_moist_bye = factor_moist*s_moist_bye
1448    grid%g_moist_btxs = factor_moist*s_moist_btxs; grid%g_moist_btxe = factor_moist*s_moist_btxe; grid%g_moist_btys = factor_moist*s_moist_btys; grid%g_moist_btye = factor_moist*s_moist_btye
1449    grid%g_tracer_bxs = factor_tracer*s_tracer_bxs; grid%g_tracer_bxe = factor_tracer*s_tracer_bxe; grid%g_tracer_bys = factor_tracer*s_tracer_bys; grid%g_tracer_bye = factor_tracer*s_tracer_bye
1450    grid%g_tracer_btxs = factor_tracer*s_tracer_btxs; grid%g_tracer_btxe = factor_tracer*s_tracer_btxe; grid%g_tracer_btys = factor_tracer*s_tracer_btys; grid%g_tracer_btye = factor_tracer*s_tracer_btye
1452    grid%g_scalar_bxs = 0.0*s_scalar_bxs; grid%g_scalar_bxe = 0.0*s_scalar_bxe; grid%g_scalar_bys = 0.0*s_scalar_bys; grid%g_scalar_bye = 0.0*s_scalar_bye
1453    grid%g_scalar_btxs = 0.0*s_scalar_btxs; grid%g_scalar_btxe = 0.0*s_scalar_btxe; grid%g_scalar_btys = 0.0*s_scalar_btys; grid%g_scalar_btye = 0.0*s_scalar_btye
1455 ! O variables
1456    grid%g_u_1 = 0.0
1457    grid%g_v_1 = 0.0
1458    grid%g_w_1 = 0.0
1459    grid%g_ph_1 = 0.0
1460    grid%g_t_1 = 0.0
1461    grid%g_mu_1 = 0.0
1462    grid%g_tke_1 = 0.0
1464    grid%g_ru = 0.0
1465    grid%g_rv = 0.0
1466    grid%g_rw = 0.0
1467    grid%g_ww = 0.0
1468    grid%g_alt = 0.0
1469    grid%g_php = 0.0
1470    grid%g_mut = 0.0
1471    grid%g_muu = 0.0
1472    grid%g_muv = 0.0
1473    grid%g_p_hyd_w = 0.0
1474    grid%g_p_hyd = 0.0
1475    grid%g_z_at_w = 0.0
1476    grid%g_z = 0.0
1477    grid%g_zx = 0.0
1478    grid%g_zy = 0.0
1479    grid%g_rdz = 0.0
1480    grid%g_rdzw = 0.0
1481    grid%g_div = 0.0
1482    grid%g_nba_mij = 0.0
1483    grid%g_nba_rij = 0.0
1484    grid%g_defor11 = 0.0
1485    grid%g_defor22 = 0.0
1486    grid%g_defor33 = 0.0
1487    grid%g_defor12 = 0.0
1488    grid%g_defor13 = 0.0
1489    grid%g_defor23 = 0.0
1490    grid%g_bn2 = 0.0
1491    grid%g_xkmh = 0.0
1492    grid%g_xkmv = 0.0
1493    grid%g_xkhh = 0.0
1494    grid%g_xkhv = 0.0
1495    grid%g_ru_tend = 0.0
1496    grid%g_rv_tend = 0.0
1497    grid%g_u_save = 0.0
1498    grid%g_v_save = 0.0
1499    grid%g_t_save = 0.0
1500    grid%g_rthften = 0.0
1501    grid%g_rqvften = 0.0
1502    grid%g_muts = 0.0
1503    grid%g_mudf = 0.0
1504    grid%g_ru_m = 0.0
1505    grid%g_rv_m = 0.0
1506    grid%g_ww_m = 0.0
1507    
1508    grid%g_h_diabatic = 0.0
1509    grid%g_qv_diabatic = 0.0
1510    grid%g_qc_diabatic = 0.0
1511    grid%g_rainnc = 0.0
1512    grid%g_rainncv = 0.0
1513    grid%g_rainc = 0.0
1514    grid%g_raincv = 0.0
1516   END SUBROUTINE copy_s_to_g_adjtest
1518   SUBROUTINE copy_g_to_b_adjtest ( grid )
1519    TYPE (domain), INTENT(IN) :: grid
1521    b_u_2 = grid%g_u_2
1522    b_v_2 = grid%g_v_2
1523    b_w_2 = grid%g_w_2
1524    b_ph_2 = grid%g_ph_2
1525    b_t_2 = grid%g_t_2
1526    b_mu_2 = grid%g_mu_2
1527    b_tke_2 = grid%g_tke_2
1528    b_moist = grid%g_moist
1529    b_tracer = grid%g_tracer
1530    b_scalar = grid%g_scalar
1531    b_tke_2 = grid%g_tke_2
1533    b_p = grid%g_p
1534    b_al = grid%g_al
1536    b_ustm = grid%g_ustm
1537    b_hfx = grid%g_hfx
1538    b_qfx = grid%g_qfx
1539    b_h_diabatic = grid%g_h_diabatic
1540    b_qv_diabatic = grid%g_qv_diabatic
1541    b_qc_diabatic = grid%g_qc_diabatic
1542    
1543    IF ( gwd_opt .EQ. 1 ) THEN
1544       b_dtaux3d = grid%g_dtaux3d
1545       b_dtauy3d = grid%g_dtauy3d
1546       b_dusfcg = grid%g_dusfcg
1547       b_dvsfcg = grid%g_dvsfcg
1548    ENDIF
1550    b_u_bxs = grid%g_u_bxs; b_u_bxe = grid%g_u_bxe; b_u_bys = grid%g_u_bys; b_u_bye = grid%g_u_bye
1551    b_v_bxs = grid%g_v_bxs; b_v_bxe = grid%g_v_bxe; b_v_bys = grid%g_v_bys; b_v_bye = grid%g_v_bye
1552    b_w_bxs = grid%g_w_bxs; b_w_bxe = grid%g_w_bxe; b_w_bys = grid%g_w_bys; b_w_bye = grid%g_w_bye
1553    b_ph_bxs = grid%g_ph_bxs; b_ph_bxe = grid%g_ph_bxe; b_ph_bys = grid%g_ph_bys; b_ph_bye = grid%g_ph_bye
1554    b_t_bxs = grid%g_t_bxs; b_t_bxe = grid%g_t_bxe; b_t_bys = grid%g_t_bys; b_t_bye = grid%g_t_bye
1555    b_mu_bxs = grid%g_mu_bxs; b_mu_bxe = grid%g_mu_bxe; b_mu_bys = grid%g_mu_bys; b_mu_bye = grid%g_mu_bye
1556    b_moist_bxs = grid%g_moist_bxs; b_moist_bxe = grid%g_moist_bxe; b_moist_bys = grid%g_moist_bys; b_moist_bye = grid%g_moist_bye
1557    b_tracer_bxs = grid%g_tracer_bxs; b_tracer_bxe = grid%g_tracer_bxe; b_tracer_bys = grid%g_tracer_bys; b_tracer_bye = grid%g_tracer_bye
1558    b_u_btxs = grid%g_u_btxs; b_u_btxe = grid%g_u_btxe; b_u_btys = grid%g_u_btys; b_u_btye = grid%g_u_btye
1559    b_v_btxs = grid%g_v_btxs; b_v_btxe = grid%g_v_btxe; b_v_btys = grid%g_v_btys; b_v_btye = grid%g_v_btye
1560    b_w_btxs = grid%g_w_btxs; b_w_btxe = grid%g_w_btxe; b_w_btys = grid%g_w_btys; b_w_btye = grid%g_w_btye
1561    b_ph_btxs = grid%g_ph_btxs; b_ph_btxe = grid%g_ph_btxe; b_ph_btys = grid%g_ph_btys; b_ph_btye = grid%g_ph_btye
1562    b_t_btxs = grid%g_t_btxs; b_t_btxe = grid%g_t_btxe; b_t_btys = grid%g_t_btys; b_t_btye = grid%g_t_btye
1563    b_mu_btxs = grid%g_mu_btxs; b_mu_btxe = grid%g_mu_btxe; b_mu_btys = grid%g_mu_btys; b_mu_btye = grid%g_mu_btye
1564    b_moist_btxs = grid%g_moist_btxs; b_moist_btxe = grid%g_moist_btxe; b_moist_btys = grid%g_moist_btys; b_moist_btye = grid%g_moist_btye
1565    b_tracer_btxs = grid%g_tracer_btxs; b_tracer_btxe = grid%g_tracer_btxe; b_tracer_btys = grid%g_tracer_btys; b_tracer_btye = grid%g_tracer_btye
1567    b_scalar_bxs = grid%g_scalar_bxs; b_scalar_bxe = grid%g_scalar_bxe; b_scalar_bys = grid%g_scalar_bys; b_scalar_bye = grid%g_scalar_bye
1568    b_scalar_btxs = grid%g_scalar_btxs; b_scalar_btxe = grid%g_scalar_btxe; b_scalar_btys = grid%g_scalar_btys; b_scalar_btye = grid%g_scalar_btye
1570    RETURN
1571   END SUBROUTINE copy_g_to_b_adjtest
1573   SUBROUTINE inner_dot_g ( grid, save, its, ite, jts, jte )
1574    TYPE (domain), INTENT(IN) :: grid
1575    REAL, INTENT(INOUT) :: save
1576    INTEGER, INTENT(IN) :: its, ite, jts, jte
1577    INTEGER :: i, k, j, mm
1579    DO j = jts,MIN(jte,jde-1)
1580    DO k = kts,kte-1
1581    DO i = its,ite
1582      save  = save &
1583                   + grid%g_u_2(i,k,j) * grid%g_u_2(i,k,j)
1584    ENDDO
1585    ENDDO
1586    ENDDO
1588    DO j = jts,jte
1589    DO k = kts,kte-1
1590    DO i = its,MIN(ite,ide-1)
1591      save  = save &
1592                   + grid%g_v_2(i,k,j) * grid%g_v_2(i,k,j)
1593    ENDDO
1594    ENDDO
1595    ENDDO
1597    DO j = jts,MIN(jte,jde-1)
1598    DO k = kts,kte
1599    DO i = its,MIN(ite,ide-1)
1600      save  = save &
1601                   + grid%g_w_2(i,k,j) * grid%g_w_2(i,k,j)
1602    ENDDO
1603    ENDDO
1604    ENDDO
1606    DO j = jts,MIN(jte,jde-1)
1607    DO k = kts,kte
1608    DO i = its,MIN(ite,ide-1)
1609      save  = save &
1610                   + grid%g_ph_2(i,k,j) * grid%g_ph_2(i,k,j)
1611    ENDDO
1612    ENDDO
1613    ENDDO
1615    DO j = jts,MIN(jte,jde-1)
1616    DO k = kts,kte-1
1617    DO i = its,MIN(ite,ide-1)
1618      save  = save &
1619                   + grid%g_t_2(i,k,j) * grid%g_t_2(i,k,j)
1620    ENDDO
1621    ENDDO
1622    ENDDO
1625    DO j = jts,MIN(jte,jde-1)
1626    DO i = its,MIN(ite,ide-1)
1627      save  = save &
1628                   + grid%g_mu_2(i,j) * grid%g_mu_2(i,j)
1629    ENDDO
1630    ENDDO
1632    DO mm = PARAM_FIRST_SCALAR, num_moist
1633    DO j = jts,MIN(jte,jde-1)
1634    DO k = kts,kte-1
1635    DO i = its,MIN(ite,ide-1)
1636      save  = save + grid%g_moist(i,k,j,mm) * grid%g_moist(i,k,j,mm)
1637    ENDDO
1638    ENDDO
1639    ENDDO
1640    ENDDO
1642    DO mm = PARAM_FIRST_SCALAR, num_tracer
1643    DO j = jts,MIN(jte,jde-1)
1644    DO k = kts,kte-1
1645    DO i = its,MIN(ite,ide-1)
1646      save  = save + grid%g_tracer(i,k,j,mm) * grid%g_tracer(i,k,j,mm)
1647    ENDDO
1648    ENDDO
1649    ENDDO
1650    ENDDO
1652    DO j = jts,MIN(jte,jde-1)
1653    DO k = kts,kte-1
1654    DO i = its,MIN(ite,ide-1)
1655      save  = save + grid%g_h_diabatic(i,k,j) * grid%g_h_diabatic(i,k,j)
1656    ENDDO
1657    ENDDO
1658    ENDDO
1660    DO j = jts,MIN(jte,jde-1)
1661    DO k = kts,kte-1
1662    DO i = its,MIN(ite,ide-1)
1663      save  = save + grid%g_qv_diabatic(i,k,j) * grid%g_qv_diabatic(i,k,j)
1664    ENDDO
1665    ENDDO
1666    ENDDO
1668    DO j = jts,MIN(jte,jde-1)
1669    DO k = kts,kte-1
1670    DO i = its,MIN(ite,ide-1)
1671      save  = save + grid%g_qc_diabatic(i,k,j) * grid%g_qc_diabatic(i,k,j)
1672    ENDDO
1673    ENDDO
1674    ENDDO
1676    DO j = jts,MIN(jte,jde-1)
1677    DO k = kts,kte-1
1678    DO i = its,MIN(ite,ide-1)
1679      save  = save + grid%g_p(i,k,j) * grid%g_p(i,k,j)
1680    ENDDO
1681    ENDDO
1682    ENDDO
1684    DO j = jts,MIN(jte,jde-1)
1685    DO i = its,MIN(ite,ide-1)
1686      save  = save + grid%g_rainnc(i,j) * grid%g_rainnc(i,j) &
1687                   + grid%g_rainncv(i,j) * grid%g_rainncv(i,j)
1688    ENDDO
1689    ENDDO
1691    DO j = jts,MIN(jte,jde-1)
1692    DO i = its,MIN(ite,ide-1)
1693      save  = save + grid%g_rainc(i,j) * grid%g_rainc(i,j) &
1694                   + grid%g_raincv(i,j) * grid%g_raincv(i,j)
1695    ENDDO
1696    ENDDO
1698    IF ( gwd_opt .EQ. 1 ) THEN
1699       DO j = jts,MIN(jte,jde-1)
1700       DO k = kts,kte-1
1701       DO i = its,MIN(ite,ide-1)
1702         save  = save + grid%g_dtaux3d(i,k,j) * grid%g_dtaux3d(i,k,j) &
1703                      + grid%g_dtauy3d(i,k,j) * grid%g_dtauy3d(i,k,j)
1704       ENDDO
1705       ENDDO
1706       ENDDO
1708       DO j = jts,MIN(jte,jde-1)
1709       DO i = its,MIN(ite,ide-1)
1710         save  = save + grid%g_dusfcg(i,j) * grid%g_dusfcg(i,j) &
1711                      + grid%g_dvsfcg(i,j) * grid%g_dvsfcg(i,j)
1712       ENDDO
1713       ENDDO
1714    ENDIF
1716    RETURN
1717   END SUBROUTINE inner_dot_g
1719   SUBROUTINE inner_dot_g_adjtest ( grid, save, its, ite, jts, jte )
1720    TYPE (domain), INTENT(IN) :: grid
1721    REAL, INTENT(INOUT) :: save
1722    INTEGER, INTENT(IN) :: its, ite, jts, jte
1723    INTEGER :: i, k, j, mm
1725    DO j = jts,MIN(jte,jde-1)
1726    DO k = kts,kte-1
1727    DO i = its,ite
1728      save  = save + grid%g_u_2(i,k,j) * grid%g_u_2(i,k,j)
1729    ENDDO
1730    ENDDO
1731    ENDDO
1733    DO j = jts,jte
1734    DO k = kts,kte-1
1735    DO i = its,MIN(ite,ide-1)
1736      save  = save + grid%g_v_2(i,k,j) * grid%g_v_2(i,k,j)
1737    ENDDO
1738    ENDDO
1739    ENDDO
1741    DO j = jts,MIN(jte,jde-1)
1742    DO k = kts,kte
1743    DO i = its,MIN(ite,ide-1)
1744      save  = save + grid%g_w_2(i,k,j) * grid%g_w_2(i,k,j)
1745    ENDDO
1746    ENDDO
1747    ENDDO
1749    DO j = jts,MIN(jte,jde-1)
1750    DO k = kts,kte
1751    DO i = its,MIN(ite,ide-1)
1752      save  = save + grid%g_ph_2(i,k,j) * grid%g_ph_2(i,k,j) 
1753    ENDDO
1754    ENDDO
1755    ENDDO
1757    DO j = jts,MIN(jte,jde-1)
1758    DO k = kts,kte-1
1759    DO i = its,MIN(ite,ide-1)
1760      save  = save + grid%g_t_2(i,k,j) * grid%g_t_2(i,k,j)
1761    ENDDO
1762    ENDDO
1763    ENDDO
1765    DO j = jts,MIN(jte,jde-1)
1766    DO i = its,MIN(ite,ide-1)
1767      save  = save + grid%g_mu_2(i,j) * grid%g_mu_2(i,j)
1768    ENDDO
1769    ENDDO
1771    DO mm = PARAM_FIRST_SCALAR, num_moist
1772    DO j = jts,MIN(jte,jde-1)
1773    DO k = kts,kte-1
1774    DO i = its,MIN(ite,ide-1)
1775      save  = save + grid%g_moist(i,k,j,mm) * grid%g_moist(i,k,j,mm)
1776    ENDDO
1777    ENDDO
1778    ENDDO
1779    ENDDO
1781    DO mm = PARAM_FIRST_SCALAR, num_tracer
1782    DO j = jts,MIN(jte,jde-1)
1783    DO k = kts,kte-1
1784    DO i = its,MIN(ite,ide-1)
1785      save  = save + grid%g_tracer(i,k,j,mm) * grid%g_tracer(i,k,j,mm)
1786    ENDDO
1787    ENDDO
1788    ENDDO
1789    ENDDO
1790   
1791    DO j = jts,MIN(jte,jde-1)
1792    DO k = kts,kte-1
1793    DO i = its,MIN(ite,ide-1)
1794      save  = save + grid%g_h_diabatic(i,k,j) * grid%g_h_diabatic(i,k,j)
1795    ENDDO
1796    ENDDO
1797    ENDDO
1799    DO j = jts,MIN(jte,jde-1)
1800    DO k = kts,kte-1
1801    DO i = its,MIN(ite,ide-1)
1802      save  = save + grid%g_qv_diabatic(i,k,j) * grid%g_qv_diabatic(i,k,j)
1803    ENDDO
1804    ENDDO
1805    ENDDO
1807    DO j = jts,MIN(jte,jde-1)
1808    DO k = kts,kte-1
1809    DO i = its,MIN(ite,ide-1)
1810      save  = save + grid%g_qc_diabatic(i,k,j) * grid%g_qc_diabatic(i,k,j)
1811    ENDDO
1812    ENDDO
1813    ENDDO
1815    DO j = jts,MIN(jte,jde-1)
1816    DO k = kts,kte-1
1817    DO i = its,MIN(ite,ide-1)
1818      save  = save + grid%g_p(i,k,j) * grid%g_p(i,k,j)
1819    ENDDO
1820    ENDDO
1821    ENDDO
1823    DO j = jts,MIN(jte,jde-1)
1824    DO i = its,MIN(ite,ide-1)
1825      save  = save + grid%g_rainnc(i,j) * grid%g_rainnc(i,j) &
1826                   + grid%g_rainncv(i,j) * grid%g_rainncv(i,j)
1827    ENDDO
1828    ENDDO
1830    DO j = jts,MIN(jte,jde-1)
1831    DO i = its,MIN(ite,ide-1)
1832      save  = save + grid%g_rainc(i,j) * grid%g_rainc(i,j) &
1833                   + grid%g_raincv(i,j) * grid%g_raincv(i,j)
1834    ENDDO
1835    ENDDO
1837    IF ( gwd_opt .EQ. 1 ) THEN
1838       DO j = jts,MIN(jte,jde-1)
1839       DO k = kts,kte-1
1840       DO i = its,MIN(ite,ide-1)
1841         save  = save + grid%g_dtaux3d(i,k,j) * grid%g_dtaux3d(i,k,j) &
1842                      + grid%g_dtauy3d(i,k,j) * grid%g_dtauy3d(i,k,j)
1843       ENDDO
1844       ENDDO
1845       ENDDO
1847       DO j = jts,MIN(jte,jde-1)
1848       DO i = its,MIN(ite,ide-1)
1849         save  = save + grid%g_dusfcg(i,j) * grid%g_dusfcg(i,j) &
1850                      + grid%g_dvsfcg(i,j) * grid%g_dvsfcg(i,j)
1851       ENDDO
1852       ENDDO
1853    ENDIF
1855    RETURN
1857   END SUBROUTINE inner_dot_g_adjtest
1859   SUBROUTINE add_grid ( grid, factor )
1860    TYPE (domain), INTENT(INOUT) :: grid
1861    REAL, INTENT(IN) :: factor
1862    REAL :: factor_u, factor_v, factor_w, factor_ph, factor_t, factor_mu, factor_moist, factor_tracer
1863    
1864    if (grid%check_u) then
1865       factor_u =factor
1866    else
1867       factor_u = 1.0
1868    endif
1869    if (grid%check_v) then
1870       factor_v =factor
1871    else
1872       factor_v = 1.0
1873    endif
1874    if (grid%check_w) then
1875       factor_w =factor
1876    else
1877       factor_w = 1.0
1878    endif
1879    if (grid%check_ph) then
1880       factor_ph =factor
1881    else
1882       factor_ph = 1.0
1883    endif
1884    if (grid%check_t) then
1885       factor_t =factor
1886    else
1887       factor_t = 1.0
1888    endif
1889    if (grid%check_mu) then
1890       factor_mu =factor
1891    else
1892       factor_mu = 1.0
1893    endif
1894    if (grid%check_moist) then
1895       factor_moist =factor
1896    else
1897       factor_moist = 1.0
1898    endif
1899    if (grid%check_tracer) then
1900       factor_tracer =factor
1901    else
1902       factor_tracer = 1.0
1903    endif
1905    grid%u_2 = factor_u*s_u_2
1906    grid%v_2 = factor_v*s_v_2
1907    grid%w_2 = factor_w*s_w_2
1908    grid%ph_2 = factor_ph*s_ph_2
1909    grid%t_2 = factor_t*s_t_2
1910    grid%mu_2 = factor_mu*s_mu_2
1911    grid%moist = factor_moist*s_moist
1912    grid%tracer = factor_tracer*s_tracer
1913    grid%scalar = s_scalar
1914    grid%tke_2 = s_tke_2
1916    grid%p = s_p
1917    grid%al = s_al
1918    grid%h_diabatic = s_h_diabatic
1919    grid%qv_diabatic = s_qv_diabatic
1920    grid%qc_diabatic = s_qc_diabatic
1921    grid%ustm = s_ustm
1922    grid%hfx = s_hfx
1923    grid%qfx = s_qfx
1924    
1925    IF ( gwd_opt .EQ. 1 ) THEN
1926       grid%dtaux3d = factor_u*s_dtaux3d
1927       grid%dtauy3d = factor_u*s_dtauy3d
1928       grid%dusfcg = factor_u*s_dusfcg
1929       grid%dvsfcg = factor_u*s_dvsfcg
1930    ENDIF
1932    grid%u_bxs = factor_u*s_u_bxs; grid%u_bxe = factor_u*s_u_bxe; grid%u_bys = factor_u*s_u_bys; grid%u_bye = factor_u*s_u_bye
1933    grid%u_btxs = factor_u*s_u_btxs; grid%u_btxe = factor_u*s_u_btxe; grid%u_btys = factor_u*s_u_btys; grid%u_btye = factor_u*s_u_btye
1934    grid%v_bxs = factor_v*s_v_bxs; grid%v_bxe = factor_v*s_v_bxe; grid%v_bys = factor_v*s_v_bys; grid%v_bye = factor_v*s_v_bye
1935    grid%v_btxs = factor_v*s_v_btxs; grid%v_btxe = factor_v*s_v_btxe; grid%v_btys = factor_v*s_v_btys; grid%v_btye = factor_v*s_v_btye
1936    grid%w_bxs = factor_w*s_w_bxs; grid%w_bxe = factor_w*s_w_bxe; grid%w_bys = factor_w*s_w_bys; grid%w_bye = factor_w*s_w_bye
1937    grid%w_btxs = factor_w*s_w_btxs; grid%w_btxe = factor_w*s_w_btxe; grid%w_btys = factor_w*s_w_btys; grid%w_btye = factor_w*s_w_btye
1938    grid%ph_bxs = factor_ph*s_ph_bxs; grid%ph_bxe = factor_ph*s_ph_bxe; grid%ph_bys = factor_ph*s_ph_bys; grid%ph_bye = factor_ph*s_ph_bye
1939    grid%ph_btxs = factor_ph*s_ph_btxs; grid%ph_btxe = factor_ph*s_ph_btxe; grid%ph_btys = factor_ph*s_ph_btys; grid%ph_btye = factor_ph*s_ph_btye
1940    grid%t_bxs = factor_t*s_t_bxs; grid%t_bxe = factor_t*s_t_bxe; grid%t_bys = factor_t*s_t_bys; grid%t_bye = factor_t*s_t_bye
1941    grid%t_btxs = factor_t*s_t_btxs; grid%t_btxe = factor_t*s_t_btxe; grid%t_btys = factor_t*s_t_btys; grid%t_btye = factor_t*s_t_btye
1942    grid%mu_bxs = factor_mu*s_mu_bxs; grid%mu_bxe = factor_mu*s_mu_bxe; grid%mu_bys = factor_mu*s_mu_bys; grid%mu_bye = factor_mu*s_mu_bye
1943    grid%mu_btxs = factor_mu*s_mu_btxs; grid%mu_btxe = factor_mu*s_mu_btxe; grid%mu_btys = factor_mu*s_mu_btys; grid%mu_btye = factor_mu*s_mu_btye
1944    grid%moist_bxs = factor_moist*s_moist_bxs; grid%moist_bxe = factor_moist*s_moist_bxe; grid%moist_bys = factor_moist*s_moist_bys; grid%moist_bye = factor_moist*s_moist_bye
1945    grid%moist_btxs = factor_moist*s_moist_btxs; grid%moist_btxe = factor_moist*s_moist_btxe; grid%moist_btys = factor_moist*s_moist_btys; grid%moist_btye = factor_moist*s_moist_btye
1946    grid%tracer_bxs = factor_tracer*s_tracer_bxs; grid%tracer_bxe = factor_tracer*s_tracer_bxe; grid%tracer_bys = factor_tracer*s_tracer_bys; grid%tracer_bye = factor_tracer*s_tracer_bye
1947    grid%tracer_btxs = factor_tracer*s_tracer_btxs; grid%tracer_btxe = factor_tracer*s_tracer_btxe; grid%tracer_btys = factor_tracer*s_tracer_btys; grid%tracer_btye = factor_tracer*s_tracer_btye
1948    grid%scalar_bxs = s_scalar_bxs; grid%scalar_bxe = s_scalar_bxe; grid%scalar_bys = s_scalar_bys; grid%scalar_bye = s_scalar_bye
1949    grid%scalar_btxs = s_scalar_btxs; grid%scalar_btxe = s_scalar_btxe; grid%scalar_btys = s_scalar_btys; grid%scalar_btye = s_scalar_btye
1951    RETURN
1952   END SUBROUTINE add_grid
1954   SUBROUTINE inner_dot ( grid, save, its, ite, jts, jte )
1955    TYPE (domain), INTENT(IN) :: grid
1956    INTEGER, INTENT(IN) :: its, ite, jts, jte
1957    REAL, INTENT(INOUT) :: save
1958    INTEGER :: i, k, j, mm
1960    DO j = jts,MIN(jte,jde-1)
1961    DO k = kts,kte-1
1962    DO i = its,ite
1963      save  = save &
1964                   + (grid%u_2(i,k,j)-b_u_2(i,k,j)) * (grid%u_2(i,k,j)-b_u_2(i,k,j))
1965    ENDDO
1966    ENDDO
1967    ENDDO
1969    DO j = jts,jte
1970    DO k = kts,kte-1
1971    DO i = its,MIN(ite,ide-1)
1972      save  = save &
1973                   + (grid%v_2(i,k,j)-b_v_2(i,k,j)) * (grid%v_2(i,k,j)-b_v_2(i,k,j))
1974    ENDDO
1975    ENDDO
1976    ENDDO
1978    DO j = jts,MIN(jte,jde-1)
1979    DO k = kts,kte
1980    DO i = its,MIN(ite,ide-1)
1981      save  = save &
1982                   + (grid%w_2(i,k,j)-b_w_2(i,k,j)) * (grid%w_2(i,k,j)-b_w_2(i,k,j))
1983    ENDDO
1984    ENDDO
1985    ENDDO
1987    DO j = jts,MIN(jte,jde-1)
1988    DO k = kts,kte
1989    DO i = its,MIN(ite,ide-1)
1990      save  = save &
1991                   + (grid%ph_2(i,k,j)-b_ph_2(i,k,j)) * (grid%ph_2(i,k,j)-b_ph_2(i,k,j))
1992    ENDDO
1993    ENDDO
1994    ENDDO
1996    DO j = jts,MIN(jte,jde-1)
1997    DO k = kts,kte-1
1998    DO i = its,MIN(ite,ide-1)
1999      save  = save &
2000                   + (grid%t_2(i,k,j)-b_t_2(i,k,j)) * (grid%t_2(i,k,j)-b_t_2(i,k,j))
2001    ENDDO
2002    ENDDO
2003    ENDDO
2006    DO j = jts,MIN(jte,jde-1)
2007    DO i = its,MIN(ite,ide-1)
2008      save  = save &
2009                   + (grid%mu_2(i,j)-b_mu_2(i,j)) * (grid%mu_2(i,j)-b_mu_2(i,j))
2010    ENDDO
2011    ENDDO
2013    DO mm = PARAM_FIRST_SCALAR, num_moist
2014    DO j = jts,MIN(jte,jde-1)
2015    DO k = kts,kte-1
2016    DO i = its,MIN(ite,ide-1)
2017      save  = save + (grid%moist(i,k,j,mm)-b_moist(i,k,j,mm)) * (grid%moist(i,k,j,mm)-b_moist(i,k,j,mm))
2018    ENDDO
2019    ENDDO
2020    ENDDO
2021    ENDDO
2023    DO mm = PARAM_FIRST_SCALAR, num_tracer
2024    DO j = jts,MIN(jte,jde-1)
2025    DO k = kts,kte-1
2026    DO i = its,MIN(ite,ide-1)
2027      save  = save + (grid%tracer(i,k,j,mm)-b_tracer(i,k,j,mm)) * (grid%tracer(i,k,j,mm)-b_tracer(i,k,j,mm))
2028    ENDDO
2029    ENDDO
2030    ENDDO
2031    ENDDO
2033    DO j = jts,MIN(jte,jde-1)
2034    DO k = kts,kte-1
2035    DO i = its,MIN(ite,ide-1)
2036      save  = save &
2037                   + (grid%h_diabatic(i,k,j)-b_h_diabatic(i,k,j)) * (grid%h_diabatic(i,k,j)-b_h_diabatic(i,k,j))
2038    ENDDO
2039    ENDDO
2040    ENDDO
2042    DO j = jts,MIN(jte,jde-1)
2043    DO k = kts,kte-1
2044    DO i = its,MIN(ite,ide-1)
2045      save  = save &
2046                   + (grid%qv_diabatic(i,k,j)-b_qv_diabatic(i,k,j)) * (grid%qv_diabatic(i,k,j)-b_qv_diabatic(i,k,j))
2047    ENDDO
2048    ENDDO
2049    ENDDO
2051    DO j = jts,MIN(jte,jde-1)
2052    DO k = kts,kte-1
2053    DO i = its,MIN(ite,ide-1)
2054      save  = save &
2055                   + (grid%qc_diabatic(i,k,j)-b_qc_diabatic(i,k,j)) * (grid%qc_diabatic(i,k,j)-b_qc_diabatic(i,k,j))
2056    ENDDO
2057    ENDDO
2058    ENDDO
2060    DO j = jts,MIN(jte,jde-1)
2061    DO k = kts,kte-1
2062    DO i = its,MIN(ite,ide-1)
2063      save  = save &
2064                   + (grid%p(i,k,j)-b_p(i,k,j)) * (grid%p(i,k,j)-b_p(i,k,j))
2065    ENDDO
2066    ENDDO
2067    ENDDO
2069    DO j = jts,MIN(jte,jde-1)
2070    DO i = its,MIN(ite,ide-1)
2071      save  = save + (grid%rainnc(i,j)-b_rainnc(i,j)) * (grid%rainnc(i,j)-b_rainnc(i,j)) &
2072                   + (grid%rainncv(i,j)-b_rainncv(i,j)) * (grid%rainncv(i,j)-b_rainncv(i,j))
2073    ENDDO
2074    ENDDO
2076    DO j = jts,MIN(jte,jde-1)
2077    DO i = its,MIN(ite,ide-1)
2078      save  = save + (grid%rainc(i,j)-b_rainc(i,j)) * (grid%rainc(i,j)-b_rainc(i,j)) &
2079                   + (grid%raincv(i,j)-b_raincv(i,j)) * (grid%raincv(i,j)-b_raincv(i,j))
2080    ENDDO
2081    ENDDO
2083    IF ( gwd_opt .EQ. 1 ) THEN
2084       DO j = jts,MIN(jte,jde-1)
2085       DO k = kts,kte-1
2086       DO i = its,MIN(ite,ide-1)
2087         save  = save + (grid%dtaux3d(i,k,j)-b_dtaux3d(i,k,j)) * (grid%dtaux3d(i,k,j)-b_dtaux3d(i,k,j)) &
2088                      + (grid%dtauy3d(i,k,j)-b_dtauy3d(i,k,j)) * (grid%dtauy3d(i,k,j)-b_dtauy3d(i,k,j))
2089       ENDDO
2090       ENDDO
2091       ENDDO
2093       DO j = jts,MIN(jte,jde-1)
2094       DO i = its,MIN(ite,ide-1)
2095         save  = save + (grid%dusfcg(i,j)-b_dusfcg(i,j)) * (grid%dusfcg(i,j)-b_dusfcg(i,j)) &
2096                      + (grid%dvsfcg(i,j)-b_dvsfcg(i,j)) * (grid%dvsfcg(i,j)-b_dvsfcg(i,j))
2097       ENDDO
2098       ENDDO
2099    ENDIF
2101    RETURN
2102   END SUBROUTINE inner_dot
2104   SUBROUTINE copy_g_to_a_adjtest ( grid, its, ite, jts, jte )
2105    TYPE (domain), INTENT(INOUT) :: grid
2106    INTEGER, INTENT(IN) :: its, ite, jts, jte
2107    INTEGER :: i, k, j, mm
2109    CALL zero_out_ad ( grid )
2111       DO j = jts,MIN(jte,jde-1)
2112       DO k = kts,kte-1
2113       DO i = its,ite
2114          grid%a_u_2(i,k,j) = grid%g_u_2(i,k,j)
2115       ENDDO
2116       ENDDO
2117       ENDDO
2119       DO j = jts,jte
2120       DO k = kts,kte-1
2121       DO i = its,MIN(ite,ide-1)
2122          grid%a_v_2(i,k,j) = grid%g_v_2(i,k,j)
2123       ENDDO
2124       ENDDO
2125       ENDDO
2127       DO j = jts,MIN(jte,jde-1)
2128       DO k = kts,kte
2129       DO i = its,MIN(ite,ide-1)
2130          grid%a_w_2(i,k,j) = grid%g_w_2(i,k,j)
2131       ENDDO
2132       ENDDO
2133       ENDDO
2135       DO j = jts,MIN(jte,jde-1)
2136       DO k = kts,kte-1
2137       DO i = its,MIN(ite,ide-1)
2138          grid%a_t_2(i,k,j) = grid%g_t_2(i,k,j)
2139       ENDDO
2140       ENDDO
2141       ENDDO
2143       DO j = jts,MIN(jte,jde-1)
2144       DO k = kts,kte
2145       DO i = its,MIN(ite,ide-1)
2146          grid%a_ph_2(i,k,j) = grid%g_ph_2(i,k,j)
2147       ENDDO
2148       ENDDO
2149       ENDDO
2151       DO j = jts,MIN(jte,jde-1)
2152       DO i = its,MIN(ite,ide-1)
2153          grid%a_mu_2(i,j) = grid%g_mu_2(i,j)
2154       ENDDO
2155       ENDDO
2157       DO mm = PARAM_FIRST_SCALAR, num_moist
2158       DO j = jts,MIN(jte,jde-1)
2159       DO k = kts,kte-1
2160       DO i = its,MIN(ite,ide-1)
2161          grid%a_moist(i,k,j,mm) = grid%g_moist(i,k,j,mm)
2162       ENDDO
2163       ENDDO
2164       ENDDO
2165       ENDDO
2166    
2167       DO mm = PARAM_FIRST_SCALAR, num_tracer
2168       DO j = jts,MIN(jte,jde-1)
2169       DO k = kts,kte-1
2170       DO i = its,MIN(ite,ide-1)
2171          grid%a_tracer(i,k,j,mm) = grid%g_tracer(i,k,j,mm)
2172       ENDDO
2173       ENDDO
2174       ENDDO
2175       ENDDO
2176    
2177    DO mm = PARAM_FIRST_SCALAR, num_scalar
2178    DO j = jts,MIN(jte,jde-1)
2179    DO k = kts,kte-1
2180    DO i = its,MIN(ite,ide-1)
2181       grid%a_scalar(i,k,j,mm) = grid%g_scalar(i,k,j,mm)
2182    ENDDO
2183    ENDDO
2184    ENDDO
2185    ENDDO
2187    DO j = jts,MIN(jte,jde-1)
2188    DO k = kts,kte-1
2189    DO i = its,MIN(ite,ide-1)
2190       grid%a_h_diabatic(i,k,j)  = grid%g_h_diabatic(i,k,j)
2191       grid%a_qv_diabatic(i,k,j) = grid%g_qv_diabatic(i,k,j)
2192       grid%a_qc_diabatic(i,k,j) = grid%g_qc_diabatic(i,k,j)
2193    ENDDO
2194    ENDDO
2195    ENDDO
2197    DO j = jts,MIN(jte,jde-1)
2198    DO i = its,MIN(ite,ide-1)
2199       grid%a_rainnc(i,j)  = grid%g_rainnc(i,j)
2200       grid%a_rainncv(i,j) = grid%g_rainncv(i,j)
2202       grid%a_rainc(i,j)  = grid%g_rainc(i,j)
2203       grid%a_raincv(i,j) = grid%g_raincv(i,j)
2204    ENDDO
2205    ENDDO
2207    DO j = jts,MIN(jte,jde-1)
2208    DO k = kts,kte-1
2209    DO i = its,MIN(ite,ide-1)
2210       grid%a_p(i,k,j) = grid%g_p(i,k,j)
2211    ENDDO
2212    ENDDO
2213    ENDDO
2215    IF ( gwd_opt .EQ. 1 ) THEN
2216       DO j = jts,MIN(jte,jde-1)
2217       DO k = kts,kte-1
2218       DO i = its,MIN(ite,ide-1)
2219          grid%a_dtaux3d(i,k,j) = grid%g_dtaux3d(i,k,j)
2220          grid%a_dtauy3d(i,k,j) = grid%g_dtauy3d(i,k,j) 
2221       ENDDO
2222       ENDDO
2223       ENDDO
2224       DO j = jts,MIN(jte,jde-1)
2225       DO i = its,MIN(ite,ide-1)
2226          grid%a_dusfcg(i,j) = grid%g_dusfcg(i,j)
2227          grid%a_dvsfcg(i,j) = grid%g_dvsfcg(i,j)
2228       ENDDO
2229       ENDDO
2230    ENDIF
2232    RETURN
2233   END SUBROUTINE copy_g_to_a_adjtest
2235   SUBROUTINE zero_out_ad ( grid )
2236    TYPE (domain), INTENT(INOUT) :: grid
2238    grid%a_u_1 = 0.0
2239    grid%a_u_2 = 0.0
2241    grid%a_v_1 = 0.0
2242    grid%a_v_2 = 0.0
2244    grid%a_w_1 = 0.0
2245    grid%a_w_2 = 0.0
2247    grid%a_t_1 = 0.0
2248    grid%a_t_2 = 0.0
2250    grid%a_ph_1 = 0.0
2251    grid%a_ph_2 = 0.0
2253    grid%a_mu_1 = 0.0
2254    grid%a_mu_2 = 0.0
2256    grid%a_moist = 0.0
2257    grid%a_tracer = 0.0
2258    
2259    grid%a_scalar = 0.0
2261    grid%a_h_diabatic = 0.0
2262    grid%a_qv_diabatic = 0.0
2263    grid%a_qc_diabatic = 0.0
2265    grid%a_rainnc = 0.0
2266    grid%a_rainncv = 0.0
2267    grid%a_rainc = 0.0
2268    grid%a_raincv = 0.0
2269    grid%a_pratec = 0.0
2271    grid%a_p = 0.0
2273 ! I&O variables
2274    grid%a_tke_1 = 0.0
2275    grid%a_tke_2 = 0.0
2276    grid%a_al=0.0
2278 ! O variables
2279    grid%a_ru = 0.0
2280    grid%a_rv = 0.0
2281    grid%a_rw = 0.0
2282    grid%a_ww = 0.0
2283    grid%a_alt = 0.0
2284    grid%a_php = 0.0
2285    grid%a_mut = 0.0
2286    grid%a_muu = 0.0
2287    grid%a_muv = 0.0
2288    grid%a_p_hyd_w = 0.0
2289    grid%a_p_hyd = 0.0
2290    grid%a_z_at_w = 0.0
2291    grid%a_z = 0.0
2292    grid%a_zx = 0.0
2293    grid%a_zy = 0.0
2294    grid%a_rdz = 0.0
2295    grid%a_rdzw = 0.0
2296    grid%a_div = 0.0
2297    grid%a_nba_mij = 0.0
2298    grid%a_nba_rij = 0.0
2299    grid%a_defor11 = 0.0
2300    grid%a_defor22 = 0.0
2301    grid%a_defor33 = 0.0
2302    grid%a_defor12 = 0.0
2303    grid%a_defor13 = 0.0
2304    grid%a_defor23 = 0.0
2305    grid%a_bn2 = 0.0
2306    grid%a_xkmh = 0.0
2307    grid%a_xkmv = 0.0
2308    grid%a_xkhh = 0.0
2309    grid%a_xkhv = 0.0
2310    grid%a_ru_tend = 0.0
2311    grid%a_rv_tend = 0.0
2312    grid%a_u_save = 0.0
2313    grid%a_v_save = 0.0
2314    grid%a_t_save = 0.0
2315    grid%a_rthften = 0.0
2316    grid%a_rqvften = 0.0
2317    grid%a_muts = 0.0
2318    grid%a_mudf = 0.0
2319    grid%a_ru_m = 0.0
2320    grid%a_rv_m = 0.0
2321    grid%a_ww_m = 0.0
2323    grid%a_rublten = 0.0
2324    grid%a_rvblten = 0.0
2325    grid%a_rqvblten = 0.0
2326 ! I variables
2327    grid%a_ustm=0.0
2328    grid%a_hfx=0.0
2329    grid%a_qfx=0.0
2331    IF ( gwd_opt .EQ. 1 ) THEN
2332       grid%a_dtaux3d = 0.0
2333       grid%a_dtauy3d = 0.0
2334       grid%a_dusfcg = 0.0
2335       grid%a_dvsfcg = 0.0
2336    ENDIF
2338    grid%a_u_bxs = 0.0; grid%a_u_bxe = 0.0; grid%a_u_bys = 0.0; grid%a_u_bye = 0.0
2339    grid%a_v_bxs = 0.0; grid%a_v_bxe = 0.0; grid%a_v_bys = 0.0; grid%a_v_bye = 0.0
2340    grid%a_w_bxs = 0.0; grid%a_w_bxe = 0.0; grid%a_w_bys = 0.0; grid%a_w_bye = 0.0
2341    grid%a_ph_bxs = 0.0; grid%a_ph_bxe = 0.0; grid%a_ph_bys = 0.0; grid%a_ph_bye = 0.0
2342    grid%a_t_bxs = 0.0; grid%a_t_bxe = 0.0; grid%a_t_bys = 0.0; grid%a_t_bye = 0.0
2343    grid%a_mu_bxs = 0.0; grid%a_mu_bxe = 0.0; grid%a_mu_bys = 0.0; grid%a_mu_bye = 0.0
2344    grid%a_moist_bxs = 0.0; grid%a_moist_bxe = 0.0; grid%a_moist_bys = 0.0; grid%a_moist_bye = 0.0
2345    grid%a_tracer_bxs = 0.0; grid%a_tracer_bxe = 0.0; grid%a_tracer_bys = 0.0; grid%a_tracer_bye = 0.0
2346    grid%a_scalar_bxs = 0.0; grid%a_scalar_bxe = 0.0; grid%a_scalar_bys = 0.0; grid%a_scalar_bye = 0.0
2348    grid%a_u_btxs = 0.0; grid%a_u_btxe = 0.0; grid%a_u_btys = 0.0; grid%a_u_btye = 0.0
2349    grid%a_v_btxs = 0.0; grid%a_v_btxe = 0.0; grid%a_v_btys = 0.0; grid%a_v_btye = 0.0
2350    grid%a_w_btxs = 0.0; grid%a_w_btxe = 0.0; grid%a_w_btys = 0.0; grid%a_w_btye = 0.0
2351    grid%a_ph_btxs = 0.0; grid%a_ph_btxe = 0.0; grid%a_ph_btys = 0.0; grid%a_ph_btye = 0.0
2352    grid%a_t_btxs = 0.0; grid%a_t_btxe = 0.0; grid%a_t_btys = 0.0; grid%a_t_btye = 0.0
2353    grid%a_mu_btxs = 0.0; grid%a_mu_btxe = 0.0; grid%a_mu_btys = 0.0; grid%a_mu_btye = 0.0
2354    grid%a_moist_btxs = 0.0; grid%a_moist_btxe = 0.0; grid%a_moist_btys = 0.0; grid%a_moist_btye = 0.0
2355    grid%a_tracer_btxs = 0.0; grid%a_tracer_btxe = 0.0; grid%a_tracer_btys = 0.0; grid%a_tracer_btye = 0.0
2356    grid%a_scalar_btxs = 0.0; grid%a_scalar_btxe = 0.0; grid%a_scalar_btys = 0.0; grid%a_scalar_btye = 0.0
2358    RETURN
2359   END SUBROUTINE zero_out_ad
2362   SUBROUTINE zero_out_tl ( grid )
2363    TYPE (domain), INTENT(INOUT) :: grid
2365    grid%g_u_1 = 0.0
2366    grid%g_u_2 = 0.0
2368    grid%g_v_1 = 0.0
2369    grid%g_v_2 = 0.0
2371    grid%g_w_1 = 0.0
2372    grid%g_w_2 = 0.0
2374    grid%g_t_1 = 0.0
2375    grid%g_t_2 = 0.0
2377    grid%g_ph_1 = 0.0
2378    grid%g_ph_2 = 0.0
2380    grid%g_mu_1 = 0.0
2381    grid%g_mu_2 = 0.0
2383    grid%g_moist = 0.0
2384    grid%g_tracer = 0.0
2385    
2386    grid%g_scalar = 0.0
2388    grid%g_h_diabatic = 0.0
2389    grid%g_qv_diabatic = 0.0
2390    grid%g_qc_diabatic = 0.0
2392    grid%g_rainnc = 0.0
2393    grid%g_rainncv = 0.0
2394    grid%g_rainc = 0.0
2395    grid%g_raincv = 0.0
2396    grid%g_pratec = 0.0
2398    grid%g_p = 0.0
2400 ! I&O variables
2401    grid%g_tke_1 = 0.0
2402    grid%g_tke_2 = 0.0
2403    grid%g_al=0.0
2405 ! O variables
2406    grid%g_ru = 0.0
2407    grid%g_rv = 0.0
2408    grid%g_rw = 0.0
2409    grid%g_ww = 0.0
2410    grid%g_alt = 0.0
2411    grid%g_php = 0.0
2412    grid%g_mut = 0.0
2413    grid%g_muu = 0.0
2414    grid%g_muv = 0.0
2415    grid%g_p_hyd_w = 0.0
2416    grid%g_p_hyd = 0.0
2417    grid%g_z_at_w = 0.0
2418    grid%g_z = 0.0
2419    grid%g_zx = 0.0
2420    grid%g_zy = 0.0
2421    grid%g_rdz = 0.0
2422    grid%g_rdzw = 0.0
2423    grid%g_div = 0.0
2424    grid%g_nba_mij = 0.0
2425    grid%g_nba_rij = 0.0
2426    grid%g_defor11 = 0.0
2427    grid%g_defor22 = 0.0
2428    grid%g_defor33 = 0.0
2429    grid%g_defor12 = 0.0
2430    grid%g_defor13 = 0.0
2431    grid%g_defor23 = 0.0
2432    grid%g_bn2 = 0.0
2433    grid%g_xkmh = 0.0
2434    grid%g_xkmv = 0.0
2435    grid%g_xkhh = 0.0
2436    grid%g_xkhv = 0.0
2437    grid%g_ru_tend = 0.0
2438    grid%g_rv_tend = 0.0
2439    grid%g_u_save = 0.0
2440    grid%g_v_save = 0.0
2441    grid%g_t_save = 0.0
2442    grid%g_rthften = 0.0
2443    grid%g_rqvften = 0.0
2444    grid%g_muts = 0.0
2445    grid%g_mudf = 0.0
2446    grid%g_ru_m = 0.0
2447    grid%g_rv_m = 0.0
2448    grid%g_ww_m = 0.0
2450    grid%g_rublten = 0.0
2451    grid%g_rvblten = 0.0
2452    grid%g_rqvblten = 0.0
2454 ! I variables
2455    grid%g_ustm=0.0
2456    grid%g_hfx=0.0
2457    grid%g_qfx=0.0
2459    IF ( gwd_opt .EQ. 1 ) THEN
2460       grid%g_dtaux3d = 0.0
2461       grid%g_dtauy3d = 0.0
2462       grid%g_dusfcg = 0.0
2463       grid%g_dvsfcg = 0.0
2464    ENDIF
2466    grid%g_u_bxs = 0.0; grid%g_u_bxe = 0.0; grid%g_u_bys = 0.0; grid%g_u_bye = 0.0
2467    grid%g_v_bxs = 0.0; grid%g_v_bxe = 0.0; grid%g_v_bys = 0.0; grid%g_v_bye = 0.0
2468    grid%g_w_bxs = 0.0; grid%g_w_bxe = 0.0; grid%g_w_bys = 0.0; grid%g_w_bye = 0.0
2469    grid%g_ph_bxs = 0.0; grid%g_ph_bxe = 0.0; grid%g_ph_bys = 0.0; grid%g_ph_bye = 0.0
2470    grid%g_t_bxs = 0.0; grid%g_t_bxe = 0.0; grid%g_t_bys = 0.0; grid%g_t_bye = 0.0
2471    grid%g_mu_bxs = 0.0; grid%g_mu_bxe = 0.0; grid%g_mu_bys = 0.0; grid%g_mu_bye = 0.0
2472    grid%g_moist_bxs = 0.0; grid%g_moist_bxe = 0.0; grid%g_moist_bys = 0.0; grid%g_moist_bye = 0.0
2473    grid%g_tracer_bxs = 0.0; grid%g_tracer_bxe = 0.0; grid%g_tracer_bys = 0.0; grid%g_tracer_bye = 0.0
2474    grid%g_scalar_bxs = 0.0; grid%g_scalar_bxe = 0.0; grid%g_scalar_bys = 0.0; grid%g_scalar_bye = 0.0
2476    grid%g_u_btxs = 0.0; grid%g_u_btxe = 0.0; grid%g_u_btys = 0.0; grid%g_u_btye = 0.0
2477    grid%g_v_btxs = 0.0; grid%g_v_btxe = 0.0; grid%g_v_btys = 0.0; grid%g_v_btye = 0.0
2478    grid%g_w_btxs = 0.0; grid%g_w_btxe = 0.0; grid%g_w_btys = 0.0; grid%g_w_btye = 0.0
2479    grid%g_ph_btxs = 0.0; grid%g_ph_btxe = 0.0; grid%g_ph_btys = 0.0; grid%g_ph_btye = 0.0
2480    grid%g_t_btxs = 0.0; grid%g_t_btxe = 0.0; grid%g_t_btys = 0.0; grid%g_t_btye = 0.0
2481    grid%g_mu_btxs = 0.0; grid%g_mu_btxe = 0.0; grid%g_mu_btys = 0.0; grid%g_mu_btye = 0.0
2482    grid%g_moist_btxs = 0.0; grid%g_moist_btxe = 0.0; grid%g_moist_btys = 0.0; grid%g_moist_btye = 0.0
2483    grid%g_tracer_btxs = 0.0; grid%g_tracer_btxe = 0.0; grid%g_tracer_btys = 0.0; grid%g_tracer_btye = 0.0
2484    grid%g_scalar_btxs = 0.0; grid%g_scalar_btxe = 0.0; grid%g_scalar_btys = 0.0; grid%g_scalar_btye = 0.0
2486    RETURN
2487   END SUBROUTINE zero_out_tl
2489   SUBROUTINE inner_dot_a_b_adjtest ( grid, save, its, ite, jts, jte )
2490    TYPE (domain), INTENT(IN) :: grid
2491    INTEGER, INTENT(IN) :: its, ite, jts, jte
2492    REAL, INTENT(INOUT) :: save
2493    INTEGER :: i, k, j, mm
2494    INTEGER :: is, ie, js, je
2496    is = its
2497    ie = ite
2498    js = jts
2499    je = jte
2501    IF (its .eq. ids) is = ims
2502    IF (ite .eq. ide) ie = ime
2503    IF (jts .eq. jds) js = jms
2504    IF (jte .eq. jde) je = jme
2506    DO j = jts,MIN(jte,jde-1)
2507    DO k = kts,kte-1
2508    DO i = its,ite
2509      save  = save + grid%a_u_2(i,k,j) * b_u_2(i,k,j)
2510    ENDDO
2511    ENDDO
2512    ENDDO
2514    DO j = jts,jte
2515    DO k = kts,kte-1
2516    DO i = its,MIN(ite,ide-1)
2517      save  = save + grid%a_v_2(i,k,j) * b_v_2(i,k,j)
2518    ENDDO
2519    ENDDO
2520    ENDDO
2522    DO j = jts,MIN(jte,jde-1)
2523    DO k = kts,kte
2524    DO i = its,MIN(ite,ide-1)
2525      save  = save + grid%a_w_2(i,k,j) * b_w_2(i,k,j)    &
2526                   + grid%a_ph_2(i,k,j) * b_ph_2(i,k,j)
2527    ENDDO
2528    ENDDO
2529    ENDDO
2531    DO j = jts,MIN(jte,jde-1)
2532    DO k = kts,kte-1
2533    DO i = its,MIN(ite,ide-1)
2534      save  = save + grid%a_t_2(i,k,j) * b_t_2(i,k,j)
2535    ENDDO
2536    ENDDO
2537    ENDDO
2539    DO j = jts,MIN(jte,jde-1)
2540    DO k = kts,kte-1
2541    DO i = its,MIN(ite,ide-1)
2542      save  = save + grid%a_tke_2(i,k,j) * b_tke_2(i,k,j)
2543    ENDDO
2544    ENDDO
2545    ENDDO
2547    DO j = jts,MIN(jte,jde-1)
2548    DO k = kts,kte-1
2549    DO i = its,MIN(ite,ide-1)
2550       save  = save + grid%a_p(i,k,j) * b_p(i,k,j)
2551    ENDDO
2552    ENDDO
2553    ENDDO
2555    !DO j = jts,MIN(jte,jde-1)
2556    !DO k = kts,kte-1
2557    !DO i = its,MIN(ite,ide-1)
2558    !  save  = save + grid%a_al(i,k,j) * b_al(i,k,j)
2559    !ENDDO
2560    !ENDDO
2561    !ENDDO
2563    DO j = jts,MIN(jte,jde-1)
2564    DO k = kts,kte-1
2565    DO i = its,MIN(ite,ide-1)
2566      save  = save + grid%a_h_diabatic(i,k,j) * b_h_diabatic(i,k,j)
2567    ENDDO
2568    ENDDO
2569    ENDDO
2571    DO j = jts,MIN(jte,jde-1)
2572    DO k = kts,kte-1
2573    DO i = its,MIN(ite,ide-1)
2574      save  = save + grid%a_qv_diabatic(i,k,j) * b_qv_diabatic(i,k,j)
2575    ENDDO
2576    ENDDO
2577    ENDDO
2579    DO j = jts,MIN(jte,jde-1)
2580    DO k = kts,kte-1
2581    DO i = its,MIN(ite,ide-1)
2582      save  = save + grid%a_qc_diabatic(i,k,j) * b_qc_diabatic(i,k,j)
2583    ENDDO
2584    ENDDO
2585    ENDDO
2587    !DO j = jts,MIN(jte,jde-1)
2588    !DO i = its,MIN(ite,ide-1)
2589    !  save  = save + grid%a_ustm(i,j) * b_ustm(i,j)
2590    !ENDDO
2591    !ENDDO
2593    !DO j = jts,MIN(jte,jde-1)
2594    !DO i = its,MIN(ite,ide-1)
2595    !  save  = save + grid%a_hfx(i,j) * b_hfx(i,j)
2596    !ENDDO
2597    !ENDDO
2599    !DO j = jts,MIN(jte,jde-1)
2600    !DO i = its,MIN(ite,ide-1)
2601    !  save  = save + grid%a_qfx(i,j) * b_qfx(i,j)
2602    !ENDDO
2603    !ENDDO
2605    DO j = jts,MIN(jte,jde-1)
2606    DO i = its,MIN(ite,ide-1)
2607      save  = save + grid%a_mu_2(i,j) * b_mu_2(i,j)
2608    ENDDO
2609    ENDDO
2611    DO mm = PARAM_FIRST_SCALAR, num_moist
2612    DO j = jts,MIN(jte,jde-1)
2613    DO k = kts,kte-1
2614    DO i = its,MIN(ite,ide-1)
2615      save  = save + grid%a_moist(i,k,j,mm) * b_moist(i,k,j,mm)
2616    ENDDO
2617    ENDDO
2618    ENDDO
2619    ENDDO
2620   
2621    DO mm = PARAM_FIRST_SCALAR, num_tracer
2622    DO j = jts,MIN(jte,jde-1)
2623    DO k = kts,kte-1
2624    DO i = its,MIN(ite,ide-1)
2625      save  = save + grid%a_tracer(i,k,j,mm) * b_tracer(i,k,j,mm)
2626    ENDDO
2627    ENDDO
2628    ENDDO
2629    ENDDO
2630   
2631    DO mm = 1, num_scalar
2632    DO j = jts,MIN(jte,jde-1)
2633    DO k = kts,kte-1
2634    DO i = its,MIN(ite,ide-1)
2635      save  = save + grid%a_scalar(i,k,j,mm) * b_scalar(i,k,j,mm)
2636    ENDDO
2637    ENDDO
2638    ENDDO
2639    ENDDO
2641    IF ( gwd_opt .EQ. 1 ) THEN
2642       DO j = jts,MIN(jte,jde-1)
2643       DO k = kts,kte-1
2644       DO i = its,MIN(ite,ide-1)
2645          save = save + grid%a_dtaux3d(i,k,j) * b_dtaux3d(i,k,j)
2646          save = save + grid%a_dtauy3d(i,k,j) * b_dtauy3d(i,k,j)
2647       ENDDO
2648       ENDDO
2649       ENDDO
2650       DO j = jts,MIN(jte,jde-1)
2651       DO i = its,MIN(ite,ide-1)
2652          save = save + grid%a_dusfcg(i,j) * b_dusfcg(i,j)
2653          save = save + grid%a_dvsfcg(i,j) * b_dvsfcg(i,j)
2654       ENDDO
2655       ENDDO
2656    ENDIF
2657   
2658    DO j=1,spec_bdy_width
2659    DO k=kts,kte-1
2660    DO i=jts,MIN(jte,jde-1)
2661       save=save + grid%a_u_bxs(i,k,j)*b_u_bxs(i,k,j)
2662       save=save + grid%a_u_bxe(i,k,j)*b_u_bxe(i,k,j)
2663       save=save + grid%a_u_btxs(i,k,j)*b_u_btxs(i,k,j)
2664       save=save + grid%a_u_btxe(i,k,j)*b_u_btxe(i,k,j)
2665    ENDDO
2666    ENDDO
2667    ENDDO
2669    DO j=1,spec_bdy_width
2670    DO k=kts,kte-1
2671    DO i=jts,jte
2672       save=save + grid%a_v_bxs(i,k,j)*b_v_bxs(i,k,j)
2673       save=save + grid%a_v_bxe(i,k,j)*b_v_bxe(i,k,j)
2674       save=save + grid%a_v_btxs(i,k,j)*b_v_btxs(i,k,j)
2675       save=save + grid%a_v_btxe(i,k,j)*b_v_btxe(i,k,j)
2676    ENDDO
2677    ENDDO
2678    ENDDO
2680    DO j=1,spec_bdy_width
2681    DO k=kts,kte-1
2682    DO i=jts,MIN(jte,jde-1)
2683       save=save + grid%a_t_bxs(i,k,j)*b_t_bxs(i,k,j)
2684       save=save + grid%a_t_bxe(i,k,j)*b_t_bxe(i,k,j)
2685       save=save + grid%a_t_btxs(i,k,j)*b_t_btxs(i,k,j)
2686       save=save + grid%a_t_btxe(i,k,j)*b_t_btxe(i,k,j)
2687    ENDDO
2688    ENDDO
2689    ENDDO
2691    DO j=1,spec_bdy_width
2692    DO k=kts,kte
2693    DO i=jts,MIN(jte,jde-1)
2694       save=save + grid%a_w_bxs(i,k,j)*b_w_bxs(i,k,j)
2695       save=save + grid%a_w_bxe(i,k,j)*b_w_bxe(i,k,j)
2696       save=save + grid%a_ph_bxs(i,k,j)*b_ph_bxs(i,k,j)
2697       save=save + grid%a_ph_bxe(i,k,j)*b_ph_bxe(i,k,j)
2698       save=save + grid%a_w_btxs(i,k,j)*b_w_btxs(i,k,j)
2699       save=save + grid%a_w_btxe(i,k,j)*b_w_btxe(i,k,j)
2702       save=save + grid%a_ph_btxs(i,k,j)*b_ph_btxs(i,k,j)
2703       save=save + grid%a_ph_btxe(i,k,j)*b_ph_btxe(i,k,j)
2704    ENDDO
2705    ENDDO
2706    ENDDO
2708    !$OMP MASTER
2709    DO j=1,spec_bdy_width
2710    DO k=kts,kte-1
2711    DO i=its,ite
2712       save=save + grid%a_u_bys(i,k,j)*b_u_bys(i,k,j)
2713       save=save + grid%a_u_bye(i,k,j)*b_u_bye(i,k,j)
2714       save=save + grid%a_u_btys(i,k,j)*b_u_btys(i,k,j)
2715       save=save + grid%a_u_btye(i,k,j)*b_u_btye(i,k,j)
2716    ENDDO
2717    ENDDO
2718    ENDDO
2719    !$OMP END MASTER
2721    !$OMP MASTER
2722    DO j=1,spec_bdy_width
2723    DO k=kts,kte-1
2724    DO i=its,MIN(ite,ide-1)
2725       save=save + grid%a_v_bys(i,k,j)*b_v_bys(i,k,j)
2726       save=save + grid%a_v_bye(i,k,j)*b_v_bye(i,k,j)
2727       save=save + grid%a_v_btys(i,k,j)*b_v_btys(i,k,j)
2728       save=save + grid%a_v_btye(i,k,j)*b_v_btye(i,k,j)
2729    ENDDO
2730    ENDDO
2731    ENDDO
2732    !$OMP END MASTER
2734    !$OMP MASTER
2735    DO j=1,spec_bdy_width
2736    DO k=kts,kte-1
2737    DO i=its,MIN(ite,ide-1)
2738       save=save + grid%a_t_bys(i,k,j)*b_t_bys(i,k,j)
2739       save=save + grid%a_t_bye(i,k,j)*b_t_bye(i,k,j)
2740       save=save + grid%a_t_btys(i,k,j)*b_t_btys(i,k,j)
2741       save=save + grid%a_t_btye(i,k,j)*b_t_btye(i,k,j)
2742    ENDDO
2743    ENDDO
2744    ENDDO
2746    DO j=1,spec_bdy_width
2747    DO k=kts,kte
2748    DO i=its,MIN(ite,ide-1)
2749       save=save + grid%a_w_bys(i,k,j)*b_w_bys(i,k,j)
2750       save=save + grid%a_w_bye(i,k,j)*b_w_bye(i,k,j)
2751       save=save + grid%a_ph_bys(i,k,j)*b_ph_bys(i,k,j)
2752       save=save + grid%a_ph_bye(i,k,j)*b_ph_bye(i,k,j)
2753       save=save + grid%a_w_btys(i,k,j)*b_w_btys(i,k,j)
2754       save=save + grid%a_w_btye(i,k,j)*b_w_btye(i,k,j)
2755       save=save + grid%a_ph_btys(i,k,j)*b_ph_btys(i,k,j)
2756       save=save + grid%a_ph_btye(i,k,j)*b_ph_btye(i,k,j)
2757    ENDDO
2758    ENDDO
2759    ENDDO
2760    !$OMP END MASTER
2762    DO j=1,spec_bdy_width
2763    DO k=1,1
2764    DO i=jts,MIN(jte,jde-1)
2765       save=save + grid%a_mu_bxs(i,k,j)*b_mu_bxs(i,k,j)
2766       save=save + grid%a_mu_bxe(i,k,j)*b_mu_bxe(i,k,j)
2767       save=save + grid%a_mu_btxs(i,k,j)*b_mu_btxs(i,k,j)
2768       save=save + grid%a_mu_btxe(i,k,j)*b_mu_btxe(i,k,j)
2769    ENDDO
2770    ENDDO
2771    ENDDO
2773    !$OMP MASTER
2774    DO j=1,spec_bdy_width
2775    DO k=1,1
2776    DO i=its,MIN(ite,ide-1)
2777       save=save + grid%a_mu_bys(i,k,j)*b_mu_bys(i,k,j)
2778       save=save + grid%a_mu_bye(i,k,j)*b_mu_bye(i,k,j)
2779       save=save + grid%a_mu_btys(i,k,j)*b_mu_btys(i,k,j)
2780       save=save + grid%a_mu_btye(i,k,j)*b_mu_btye(i,k,j)
2781    ENDDO
2782    ENDDO
2783    ENDDO
2784    !$OMP END MASTER
2786    DO mm=PARAM_FIRST_SCALAR, num_moist
2787    DO j=1,spec_bdy_width
2788    DO k=kts,kte-1
2789    DO i=jts,MIN(jte,jde-1)
2790       save=save + grid%a_moist_bxs(i,k,j,mm)*b_moist_bxs(i,k,j,mm)
2791       save=save + grid%a_moist_bxe(i,k,j,mm)*b_moist_bxe(i,k,j,mm)
2792       save=save + grid%a_moist_btxs(i,k,j,mm)*b_moist_btxs(i,k,j,mm)
2793       save=save + grid%a_moist_btxe(i,k,j,mm)*b_moist_btxe(i,k,j,mm)
2794    ENDDO
2795    ENDDO
2796    ENDDO
2797    ENDDO
2799    !$OMP MASTER
2800    DO mm=PARAM_FIRST_SCALAR, num_moist
2801    DO j=1,spec_bdy_width
2802    DO k=kts,kte-1
2803    DO i=its,MIN(ite,ide-1)
2804       save=save + grid%a_moist_bys(i,k,j,mm)*b_moist_bys(i,k,j,mm)
2805       save=save + grid%a_moist_bye(i,k,j,mm)*b_moist_bye(i,k,j,mm)
2806       save=save + grid%a_moist_btys(i,k,j,mm)*b_moist_btys(i,k,j,mm)
2807       save=save + grid%a_moist_btye(i,k,j,mm)*b_moist_btye(i,k,j,mm)
2808    ENDDO
2809    ENDDO
2810    ENDDO
2811    ENDDO
2812    !$OMP END MASTER
2814    DO mm=PARAM_FIRST_SCALAR, num_tracer
2815    DO j=1,spec_bdy_width
2816    DO k=kts,kte-1
2817    DO i=jts,MIN(jte,jde-1)
2818       save=save + grid%a_tracer_bxs(i,k,j,mm)*b_tracer_bxs(i,k,j,mm)
2819       save=save + grid%a_tracer_bxe(i,k,j,mm)*b_tracer_bxe(i,k,j,mm)
2820       save=save + grid%a_tracer_btxs(i,k,j,mm)*b_tracer_btxs(i,k,j,mm)
2821       save=save + grid%a_tracer_btxe(i,k,j,mm)*b_tracer_btxe(i,k,j,mm)
2822    ENDDO
2823    ENDDO
2824    ENDDO
2825    ENDDO
2827    !$OMP MASTER
2828    DO mm=PARAM_FIRST_SCALAR, num_tracer
2829    DO j=1,spec_bdy_width
2830    DO k=kts,kte-1
2831    DO i=its,MIN(ite,ide-1)
2832       save=save + grid%a_tracer_bys(i,k,j,mm)*b_tracer_bys(i,k,j,mm)
2833       save=save + grid%a_tracer_bye(i,k,j,mm)*b_tracer_bye(i,k,j,mm)
2834       save=save + grid%a_tracer_btys(i,k,j,mm)*b_tracer_btys(i,k,j,mm)
2835       save=save + grid%a_tracer_btye(i,k,j,mm)*b_tracer_btye(i,k,j,mm)
2836    ENDDO
2837    ENDDO
2838    ENDDO
2839    ENDDO
2840    !$OMP END MASTER
2842 !  DO mm=1,num_scalar
2843 !  DO j=1,spec_bdy_width
2844 !  DO k=kds,kde
2845 !  DO i=jms,jme
2846 !     save=save + grid%a_scalar_bxs(i,k,j,mm)*b_scalar_bxs(i,k,j,mm)
2847 !     save=save + grid%a_scalar_bxe(i,k,j,mm)*b_scalar_bxe(i,k,j,mm)
2848 !     save=save + grid%a_scalar_btxs(i,k,j,mm)*b_scalar_btxs(i,k,j,mm)
2849 !     save=save + grid%a_scalar_btxe(i,k,j,mm)*b_scalar_btxe(i,k,j,mm)
2850 !  ENDDO
2851 !  ENDDO
2852 !  ENDDO
2853 !  ENDDO
2855 !  DO mm=1,num_scalar
2856 !  DO j=1,spec_bdy_width
2857 !  DO k=kds,kde
2858 !  DO i=ims,ime
2859 !     save=save + grid%a_scalar_bys(i,k,j,mm)*b_scalar_bys(i,k,j,mm)
2860 !     save=save + grid%a_scalar_bye(i,k,j,mm)*b_scalar_bye(i,k,j,mm)
2861 !     save=save + grid%a_scalar_btys(i,k,j,mm)*b_scalar_btys(i,k,j,mm)
2862 !     save=save + grid%a_scalar_btye(i,k,j,mm)*b_scalar_btye(i,k,j,mm)
2863 !  ENDDO
2864 !  ENDDO
2865 !  ENDDO
2866 !  ENDDO
2868    RETURN
2869   END SUBROUTINE inner_dot_a_b_adjtest
2871   SUBROUTINE spot_force_ad ( grid, i, j, k, factor, nvars )
2872    TYPE (domain), INTENT(INOUT)       :: grid
2873    INTEGER, INTENT(IN)                :: i, j, k, nvars
2874    REAL, DIMENSION(nvars), INTENT(IN) :: factor
2875    INTEGER                            :: mm
2876    
2877    grid%a_u_2(i,k,j)  = factor(1)
2878    grid%a_v_2(i,k,j)  = factor(2)
2879    grid%a_w_2(i,k,j)  = factor(3)
2880    grid%a_t_2(i,k,j)  = factor(4)
2881    grid%a_ph_2(i,k,j) = factor(5)
2882    grid%a_mu_2(i,j)   = factor(6)
2884    DO mm = PARAM_FIRST_SCALAR, num_moist
2885       grid%a_moist(i,k,j,mm) = factor(6+mm)
2886    ENDDO
2887    DO mm = PARAM_FIRST_SCALAR, num_tracer
2888       grid%a_tracer(i,k,j,mm) = factor(6+mm+num_moist)
2889   ENDDO
2891   END SUBROUTINE spot_force_ad
2894   SUBROUTINE spot_force_tl ( grid, i, j, k, factor, nvars )
2895    TYPE (domain), INTENT(INOUT)       :: grid
2896    INTEGER, INTENT(IN)                :: i, j, k, nvars
2897    REAL, DIMENSION(nvars), INTENT(IN) :: factor
2898    INTEGER                            :: mm
2900    grid%g_u_2(i,k,j)  = factor(1)
2901    grid%g_v_2(i,k,j)  = factor(2)
2902    grid%g_w_2(i,k,j)  = factor(3)
2903    grid%g_t_2(i,k,j)  = factor(4)
2904    grid%g_ph_2(i,k,j) = factor(5)
2905    grid%g_mu_2(i,j)   = factor(6)
2907    DO mm = PARAM_FIRST_SCALAR, num_moist
2908       grid%g_moist(i,k,j,mm) = factor(6+mm)
2909    ENDDO
2910    DO mm = PARAM_FIRST_SCALAR, num_tracer
2911       grid%g_tracer(i,k,j,mm) = factor(6+mm+num_moist)
2912   ENDDO
2914   END SUBROUTINE spot_force_tl
2917   SUBROUTINE spot_force_nl ( grid, i, j, k, factor, nvars, nl_pert )
2918    TYPE (domain), INTENT(INOUT)       :: grid
2919    INTEGER, INTENT(IN)                :: i, j, k, nvars
2920    REAL, DIMENSION(nvars), INTENT(IN) :: factor
2921    REAL, INTENT(IN)                   :: nl_pert
2922    INTEGER                            :: mm
2924    grid%u_2(i,k,j)  = ( 1.0 + nl_pert * factor(1) ) * s_u_2(i,k,j)
2925    grid%v_2(i,k,j)  = ( 1.0 + nl_pert * factor(2) ) * s_v_2(i,k,j)
2926    grid%w_2(i,k,j)  = ( 1.0 + nl_pert * factor(3) ) * s_w_2(i,k,j)
2927    grid%t_2(i,k,j)  = ( 1.0 + nl_pert * factor(4) ) * s_t_2(i,k,j)
2928    grid%ph_2(i,k,j) = ( 1.0 + nl_pert * factor(5) ) * s_ph_2(i,k,j)
2929    grid%mu_2(i,j)   = ( 1.0 + nl_pert * factor(6) ) * s_mu_2(i,j)
2931    DO mm = PARAM_FIRST_SCALAR, num_moist
2932       grid%moist(i,k,j,mm) = ( 1.0 + nl_pert * factor(6+mm) ) * s_moist(i,k,j,mm)
2933    ENDDO
2934    DO mm = PARAM_FIRST_SCALAR, num_tracer
2935       grid%tracer(i,k,j,mm) = ( 1.0 + nl_pert * factor(6+mm+num_moist) ) * s_tracer(i,k,j,mm)
2936    ENDDO
2938   END SUBROUTINE spot_force_nl
2941   SUBROUTINE extract_ad_der ( grid, der, i, j , k, factor, nvars )
2942    TYPE (domain), INTENT(INOUT)       :: grid
2943    INTEGER, INTENT(IN)                :: i, j, k, nvars
2944    REAL, DIMENSION(nvars), INTENT(IN) :: factor
2945    REAL, INTENT(OUT)                  :: der
2946    INTEGER                            :: mm
2948    der = 0.0
2949    der = grid%a_u_2(i,k,j) * factor(1) + der
2950    der = grid%a_v_2(i,k,j) * factor(2) + der
2951    der = grid%a_w_2(i,k,j) * factor(3) + der
2952    der = grid%a_t_2(i,k,j) * factor(4) + der
2953    der = grid%a_ph_2(i,k,j) * factor(5) + der
2954    der = grid%a_mu_2(i,j) * factor(6) + der
2956    DO mm = PARAM_FIRST_SCALAR, num_moist
2957       der = grid%a_moist(i,k,j,mm) * factor(6+mm) + der
2958    ENDDO
2959    DO mm = PARAM_FIRST_SCALAR, num_tracer
2960       der = grid%a_tracer(i,k,j,mm) * factor(6+mm+num_moist) + der
2961    ENDDO
2963   END SUBROUTINE extract_ad_der
2966   SUBROUTINE extract_tl_der ( grid, der, i, j , k, factor, nvars )
2967    TYPE (domain), INTENT(INOUT)       :: grid
2968    INTEGER, INTENT(IN)                :: i, j, k, nvars
2969    REAL, DIMENSION(nvars), INTENT(IN) :: factor
2970    REAL, INTENT(OUT)                  :: der
2971    INTEGER                            :: mm
2972    der = 0.0
2973    der = grid%g_u_2(i,k,j) * factor(1) + der
2974    der = grid%g_v_2(i,k,j) * factor(2) + der
2975    der = grid%g_w_2(i,k,j) * factor(3) + der
2976    der = grid%g_t_2(i,k,j) * factor(4) + der
2977    der = grid%g_ph_2(i,k,j) * factor(5) + der
2978    der = grid%g_mu_2(i,j) * factor(6) + der
2980    DO mm = PARAM_FIRST_SCALAR, num_moist
2981       der = grid%g_moist(i,k,j,mm) * factor(6+mm) + der
2982    ENDDO
2983    DO mm = PARAM_FIRST_SCALAR, num_tracer
2984       der = grid%g_tracer(i,k,j,mm) * factor(6+mm+num_moist) + der
2985    ENDDO
2987   END SUBROUTINE extract_tl_der
2990   SUBROUTINE extract_nl_num ( grid, num, i, j , k, factor, nvars )
2991    TYPE (domain), INTENT(INOUT)       :: grid
2992    INTEGER, INTENT(IN)                :: i, j, k, nvars
2993    REAL, DIMENSION(nvars), INTENT(IN) :: factor
2994    REAL, INTENT(OUT)                  :: num
2995    INTEGER                            :: mm
2997    num = 0.0
2998    num = (grid%u_2(i,k,j) - b_u_2(i,k,j)) * factor(1) + num
2999    num = (grid%v_2(i,k,j) - b_v_2(i,k,j)) * factor(2) + num
3000    num = (grid%w_2(i,k,j) - b_w_2(i,k,j)) * factor(3) + num
3001    num = (grid%t_2(i,k,j) - b_t_2(i,k,j)) * factor(4) + num
3002    num = (grid%ph_2(i,k,j) - b_ph_2(i,k,j)) * factor(5) + num
3003    num = (grid%mu_2(i,j) - b_mu_2(i,j)) * factor(6) + num
3005    DO mm = PARAM_FIRST_SCALAR, num_moist
3006       num = (grid%moist(i,k,j,mm) - b_moist(i,k,j,mm)) * factor(6+mm) + num
3007    ENDDO
3008    DO mm = PARAM_FIRST_SCALAR, num_tracer
3009       num = (grid%tracer(i,k,j,mm) - b_tracer(i,k,j,mm)) * factor(6+mm+num_moist) + num
3010    ENDDO
3012   END SUBROUTINE extract_nl_num
3015   SUBROUTINE extract_nl_den ( den, i, j, k, factor, nvars, nl_pert )
3016    INTEGER, INTENT(IN)                :: i, j, k, nvars
3017    REAL, DIMENSION(nvars), INTENT(IN) :: factor
3018    REAL, INTENT(OUT)                  :: den
3019    REAL, INTENT(IN)                   :: nl_pert
3020    INTEGER                            :: mm
3022    den = 0.0
3023    den = nl_pert * s_u_2(i,k,j) * factor(1) + den
3024    den = nl_pert * s_v_2(i,k,j) * factor(2) + den
3025    den = nl_pert * s_w_2(i,k,j) * factor(3) + den
3026    den = nl_pert * s_t_2(i,k,j) * factor(4) + den
3027    den = nl_pert * s_ph_2(i,k,j) * factor(5) + den
3028    den = nl_pert * s_mu_2(i,j) * factor(6) + den
3030    DO mm = PARAM_FIRST_SCALAR, num_moist
3031       den = nl_pert * s_moist(i,k,j,mm) * factor(6+mm) + den
3032    ENDDO
3033    DO mm = PARAM_FIRST_SCALAR, num_tracer
3034       den = nl_pert * s_tracer(i,k,j,mm) * factor(6+mm+num_moist) + den
3035    ENDDO
3037   END SUBROUTINE extract_nl_den
3040   SUBROUTINE gen_scenario_matrix(config_flags, scenario, nvars, numer_vars, denom_vars)
3041    TYPE (grid_config_rec_type), INTENT(IN) :: config_flags
3042    INTEGER, INTENT(IN)                            :: nvars
3043    INTEGER, DIMENSION(nvars,nvars), INTENT(INOUT) :: scenario
3044    INTEGER, DIMENSION(max_sens), INTENT(IN)       :: numer_vars, denom_vars
3045    INTEGER                                        :: i, j, k, l
3047    IF(config_flags%scenario_type .EQ. 1) THEN
3048       !List form for test variables (more targeted)
3049       IF(config_flags%max_numer .NE. config_flags%max_denom) THEN
3050          CALL wrf_error_fatal ( &
3051               'share/module_adtl_grid_utilities.f: Failed gen_scenario' )
3052       ENDIF
3053       DO i = 1, config_flags%max_numer
3054          k = numer_vars(i)
3055          l = denom_vars(i)
3056          IF ( k .GT. nvars .OR. l .GT. nvars) CYCLE
3057          scenario(k,l) = 1
3058       ENDDO
3059    ELSE
3060       !Combination form for test variables (only use when you want to cross-reference every variable in the lists)
3061       DO i = 1, config_flags%max_numer
3062          k = numer_vars(i)
3063          IF ( k .GT. nvars ) CYCLE
3064          DO j = 1, config_flags%max_denom
3065             l = denom_vars(j)
3066             IF ( l .GT. nvars ) CYCLE
3067             scenario(k,l) = 1
3068          ENDDO
3069       ENDDO
3070    ENDIF
3073   END SUBROUTINE gen_scenario_matrix
3075   SUBROUTINE allocate_locations( filename, locations, nloc, ierr )
3076    INTEGER, EXTERNAL :: get_unused_unit
3078    CHARACTER(LEN=*), INTENT(IN) :: filename
3079    INTEGER, DIMENSION(:,:), ALLOCATABLE, INTENT(INOUT) :: locations
3080    INTEGER, INTENT(OUT) :: nloc, ierr
3081    CHARACTER*256 :: message
3082    INTEGER :: loc, iunit, index1, index2, index3
3084    iunit = get_unused_unit()
3085    OPEN(UNIT=iunit, &
3086         FILE=TRIM(filename), &
3087         FORM='FORMATTED', &
3088         ACCESS='SEQUENTIAL', &
3089         IOSTAT=ierr)
3091    IF( ierr .NE. 0 ) THEN
3092       WRITE(UNIT=message, FMT='(3(A))') &
3093           'Error reading file ',filename,' in allocate_locations.'
3094       CALL wrf_message(TRIM(message))
3095       CLOSE(UNIT=iunit)
3096       RETURN
3097    ENDIF
3098    loc = 0
3099    points: DO
3100       loc = loc + 1
3101       READ(UNIT=iunit, FMT='(3(I6))',IOSTAT=ierr) index1, index2, index3
3102       IF( ierr .NE. 0 ) exit points
3103       nloc = loc
3104    END DO points
3105    CLOSE(UNIT=iunit)
3107    IF( ierr .LT. 0 ) ALLOCATE(locations(nloc,3))
3109   END SUBROUTINE allocate_locations
3112   SUBROUTINE get_forc_locations( filename, locations, nloc, ierr )
3113    INTEGER, EXTERNAL :: get_unused_unit
3115    CHARACTER(LEN=*), INTENT(IN) :: filename
3116    INTEGER, DIMENSION(nloc,3), INTENT(INOUT) :: locations
3117    INTEGER, INTENT(IN) :: nloc
3118    INTEGER, INTENT(OUT) :: ierr
3119    CHARACTER*256 :: message
3120    INTEGER :: loc, iunit, index1, index2, index3
3122    iunit = get_unused_unit()
3123    OPEN(UNIT=iunit, &
3124         FILE=TRIM(filename), &
3125         FORM='FORMATTED', &
3126         ACCESS='SEQUENTIAL', &
3127         IOSTAT=ierr)
3129    IF( ierr .NE. 0 ) THEN
3130       WRITE(UNIT=message, FMT='(3(A))') &
3131           'Error reading file ',filename,' in get_forc_locations.'
3132       CALL wrf_message(TRIM(message))
3133       CLOSE(UNIT=iunit)
3134       RETURN
3135    ENDIF
3136    loc = 0
3137    points: DO    
3138       loc = loc + 1
3139       READ(UNIT=iunit, FMT='(3(I6))',IOSTAT=ierr) index1, index2, index3
3140       IF( ierr .NE. 0 ) exit points
3141       locations(loc,1) = index1
3142       locations(loc,2) = index2
3143       locations(loc,3) = index3
3144    END DO points
3145    CLOSE(UNIT=iunit)
3147   END SUBROUTINE get_forc_locations
3149   SUBROUTINE deallocate_grid ( )
3150    INTEGER :: ierr
3152    DEALLOCATE ( s_scalar, STAT=ierr )
3153    IF (ierr.NE.0) THEN
3154      CALL wrf_error_fatal ( &
3155      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar. ')
3156    ENDIF
3157    DEALLOCATE ( s_tke_2, STAT=ierr )
3158    IF (ierr.NE.0) THEN
3159      CALL wrf_error_fatal ( &
3160      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tke_2. ')
3161    ENDIF
3163    DEALLOCATE ( s_p, STAT=ierr )
3164    IF (ierr.NE.0) THEN
3165      CALL wrf_error_fatal ( &
3166      'share/module_adtl_grid_utilities.f: Failed to deallocate s_p. ')
3167    ENDIF
3168    DEALLOCATE ( s_al, STAT=ierr )
3169    IF (ierr.NE.0) THEN
3170      CALL wrf_error_fatal ( &
3171      'share/module_adtl_grid_utilities.f: Failed to deallocate s_al. ')
3172    ENDIF
3173    DEALLOCATE ( s_h_diabatic, STAT=ierr )
3174    IF (ierr.NE.0) THEN
3175      CALL wrf_error_fatal ( &
3176      'share/module_adtl_grid_utilities.f: Failed to deallocate s_h_diabatic. ')
3177    ENDIF
3178    DEALLOCATE ( s_qv_diabatic, STAT=ierr )
3179    IF (ierr.NE.0) THEN
3180      CALL wrf_error_fatal ( &
3181      'share/module_adtl_grid_utilities.f: Failed to deallocate s_qv_diabatic. ')
3182    ENDIF
3183    DEALLOCATE ( s_qc_diabatic, STAT=ierr )
3184    IF (ierr.NE.0) THEN
3185      CALL wrf_error_fatal ( &
3186      'share/module_adtl_grid_utilities.f: Failed to deallocate s_qc_diabatic. ')
3187    ENDIF
3189    DEALLOCATE ( s_ustm, STAT=ierr )
3190    IF (ierr.NE.0) THEN
3191      CALL wrf_error_fatal ( &
3192      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ustm. ')
3193    ENDIF
3194    DEALLOCATE ( s_hfx, STAT=ierr )
3195    IF (ierr.NE.0) THEN
3196      CALL wrf_error_fatal ( &
3197      'share/module_adtl_grid_utilities.f: Failed to deallocate s_hfx. ')
3198    ENDIF
3199    DEALLOCATE ( s_qfx, STAT=ierr )
3200    IF (ierr.NE.0) THEN
3201      CALL wrf_error_fatal ( &
3202      'share/module_adtl_grid_utilities.f: Failed to deallocate s_qfx. ')
3203    ENDIF
3205    IF ( gwd_opt .EQ. 1 ) THEN
3207    DEALLOCATE ( s_dtaux3d, STAT=ierr )
3208    IF (ierr.NE.0) THEN
3209      CALL wrf_error_fatal ( &
3210      'share/module_adtl_grid_utilities.f: Failed to deallocate s_dtaux3d. ')
3211    ENDIF
3212    DEALLOCATE ( s_dtauy3d, STAT=ierr )
3213    IF (ierr.NE.0) THEN
3214      CALL wrf_error_fatal ( &
3215      'share/module_adtl_grid_utilities.f: Failed to deallocate s_dtauy3d. ')
3216    ENDIF
3217    DEALLOCATE ( s_dusfcg, STAT=ierr )
3218    IF (ierr.NE.0) THEN
3219      CALL wrf_error_fatal ( &
3220      'share/module_adtl_grid_utilities.f: Failed to deallocate s_dusfcg. ')
3221    ENDIF
3222    DEALLOCATE ( s_dvsfcg, STAT=ierr )
3223    IF (ierr.NE.0) THEN
3224      CALL wrf_error_fatal ( &
3225      'share/module_adtl_grid_utilities.f: Failed to deallocate s_dvsfcg. ')
3226    ENDIF
3228    ENDIF
3230    !  Scalar Boundary
3231    DEALLOCATE(s_scalar_bxs,STAT=ierr) 
3232    IF (ierr.NE.0) THEN
3233      CALL wrf_error_fatal ( &
3234      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_bxs. ')
3235    ENDIF
3236    DEALLOCATE(s_scalar_bxe,STAT=ierr) 
3237    IF (ierr.NE.0) THEN
3238      CALL wrf_error_fatal ( &
3239      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_bxe. ')
3240    ENDIF
3241    DEALLOCATE(s_scalar_bys,STAT=ierr) 
3242    IF (ierr.NE.0) THEN
3243      CALL wrf_error_fatal ( &
3244      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_bys. ')
3245    ENDIF
3246    DEALLOCATE(s_scalar_bye,STAT=ierr) 
3247    IF (ierr.NE.0) THEN
3248      CALL wrf_error_fatal ( &
3249      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_bye. ')
3250    ENDIF
3251    DEALLOCATE(s_scalar_btxs,STAT=ierr) 
3252    IF (ierr.NE.0) THEN
3253      CALL wrf_error_fatal ( &
3254      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_btxs. ')
3255    ENDIF
3256    DEALLOCATE(s_scalar_btxe,STAT=ierr) 
3257    IF (ierr.NE.0) THEN
3258      CALL wrf_error_fatal ( &
3259      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_btxe. ')
3260    ENDIF
3261    DEALLOCATE(s_scalar_btys,STAT=ierr) 
3262    IF (ierr.NE.0) THEN
3263      CALL wrf_error_fatal ( &
3264      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_btys. ')
3265    ENDIF
3266    DEALLOCATE(s_scalar_btye,STAT=ierr) 
3267    IF (ierr.NE.0) THEN
3268      CALL wrf_error_fatal ( &
3269      'share/module_adtl_grid_utilities.f: Failed to deallocate s_scalar_btye. ')
3270    ENDIF
3272    DEALLOCATE ( s_u_2, STAT=ierr )
3273    IF (ierr.NE.0) THEN
3274      CALL wrf_error_fatal ( &
3275      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_2. ')
3276    ENDIF
3277    DEALLOCATE ( s_v_2, STAT=ierr )
3278    IF (ierr.NE.0) THEN
3279      CALL wrf_error_fatal ( &
3280      'share/module_adtl_grid_utilities.f: Failed to deallocate s_v_2. ')
3281    ENDIF
3282    DEALLOCATE ( s_w_2, STAT=ierr )
3283    IF (ierr.NE.0) THEN
3284      CALL wrf_error_fatal ( &
3285      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_2. ')
3286    ENDIF
3287    DEALLOCATE ( s_ph_2, STAT=ierr )
3288    IF (ierr.NE.0) THEN
3289      CALL wrf_error_fatal ( &
3290      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_2. ')
3291    ENDIF
3292    DEALLOCATE ( s_t_2, STAT=ierr )
3293    IF (ierr.NE.0) THEN
3294      CALL wrf_error_fatal ( &
3295      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_2. ')
3296    ENDIF
3297    DEALLOCATE ( s_mu_2, STAT=ierr )
3298    IF (ierr.NE.0) THEN
3299      CALL wrf_error_fatal ( &
3300      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_2. ')
3301    ENDIF
3302    DEALLOCATE ( s_moist, STAT=ierr )
3303    IF (ierr.NE.0) THEN
3304      CALL wrf_error_fatal ( &
3305      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist. ')
3306    ENDIF
3307    DEALLOCATE ( s_tracer, STAT=ierr )
3308    IF (ierr.NE.0) THEN
3309      CALL wrf_error_fatal ( &
3310      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer. ')
3311    ENDIF
3313    !  U Boundary
3314    DEALLOCATE(s_u_bxs,STAT=ierr) 
3315    IF (ierr.NE.0) THEN
3316      CALL wrf_error_fatal ( &
3317      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bxs. ')
3318    ENDIF
3319    DEALLOCATE(s_u_bxe,STAT=ierr) 
3320    IF (ierr.NE.0) THEN
3321      CALL wrf_error_fatal ( &
3322      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bxe. ')
3323    ENDIF
3324    DEALLOCATE(s_u_bys,STAT=ierr) 
3325    IF (ierr.NE.0) THEN
3326      CALL wrf_error_fatal ( &
3327      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bys. ')
3328    ENDIF
3329    DEALLOCATE(s_u_bye,STAT=ierr) 
3330    IF (ierr.NE.0) THEN
3331      CALL wrf_error_fatal ( &
3332      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bye. ')
3333    ENDIF
3334    DEALLOCATE(s_u_btxs,STAT=ierr) 
3335    IF (ierr.NE.0) THEN
3336      CALL wrf_error_fatal ( &
3337      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btxs. ')
3338    ENDIF
3339    DEALLOCATE(s_u_btxe,STAT=ierr) 
3340    IF (ierr.NE.0) THEN
3341      CALL wrf_error_fatal ( &
3342      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btxe. ')
3343    ENDIF
3344    DEALLOCATE(s_u_btys,STAT=ierr) 
3345    IF (ierr.NE.0) THEN
3346      CALL wrf_error_fatal ( &
3347      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btys. ')
3348    ENDIF
3349    DEALLOCATE(s_u_btye,STAT=ierr) 
3350    IF (ierr.NE.0) THEN
3351      CALL wrf_error_fatal ( &
3352      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btye. ')
3353    ENDIF
3355    !  V Boundary
3356    DEALLOCATE(s_v_bxs,STAT=ierr) 
3357    IF (ierr.NE.0) THEN
3358      CALL wrf_error_fatal ( &
3359      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bxs. ')
3360    ENDIF
3361    DEALLOCATE(s_v_bxe,STAT=ierr) 
3362    IF (ierr.NE.0) THEN
3363      CALL wrf_error_fatal ( &
3364      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bxe. ')
3365    ENDIF
3366    DEALLOCATE(s_v_bys,STAT=ierr) 
3367    IF (ierr.NE.0) THEN
3368      CALL wrf_error_fatal ( &
3369      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bys. ')
3370    ENDIF
3371    DEALLOCATE(s_v_bye,STAT=ierr) 
3372    IF (ierr.NE.0) THEN
3373      CALL wrf_error_fatal ( &
3374      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_bye. ')
3375    ENDIF
3376    DEALLOCATE(s_v_btxs,STAT=ierr) 
3377    IF (ierr.NE.0) THEN
3378      CALL wrf_error_fatal ( &
3379      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btxs. ')
3380    ENDIF
3381    DEALLOCATE(s_v_btxe,STAT=ierr) 
3382    IF (ierr.NE.0) THEN
3383      CALL wrf_error_fatal ( &
3384      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btxe. ')
3385    ENDIF
3386    DEALLOCATE(s_v_btys,STAT=ierr) 
3387    IF (ierr.NE.0) THEN
3388      CALL wrf_error_fatal ( &
3389      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btys. ')
3390    ENDIF
3391    DEALLOCATE(s_v_btye,STAT=ierr) 
3392    IF (ierr.NE.0) THEN
3393      CALL wrf_error_fatal ( &
3394      'share/module_adtl_grid_utilities.f: Failed to deallocate s_u_btye. ')
3395    ENDIF
3397    !  T Boundary
3398    DEALLOCATE(s_t_bxs,STAT=ierr) 
3399    IF (ierr.NE.0) THEN
3400      CALL wrf_error_fatal ( &
3401      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_bxs. ')
3402    ENDIF
3403    DEALLOCATE(s_t_bxe,STAT=ierr) 
3404    IF (ierr.NE.0) THEN
3405      CALL wrf_error_fatal ( &
3406      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_bxe. ')
3407    ENDIF
3408    DEALLOCATE(s_t_bys,STAT=ierr) 
3409    IF (ierr.NE.0) THEN
3410      CALL wrf_error_fatal ( &
3411      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_bys. ')
3412    ENDIF
3413    DEALLOCATE(s_t_bye,STAT=ierr) 
3414    IF (ierr.NE.0) THEN
3415      CALL wrf_error_fatal ( &
3416      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_bye. ')
3417    ENDIF
3418    DEALLOCATE(s_t_btxs,STAT=ierr) 
3419    IF (ierr.NE.0) THEN
3420      CALL wrf_error_fatal ( &
3421      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_btxs. ')
3422    ENDIF
3423    DEALLOCATE(s_t_btxe,STAT=ierr) 
3424    IF (ierr.NE.0) THEN
3425      CALL wrf_error_fatal ( &
3426      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_btxe. ')
3427    ENDIF
3428    DEALLOCATE(s_t_btys,STAT=ierr) 
3429    IF (ierr.NE.0) THEN
3430      CALL wrf_error_fatal ( &
3431      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_btys. ')
3432    ENDIF
3433    DEALLOCATE(s_t_btye,STAT=ierr) 
3434    IF (ierr.NE.0) THEN
3435      CALL wrf_error_fatal ( &
3436      'share/module_adtl_grid_utilities.f: Failed to deallocate s_t_btye. ')
3437    ENDIF
3439    !  W Boundary
3440    DEALLOCATE(s_w_bxs,STAT=ierr) 
3441    IF (ierr.NE.0) THEN
3442      CALL wrf_error_fatal ( &
3443      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_bxs. ')
3444    ENDIF
3445    DEALLOCATE(s_w_bxe,STAT=ierr) 
3446    IF (ierr.NE.0) THEN
3447      CALL wrf_error_fatal ( &
3448      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_bxe. ')
3449    ENDIF
3450    DEALLOCATE(s_w_bys,STAT=ierr) 
3451    IF (ierr.NE.0) THEN
3452      CALL wrf_error_fatal ( &
3453      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_bys. ')
3454    ENDIF
3455    DEALLOCATE(s_w_bye,STAT=ierr) 
3456    IF (ierr.NE.0) THEN
3457      CALL wrf_error_fatal ( &
3458      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_bye. ')
3459    ENDIF
3460    DEALLOCATE(s_w_btxs,STAT=ierr) 
3461    IF (ierr.NE.0) THEN
3462      CALL wrf_error_fatal ( &
3463      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_btxs. ')
3464    ENDIF
3465    DEALLOCATE(s_w_btxe,STAT=ierr) 
3466    IF (ierr.NE.0) THEN
3467      CALL wrf_error_fatal ( &
3468      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_btxe. ')
3469    ENDIF
3470    DEALLOCATE(s_w_btys,STAT=ierr) 
3471    IF (ierr.NE.0) THEN
3472      CALL wrf_error_fatal ( &
3473      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_btys. ')
3474    ENDIF
3475    DEALLOCATE(s_w_btye,STAT=ierr) 
3476    IF (ierr.NE.0) THEN
3477      CALL wrf_error_fatal ( &
3478      'share/module_adtl_grid_utilities.f: Failed to deallocate s_w_btye. ')
3479    ENDIF
3481    !  PH Boundary
3482    DEALLOCATE(s_ph_bxs,STAT=ierr) 
3483    IF (ierr.NE.0) THEN
3484      CALL wrf_error_fatal ( &
3485      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_bxs. ')
3486    ENDIF
3487    DEALLOCATE(s_ph_bxe,STAT=ierr) 
3488    IF (ierr.NE.0) THEN
3489      CALL wrf_error_fatal ( &
3490      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_bxe. ')
3491    ENDIF
3492    DEALLOCATE(s_ph_bys,STAT=ierr) 
3493    IF (ierr.NE.0) THEN
3494      CALL wrf_error_fatal ( &
3495      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_bys. ')
3496    ENDIF
3497    DEALLOCATE(s_ph_bye,STAT=ierr) 
3498    IF (ierr.NE.0) THEN
3499      CALL wrf_error_fatal ( &
3500      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_bye. ')
3501    ENDIF
3502    DEALLOCATE(s_ph_btxs,STAT=ierr) 
3503    IF (ierr.NE.0) THEN
3504      CALL wrf_error_fatal ( &
3505      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_btxs. ')
3506    ENDIF
3507    DEALLOCATE(s_ph_btxe,STAT=ierr) 
3508    IF (ierr.NE.0) THEN
3509      CALL wrf_error_fatal ( &
3510      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_btxe. ')
3511    ENDIF
3512    DEALLOCATE(s_ph_btys,STAT=ierr) 
3513    IF (ierr.NE.0) THEN
3514      CALL wrf_error_fatal ( &
3515      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_btys. ')
3516    ENDIF
3517    DEALLOCATE(s_ph_btye,STAT=ierr) 
3518    IF (ierr.NE.0) THEN
3519      CALL wrf_error_fatal ( &
3520      'share/module_adtl_grid_utilities.f: Failed to deallocate s_ph_btye. ')
3521    ENDIF
3523    !  MU Boundary
3524    DEALLOCATE(s_mu_bxs,STAT=ierr) 
3525    IF (ierr.NE.0) THEN
3526      CALL wrf_error_fatal ( &
3527      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_bxs. ')
3528    ENDIF
3529    DEALLOCATE(s_mu_bxe,STAT=ierr) 
3530    IF (ierr.NE.0) THEN
3531      CALL wrf_error_fatal ( &
3532      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_bxe. ')
3533    ENDIF
3534    DEALLOCATE(s_mu_bys,STAT=ierr) 
3535    IF (ierr.NE.0) THEN
3536      CALL wrf_error_fatal ( &
3537      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_bys. ')
3538    ENDIF
3539    DEALLOCATE(s_mu_bye,STAT=ierr) 
3540    IF (ierr.NE.0) THEN
3541      CALL wrf_error_fatal ( &
3542      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_bye. ')
3543    ENDIF
3544    DEALLOCATE(s_mu_btxs,STAT=ierr) 
3545    IF (ierr.NE.0) THEN
3546      CALL wrf_error_fatal ( &
3547      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_btxs. ')
3548    ENDIF
3549    DEALLOCATE(s_mu_btxe,STAT=ierr) 
3550    IF (ierr.NE.0) THEN
3551      CALL wrf_error_fatal ( &
3552      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_btxe. ')
3553    ENDIF
3554    DEALLOCATE(s_mu_btys,STAT=ierr) 
3555    IF (ierr.NE.0) THEN
3556      CALL wrf_error_fatal ( &
3557      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_btys. ')
3558    ENDIF
3559    DEALLOCATE(s_mu_btye,STAT=ierr) 
3560    IF (ierr.NE.0) THEN
3561      CALL wrf_error_fatal ( &
3562      'share/module_adtl_grid_utilities.f: Failed to deallocate s_mu_btye. ')
3563    ENDIF
3565    !  Moist Boundary
3566    DEALLOCATE(s_moist_bxs,STAT=ierr) 
3567    IF (ierr.NE.0) THEN
3568      CALL wrf_error_fatal ( &
3569      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_bxs. ')
3570    ENDIF
3571    DEALLOCATE(s_moist_bxe,STAT=ierr) 
3572    IF (ierr.NE.0) THEN
3573      CALL wrf_error_fatal ( &
3574      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_bxe. ')
3575    ENDIF
3576    DEALLOCATE(s_moist_bys,STAT=ierr) 
3577    IF (ierr.NE.0) THEN
3578      CALL wrf_error_fatal ( &
3579      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_bys. ')
3580    ENDIF
3581    DEALLOCATE(s_moist_bye,STAT=ierr) 
3582    IF (ierr.NE.0) THEN
3583      CALL wrf_error_fatal ( &
3584      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_bye. ')
3585    ENDIF
3586    DEALLOCATE(s_moist_btxs,STAT=ierr) 
3587    IF (ierr.NE.0) THEN
3588      CALL wrf_error_fatal ( &
3589      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_btxs. ')
3590    ENDIF
3591    DEALLOCATE(s_moist_btxe,STAT=ierr) 
3592    IF (ierr.NE.0) THEN
3593      CALL wrf_error_fatal ( &
3594      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_btxe. ')
3595    ENDIF
3596    DEALLOCATE(s_moist_btys,STAT=ierr) 
3597    IF (ierr.NE.0) THEN
3598      CALL wrf_error_fatal ( &
3599      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_btys. ')
3600    ENDIF
3601    DEALLOCATE(s_moist_btye,STAT=ierr) 
3602    IF (ierr.NE.0) THEN
3603      CALL wrf_error_fatal ( &
3604      'share/module_adtl_grid_utilities.f: Failed to deallocate s_moist_btye. ')
3605    ENDIF
3607    !  Tracer Boundary
3608    DEALLOCATE(s_tracer_bxs,STAT=ierr) 
3609    IF (ierr.NE.0) THEN
3610      CALL wrf_error_fatal ( &
3611      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_bxs. ')
3612    ENDIF
3613    DEALLOCATE(s_tracer_bxe,STAT=ierr) 
3614    IF (ierr.NE.0) THEN
3615      CALL wrf_error_fatal ( &
3616      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_bxe. ')
3617    ENDIF
3618    DEALLOCATE(s_tracer_bys,STAT=ierr) 
3619    IF (ierr.NE.0) THEN
3620      CALL wrf_error_fatal ( &
3621      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_bys. ')
3622    ENDIF
3623    DEALLOCATE(s_tracer_bye,STAT=ierr) 
3624    IF (ierr.NE.0) THEN
3625      CALL wrf_error_fatal ( &
3626      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_bye. ')
3627    ENDIF
3628    DEALLOCATE(s_tracer_btxs,STAT=ierr) 
3629    IF (ierr.NE.0) THEN
3630      CALL wrf_error_fatal ( &
3631      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_btxs. ')
3632    ENDIF
3633    DEALLOCATE(s_tracer_btxe,STAT=ierr) 
3634    IF (ierr.NE.0) THEN
3635      CALL wrf_error_fatal ( &
3636      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_btxe. ')
3637    ENDIF
3638    DEALLOCATE(s_tracer_btys,STAT=ierr) 
3639    IF (ierr.NE.0) THEN
3640      CALL wrf_error_fatal ( &
3641      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_btys. ')
3642    ENDIF
3643    DEALLOCATE(s_tracer_btye,STAT=ierr) 
3644    IF (ierr.NE.0) THEN
3645      CALL wrf_error_fatal ( &
3646      'share/module_adtl_grid_utilities.f: Failed to deallocate s_tracer_btye. ')
3647    ENDIF
3649    DEALLOCATE ( b_scalar, STAT=ierr )
3650    IF (ierr.NE.0) THEN
3651      CALL wrf_error_fatal ( &
3652      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar. ')
3653    ENDIF
3654    DEALLOCATE ( b_tke_2, STAT=ierr )
3655    IF (ierr.NE.0) THEN
3656      CALL wrf_error_fatal ( &
3657      'share/module_adtl_grid_utilities.f: Failed to deallocate b_tke_2. ')
3658    ENDIF
3660    DEALLOCATE ( b_p, STAT=ierr )
3661    IF (ierr.NE.0) THEN
3662      CALL wrf_error_fatal ( &
3663      'share/module_adtl_grid_utilities.f: Failed to deallocate b_p. ')
3664    ENDIF
3665    DEALLOCATE ( b_al, STAT=ierr )
3666    IF (ierr.NE.0) THEN
3667      CALL wrf_error_fatal ( &
3668      'share/module_adtl_grid_utilities.f: Failed to deallocate b_al. ')
3669    ENDIF
3670    DEALLOCATE ( b_h_diabatic, STAT=ierr )
3671    IF (ierr.NE.0) THEN
3672      CALL wrf_error_fatal ( &
3673      'share/module_adtl_grid_utilities.f: Failed to deallocate b_h_diabatic. ')
3674    ENDIF
3675    DEALLOCATE ( b_qv_diabatic, STAT=ierr )
3676    IF (ierr.NE.0) THEN
3677      CALL wrf_error_fatal ( &
3678      'share/module_adtl_grid_utilities.f: Failed to deallocate b_qv_diabatic. ')
3679    ENDIF
3680    DEALLOCATE ( b_qc_diabatic, STAT=ierr )
3681    IF (ierr.NE.0) THEN
3682      CALL wrf_error_fatal ( &
3683      'share/module_adtl_grid_utilities.f: Failed to deallocate b_qc_diabatic. ')
3684    ENDIF
3686    DEALLOCATE ( b_ustm, STAT=ierr )
3687    IF (ierr.NE.0) THEN
3688      CALL wrf_error_fatal ( &
3689      'share/module_adtl_grid_utilities.f: Failed to deallocate b_ustm. ')
3690    ENDIF
3691    DEALLOCATE ( b_hfx, STAT=ierr )
3692    IF (ierr.NE.0) THEN
3693      CALL wrf_error_fatal ( &
3694      'share/module_adtl_grid_utilities.f: Failed to deallocate b_hfx. ')
3695    ENDIF
3696    DEALLOCATE ( b_qfx, STAT=ierr )
3697    IF (ierr.NE.0) THEN
3698      CALL wrf_error_fatal ( &
3699      'share/module_adtl_grid_utilities.f: Failed to deallocate b_qfx. ')
3700    ENDIF
3702    IF ( gwd_opt .EQ. 1 ) THEN
3704    DEALLOCATE ( b_dtaux3d, STAT=ierr )
3705    IF (ierr.NE.0) THEN
3706      CALL wrf_error_fatal ( &
3707      'share/module_adtl_grid_utilities.f: Failed to deallocate b_dtaux3d. ')
3708    ENDIF
3709    DEALLOCATE ( b_dtauy3d, STAT=ierr )
3710    IF (ierr.NE.0) THEN
3711      CALL wrf_error_fatal ( &
3712      'share/module_adtl_grid_utilities.f: Failed to deallocate b_dtauy3d. ')
3713    ENDIF
3714    DEALLOCATE ( b_dusfcg, STAT=ierr )
3715    IF (ierr.NE.0) THEN
3716      CALL wrf_error_fatal ( &
3717      'share/module_adtl_grid_utilities.f: Failed to deallocate b_dusfcg. ')
3718    ENDIF
3719    DEALLOCATE ( b_dvsfcg, STAT=ierr )
3720    IF (ierr.NE.0) THEN
3721      CALL wrf_error_fatal ( &
3722      'share/module_adtl_grid_utilities.f: Failed to deallocate b_dvsfcg. ')
3723    ENDIF
3725    ENDIF
3727    !  Scalar Boundary
3728    DEALLOCATE(b_scalar_bxs,STAT=ierr) 
3729    IF (ierr.NE.0) THEN
3730      CALL wrf_error_fatal ( &
3731      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_bxs. ')
3732    ENDIF
3733    DEALLOCATE(b_scalar_bxe,STAT=ierr) 
3734    IF (ierr.NE.0) THEN
3735      CALL wrf_error_fatal ( &
3736      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_bxe. ')
3737    ENDIF
3738    DEALLOCATE(b_scalar_bys,STAT=ierr) 
3739    IF (ierr.NE.0) THEN
3740      CALL wrf_error_fatal ( &
3741      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_bys. ')
3742    ENDIF
3743    DEALLOCATE(b_scalar_bye,STAT=ierr) 
3744    IF (ierr.NE.0) THEN
3745      CALL wrf_error_fatal ( &
3746      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_bye. ')
3747    ENDIF
3748    DEALLOCATE(b_scalar_btxs,STAT=ierr) 
3749    IF (ierr.NE.0) THEN
3750      CALL wrf_error_fatal ( &
3751      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_btxs. ')
3752    ENDIF
3753    DEALLOCATE(b_scalar_btxe,STAT=ierr) 
3754    IF (ierr.NE.0) THEN
3755      CALL wrf_error_fatal ( &
3756      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_btxe. ')
3757    ENDIF
3758    DEALLOCATE(b_scalar_btys,STAT=ierr) 
3759    IF (ierr.NE.0) THEN
3760      CALL wrf_error_fatal ( &
3761      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_btys. ')
3762    ENDIF
3763    DEALLOCATE(b_scalar_btye,STAT=ierr) 
3764    IF (ierr.NE.0) THEN
3765      CALL wrf_error_fatal ( &
3766      'share/module_adtl_grid_utilities.f: Failed to deallocate b_scalar_btye. ')
3767    ENDIF
3769    DEALLOCATE ( b_u_2, STAT=ierr )
3770    IF (ierr.NE.0) THEN
3771      CALL wrf_error_fatal ( &
3772      'share/module_adtl_grid_utilities.f: Failed to deallocate b_u_2. ')
3773    ENDIF
3774    DEALLOCATE ( b_v_2, STAT=ierr )
3775    IF (ierr.NE.0) THEN
3776      CALL wrf_error_fatal ( &
3777      'share/module_adtl_grid_utilities.f: Failed to deallocate b_v_2. ')
3778    ENDIF
3779    DEALLOCATE ( b_w_2, STAT=ierr )
3780    IF (ierr.NE.0) THEN
3781      CALL wrf_error_fatal ( &
3782      'share/module_adtl_grid_utilities.f: Failed to deallocate b_w_2. ')
3783    ENDIF
3784    DEALLOCATE ( b_ph_2, STAT=ierr )
3785    IF (ierr.NE.0) THEN
3786      CALL wrf_error_fatal ( &
3787      'share/module_adtl_grid_utilities.f: Failed to deallocate b_ph_2. ')
3788    ENDIF
3789    DEALLOCATE ( b_t_2, STAT=ierr )
3790    IF (ierr.NE.0) THEN
3791      CALL wrf_error_fatal ( &
3792      'share/module_adtl_grid_utilities.f: Failed to deallocate b_t_2. ')
3793    ENDIF
3794    DEALLOCATE ( b_mu_2, STAT=ierr )
3795    IF (ierr.NE.0) THEN
3796      CALL wrf_error_fatal ( &
3797      'share/module_adtl_grid_utilities.f: Failed to deallocate b_mu_2. ')
3798    ENDIF
3799    DEALLOCATE ( b_moist, STAT=ierr )
3800    IF (ierr.NE.0) THEN
3801      CALL wrf_error_fatal ( &
3802      'share/module_adtl_grid_utilities.f: Failed to deallocate b_moist. ')
3803    ENDIF
3804    DEALLOCATE ( b_tracer, STAT=ierr )
3805    IF (ierr.NE.0) THEN
3806      CALL wrf_error_fatal ( &
3807      'share/module_adtl_grid_utilities.f: Failed to deallocate b_tracer. ')
3808    ENDIF
3809    DEALLOCATE ( b_rainnc, STAT=ierr )
3810    IF (ierr.NE.0) THEN
3811      CALL wrf_error_fatal ( &
3812      'share/module_adtl_grid_utilities.f: Failed to deallocate b_rainnc. ')
3813    ENDIF
3814    DEALLOCATE ( b_rainncv, STAT=ierr )
3815    IF (ierr.NE.0) THEN
3816      CALL wrf_error_fatal ( &
3817      'share/module_adtl_grid_utilities.f: Failed to deallocate b_rainncv. ')
3818    ENDIF
3819    DEALLOCATE ( b_rainc, STAT=ierr )
3820    IF (ierr.NE.0) THEN
3821      CALL wrf_error_fatal ( &
3822      'share/module_adtl_grid_utilities.f: Failed to deallocate b_rainc. ')
3823    ENDIF
3824    DEALLOCATE ( b_raincv, STAT=ierr )
3825    IF (ierr.NE.0) THEN
3826      CALL wrf_error_fatal ( &
3827      'share/module_adtl_grid_utilities.f: Failed to deallocate b_raincv. ')
3828    ENDIF
3830    RETURN
3831   END SUBROUTINE deallocate_grid
3833 END MODULE module_adtl_grid_utilities