diff --git a/var/build/depend.txt b/var/build/depend.txt index df07636301..e77f866254 100644 --- a/var/build/depend.txt +++ b/var/build/depend.txt @@ -132,7 +132,7 @@ da_module_couple_uv_ad.o : da_module_couple_uv_ad.f90 da_couple_ad.inc da_calc_m da_mtgirs.o : da_mtgirs.f90 da_calculate_grady_mtgirs.inc da_get_innov_vector_mtgirs.inc da_check_max_iv_mtgirs.inc da_transform_xtoy_mtgirs_adj.inc da_transform_xtoy_mtgirs.inc da_print_stats_mtgirs.inc da_oi_stats_mtgirs.inc da_residual_mtgirs.inc da_jo_mtgirs_uvtq.inc da_jo_and_grady_mtgirs.inc da_ao_stats_mtgirs.inc da_tracing.o da_physics.o da_grid_definitions.o da_par_util1.o da_par_util.o da_tools.o da_statistics.o da_interpolation.o module_domain.o da_define_structures.o da_control.o da_netcdf_interface.o : da_netcdf_interface.f90 da_atotime.inc da_get_bdytimestr_cdf.inc da_get_bdyfrq.inc da_put_att_cdf.inc da_get_att_cdf.inc da_put_var_2d_int_cdf.inc da_get_var_2d_int_cdf.inc da_put_var_2d_real_cdf.inc da_put_var_3d_real_cdf.inc da_get_var_2d_real_cdf.inc da_get_var_3d_real_cdf.inc da_get_gl_att_real_cdf.inc da_get_gl_att_int_cdf.inc da_get_dims_cdf.inc da_get_times_cdf.inc da_get_var_1d_real_cdf.inc da_obs.o : da_obs.f90 da_grid_definitions.o da_set_obs_missing.inc da_obs_sensitivity.inc da_count_filtered_obs.inc da_store_obs_grid_info_rad.inc da_store_obs_grid_info.inc da_random_omb_all.inc da_fill_obs_structures.inc da_fill_obs_structures_rain.inc da_fill_obs_structures_radar.inc da_check_missing.inc da_add_noise_to_ob.inc da_transform_xtoy_adj.inc da_transform_xtoy.inc da_obs_proc_station.inc module_dm.o da_tracing.o da_tools.o da_tools_serial.o da_synop.o da_ssmi.o da_tamdar.o da_mtgirs.o da_sound.o da_ships.o da_satem.o da_rttov.o da_reporting.o da_rain.o da_radar.o da_qscat.o da_pseudo.o da_profiler.o da_polaramv.o da_pilot.o da_physics.o da_metar.o da_gpsref.o da_gpspw.o da_geoamv.o da_crtm.o da_control.o da_buoy.o da_bogus.o da_airsr.o da_airep.o module_domain.o da_define_structures.o da_gpseph.o -da_obs_io.o : da_obs_io.f90 da_grid_definitions.o da_final_write_modified_filtered_obs.inc da_final_write_filtered_obs.inc da_write_noise_to_ob.inc da_read_omb_tmp.inc da_read_rand_unit.inc da_read_y_unit.inc da_final_write_y.inc da_final_write_obs.inc da_read_obs_bufrgpsro.inc da_read_obs_bufr.inc da_write_y.inc da_write_modified_filtered_obs.inc da_write_filtered_obs.inc da_write_obs_etkf.inc da_search_obs.inc da_read_iv_for_multi_inc.inc da_write_iv_for_multi_inc.inc da_write_obs.inc da_use_obs_errfac.inc da_read_errfac.inc da_read_obs_rain.inc da_scan_obs_rain.inc da_scan_obs_radar.inc da_read_obs_radar.inc da_scan_obs_ascii.inc da_read_obs_ascii.inc da_par_util.o gsi_thinning.o module_radiance.o da_tracing.o da_tools_serial.o da_tools.o da_reporting.o da_physics.o da_par_util1.o da_obs.o da_grid_definitions.o da_define_structures.o da_control.o module_domain.o da_read_lsac_util.inc da_read_obs_lsac.inc da_scan_obs_lsac.inc da_netcdf_interface.o da_gpseph.o da_read_obs_bufrgpsro_eph.inc +da_obs_io.o : da_obs_io.f90 da_grid_definitions.o da_final_write_modified_filtered_obs.inc da_final_write_filtered_obs.inc da_write_noise_to_ob.inc da_read_omb_tmp.inc da_read_rand_unit.inc da_read_y_unit.inc da_final_write_y.inc da_final_write_obs.inc da_read_obs_bufrgpsro.inc da_read_obs_bufr.inc da_write_y.inc da_write_modified_filtered_obs.inc da_write_filtered_obs.inc da_write_obs_etkf.inc da_search_obs.inc da_read_iv_for_multi_inc.inc da_write_iv_for_multi_inc.inc da_write_obs.inc da_use_obs_errfac.inc da_read_errfac.inc da_read_obs_rain.inc da_scan_obs_rain.inc da_scan_obs_radar.inc da_read_obs_radar.inc da_scan_obs_ascii.inc da_read_obs_ascii.inc da_par_util.o gsi_thinning.o module_radiance.o da_tracing.o da_tools_serial.o da_tools.o da_reporting.o da_physics.o da_par_util1.o da_obs.o da_grid_definitions.o da_define_structures.o da_control.o module_domain.o da_wrf_interfaces.o da_read_lsac_util.inc da_read_obs_lsac.inc da_scan_obs_lsac.inc da_netcdf_interface.o da_gpseph.o da_read_obs_bufrgpsro_eph.inc da_par_util.o : da_par_util.f90 da_proc_maxmin_combine.inc da_proc_stats_combine.inc da_system.inc da_y_facade_to_global.inc da_generic_boilerplate.inc da_deallocate_global_synop.inc da_deallocate_global_sound.inc da_deallocate_global_sonde_sfc.inc da_generic_methods.inc da_patch_to_global_3d.inc da_patch_to_global_dual_res.inc da_patch_to_global_2d.inc da_cv_to_global.inc da_transpose_y2x_v2.inc da_transpose_x2y_v2.inc da_transpose_z2y.inc da_transpose_y2z.inc da_transpose_x2z.inc da_transpose_z2x.inc da_transpose_y2x.inc da_transpose_x2y.inc da_unpack_count_obs.inc da_pack_count_obs.inc da_copy_tile_dims.inc da_copy_dims.inc da_alloc_and_copy_be_arrays.inc da_vv_to_cv.inc da_cv_to_vv.inc da_generic_typedefs.inc da_wrf_interfaces.o da_tracing.o da_reporting.o da_define_structures.o da_par_util1.o module_dm.o module_domain.o da_control.o da_par_util1.o : da_par_util1.f90 da_proc_sum_real.inc da_proc_sum_ints.inc da_proc_sum_int.inc da_control.o da_physics.o : da_physics.f90 da_uv_to_sd_lin.inc da_uv_to_sd_adj.inc da_integrat_dz.inc da_wdt.inc da_filter_adj.inc da_filter.inc da_evapo_lin.inc da_condens_lin.inc da_condens_adj.inc da_moist_phys_lin.inc da_moist_phys_adj.inc da_sfc_pre_adj.inc da_sfc_pre_lin.inc da_sfc_pre.inc da_transform_xtowtq_adj.inc da_transform_xtowtq.inc da_transform_xtopsfc_adj.inc da_transform_xtopsfc.inc da_sfc_wtq_adj.inc da_sfc_wtq_lin.inc da_sfc_wtq.inc da_julian_day.inc da_roughness_from_lanu.inc da_get_q_error.inc da_check_rh_simple.inc da_check_rh.inc da_transform_xtogpsref_lin.inc da_transform_xtogpsref_adj.inc da_transform_xtogpsref.inc da_transform_xtotpw_adj.inc da_transform_xtotpw.inc da_transform_xtoztd_adj.inc da_transform_xtoztd_lin.inc da_transform_xtoztd.inc da_tv_profile_tl.inc da_thickness_tl.inc da_find_layer_adj.inc da_thickness.inc da_tv_profile_adj.inc da_find_layer.inc da_thickness_adj.inc da_find_layer_tl.inc da_tv_profile.inc da_tpq_to_slp_adj.inc da_tpq_to_slp_lin.inc da_wrf_tpq_2_slp.inc da_tpq_to_slp.inc da_trh_to_td.inc da_tp_to_qs_lin1.inc da_tp_to_qs_lin.inc da_tp_to_qs_adj1.inc da_tp_to_qs_adj.inc da_tp_to_qs1.inc da_tp_to_qs.inc da_tprh_to_q_lin1.inc da_tprh_to_q_lin.inc da_tprh_to_q_adj1.inc da_tprh_to_q_adj.inc da_tpq_to_rh_lin1.inc da_tpq_to_rh_lin.inc da_tpq_to_rh.inc da_pt_to_rho_lin.inc da_pt_to_rho_adj.inc da_uvprho_to_w_adj.inc da_uvprho_to_w_lin.inc da_prho_to_t_lin.inc da_prho_to_t_adj.inc da_wrf_interfaces.o da_reporting.o da_dynamics.o da_interpolation.o da_tracing.o da_par_util.o da_define_structures.o da_control.o module_comm_dm.o module_dm.o module_domain.o da_grid_definitions.o da_gpseph.o @@ -144,7 +144,7 @@ da_qscat.o : da_qscat.f90 da_calculate_grady_qscat.inc da_transform_xtoy_qscat_a da_rad_diags.o : da_rad_diags.f90 da_radar.o : da_radar.f90 da_write_oa_radar_ascii.inc da_max_error_qc_radar.inc da_calculate_grady_radar.inc da_radial_velocity_adj.inc da_radial_velocity_lin.inc da_radial_velocity.inc da_radar_rf.inc da_get_innov_vector_radar.inc da_check_max_iv_radar.inc da_transform_xtoy_radar_adj.inc da_transform_xtoy_radar.inc da_print_stats_radar.inc da_oi_stats_radar.inc da_residual_radar.inc da_jo_and_grady_radar.inc da_ao_stats_radar.inc da_tools_serial.o da_reporting.o da_tracing.o da_tools.o da_statistics.o da_par_util1.o da_par_util.o da_interpolation.o da_define_structures.o da_control.o module_domain.o da_radiance.o : da_radiance.f90 da_blacklist_rad.inc da_read_pseudo_rad.inc da_get_innov_vector_radiance.inc da_radiance_init.inc da_setup_radiance_structures.inc da_sort_rad.inc da_read_kma1dvar.inc da_initialize_rad_iv.inc da_allocate_rad_iv.inc da_read_obs_bufrssmis.inc da_read_obs_bufrairs.inc da_read_obs_bufriasi.inc da_read_obs_bufrseviri.inc da_read_obs_bufrtovs.inc da_write_filtered_rad.inc da_read_simulated_rad.inc da_read_filtered_rad.inc da_calculate_grady_rad.inc gsi_thinning.o da_wrf_interfaces.o da_varbc.o da_tracing.o da_tools.o da_statistics.o da_rttov.o da_reporting.o da_radiance1.o da_physics.o da_par_util.o da_par_util1.o da_tools_serial.o da_interpolation.o da_define_structures.o da_crtm.o da_control.o module_radiance.o module_domain.o amsr2time_.c da_read_obs_hdf5amsr2.inc da_deallocate_radiance.inc da_read_obs_ncgoesimg.inc da_get_satzen.inc da_read_obs_hdf5ahi.inc da_read_obs_netcdf4ahi_jaxa.inc da_read_obs_netcdf4ahi_geocat.inc -da_radiance1.o : da_radiance1.f90 da_mspps_ts.inc da_mspps_emis.inc da_setup_satcv.inc da_qc_rad.inc da_print_stats_rad.inc da_oi_stats_rad.inc da_ao_stats_rad.inc da_cld_eff_radius.inc da_detsurtyp.inc da_write_oa_rad_ascii.inc da_write_iv_rad_ascii.inc da_qc_mhs.inc da_qc_ssmis.inc da_qc_hirs.inc da_qc_amsub.inc da_qc_amsua.inc da_qc_airs.inc da_cloud_detect_airs.inc da_cloud_sim.inc da_qc_seviri.inc da_qc_iasi.inc da_cloud_detect_iasi.inc da_qc_crtm.inc da_predictor_crtm.inc da_predictor_rttov.inc da_write_biasprep.inc da_biasprep.inc da_read_biascoef.inc da_biascorr.inc da_residual_rad.inc da_jo_and_grady_rad.inc gsi_constants.o da_tracing.o da_tools_serial.o da_tools.o da_statistics.o da_reporting.o da_par_util1.o da_par_util.o module_dm.o da_define_structures.o da_control.o module_radiance.o da_qc_amsr2.inc da_qc_goesimg.inc da_qc_ahi.inc +da_radiance1.o : da_radiance1.f90 da_mspps_ts.inc da_mspps_emis.inc da_setup_satcv.inc da_qc_rad.inc da_print_stats_rad.inc da_oi_stats_rad.inc da_ao_stats_rad.inc da_cld_eff_radius.inc da_detsurtyp.inc da_write_oa_rad_ascii.inc da_write_iv_rad_ascii.inc da_qc_mhs.inc da_qc_ssmis.inc da_qc_hirs.inc da_qc_amsub.inc da_qc_amsua.inc da_qc_airs.inc da_cloud_detect_airs.inc da_cloud_sim.inc da_qc_seviri.inc da_qc_iasi.inc da_cloud_detect_iasi.inc da_qc_crtm.inc da_predictor_crtm.inc da_predictor_rttov.inc da_write_biasprep.inc da_biasprep.inc da_read_biascoef.inc da_biascorr.inc da_residual_rad.inc da_jo_and_grady_rad.inc gsi_constants.o da_tracing.o da_tools_serial.o da_tools.o da_statistics.o da_reporting.o da_par_util1.o da_par_util.o module_dm.o da_define_structures.o da_control.o module_radiance.o da_wrf_interfaces.o da_qc_amsr2.inc da_qc_goesimg.inc da_qc_ahi.inc da_rain.o : da_rain.f90 da_calculate_grady_rain.inc da_get_innov_vector_rain.inc da_get_hr_rain.inc da_check_max_iv_rain.inc da_transform_xtoy_rain_adj.inc da_transform_xtoy_rain.inc da_print_stats_rain.inc da_oi_stats_rain.inc da_residual_rain.inc da_jo_and_grady_rain.inc da_ao_stats_rain.inc da_tracing.o da_tools.o da_statistics.o da_par_util.o da_par_util1.o da_interpolation.o da_define_structures.o da_control.o module_comm_dm.o module_dm.o module_domain.o da_recursive_filter.o : da_recursive_filter.f90 da_apply_rf_adj.inc da_apply_rf.inc da_apply_rf_1v_adj.inc da_apply_rf_1v.inc da_transform_through_rf_adj.inc da_transform_through_rf.inc da_recursive_filter_1d_adj.inc da_recursive_filter_1d.inc da_calculate_rf_factors.inc da_transform_through_rf_dual_res.inc da_transform_through_rf_adj_dual_res.inc da_perform_2drf.inc da_rf_cv3.o da_rfz_cv3.o da_tracing.o da_par_util.o da_define_structures.o da_control.o module_domain.o da_reporting.o : da_reporting.f90 da_message2.inc da_message.inc da_warning.inc da_error.inc da_control.o @@ -165,7 +165,7 @@ da_test.o : da_test.f90 da_test_vxtransform.inc da_check_gradient.inc da_get_y_l da_tools.o : da_tools.f90 da_geo2msl1.inc da_msl2geo1.inc da_get_time_slots.inc da_get_julian_time.inc da_get_print_lvl.inc da_get_3d_sum.inc da_get_2d_sum.inc da_set_boundary_3d.inc da_set_boundary_xb.inc da_set_boundary_xa.inc da_ludcmp.inc da_lubksb.inc da_eof_decomposition.inc da_eof_decomposition_test.inc da_buddy_qc.inc da_unifva.inc da_togrid.inc da_togrid_new.inc da_smooth_anl.inc da_openfile.inc da_gaus_noise.inc da_set_randomcv.inc da_random_omb.inc da_max_error_qc.inc da_add_noise_new.inc da_add_noise.inc da_residual_new.inc da_residual.inc da_diff_seconds.inc da_mo_correction.inc da_intpsfc_tem.inc da_intpsfc_prs.inc da_sfcprs.inc da_obs_sfc_correction.inc da_1d_eigendecomposition.inc da_convert_zk.inc da_lc_cone.inc da_set_merc.inc da_map_set.inc da_map_init.inc da_set_ps.inc da_set_lc.inc da_xyll_ps.inc da_xyll_merc.inc da_xyll_lc.inc da_xyll_latlon.inc da_xyll_default.inc da_xyll.inc da_llxy_wrf_new.inc da_llxy_wrf.inc da_llxy_ps_new.inc da_llxy_ps.inc da_llxy_merc_new.inc da_llxy_merc.inc da_llxy_lc_new.inc da_llxy_lc.inc da_llxy_latlon_new.inc da_llxy_latlon.inc da_llxy_rotated_latlon.inc da_llxy_global_new.inc da_llxy_global.inc da_llxy_kma_global_new.inc da_llxy_kma_global.inc da_llxy_default_new.inc da_llxy_default.inc da_llxy_new.inc da_llxy.inc da_map_utils_defines.inc da_lapack.o da_reporting.o da_tracing.o da_tools_serial.o da_define_structures.o da_control.o module_domain.o module_dm.o module_bc.o da_sfc_hori_interp_weights.inc da_tools_serial.o : da_tools_serial.f90 da_find_fft_trig_funcs.inc da_find_fft_factors.inc da_advance_time.inc da_advance_cymdh.inc da_array_print.inc da_change_date.inc da_free_unit.inc da_get_unit.inc da_reporting.o da_control.o da_tracing.o : da_tracing.f90 da_trace_report.inc da_trace_real_sort.inc da_trace_int_sort.inc da_trace_exit.inc da_trace.inc da_trace_entry.inc da_trace_init.inc da_reporting.o da_par_util1.o da_control.o -da_transfer_model.o : da_transfer_model.f90 da_get_2nd_firstguess.inc da_setup_firstguess_kma.inc da_setup_firstguess_wrf_nmm_regional.inc da_setup_firstguess_wrf.inc da_setup_firstguess.inc da_transfer_xatoanalysis.inc da_transfer_wrftl_lbc_t0_adj.inc da_transfer_xatowrftl_adj_lbc.inc da_transfer_xatowrftl_adj.inc da_transfer_wrftl_lbc_t0.inc da_transfer_xatowrftl_lbc.inc da_transfer_xatowrftl.inc da_transfer_wrftltoxa_adj.inc da_transfer_wrftltoxa.inc da_transfer_xatokma.inc da_transfer_xatowrf_nmm_regional.inc da_transfer_xatowrf.inc da_transfer_kmatoxb.inc da_transfer_wrf_nmm_regional_toxb.inc da_transfer_wrftoxb.inc module_io_wrf.o module_bc.o da_4dvar.o da_vtox_transforms.o da_tracing.o da_tools.o da_ssmi.o da_setup_structures.o da_reporting.o da_physics.o da_par_util.o da_grid_definitions.o da_define_structures.o da_control.o module_comm_dm.o module_dm.o module_state_description.o module_io_domain.o module_domain.o module_date_time.o module_configure.o da_radar.o +da_transfer_model.o : da_transfer_model.f90 da_get_2nd_firstguess.inc da_setup_firstguess_kma.inc da_setup_firstguess_wrf_nmm_regional.inc da_setup_firstguess_wrf.inc da_setup_firstguess.inc da_transfer_xatoanalysis.inc da_transfer_wrftl_lbc_t0_adj.inc da_transfer_xatowrftl_adj_lbc.inc da_transfer_xatowrftl_adj.inc da_transfer_wrftl_lbc_t0.inc da_transfer_xatowrftl_lbc.inc da_transfer_xatowrftl.inc da_transfer_wrftltoxa_adj.inc da_transfer_wrftltoxa.inc da_transfer_xatokma.inc da_transfer_xatowrf_nmm_regional.inc da_transfer_xatowrf.inc da_transfer_kmatoxb.inc da_transfer_wrf_nmm_regional_toxb.inc da_transfer_wrftoxb.inc module_io_wrf.o module_bc.o da_4dvar.o da_vtox_transforms.o da_tracing.o da_tools.o da_ssmi.o da_setup_structures.o da_reporting.o da_physics.o da_par_util.o da_grid_definitions.o da_define_structures.o da_control.o module_comm_dm.o module_dm.o module_state_description.o module_io_domain.o module_domain.o module_date_time.o module_configure.o da_wrf_interfaces.o da_radar.o da_tune_obs_desroziers.o : da_tune_obs_desroziers.f90 da_tune_obs_hollingsworth1.o : da_tune_obs_hollingsworth1.f90 da_control.o da_tune_obs_hollingsworth2.o : da_tune_obs_hollingsworth2.f90 da_control.o diff --git a/var/da/da_gpseph/da_gpseph.f90 b/var/da/da_gpseph/da_gpseph.f90 index 5f200533e7..e2b65b04b2 100644 --- a/var/da/da_gpseph/da_gpseph.f90 +++ b/var/da/da_gpseph/da_gpseph.f90 @@ -26,6 +26,7 @@ module da_gpseph use da_tools_serial, only : da_free_unit, da_get_unit use da_tracing, only : da_trace_entry, da_trace_exit use da_reporting, only : da_error + use da_wrf_interfaces, only : wrf_dm_bcast_real ! The "stats_gpseph_type" is ONLY used locally in da_gpseph: diff --git a/var/da/da_obs_io/da_obs_io.f90 b/var/da/da_obs_io/da_obs_io.f90 index b12f5aed36..7d4a0ef68f 100644 --- a/var/da/da_obs_io/da_obs_io.f90 +++ b/var/da/da_obs_io/da_obs_io.f90 @@ -34,6 +34,7 @@ module da_obs_io gpsro_drift, max_gpseph_input, use_gpsephobs, gpseph, gpseph_loadbalance, kds, kde, kts, kte, & use_radar_rhv, use_radar_rqv + use da_wrf_interfaces, only : wrf_dm_bcast_integer, wrf_dm_bcast_real use da_define_structures, only : iv_type, multi_level_type, multi_level_type_BUFR, & radar_multi_level_type, y_type, field_type, each_level_type, & radar_each_level_type, info_type, model_loc_type,gpsref_type, rain_single_level_type, rain_each_type, & diff --git a/var/da/da_par_util/da_par_util.f90 b/var/da/da_par_util/da_par_util.f90 index 4df7054b6b..b5cda15342 100644 --- a/var/da/da_par_util/da_par_util.f90 +++ b/var/da/da_par_util/da_par_util.f90 @@ -40,7 +40,8 @@ module da_par_util use da_tracing, only : da_trace_entry, da_trace_exit use da_wrf_interfaces, only : & wrf_dm_xpose_z2x, wrf_dm_xpose_x2y, wrf_dm_xpose_y2x, wrf_dm_xpose_x2z, & - wrf_dm_xpose_z2y, wrf_dm_xpose_y2z, wrf_patch_to_global_real, wrf_debug + wrf_dm_xpose_z2y, wrf_dm_xpose_y2z, wrf_patch_to_global_real, wrf_debug, & + wrf_dm_bcast_integer, wrf_dm_bcast_real implicit none diff --git a/var/da/da_physics/da_physics.f90 b/var/da/da_physics/da_physics.f90 index b5bd689bab..f138dafc4c 100644 --- a/var/da/da_physics/da_physics.f90 +++ b/var/da/da_physics/da_physics.f90 @@ -28,7 +28,7 @@ module da_physics use da_dynamics, only : da_w_adjustment_adj, da_uv_to_divergence_adj, & da_w_adjustment_lin, da_uv_to_divergence use da_reporting, only : da_error, message - use da_wrf_interfaces, only : wrf_debug + use da_wrf_interfaces, only : wrf_debug, wrf_dm_bcast_real use da_grid_definitions, only : da_ffdduv_model use da_gpseph, only : global_xa_ref diff --git a/var/da/da_radiance/da_radiance.f90 b/var/da/da_radiance/da_radiance.f90 index 2f465372ca..d871832fe6 100644 --- a/var/da/da_radiance/da_radiance.f90 +++ b/var/da/da_radiance/da_radiance.f90 @@ -93,7 +93,7 @@ module da_radiance da_trace_int_sort use da_varbc, only : da_varbc_direct,da_varbc_coldstart,da_varbc_precond, & da_varbc_pred - use da_wrf_interfaces, only : wrf_dm_bcast_integer + use da_wrf_interfaces, only : wrf_dm_bcast_real use gsi_thinning, only : r999,r360,rlat_min,rlat_max,rlon_min,rlon_max, & dlat_grid,dlon_grid,thinning_grid, & makegrids,map2grids, & diff --git a/var/da/da_radiance/da_radiance1.f90 b/var/da/da_radiance/da_radiance1.f90 index 53948d7757..b6d9cdda45 100644 --- a/var/da/da_radiance/da_radiance1.f90 +++ b/var/da/da_radiance/da_radiance1.f90 @@ -33,6 +33,7 @@ module da_radiance1 use da_tools, only : da_residual_new, da_eof_decomposition use da_tools_serial, only : da_free_unit, da_get_unit use da_tracing, only : da_trace_entry, da_trace_exit, da_trace_int_sort + use da_wrf_interfaces, only : wrf_dm_bcast_integer #if defined(RTTOV) || defined(CRTM) use da_control, only : rtminit_sensor,write_profile,num_procs,tovs_min_transfer diff --git a/var/da/da_setup_structures/da_scale_background_errors_cv3.inc b/var/da/da_setup_structures/da_scale_background_errors_cv3.inc index 838120b11b..62ba583de5 100644 --- a/var/da/da_setup_structures/da_scale_background_errors_cv3.inc +++ b/var/da/da_setup_structures/da_scale_background_errors_cv3.inc @@ -7,8 +7,8 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) REAL, DIMENSION( ids: ide, jds: jde, kds: kde, 1:4) :: hwll REAL, DIMENSION( ids: ide, jds: jde) :: hwllp, global_fac REAL, DIMENSION( kts: kte, kts: kte) :: vv - integer :: n, i, j, k, ic, jc, ii, ij, ijk, & - iis, iie, jjs, jje, kks, kke + integer :: n, i, j, k, ic, jc, ii, ij, ijk + integer, dimension(1) :: iis, iie, jjs, jje, kks, kke, ivar real, dimension(1) :: xsum real, dimension(ids: ide, jds: jde) :: global_2d real, dimension(ids: ide, jds: jde, kds: kde) :: global_3d @@ -16,8 +16,8 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) character(len=9) :: chr character(len=8) :: i_char - INTEGER :: nta, ndeg, ku, kz - real :: samp,s2u,tin,as(5),as0(5),slim + INTEGER :: nta, ndeg, ku(1), kz + real :: samp(1),s2u,tin,as(5),as0(5),slim character(len=256) :: mesg integer :: ier, be_rf_unit, be_print_unit @@ -76,32 +76,32 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) write (be_print_unit,'(3x,a)') 'VARIANCE:' do ii = 1, 4 if (rootproc) & - read (be_rf_unit) chr, vname, i, global_3d + read (be_rf_unit) chr, vname, ivar, global_3d call wrf_dm_bcast_string( chr, 9 ) call wrf_dm_bcast_string( vname, 6 ) - call wrf_dm_bcast_integer( i, 1 ) + call wrf_dm_bcast_integer( ivar, 1 ) call wrf_dm_bcast_real( global_3d, ijk ) - be%corz(its:ite,jts:jte,kts:kte,i) = global_3d(its:ite,jts:jte,kts:kte) - xsum(1) = sum (be%corz(its:ite,jts:jte,kts:kte,i)*be%corz(its:ite,jts:jte,kts:kte,i)) + be%corz(its:ite,jts:jte,kts:kte,ivar(1)) = global_3d(its:ite,jts:jte,kts:kte) + xsum(1) = sum (be%corz(its:ite,jts:jte,kts:kte,ivar(1))*be%corz(its:ite,jts:jte,kts:kte,ivar(1))) call da_proc_sum_real(xsum) if (rootproc .and. print_detail_be) & write (be_print_unit,'(5x,i3,1x,a,2x,"sum^2=",e20.12)') ii, vname, xsum(1) -! write (*,'(3x,a9,2x,a6,2x,i3)') chr, vname, i +! write (*,'(3x,a9,2x,a6,2x,i3)') chr, vname, ivar enddo ! Psfc Variance before the normalization. if (rootproc) & - read (be_rf_unit) chr, vname, ii, global_2d + read (be_rf_unit) chr, vname, ivar, global_2d call wrf_dm_bcast_string( chr, 9 ) call wrf_dm_bcast_string( vname, 6 ) - call wrf_dm_bcast_integer( ii, 1 ) + call wrf_dm_bcast_integer( ivar, 1 ) call wrf_dm_bcast_real( global_2d, ij ) be%corp(its:ite,jts:jte) = global_2d(its:ite,jts:jte) xsum(1) = sum (be%corp(its:ite,jts:jte)*be%corp(its:ite,jts:jte)) call da_proc_sum_real(xsum) if (rootproc .and. print_detail_be) & write (be_print_unit,'(9x,a,2x,"sum^2=",e20.12)') 'PSFC_u', xsum(1) -! write (*,'(3x,a9,2x,a6,2x,i3)') chr, vname, ii +! write (*,'(3x,a9,2x,a6,2x,i3)') chr, vname, ivar ! ! 2.4 Read in the vertical scales to "be_print_unit": ! @@ -111,23 +111,23 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) write (be_print_unit,'(3x,a)') 'VERTICAL SCALE:' do ii = 1, 4 if (rootproc) & - read (be_rf_unit) chr, vname, n, global_3d + read (be_rf_unit) chr, vname, ivar, global_3d call wrf_dm_bcast_string( chr, 9 ) call wrf_dm_bcast_string( vname, 6 ) - call wrf_dm_bcast_integer( n, 1 ) + call wrf_dm_bcast_integer( ivar, 1 ) call wrf_dm_bcast_real( global_3d, ijk ) do i = its, ite do j = jts, jte do k = kts, kte - be%vz(k,i,j,n) = global_3d(i,j,k) + be%vz(k,i,j,ivar(1)) = global_3d(i,j,k) enddo enddo enddo - xsum(1) = sum (be%vz(kts:kte,its:ite,jts:jte,n)*be%vz(kts:kte,its:ite,jts:jte,n)) + xsum(1) = sum (be%vz(kts:kte,its:ite,jts:jte,ivar(1))*be%vz(kts:kte,its:ite,jts:jte,ivar(1))) call da_proc_sum_real(xsum) if (rootproc .and. print_detail_be) & write (be_print_unit,'(5x,i3,1x,a,2x,"sum^2=",e20.12)') ii, vname, xsum(1) -! write (*,'(3x,a9,2x,a6,2x,i3)') chr, vname, n +! write (*,'(3x,a9,2x,a6,2x,i3)') chr, vname, ivar enddo ! ! 2.5 Read in the Horizontal scales, and write out vertical scales to "be_print_unit": @@ -263,7 +263,7 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) ! Normalize the covariance for psi, chi, t, and rh: do k=kts,kte be % corz(i,j,k,n)=be % corz(i,j,k,n)*as(n) & - *samp/hwll(i,j,k,n)/vv(k,k)/global_fac(i,j) + *samp(1)/hwll(i,j,k,n)/vv(k,k)/global_fac(i,j) enddo enddo @@ -286,7 +286,7 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) ! write (*,'("as(5)=",f15.5,2x,"samp=",f15.5)') as(5), samp be % corp(its:ite,jts:jte)=be % corp(its:ite,jts:jte)*as(5) & - *samp/hwllp(its:ite,jts:jte)/global_fac(its:ite,jts:jte) + *samp(1)/hwllp(its:ite,jts:jte)/global_fac(its:ite,jts:jte) ! xsum(1) = sum (be%corp(its:ite,jts:jte)*be%corp(its:ite,jts:jte)) ! call da_proc_sum_real(xsum) @@ -331,7 +331,7 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) ! Above level ku, the sljy fields are set to a constant ! for psi and chi, i.e. homogenous: do n=1,2 - do k=max(ku, grid%xp%kpsy), grid%xp%kpey + do k=max(ku(1), grid%xp%kpsy), grid%xp%kpey slim=1./global_fac(ic,jc)/hwll(ic,jc,k,n) do j= grid%xp%jpsy, grid%xp%jpey do i= grid%xp%ipsy, grid%xp%ipey @@ -368,7 +368,7 @@ subroutine da_scale_background_errors_cv3 ( grid, be, it ) ! Above level ku, the sljy fields are set to a constant ! for psi and chi, i.e. homogenous: do n=1,2 - do k=max(ku, grid%xp%kpsx), grid%xp%kpex + do k=max(ku(1), grid%xp%kpsx), grid%xp%kpex slim=1./global_fac(ic,jc)/hwll(ic,jc,k,n) do j= grid%xp%jpsx, grid%xp%jpex do i= grid%xp%ipsx, grid%xp%ipex diff --git a/var/da/da_setup_structures/da_setup_structures.f90 b/var/da/da_setup_structures/da_setup_structures.f90 index b5c89d5a42..759937fb74 100644 --- a/var/da/da_setup_structures/da_setup_structures.f90 +++ b/var/da/da_setup_structures/da_setup_structures.f90 @@ -12,7 +12,8 @@ module da_setup_structures multi_level_type,each_level_type, da_allocate_observations_rain use da_define_structures, only : da_allocate_obs_info, da_allocate_y, da_allocate_y_radar, & da_allocate_y_rain - use da_wrf_interfaces, only : wrf_debug + use da_wrf_interfaces, only : wrf_debug, & + wrf_dm_bcast_string, wrf_dm_bcast_integer, wrf_dm_bcast_real use da_control, only : trace_use,vert_evalue,stdout,rootproc, myproc, & analysis_date,coarse_ix,coarse_ds,map_projection,coarse_jy, c2,dsm,phic, & pole, cone_factor, start_x,base_pres,ptop,psi1,start_y, base_lapse,base_temp,truelat2_3dv, & diff --git a/var/da/da_test/da_test.f90 b/var/da/da_test/da_test.f90 index ee5235a173..67de010087 100644 --- a/var/da/da_test/da_test.f90 +++ b/var/da/da_test/da_test.f90 @@ -74,8 +74,7 @@ module da_test use da_tracing, only : da_trace_entry,da_trace_exit use da_transfer_model, only : da_transfer_wrftltoxa,da_transfer_xatowrftl, & da_transfer_xatowrftl_adj,da_transfer_wrftltoxa_adj,da_transfer_wrftoxb - ! Don't use, as we pass a 3D array into a 1D one - ! use da_wrf_interfaces, only : wrf_dm_bcast_real + use da_wrf_interfaces, only : wrf_dm_bcast_real use da_wrf_interfaces, only : wrf_debug, wrf_shutdown use da_wrfvar_io, only : da_med_initialdata_output,da_med_initialdata_input use da_vtox_transforms, only : da_transform_xtotb_lin, & diff --git a/var/da/da_tools/da_wrf_interfaces.f90 b/var/da/da_tools/da_wrf_interfaces.f90 index 6b37b65cfb..3dd99f1585 100644 --- a/var/da/da_tools/da_wrf_interfaces.f90 +++ b/var/da/da_tools/da_wrf_interfaces.f90 @@ -8,7 +8,7 @@ end subroutine disable_quilting interface subroutine wrf_dm_bcast_real (buf, n1) integer, intent(in) :: n1 - real, intent(inout) :: buf(:) + real, intent(inout) :: buf(*) end subroutine wrf_dm_bcast_real end interface @@ -25,12 +25,36 @@ real function wrf_dm_sum_real (inval) end function wrf_dm_sum_real end interface + interface + subroutine wrf_dm_bcast_integer(buf, n1) + implicit none + integer, intent(in) :: n1 + integer, intent(inout) :: buf(*) + end subroutine wrf_dm_bcast_integer + end interface + interface integer function wrf_dm_sum_integer (inval) integer, intent(in) :: inval end function wrf_dm_sum_integer end interface + interface + subroutine wrf_dm_bcast_string(buf, n1) + implicit none + integer, intent(in) :: n1 + character*(*), intent(inout) :: buf(*) + end subroutine wrf_dm_bcast_string + end interface + + interface + subroutine wrf_dm_bcast_bytes(buf, size) + implicit none + integer, intent(in) :: size + integer, intent(inout) :: buf(*) + end subroutine wrf_dm_bcast_bytes + end interface + interface subroutine wrf_patch_to_global_real (buf,globbuf,domdesc,stagger, & ordering,& @@ -128,14 +152,6 @@ subroutine wrf_debug(level , str) end subroutine wrf_debug end interface - interface - subroutine wrf_dm_bcast_integer(buf, n1) - implicit none - integer, intent(in) :: n1 - integer, intent(inout) :: buf(:) - end subroutine wrf_dm_bcast_integer - end interface - interface subroutine setup_timekeeping(grid) use module_domain, only : domain diff --git a/var/da/da_transfer_model/da_transfer_model.f90 b/var/da/da_transfer_model/da_transfer_model.f90 index 1bd9e77c81..9bb4f665c7 100644 --- a/var/da/da_transfer_model/da_transfer_model.f90 +++ b/var/da/da_transfer_model/da_transfer_model.f90 @@ -63,9 +63,7 @@ module da_transfer_model use da_vtox_transforms, only : da_get_vpoles use da_radar, only : zlcl_mean use da_gpseph, only : da_gpseph_init - ! Do not use line below, because it shows that we are passing a scalar to - ! an array - ! use da_wrf_interfaces, only : wrf_dm_bcast_real + use da_wrf_interfaces, only : wrf_dm_bcast_real #ifdef VAR4D use da_4dvar, only : model_grid, push_ad_forcing, push_tl_pert, pop_tl_pert, kj_swap, & kj_swap_reverse, model_config_flags, g_couple, g_stuff_bdy, a_couple, a_stuff_bdy, & diff --git a/var/da/da_transfer_model/da_transfer_wrftoxb.inc b/var/da/da_transfer_model/da_transfer_wrftoxb.inc index cfc549e563..e836223d4a 100644 --- a/var/da/da_transfer_model/da_transfer_wrftoxb.inc +++ b/var/da/da_transfer_model/da_transfer_wrftoxb.inc @@ -21,7 +21,7 @@ subroutine da_transfer_wrftoxb(xbx, grid, config_flags) character(len=19) :: current_date - real :: loc_psac_mean + real :: loc_psac_mean(1) real, dimension(jds:jde) :: loc_latc_mean @@ -911,12 +911,12 @@ subroutine da_transfer_wrftoxb(xbx, grid, config_flags) if (test_dm_exact) then ! Broadcast result from monitor to other tasks. call wrf_dm_bcast_real(loc_psac_mean, 1) - xbx % psac_mean = loc_psac_mean + xbx % psac_mean = loc_psac_mean(1) ! Broadcast result from monitor to other tasks. call wrf_dm_bcast_real(loc_latc_mean, (jde-jds+1)) xbx % latc_mean = loc_latc_mean else - xbx % psac_mean = wrf_dm_sum_real(loc_psac_mean) + xbx % psac_mean = wrf_dm_sum_real(loc_psac_mean(1)) call wrf_dm_sum_reals(loc_latc_mean, xbx % latc_mean) end if