/********************************************************************** * TDRP params for Grib2toMdv **********************************************************************/ //====================================================================== // // Grib2toMdv PARAMETER FILE. // // Grib2toMdv creates MDV from grib2 data files. // //====================================================================== //====================================================================== // // PROGRAM MODES OF OPERATION. // //====================================================================== ///////////// debug /////////////////////////////////// // // Debug option. // 0 = No Debug info // 1 = Regular Debug info // 2 = Full Grib2 file output (see printSec params). // Type: int // debug = 2; ///////////// instance //////////////////////////////// // // Instance. // Process instance for registration with process mapper. // Type: string // instance = "gefsPgrb2ap5"; ///////////// input_dir /////////////////////////////// // // Input directory. // Directory which contains input grib2 files. Used only if files are // not specified on the command line. // Type: string // input_dir = "/d1/fieldData/EpochOps/raw/gefsPgrb2ap5"; ///////////// input_suffix //////////////////////////// // // Input file suffix. // Input file suffixes will be checked against this string. Used only if // files are not specified on the command line. // Type: string // input_suffix = ""; ///////////// input_substring ///////////////////////// // // Input file substring check. // Input files will be checked against this string.Can be used to filter // different forecast times.Used only if files are not specified on the // command line. // Type: string // input_substring = ""; ///////////// max_input_data_age ////////////////////// // // Max age (in seconds) of input data. // Used only if files are not specified on the command line. // Minimum val: 60 // Type: long // max_input_data_age = 10800; //====================================================================== // // PRINT SECTIONS PARAMETERS. // // Parameters only used with -printSec or debug > 1 // For each grib message prints the sections defined below. // //====================================================================== ///////////// printSec_is ///////////////////////////// // // If TRUE prints the Indicator Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_is = FALSE; ///////////// printSec_ids //////////////////////////// // // If TRUE prints the Identification Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_ids = TRUE; ///////////// printSec_lus //////////////////////////// // // If TRUE prints the Local Use Section (if present). // Only prints with -printSec or debug > 1. // Type: boolean // printSec_lus = FALSE; ///////////// printSec_gds //////////////////////////// // // If TRUE prints the Grid Definition Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_gds = TRUE; ///////////// printSec_pds //////////////////////////// // // If TRUE prints the Product Definition Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_pds = TRUE; ///////////// printSec_drs //////////////////////////// // // If TRUE prints the Data Representation Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_drs = FALSE; ///////////// printSec_bms //////////////////////////// // // If TRUE prints the Bit-map Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_bms = FALSE; ///////////// printSec_ds ///////////////////////////// // // If TRUE prints the Data Section. // Only prints with -printSec or debug > 1. // Type: boolean // printSec_ds = FALSE; //====================================================================== // // MDV OUTPUT PARAMETERS. // //====================================================================== ///////////// write_forecast ////////////////////////// // // Write mdv files in a forecast directory structure. // If this is true, mdv files will be written in the rap forecast // directory structure. Note that if write_non_forecast is also set to // true, two mdv files will be written. // Type: boolean // write_forecast = TRUE; ///////////// forecast_mdv_url //////////////////////// // // Url for mdv files in forecast structure. // Type: string // forecast_mdv_url = "mdvp:://localhost::EpochOps/mdv/model/gefs/$(ENSEMBLE_MEMBER)"; ///////////// write_non_forecast ////////////////////// // // Write mdv files in a non-forecast directory structure. // If this is true, mdv files will be written in the regular // (non-forecast) rap directory structure. Note that if write_forecast // is also set to true, two mdv files will be written. Note also that // this option allows for overwriting files, since the forecast time // will be used as the data time in this case. This is a temporary // option to allow for easier display of the data. // Type: boolean // write_non_forecast = FALSE; ///////////// non_forecast_mdv_url //////////////////// // // Url for mdv files in non-forecast structure. // Type: string // non_forecast_mdv_url = "mdvp:://localhost::./mdv"; ///////////// non_forecast_timestamp ////////////////// // // This parameter allows user to timestamp non-forecast mdv files based // on the model's run time or the forecast time. // The choices are TIMESTAMP_GEN_TIME and TIMESTAMP_FCAST_TIME. // // Type: enum // Options: // TIMESTAMP_GEN_TIME // TIMESTAMP_FCAST_TIME // non_forecast_timestamp = TIMESTAMP_FCAST_TIME; ///////////// writeLdataInfo ////////////////////////// // // Write _latest_data_info files for output data. // If false, will suppress writing of _latest_data_info files. // Type: boolean // writeLdataInfo = TRUE; ///////////// data_set_info /////////////////////////// // // Data set info. // This is placed in the MDV master header for documentation purposes. // Type: string // data_set_info = "Converted to MDV with Grib2toMdv."; ///////////// data_set_name /////////////////////////// // // Data set name. // This is placed in the MDV master header for documentation purposes. // Type: string // data_set_name = "GEFS model output."; ///////////// data_set_source ///////////////////////// // // Data set source details. // This is placed in the MDV master header for documentation purposes. // Type: string // data_set_source = "Grib2."; ///////////// process_everything ////////////////////// // // Flag to process all fields. // If TRUE, all fields will be processed. // If FALSE, only fields listed in output_fields list will be processed. // Type: boolean // process_everything = FALSE; ///////////// output_fields /////////////////////////// // // List of output fields, which are descibed by the field parameter and // vertical level type. // // To determine the available params and levels, use the command line // argument -printSummary -file [filename] // No Mdv output will be created, only a list of params and associated // levels contained in the GRIB file. // Note: process_everything must be set to FALSE to use this list. // // out_field_t structure definition: // param:string GRIB2 product ID. // level:string GRIB2 level ID. // mdv_name:string MDV short field name. Overrides default name. // Use empty string to keep default (param) name. // out_units:out_units_t simple unit conversion utility. Options are: // NO_CHANGE -- no change to units // MPS_TO_KNOTS -- convert m/s to knots // M_TO_KM -- convert meters to kilometers // M_TO_FT -- convert meters to feet, // M_TO_MI -- convert meters to miles, // M_TO_100FT -- convert meters to 100's of feet, // flight levels // PASCALS_TO_MBAR -- convert pascals to millibars // KELVIN_TO_CELCIUS -- convert degrees kelvin to to degrees // celcius // KGPKG_TO_GPKG -- convert kilogram per kilogram to gram // per kilogram // PERCENT_TO_FRACTION -- convert percentage to fraction, values // between 0 and 1 // FRACTION_TO_PERCENT -- convert fraction to percentage, values // between 0 and 100 // // upper_range_limit:double upper limit threshold for field. // lower_range_limit:double lower limit threshold for field. // When both upper and lower limits are set // to zero no thresholds are applied. // encoding_type:encoding_type_t Output variable encoding type // qc_default_type:qc_default_t Replacement value for inputs outside // of the range_limit // qc_default_value:double User defined replacement value. // vert_level_min: minimum integer level that will be processed(If set // to -1, // no restrictions will be set.) // vert_level_max: maximum integer level that will be processed(If set // to -1, // no restrictions will be set.) // vert_level_dz: integer change in vertical levels that will be // processed. // // Default behavior is to process everything with no changes. // // // Type: struct // typedef struct { // string param; // string level; // string mdv_name; // out_units_t units; // Options: // NO_CHANGE // MPS_TO_KNOTS // M_TO_KM // M_TO_100FT // PASCALS_TO_MBAR // KELVIN_TO_CELCIUS // KGPKG_TO_GPKG // PERCENT_TO_FRACTION // FRACTION_TO_PERCENT // M_TO_FT // M_TO_MI // M_TO_KFT // MM_S_TO_MM_HR // double upper_range_limit; // double lower_range_limit; // encoding_type_t encoding_type; // Options: // ENCODING_ASIS // ENCODING_INT8 // ENCODING_INT16 // ENCODING_FLOAT32 // qc_default_t qc_default_type; // Options: // BAD_VALUE // UNKNOWN_VALUE // USER_DEFINED // double qc_default_value; // int vert_level_min; // int vert_level_max; // int vert_level_dz; // boolean use_additional_bad_data_value; // double additional_bad_data_value; // boolean use_additional_missing_data_value; // double additional_missing_data_value; // } // // 1D array - variable length. // output_fields = { #{"CWAT_PERT$(ENSEMBLE_NUMBER)", "EATM", "CWAT", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"CAPE_PERT$(ENSEMBLE_NUMBER)", "SPDL", "CAPE", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, #{"4LFTX_PERT$(ENSEMBLE_NUMBER)", "SFC", "4LFTX", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, #{"PRATE6Hr_AVG_PERT$(ENSEMBLE_NUMBER)", "SFC", "PRATE6Hr", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"APCP3Hr_PERT$(ENSEMBLE_NUMBER)", "SFC", "APCP3Hr", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"APCP6Hr_PERT$(ENSEMBLE_NUMBER)", "SFC", "APCP6Hr", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, #{"ACPCP6Hr_PERT$(ENSEMBLE_NUMBER)", "SFC", "ACPCP6Hr", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"PWAT_PERT$(ENSEMBLE_NUMBER)", "EATM", "PWAT", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"CIN_PERT$(ENSEMBLE_NUMBER)", "SPDL", "CIN", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"TMP_PERT$(ENSEMBLE_NUMBER)", "HTGL", "TMP", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"RH_PERT$(ENSEMBLE_NUMBER)", "HTGL", "RH", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"TCDC6Hr_AVG_PERT$(ENSEMBLE_NUMBER)", "EATM", "TCDC6Hr", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"PRMSL_PERT$(ENSEMBLE_NUMBER)", "MSL", "PRMSL", NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"ULWRF3Hr_AVG_PERT$(ENSEMBLE_NUMBER)","NTAT", "ULWRF3Hr",NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"ULWRF6Hr_AVG_PERT$(ENSEMBLE_NUMBER)","NTAT", "ULWRF6Hr",NO_CHANGE, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0}, {"PRES_PERT$(ENSEMBLE_NUMBER)","CCTL", "PRES_CCTL",PASCALS_TO_MBAR, 0, 0, ENCODING_FLOAT32, BAD_VALUE, 0, -1, -1, 1, FALSE, 0, FALSE, 0} }; ///////////// encoding_type /////////////////////////// // // File encoding type, Used only when process_everything is true. // // Type: enum // Options: // ENCODING_ASIS // ENCODING_INT8 // ENCODING_INT16 // ENCODING_FLOAT32 // encoding_type = ENCODING_FLOAT32; ///////////// compression_type //////////////////////// // // File compression type, Used only when process_everything is true. // // Type: enum // Options: // COMPRESSION_ASIS // COMPRESSION_NONE // COMPRESSION_RLE // COMPRESSION_LZO // COMPRESSION_ZLIB // COMPRESSION_BZIP // COMPRESSION_GZIP // compression_type = COMPRESSION_GZIP; ///////////// remap_output //////////////////////////// // // If TRUE remaps output. // Type: boolean // remap_output = FALSE; ///////////// out_projection_info ///////////////////// // // This is the user defined projection. // If remap_output is true this defines the projection to remap too.The // choice of projections are PROJ_LATLON, PROJ_LAMBERT_CONF and // PROJ_FLAT. PROJ_LATLON is a latitude/longitude projection, and if it // is chosen the remaining parameters can be ignored. PROJ_FLAT is a // flat projection, and if it is chosen the parameters rotation, // origin_lat, origin_lon must be set. PROJ_LAMBERT_CONF is a Lambert // conformal projection, and if it is chosen the parameters origin_lat, // origin_lon, ref_lat_1 and ref_lat_2 must be set. // // Type: struct // typedef struct { // projection_t type; // Options: // PROJ_LATLON // PROJ_LAMBERT_CONF // PROJ_FLAT // double rotation; // double origin_lat; // double origin_lon; // double ref_lat_1; // double ref_lat_2; // } // // out_projection_info = { PROJ_LATLON, 0, -90, 0, 25, 25 }; ///////////// out_grid_info /////////////////////////// // // This is the user defined grid. // if remap_output is true this defines the grid info for the remap. // // Type: struct // typedef struct { // int nx; // int ny; // double minx; // double miny; // double dx; // double dy; // } // // out_grid_info = { 360, 181, 0, -90, 1, 1 }; ///////////// override_vlevels //////////////////////// // // Option to override the vlevels in the vlevel header of the specified // level types. // If not empty, will replace the vlevels of variables with the // specified vlevel type with those specified in 'vlevel_array'. // Normal vlevel types to replace are: 'SIGL', 'SIGMA', or 'HYBL'. // Please note using this functionality can create incorrect levels, use // carefully!. // Type: string // override_vlevels = ""; ///////////// vlevel_array //////////////////////////// // // vlevel values to override what is already in the file. // See 'override_vlevels'. // Type: double // 1D array - variable length. // vlevel_array = { 0 };