updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_setup_structures / da_setup_structures.f90
blob582a14a1120594cbb0c2564c7d9c66443e8d9375
1 module da_setup_structures
3 !---------------------------------------------------------------------------
4 ! Purpose: Sets up various structures.
5 !---------------------------------------------------------------------------
7 use da_wavelet, only: lf,namw,nb,nij,ws
8 use module_domain, only : xb_type, ep_type, domain, vp_type
10 use da_define_structures, only : xbx_type,be_subtype, be_type, y_type, j_type, &
11 iv_type,da_allocate_background_errors,da_allocate_observations, &
12 #if (WRF_CHEM == 1)
13 da_allocate_observations_chem_sfc, &
14 #endif
15 multi_level_type,each_level_type, da_allocate_observations_rain
16 use da_define_structures, only : da_allocate_obs_info, da_allocate_y, da_allocate_y_radar, &
17 da_allocate_y_rain
18 use da_wrf_interfaces, only : wrf_debug, &
19 wrf_dm_bcast_string, wrf_dm_bcast_integer, wrf_dm_bcast_real
20 use da_control, only : trace_use,vert_evalue,stdout,rootproc, myproc, &
21 analysis_date,coarse_ix,coarse_ds,map_projection,coarse_jy, c2,dsm,phic, &
22 pole, cone_factor, start_x,base_pres,ptop,psi1,start_y, base_lapse,base_temp,truelat2_3dv, &
23 truelat1_3dv,xlonc,t0,num_fft_factors,pi,print_detail_spectral, global, print_detail_obs, &
24 use_radar_rf, use_radar_rhv, use_radar_rqv, radar_rf_opt, &
25 num_ob_indexes,kts, kte, time_window_max, time_window_min, &
26 max_fgat_time, num_fgat_time, dt_cloud_model, &
27 use_ssmiretrievalobs,use_radarobs,use_ssmitbobs,use_qscatobs, num_procs, use_rainobs, &
28 #if (WRF_CHEM == 1)
29 use_chemic_surfobs, chemic_surf, &
30 chem_cv_options, max_vert_var12, var_scaling12, len_scaling12, &
31 #endif
32 num_pseudo, missing, ob_format, ob_format_bufr,ob_format_ascii, ob_format_madis, ob_format_gpsro, &
33 use_airepobs, use_tamdarobs, test_dm_exact, use_amsuaobs, use_amsubobs, &
34 use_airsobs, use_bogusobs, sfc_assi_options, use_eos_amsuaobs, &
35 use_filtered_rad, use_gpsrefobs, use_hirs2obs, &
36 use_hsbobs,use_hirs3obs, use_gpspwobs, use_gpsztdobs, use_metarobs, use_msuobs, &
37 use_kma1dvar,use_pilotobs, use_polaramvobs, use_rad, crtm_cloud, use_soundobs,use_mtgirsobs, &
38 use_ssmt1obs,use_ssmt2obs, use_shipsobs, use_satemobs, use_synopobs, &
39 use_radar_rv,use_profilerobs, use_obsgts, use_geoamvobs, use_buoyobs, &
40 jb_factor, je_factor, alphacv_method,its,ite,jts,jte,cv_size_domain_jb, cv_size_domain_jl, &
41 cv_size_domain_je, cv_size_domain,ensdim_alpha, alpha_vertloc_opt, alpha_hydrometeors, &
42 lat_stats_option,alpha_std_dev,sigma_alpha,alpha_corr_scale, &
43 len_scaling1, len_scaling2, len_scaling3, len_scaling4, len_scaling5,&
44 len_scaling6, len_scaling7, len_scaling8, len_scaling9, &
45 len_scaling10, len_scaling11, &
46 max_vert_var1, max_vert_var2, max_vert_var3, max_vert_var4, max_vert_var5, &
47 max_vert_var6, max_vert_var7, max_vert_var8, max_vert_var9, max_vert_var10,&
48 max_vert_var11, max_vert_var_alpha, &
49 print_detail_be, test_statistics, do_normalize, use_rf, &
50 var_scaling1, var_scaling2, var_scaling3, var_scaling4, &
51 var_scaling5, var_scaling6, var_scaling7, var_scaling8, &
52 var_scaling9, var_scaling10, var_scaling11,&
53 vert_corr,max_vert_var5,power_truncation,alpha_truncation, &
54 print_detail_regression,gas_constant, use_airsretobs, &
55 filename_len, use_ssmisobs, gravity, t_triple, use_hirs4obs, use_mhsobs, &
56 use_mwtsobs, use_mwhsobs, use_mwhs2obs, use_atmsobs, &
57 vert_corr_2, alphacv_method_xa, vert_evalue_global, &
58 vert_evalue_local, obs_names, thin_conv, thin_conv_ascii, &
59 sound, sonde_sfc, mtgirs, tamdar, tamdar_sfc, synop, profiler, gpsref, gpspw, polaramv, geoamv, ships, metar, &
60 satem, radar, ssmi_rv, ssmi_tb, ssmt1, ssmt2, airsr, pilot, airep, rain, &
61 bogus, buoy, qscat, radiance, pseudo, trace_use_dull, kts,kte, &
62 use_simulated_rad, use_pseudo_rad, pseudo_rad_platid, pseudo_rad_satid, &
63 pseudo_rad_senid, rtminit_nsensor, rtminit_platform, rtminit_satid, &
64 rtminit_sensor, thinning, qc_rad, var4d, &
65 num_pseudo,pseudo_x, pseudo_y, pseudo_z, pseudo_var,pseudo_val, pseudo_err, pseudo_time, &
66 fg_format, fg_format_wrf_arw_regional,fg_format_wrf_nmm_regional, &
67 fg_format_wrf_arw_global, fg_format_kma_global, deg_to_rad, rad_to_deg, &
68 sonde_sfc, missing_data, missing_r, qc_good, thin_mesh_conv, time_slots, ifgat_ana, &
69 cv_options, cloud_cv_options, cv_size, as1, as2, as3, as4, as5, print_detail_be, &
70 ids,ide,jds,jde,kds,kde, ims,ime,jms,jme,kms,kme, &
71 its,ite,jts,jte,kts,kte, ips,ipe,jps,jpe,kps,kpe, root, comm, ierr, &
72 fmt_info, fmt_srfc, fmt_each, unit_end, max_ext_its, &
73 psi_chi_factor, psi_t_factor, psi_ps_factor, psi_rh_factor, &
74 chi_u_t_factor, chi_u_ps_factor,chi_u_rh_factor, t_u_rh_factor, ps_u_rh_factor, &
75 interpolate_stats, be_eta, thin_rainobs, fgat_rain_flags, use_iasiobs, &
76 use_seviriobs, jds_int, jde_int, anal_type_hybrid_dual_res, use_amsr2obs, nrange, use_4denvar, &
77 use_goesimgobs, use_ahiobs,use_gmiobs, obs_use, thin_conv_opt, no_thin, &
78 thin_superob_hv, thin_mesh_vert_conv, use_satwnd_bufr
79 use da_control, only: rden_bin, use_lsac
80 use da_control, only: use_cv_w
81 use da_control, only: pseudo_tpw, pseudo_ztd, pseudo_ref, pseudo_uvtpq, pseudo_elv, anal_type_qcobs
82 use da_control, only: use_gpsephobs, gpseph_loadbalance, gpseph
83 use da_control, only: ep_format
85 #if (WRF_CHEM == 1)
86 use module_state_description, only : num_chem, PARAM_FIRST_SCALAR
87 #endif
88 use da_obs, only : da_fill_obs_structures, da_store_obs_grid_info, da_store_obs_grid_info_rad, &
89 #if (WRF_CHEM == 1)
90 da_fill_obs_structures_chem_sfc, &
91 #endif
92 da_fill_obs_structures_rain, da_fill_obs_structures_radar, da_set_obs_missing,da_set_3d_obs_missing
93 use da_obs_io, only : da_read_obs_bufr,da_read_obs_radar, &
94 da_scan_obs_radar,da_scan_obs_ascii,da_read_obs_ascii, &
95 da_read_obs_bufrgpsro, da_scan_obs_rain, da_read_obs_rain, &
96 da_read_obs_lsac, da_scan_obs_lsac, da_read_obs_bufrgpsro_eph, &
97 da_read_obs_bufr_satwnd, oetab
98 #if (WRF_CHEM == 1)
99 use da_obs_io, only : da_read_obs_chem_sfc, da_scan_obs_chem_sfc
100 #endif
102 use da_par_util1, only : da_proc_sum_real, da_proc_sum_int, da_proc_sum_ints
103 use da_par_util, only : da_patch_to_global
104 use da_lapack, only : dsyev
105 #if defined(RTTOV) || defined(CRTM)
106 use da_radiance, only : da_setup_radiance_structures
107 #endif
108 use da_reporting, only : da_error, message, da_warning, da_message
109 use da_recursive_filter, only : da_calculate_rf_factors
110 use da_spectral, only : da_initialize_h,da_calc_power_spectrum
111 use da_ssmi, only : da_read_obs_ssmi,da_scan_obs_ssmi
112 use da_tools_serial, only : da_get_unit, da_free_unit, da_array_print, da_find_fft_factors, &
113 da_find_fft_trig_funcs
114 use da_tools, only: da_get_time_slots, da_1d_eigendecomposition, da_eof_decomposition
115 use da_tracing, only : da_trace_entry, da_trace_exit
116 use da_vtox_transforms, only : da_check_eof_decomposition
117 use da_rfz_cv3, only : da_rfz0
118 use da_rf_cv3, only : RFDPAR1, RFDPAR2, RFDPARV
119 use module_radiance, only : init_constants_derived
120 use gsi_thinning, only : r999,r360,rlat_min,rlat_max,rlon_min,rlon_max, &
121 dlat_grid,dlon_grid,thinning_grid_conv,thinning_grid, &
122 make3grids, makegrids, destroygrids, destroygrids_conv, cleangrids_conv
123 #ifdef DM_PARALLEL
124 ! use mpi, only : mpi_min, mpi_max
125 use da_par_util, only : true_mpi_real
126 #endif
128 implicit none
130 #ifdef DM_PARALLEL
131 include 'mpif.h'
132 #endif
134 contains
136 #include "da_get_vertical_truncation.inc"
137 #include "da_interpolate_regcoeff.inc"
138 #include "da_rescale_background_errors.inc"
139 #include "da_scale_background_errors.inc"
140 #include "da_scale_background_errors_cv3.inc"
141 #include "da_setup_background_errors.inc"
142 #include "da_setup_be_global.inc"
143 #include "da_setup_be_ncep_gfs.inc"
144 #include "da_setup_be_regional.inc"
145 #include "da_setup_be_nmm_regional.inc"
146 #include "da_setup_cv.inc"
147 #include "da_chgvres.inc"
148 #include "da_setup_flow_predictors.inc"
149 #include "da_setup_flow_predictors_para_read_opt1.inc"
150 #include "da_setup_flow_predictors_ep_format2.inc"
151 #include "da_setup_flow_predictors_ep_format3.inc"
152 #include "da_setup_obs_structures.inc"
153 #include "da_setup_obs_structures_ascii.inc"
154 #include "da_setup_obs_structures_bufr.inc"
155 #include "da_setup_obs_structures_madis.inc"
156 #include "da_setup_obs_structures_rain.inc"
157 #include "da_setup_obs_structures_radar.inc"
158 #include "da_setup_pseudo_obs.inc"
159 #if (WRF_CHEM == 1)
160 #include "da_setup_obs_structures_chem_sfc.inc"
161 #endif
162 #include "da_setup_obs_interp_wts.inc"
163 #include "da_setup_runconstants.inc"
164 #include "da_cloud_model.inc"
165 #include "da_lcl.inc"
166 #include "da_cumulus.inc"
167 #include "da_qfrmrh.inc"
168 #include "da_write_vp.inc"
169 #include "da_write_increments.inc"
170 #include "da_write_increments_for_wrf_nmm_regional.inc"
171 #include "da_write_kma_increments.inc"
172 #include "da_get_bins_info.inc"
173 #include "da_truncate_spectra.inc"
174 #include "da_chg_be_Vres.inc"
175 #include "da_gen_eigen.inc"
176 #include "da_eigen_to_covmatrix.inc"
177 #include "da_get_alpha_vertloc.inc"
179 end module da_setup_structures