Skip to content

Commit

Permalink
Per #1020, update Grid-Stat to write NetCDF output using name_attr, l…
Browse files Browse the repository at this point in the history
…evel_attr, and units_attr instead of name(), level_name(), and units(). This change should be made everywhere NetCDF output files are written.
  • Loading branch information
JohnHalleyGotway committed Jun 24, 2020
1 parent fb24273 commit 14bf9f0
Showing 1 changed file with 52 additions and 52 deletions.
104 changes: 52 additions & 52 deletions met/src/tools/core/grid_stat/grid_stat.cc
Original file line number Diff line number Diff line change
Expand Up @@ -2413,10 +2413,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
fcst_name = obs_name = fcst_obs_name = conf_info.vx_opt[i_vx].var_name;
}
else {
fcst_name << conf_info.vx_opt[i_vx].fcst_info->name() << "_"
<< conf_info.vx_opt[i_vx].fcst_info->level_name();
obs_name << conf_info.vx_opt[i_vx].obs_info->name() << "_"
<< conf_info.vx_opt[i_vx].obs_info->level_name();
fcst_name << conf_info.vx_opt[i_vx].fcst_info->name_attr() << "_"
<< conf_info.vx_opt[i_vx].fcst_info->level_attr();
obs_name << conf_info.vx_opt[i_vx].obs_info->name_attr() << "_"
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
fcst_obs_name << fcst_name << "_" << obs_name;
}

Expand Down Expand Up @@ -2467,10 +2467,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
}
name_att = shc.get_fcst_var();
long_att << cs_erase
<< conf_info.vx_opt[i_vx].fcst_info->name() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_name();
<< conf_info.vx_opt[i_vx].fcst_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_attr();
level_att = shc.get_fcst_lev();
units_att = conf_info.vx_opt[i_vx].fcst_info->units();
units_att = conf_info.vx_opt[i_vx].fcst_info->units_attr();
}
else if(field_name == "OBS") {
var_name << cs_erase << field_name << "_"
Expand All @@ -2481,10 +2481,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
}
name_att = shc.get_obs_var();
long_att << cs_erase
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(field_name == "DIFF") {
var_name << cs_erase << field_name << "_"
Expand All @@ -2493,16 +2493,16 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
<< "Forecast " << shc.get_fcst_var()
<< " minus Observed " << shc.get_obs_var();
long_att << cs_erase
<< conf_info.vx_opt[i_vx].fcst_info->name() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_name() << " and "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].fcst_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_attr() << " and "
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att << cs_erase
<< shc.get_fcst_lev() << " and "
<< shc.get_obs_lev();
units_att << cs_erase
<< conf_info.vx_opt[i_vx].fcst_info->units() << " and "
<< conf_info.vx_opt[i_vx].obs_info->units();
<< conf_info.vx_opt[i_vx].fcst_info->units_attr() << " and "
<< conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(field_name == "CLIMO_MEAN") {
var_name << cs_erase << field_name << "_"
Expand All @@ -2514,46 +2514,46 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
name_att = shc.get_obs_var();
long_att << cs_erase
<< "Climatology mean for "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(field_name == "CLIMO_STDEV") {
var_name << cs_erase << field_name << "_"
<< obs_name << var_suffix << "_" << mask_str;
name_att = shc.get_obs_var();
long_att << cs_erase
<< "Climatology standard deviation for "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(field_name == "CLIMO_CDF") {
var_name << cs_erase << field_name << "_"
<< obs_name << var_suffix << "_" << mask_str;
name_att = shc.get_obs_var();
long_att << cs_erase
<< "Climatology cumulative distribution function for "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(strncmp(field_name.c_str(), "CLIMO_CDP", 9) == 0) {
var_name << cs_erase
<< field_name << "_"
<< conf_info.vx_opt[i_vx].obs_info->name() << "_"
<< conf_info.vx_opt[i_vx].obs_info->level_name()
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << "_"
<< conf_info.vx_opt[i_vx].obs_info->level_attr()
<< var_suffix << "_" << mask_str;
name_att = shc.get_obs_var();
long_att << cs_erase
<< "Climatology distribution percentile thresholds for "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(check_reg_exp("FCST_XGRAD_", field_name.c_str()) ||
check_reg_exp("FCST_YGRAD_", field_name.c_str())) {
Expand All @@ -2566,10 +2566,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
name_att = shc.get_fcst_var();
long_att << cs_erase
<< "Gradient of "
<< conf_info.vx_opt[i_vx].fcst_info->name() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_name();
<< conf_info.vx_opt[i_vx].fcst_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_attr();
level_att = shc.get_fcst_lev();
units_att = conf_info.vx_opt[i_vx].fcst_info->units();
units_att = conf_info.vx_opt[i_vx].fcst_info->units_attr();
}
else if(check_reg_exp("OBS_XGRAD_", field_name.c_str()) ||
check_reg_exp("OBS_YGRAD_", field_name.c_str())) {
Expand All @@ -2582,10 +2582,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
name_att = shc.get_obs_var();
long_att << cs_erase
<< "Gradient of "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else if(check_reg_exp("FCST_DMAP_", field_name.c_str())) {
var_name << cs_erase << field_name << "_"
Expand All @@ -2597,10 +2597,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
name_att = shc.get_fcst_var();
long_att << cs_erase
<< "Distance Map for "
<< conf_info.vx_opt[i_vx].fcst_info->name() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_name();
<< conf_info.vx_opt[i_vx].fcst_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_attr();
level_att = shc.get_fcst_lev();
units_att = conf_info.vx_opt[i_vx].fcst_info->units();
units_att = conf_info.vx_opt[i_vx].fcst_info->units_attr();
}
else if(check_reg_exp("OBS_DMAP_", field_name.c_str())) {
var_name << cs_erase << field_name << "_"
Expand All @@ -2612,10 +2612,10 @@ void write_nc(const ConcatString &field_name, const DataPlane &dp,
name_att = shc.get_obs_var();
long_att << cs_erase
<< "Distance Map for "
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
level_att = shc.get_obs_lev();
units_att = conf_info.vx_opt[i_vx].obs_info->units();
units_att = conf_info.vx_opt[i_vx].obs_info->units_attr();
}
else {
mlog << Error << "\nwrite_nc() -> "
Expand Down Expand Up @@ -2703,10 +2703,10 @@ void write_nbrhd_nc(const DataPlane &fcst_dp, const DataPlane &obs_dp,
fcst_name = obs_name = conf_info.vx_opt[i_vx].var_name;
}
else {
fcst_name << conf_info.vx_opt[i_vx].fcst_info->name() << "_"
<< conf_info.vx_opt[i_vx].fcst_info->level_name();
obs_name << conf_info.vx_opt[i_vx].obs_info->name() << "_"
<< conf_info.vx_opt[i_vx].obs_info->level_name();
fcst_name << conf_info.vx_opt[i_vx].fcst_info->name_attr() << "_"
<< conf_info.vx_opt[i_vx].fcst_info->level_attr();
obs_name << conf_info.vx_opt[i_vx].obs_info->name_attr() << "_"
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
}

// Append nc_pairs_var_suffix config file entry
Expand Down Expand Up @@ -2767,12 +2767,12 @@ void write_nbrhd_nc(const DataPlane &fcst_dp, const DataPlane &obs_dp,

// Add variable attributes for the forecast field
add_var_att_local(&fcst_var, "name", shc.get_fcst_var());
att_str << cs_erase << conf_info.vx_opt[i_vx].fcst_info->name()
att_str << cs_erase << conf_info.vx_opt[i_vx].fcst_info->name_attr()
<< " at "
<< conf_info.vx_opt[i_vx].fcst_info->level_name();
<< conf_info.vx_opt[i_vx].fcst_info->level_attr();
add_var_att_local(&fcst_var, "long_name", att_str);
add_var_att_local(&fcst_var, "level", shc.get_fcst_lev());
add_var_att_local(&fcst_var, "units", conf_info.vx_opt[i_vx].fcst_info->units());
add_var_att_local(&fcst_var, "units", conf_info.vx_opt[i_vx].fcst_info->units_attr());
write_netcdf_var_times(&fcst_var, fcst_dp);
add_att(&fcst_var, "_FillValue", bad_data_float);
add_var_att_local(&fcst_var, "masking_region", mask_str);
Expand All @@ -2794,11 +2794,11 @@ void write_nbrhd_nc(const DataPlane &fcst_dp, const DataPlane &obs_dp,
// Add variable attributes for the observation field
add_var_att_local(&obs_var, "name", shc.get_obs_var());
att_str << cs_erase
<< conf_info.vx_opt[i_vx].obs_info->name() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_name();
<< conf_info.vx_opt[i_vx].obs_info->name_attr() << " at "
<< conf_info.vx_opt[i_vx].obs_info->level_attr();
add_var_att_local(&obs_var, "long_name", att_str);
add_var_att_local(&obs_var, "level", shc.get_obs_lev());
add_var_att_local(&obs_var, "units", conf_info.vx_opt[i_vx].obs_info->units());
add_var_att_local(&obs_var, "units", conf_info.vx_opt[i_vx].obs_info->units_attr());
write_netcdf_var_times(&obs_var, obs_dp);
add_att(&obs_var, "_FillValue", bad_data_float);
add_var_att_local(&obs_var, "masking_region", mask_str);
Expand Down

0 comments on commit 14bf9f0

Please sign in to comment.