updated top-level README and version_decl for V4.5 (#1847)
[WRF.git] / var / da / da_vtox_transforms / da_vtox_transforms.f90
bloba0d1631e4896c613a0b7e70559d269e13b1acf74
1 module da_vtox_transforms
3 !---------------------------------------------------------------------------
4 ! Purpose: Contains routines used to transform control variable V to model
5 ! variables X.
6 !---------------------------------------------------------------------------
8 use module_dm, only : wrf_dm_sum_real,wrf_dm_sum_reals
9 #ifdef DM_PARALLEL
10 use module_dm, only : local_communicator, mytask, ntasks, ntasks_x, &
11 ntasks_y, data_order_xy, data_order_xyz
12 use module_comm_dm, only : halo_psichi_uv_adj_sub,halo_ssmi_xa_sub,halo_sfc_xa_sub, &
13 halo_radar_xa_w_sub, halo_xa_sub, halo_psichi_uv_sub, &
14 #if (WRF_CHEM == 1)
15 halo_chem_xa_sub, &
16 #endif
17 halo_psichi_uv_sub, halo_xa_wpec_sub,halo_xb_wpec_sub
18 use da_par_util, only : true_mpi_real, mpi_sum, comm
19 #endif
20 use module_domain, only : xb_type, xpose_type, ep_type, vp_type, x_type, domain, get_ijk_from_grid
21 use module_domain, only : x_subtype
22 #if (WRF_CHEM == 1)
23 use module_domain, only : xchem_type
24 use module_state_description, only : PARAM_FIRST_SCALAR, num_chem
25 #endif
26 #ifdef A2C
27 use da_control, only : trace_use, var4d, cos_xls, cos_xle, sin_xle, sin_xls, pi, global, &
28 vertical_ip,alphacv_method,use_ssmitbobs,use_rainobs, &
29 use_radarobs,use_radar_rf,use_radar_rhv,use_radar_rqv, &
30 use_ssmiretrievalobs, use_ssmt2obs, use_ssmt1obs, use_gpspwobs, use_gpsztdobs, &
31 use_gpsrefobs,use_gpsephobs,sfc_assi_options, test_transforms, vert_corr, fg_format, &
32 fg_format_kma_global, fg_format_wrf_arw_regional,fg_format_wrf_nmm_regional, &
33 stdout, use_rad, crtm_cloud, vert_corr_2, fg_format_wrf_arw_global, &
34 alphacv_method_vp, alphacv_method_xa, vertical_ip_0, trace_use_dull,&
35 ids,ide,jds,jde,kds,kde, ims,ime,jms,jme,kms,kme, cv_options_hum, &
36 its,ite,jts,jte,kts,kte, ips,ipe,jps,jpe,kps,kpe, cv_size, cv_options, &
37 #if (WRF_CHEM == 1)
38 chem_cv_options, &
39 #endif
40 use_background_errors, jb_factor
41 #else
42 use da_control, only : trace_use, var4d, ims,ime,jms,jme,kms,kme,jds,jde,kds,kde, &
43 its,ite,jts,jte,kts,kte, cos_xls, cos_xle, sin_xle, sin_xls, pi, global, &
44 vertical_ip,alphacv_method,use_ssmitbobs,use_rainobs, &
45 use_radarobs,use_radar_rf,use_radar_rhv,use_radar_rqv, &
46 use_ssmiretrievalobs, use_ssmt2obs, use_ssmt1obs, use_gpspwobs, use_gpsztdobs, &
47 use_gpsrefobs,use_gpsephobs,sfc_assi_options, test_transforms, vert_corr, fg_format, &
48 fg_format_kma_global, fg_format_wrf_arw_regional,fg_format_wrf_nmm_regional, &
49 ids, ide, stdout, use_rad, crtm_cloud, vert_corr_2, fg_format_wrf_arw_global, &
50 alphacv_method_vp, alphacv_method_xa, vertical_ip_0, trace_use_dull, &
51 ips,ipe,jps,jpe,kps,kpe, cv_size, cv_options, cv_options_hum, cloud_cv_options, &
52 #if (WRF_CHEM == 1)
53 len_scaling12, &
54 chem_cv_options, &
55 #endif
56 use_background_errors,jb_factor,do_normalize,use_rf,len_scaling1, len_scaling2, len_scaling3, len_scaling4, &
57 len_scaling5, len_scaling6, len_scaling7, len_scaling8, len_scaling9, len_scaling10, len_scaling11
58 #endif
60 use da_control, only : anal_type_hybrid_dual_res, myproc, num_procs,dual_res_upscale_opt, &
61 ensdim_alpha
62 use da_control, only : its_int,ite_int,jts_int,jte_int,kts_int,kte_int,shw, &
63 ims_int,ime_int,jms_int,jme_int,kms_int,kme_int, &
64 ids_int,ide_int,jds_int,jde_int,kds_int,kde_int, &
65 ips_int,ipe_int,jps_int,jpe_int,kps_int,kpe_int
66 use da_control, only : dual_res_type, aens_locs
67 use da_control, only : c1h, c2h, use_cv_w, alpha_hydrometeors
68 use da_define_structures, only : be_type, xbx_type,da_zero_vp_type,da_zero_x
70 #if (WRF_CHEM == 1)
71 use da_define_structures, only : da_zero_xchem_type
72 #endif
74 use da_dynamics, only : da_psichi_to_uv,da_psichi_to_uv_adj
75 use da_physics, only : da_uvprho_to_w_lin,da_uvprho_to_w_adj, &
76 da_pt_to_rho_adj, da_pt_to_rho_lin,da_moist_phys_lin, &
77 da_tprh_to_q_lin, da_tprh_to_q_adj, &
78 da_moist_phys_adj, da_transform_xtogpsref_lin, da_transform_xtotpw, &
79 da_transform_xtowtq, da_transform_xtotpw_adj, &
80 da_transform_xtogpsref_adj, da_transform_xtowtq_adj, &
81 da_transform_xtoztd_lin, da_transform_xtoztd_adj
82 use da_par_util, only : da_vv_to_cv, da_cv_to_vv
84 use da_recursive_filter, only : da_transform_through_rf, &
85 da_transform_through_rf_inv, &
86 da_transform_through_rf_adj, da_apply_rf, da_apply_rf_adj, &
87 da_transform_through_rf_dual_res, da_transform_through_rf_adj_dual_res
88 use da_reporting, only : da_error, message, da_warning, da_message
89 use da_spectral, only : da_vtovv_spectral,da_vtovv_spectral_adj
90 use da_ssmi, only : da_transform_xtoseasfcwind_lin,da_transform_xtotb_adj, &
91 da_transform_xtoseasfcwind_adj, da_transform_xtotb_lin
92 use da_tools, only : da_set_boundary_xa
93 use da_tracing, only : da_trace_entry, da_trace_exit
94 use da_wrf_interfaces, only : wrf_debug
95 use da_wavelet, only: da_transform_through_wavelet, da_transform_through_wavelet_adj, nij
97 implicit none
100 contains
102 #include "da_add_flow_dependence_vp.inc"
103 #include "da_add_flow_dependence_vp_adj.inc"
104 #include "da_check_eof_decomposition.inc"
105 #include "da_transform_vtovv.inc"
106 #include "da_transform_vtovv_adj.inc"
107 #include "da_transform_vtovv_inv.inc"
108 #include "da_transform_rescale.inc"
109 #include "da_transform_vtox.inc"
110 #include "da_transform_vtox_inv.inc"
111 #include "da_transform_xtoxa.inc"
112 #include "da_transform_vtox_adj.inc"
113 #include "da_transform_xtoxa_adj.inc"
114 #include "da_transform_vptox.inc"
115 #include "da_transform_vptox_adj.inc"
116 #include "da_transform_vptox_inv.inc"
117 #include "da_transform_vvtovp.inc"
118 #include "da_transform_vvtovp_adj.inc"
119 #include "da_transform_vvtovp_inv.inc"
120 #include "da_transform_vpatox.inc"
121 #include "da_transform_vpatox_adj.inc"
122 #if (WRF_CHEM == 1)
123 #include "da_transform_vchemtox.inc"
124 #include "da_transform_vchemtox_adj.inc"
125 #endif
126 #include "da_vertical_transform.inc"
127 #include "da_get_vpoles.inc"
128 #include "da_get_spoles.inc"
129 #include "da_get_avpoles.inc"
130 #include "da_get_aspoles.inc"
131 #include "da_transform_vtovv_global.inc"
132 #include "da_transform_vtovv_global_adj.inc"
134 #include "da_transform_bal.inc"
135 #include "da_transform_bal_adj.inc"
136 #include "da_apply_be.inc"
137 #include "da_apply_be_adj.inc"
139 #include "da_transform_vvtovp_dual_res.inc"
140 #include "da_transform_vvtovp_adj_dual_res.inc"
142 #include "da_copy_xa.inc"
143 #include "da_add_xa.inc"
145 #include "da_calc_flow_dependence_xa.inc"
146 #include "da_calc_flow_dependence_xa_dual_res.inc"
147 #include "da_calc_flow_dependence_xa_adj.inc"
148 #include "da_calc_flow_dependence_xa_adj_dual_res.inc"
149 #include "da_dual_res_c2n_ad.inc"
151 end module da_vtox_transforms