forked from NOAA-EMC/GSI
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtest_adjoint.pf.old
318 lines (291 loc) · 14.5 KB
/
test_adjoint.pf.old
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
module Test_adjoint_mod
use adjtest
use pfunit_mod
implicit none
public :: Test_adjoint
@TestCase
type, extends(TestCase) :: Test_adjoint
contains
procedure :: setUp ! overides generic
procedure :: tearDown ! overrides generic
end type Test_adjoint
contains
! No need to annotate setUp() when _extending_ TestCase
subroutine setUp(this)
use mpimod, only: npe,mpi_comm_world,ierror,mype
use constants, only: init_constants,init_constants_derived
use gsi_4dvar, only: nsubwin, nobs_bins, l4dvar, lsqrtb, ladtest_obs
use jfunc, only: nsclen,npclen,ntclen,nrclen,nval_lenz
use hybrid_ensemble_parameters, only: n_ens, nval_lenz_en
use gridmod, only: create_grid_vars
use gsi_4dcouplermod, only: gsi_4dcoupler_parallel_init
use gsi_4dvar, only: setup_4dvar,init_4dvar,nhr_assimilation,min_offset, &
l4dvar,nhr_obsbin,nhr_subwin,nwrvecs,iorthomax,&
lbicg,lsqrtb,lcongrad,lbfgsmin,ltlint,ladtest,ladtest_obs, lgrtest,&
idmodel,clean_4dvar,iwrtinc,lanczosave,jsiga,ltcost,liauon, &
l4densvar,ens_nstarthr,lnested_loops,lwrite4danl,thin4d
use kinds, only: r_single,r_kind,i_kind,r_quad,i_long
use constants, only: zero, one, two, three, zero_quad, tiny_r_kind
use convinfo, only: init_convinfo
use jfunc, only: init_jfunc, create_jfunc
use jfunc, only: nclen,npclen,nsclen,ntclen,nval_lenz
use gridmod, only: lat2,lon2,nsig
use gridmod, only: lat1,lon1,latlon11,latlon1n
use gsi_4dvar, only: nsubwin, lsqrtb
use hybrid_ensemble_parameters, only: n_ens,nval_lenz_en
class (Test_adjoint), intent(inout) :: this
end subroutine setUp
! No need to annotate tearDown() _extending_ TestCase
subroutine tearDown(this)
use gridmod, only: destroy_grid_vars
class (Test_adjoint), intent(inout) :: this
call destroy_grid_vars
end subroutine tearDown
@Test
subroutine testAdjoint(this)
use guess_grids, only: nfldsig,nfldsfc,ntguessig,ntguessfc,&
ifilesig,ifilesfc,hrdifsig,hrdifsfc,create_gesfinfo
use gsi_4dvar, only: nsubwin, nobs_bins, l4dvar, lsqrtb, ladtest_obs
use jfunc, only: nsclen,npclen,ntclen,nrclen,nval_lenz
use hybrid_ensemble_parameters, only: n_ens, nval_lenz_en
use gsi_bundlemod, only : gsi_bundle
use gsi_bundlemod, only : self_add,assignment(=)
use gsi_bundlemod, only : gsi_bundleprint
use mpimod, only: npe,mpi_comm_world,ierror,mype
use constants, only: init_constants,init_constants_derived
use gsi_4dvar, only: nsubwin, nobs_bins, l4dvar, lsqrtb, ladtest_obs
use jfunc, only: nsclen,npclen,ntclen,nrclen,nval_lenz
use hybrid_ensemble_parameters, only: n_ens, nval_lenz_en
use gridmod, only: create_grid_vars
use gsi_4dcouplermod, only: gsi_4dcoupler_parallel_init
use gsi_4dvar, only: setup_4dvar,init_4dvar,nhr_assimilation,min_offset, &
l4dvar,nhr_obsbin,nhr_subwin,nwrvecs,iorthomax,&
lbicg,lsqrtb,lcongrad,lbfgsmin,ltlint,ladtest,ladtest_obs, lgrtest,&
idmodel,clean_4dvar,iwrtinc,lanczosave,jsiga,ltcost,liauon, &
l4densvar,ens_nstarthr,lnested_loops,lwrite4danl,thin4d
use kinds, only: r_single,r_kind,i_kind,r_quad,i_long
use constants, only: zero, one, two, three, zero_quad, tiny_r_kind
use convinfo, only: init_convinfo
use jfunc, only: init_jfunc, create_jfunc
use berror, only: init_berror
use gridmod, only: lat2,lon2,nsig
use gridmod, only: lat1,lon1,latlon11,latlon1n
use gsi_4dvar, only: nsubwin, lsqrtb
use jfunc, only: nclen,npclen,nsclen,ntclen,nval_lenz
use hybrid_ensemble_parameters, only: n_ens,nval_lenz_en
use kinds, only: i_kind,r_kind
use obsmod, only: dmesh,dval,dthin,dtype,dfile,dplat,dsfcalc,ndat,&
init_obsmod_dflts,create_obsmod_vars,write_diag,reduce_diag,oberrflg,&
time_window,perturb_obs,perturb_fact,sfcmodel,destroy_obsmod_vars,dsis,&
dtbduv_on,time_window_max,offtime_data,init_directories,oberror_tune,ext_sonde, &
blacklst,init_obsmod_vars,lobsdiagsave,lobskeep,lobserver,hilbert_curve,&
lread_obs_save,lread_obs_skip,create_passive_obsmod_vars,lwrite_predterms, &
lwrite_peakwt,use_limit,lrun_subdirs,l_foreaft_thin,&
obsmod_init_instr_table,obsmod_final_instr_table,destroyobs_passive
use aircraftinfo, only: init_aircraft,aircraft_t_bc_pof,aircraft_t_bc, &
aircraft_t_bc_ext,biaspredt,upd_aircraft,cleanup_tail
use obs_sensitivity, only: lobsensfc,lobsensincr,lobsensjb,lsensrecompute, &
lobsensadj,lobsensmin,iobsconv,llancdone,init_obsens
use gsi_4dvar, only: setup_4dvar,init_4dvar,nhr_assimilation,min_offset, &
l4dvar,nhr_obsbin,nhr_subwin,nwrvecs,iorthomax,&
lbicg,lsqrtb,lcongrad,lbfgsmin,ltlint,ladtest,ladtest_obs, lgrtest,&
idmodel,clean_4dvar,iwrtinc,lanczosave,jsiga,ltcost,liauon, &
l4densvar,ens_nstarthr,lnested_loops,lwrite4danl,thin4d
use obs_ferrscale, only: lferrscale
use mpimod, only: npe,mpi_comm_world,ierror,mype
use radinfo, only: retrieval,diag_rad,init_rad,init_rad_vars,adp_anglebc,angord,upd_pred,&
biaspredvar,use_edges,passive_bc,newpc4pred,final_rad_vars,emiss_bc,&
ssmis_method,ssmis_precond
use radinfo, only: nst_gsi,nstinfo,zsea1,zsea2,fac_dtl,fac_tsl,nst_tzr,tzr_bufrsave
use radinfo, only: crtm_coeffs_path
use ozinfo, only: diag_ozone,init_oz
use aeroinfo, only: diag_aero, init_aero, init_aero_vars, final_aero_vars
use coinfo, only: diag_co,init_co
use convinfo, only: init_convinfo,npred_conv_max, &
id_bias_ps,id_bias_t,id_bias_spd, &
conv_bias_ps,conv_bias_t,conv_bias_spd, &
stndev_conv_ps,stndev_conv_t,stndev_conv_spd,diag_conv,&
id_bias_pm2_5,conv_bias_pm2_5,&
id_bias_pm10,conv_bias_pm10,&
use_prepb_satwnd
use oneobmod, only: oblon,oblat,obpres,obhourset,obdattim,oneob_type,&
oneobtest,magoberr,maginnov,init_oneobmod,pctswitch,lsingleradob,obchan
use balmod, only: fstat
use turblmod, only: use_pbl,init_turbl
use qcmod, only: dfact,dfact1,create_qcvars,destroy_qcvars,&
erradar_inflate,tdrerr_inflate,tdrgross_fact,use_poq7,qc_satwnds,&
init_qcvars,vadfile,noiqc,c_varqc,qc_noirjaco3,qc_noirjaco3_pole,&
buddycheck_t,buddydiag_save,njqc,vqc
use pcpinfo, only: npredp,diag_pcp,dtphys,deltim,init_pcp
use jfunc, only: iout_iter,iguess,miter,factqmin,factqmax, &
factv,factl,factp,factg,factw10m,facthowv,factcldch,niter,niter_no_qc,biascor,&
init_jfunc,qoption,cwoption,switch_on_derivatives,tendsflag,l_foto,jiterstart,jiterend,R_option,&
bcoption,diurnalbc,print_diag_pcg,tsensible,lgschmidt,diag_precon,step_start,pseudo_q2,&
clip_supersaturation
use state_vectors, only: init_anasv,final_anasv
use control_vectors, only: init_anacv,final_anacv,nrf,nvars,nrf_3d,cvars3d,cvars2d,nrf_var
use berror, only: norh,ndeg,vs,bw,init_berror,hzscl,hswgt,pert_berr,pert_berr_fct,&
bkgv_flowdep,bkgv_rewgtfct,bkgv_write,fpsproj,nhscrf,adjustozvar,fut2ps,cwcoveqqcov
use anberror, only: anisotropic,ancovmdl,init_anberror,npass,ifilt_ord,triad4, &
binom,normal,ngauss,rgauss,anhswgt,an_vs,&
grid_ratio,grid_ratio_p,an_flen_u,an_flen_t,an_flen_z, &
rtma_subdomain_option,rtma_bkerr_sub2slab,nsmooth,nsmooth_shapiro,&
pf2aP1,pf2aP2,pf2aP3,afact0,covmap,lreadnorm
use compact_diffs, only: noq,init_compact_diffs
use jcmod, only: init_jcvars,ljcdfi,alphajc,ljcpdry,bamp_jcpdry,eps_eer,ljc4tlevs
use tendsmod, only: ctph0,stph0,tlm0
use mod_vtrans, only: nvmodes_keep,init_vtrans
use mod_strong, only: l_tlnmc,reg_tlnmc_type,nstrong,tlnmc_option,&
period_max,period_width,init_strongvars,baldiag_full,baldiag_inc
use gridmod, only: nlat,nlon,nsig,wrf_nmm_regional,nems_nmmb_regional,cmaq_regional,&
nmmb_reference_grid,grid_ratio_nmmb,grid_ratio_wrfmass,&
filled_grid,half_grid,wrf_mass_regional,nsig1o,nnnn1o,update_regsfc,&
diagnostic_reg,gencode,nlon_regional,nlat_regional,nvege_type,&
twodvar_regional,regional,init_grid,init_reg_glob_ll,init_grid_vars,netcdf,&
nlayers,use_gfs_ozone,check_gfs_ozone_date,regional_ozone,jcap,jcap_b,vlevs,&
use_gfs_nemsio,use_sp_eqspace,final_grid_vars,&
jcap_gfs,nlat_gfs,nlon_gfs,jcap_cut
use guess_grids, only: ifact10,sfcmod_gfs,sfcmod_mm5,use_compress,nsig_ext,gpstop
use gsi_io, only: init_io,lendian_in
use gsi_regional_mod, only: update_pint,preserve_restart_date
use constants, only: zero,one,init_constants,gps_constants,init_constants_derived,three
use fgrid2agrid_mod, only: nord_f2a,init_fgrid2agrid,final_fgrid2agrid,set_fgrid2agrid
use smooth_polcarf, only: norsp,init_smooth_polcas
use read_l2bufr_mod, only: minnum,del_azimuth,del_elev,del_range,del_time,&
range_max,elev_angle_max,initialize_superob_radar,l2superob_only
use m_berror_stats,only : berror_stats ! filename if other than "berror_stats"
use lag_fields,only : infile_lag,lag_nmax_bal,&
&lag_vorcore_stderr_a,lag_vorcore_stderr_b,lag_modini
use lag_interp,only : lag_accur
use lag_traj,only : lag_stepduration
use hybrid_ensemble_parameters,only : l_hyb_ens,uv_hyb_ens,aniso_a_en,generate_ens,&
n_ens,nlon_ens,nlat_ens,jcap_ens,jcap_ens_test,oz_univ_static,&
regional_ensemble_option,merge_two_grid_ensperts, &
full_ensemble,pseudo_hybens,betaflg,pwgtflg,coef_bw,&
beta1_inv,s_ens_h,s_ens_v,init_hybrid_ensemble_parameters,&
readin_localization,write_ens_sprd,eqspace_ensgrid,grid_ratio_ens,enspreproc,&
readin_beta,use_localization_grid,use_gfs_ens,q_hyb_ens,i_en_perts_io, &
l_ens_in_diff_time,ensemble_path
use rapidrefresh_cldsurf_mod, only: init_rapidrefresh_cldsurf, &
dfi_radar_latent_heat_time_period,metar_impact_radius,&
metar_impact_radius_lowcloud,l_gsd_terrain_match_surftobs, &
l_sfcobserror_ramp_t, l_sfcobserror_ramp_q, &
l_pbl_pseudo_surfobst,l_pbl_pseudo_surfobsq,l_pbl_pseudo_surfobsuv, &
pblh_ration,pps_press_incr,l_gsd_limit_ocean_q, &
l_pw_hgt_adjust, l_limit_pw_innov, max_innov_pct, &
l_cleansnow_warmts,l_conserve_thetaV,r_cleansnow_warmts_threshold, &
i_conserve_thetav_iternum,l_gsd_soiltq_nudge,l_cld_bld, cld_bld_hgt, &
build_cloud_frac_p, clear_cloud_frac_p, &
l_cloud_analysis,nesdis_npts_rad, &
iclean_hydro_withRef,iclean_hydro_withRef_allcol, &
i_use_2mq4b,i_use_2mt4b,i_gsdcldanal_type,i_gsdsfc_uselist, &
i_lightpcp,i_sfct_gross,l_use_hydroretrieval_all
use gsi_metguess_mod, only: gsi_metguess_init,gsi_metguess_final
use gsi_chemguess_mod, only: gsi_chemguess_init,gsi_chemguess_final
use tcv_mod, only: init_tcps_errvals,tcp_refps,tcp_width,tcp_ermin,tcp_ermax
use chemmod, only : init_chem,berror_chem,oneobtest_chem,&
maginnov_chem,magoberr_chem,&
oneob_type_chem,oblat_chem,&
oblon_chem,obpres_chem,diag_incr,elev_tolerance,tunable_error,&
in_fname,out_fname,incr_fname, &
laeroana_gocart, l_aoderr_table, aod_qa_limit, luse_deepblue
use chemmod, only : wrf_pm2_5,aero_ratios
use gfs_stratosphere, only: init_gfs_stratosphere,use_gfs_stratosphere,pblend0,pblend1
use gfs_stratosphere, only: broadcast_gfs_stratosphere_vars
use general_commvars_mod, only: init_general_commvars,destroy_general_commvars
use regional_io_mod
type(gsi_bundle) :: sval(nobs_bins), rval(nobs_bins)
type(gsi_bundle) :: mval(nsubwin)
type(regional_io_class) :: io
class (Test_adjoint), intent(inout) :: this
nhr_assimilation = 6
nhr_obsbin = 6
nsig = 64
lat2 = 96
lon2 = 192
latlon11 = lat2*lon2
latlon1n = lat2*lon2*nsig
nsclen= 59208
npclen= 12
ntclen= 0
nclen= 115380580
nsubwin= 1
nval_lenz= 115321360
lsqrtb= .true.
n_ens= 80
jcap = 62
npe = 1
l4dvar = .true.
call gsi_4dcoupler_parallel_init
call mpi_comm_size(mpi_comm_world,npe,ierror)
call mpi_comm_rank(mpi_comm_world,mype,ierror)
call init_4dvar
call io%init_regional_io
call gsi_metguess_init
call gsi_chemguess_init
call init_anasv
call init_anacv
call init_constants_derived
call init_constants(.false.)
call gps_constants(use_compress)
write(6,*) 'jcap is ',jcap
write(6,*) 'npe is ',npe
write(6,*) 'cvars3d is ',cvars3d
write(6,*) 'cvars2d is ',cvars2d
write(6,*) 'nrf_var is ',nrf_var
call init_reg_glob_ll(mype,lendian_in)
call init_grid_vars(jcap,npe,cvars3d,cvars2d,nrf_var,mype)
call init_general_commvars
call init_oneobmod
call init_qcvars
call init_obsmod_dflts
call init_pcp
call init_rad
call init_oz
call init_aero
call init_co
call init_convinfo
call init_jfunc
call init_berror
call init_anberror ! RTodling: alloc vectors should move to create
call init_grid
call init_turbl
call init_compact_diffs
call init_smooth_polcas
call init_jcvars
call init_strongvars
call initialize_superob_radar
call init_io(mype,npe-1)
call init_vtrans
call init_obsens
call init_hybrid_ensemble_parameters
call init_rapidrefresh_cldsurf
call init_chem
call init_tcps_errvals
call init_aircraft
call init_gfs_stratosphere
call set_fgrid2agrid
! call create_grid_vars
! call setup_4dvar(mype)
nhr_assimilation = 6
nhr_obsbin = 6
nsig = 64
lat2 = 96
lon2 = 192
latlon11 = lat2*lon2
latlon1n = lat2*lon2*nsig
! nsclen= 59208
! npclen= 12
! ntclen= 0
! nclen= 115380580
! nsubwin= 1
! nval_lenz= 115321360
! lsqrtb= .true.
! n_ens= 80
call create_jfunc
call adtest
@assertEqual(1, 1)
! @assertEqual(3, ifilesfc(1))
! @assertEqual(2.0, hrdifsfc(1))
end subroutine testAdjoint
end module Test_adjoint_mod