/** * @file ParmsPrecipAccumCalc.hh * @brief User defined parameters for PrecipAccumCalc application. * @class ParmsPrecipAccumCalc * @brief User defined parameters for PrecipAccumCalc application. */ # ifndef PARMS_PRECIPACCUM_HH # define PARMS_PRECIPACCUM_HH #include <ConvWx/ParmFcst.hh> #include <ConvWxIO/ParmFcstIO.hh> #include <ConvWx/ParmMain.hh> #include <ConvWx/ParmProjection.hh> class MultiGrid; class ParmsPrecipAccumCalc { public: /** * Return value for ParmsCalbrate methods * PARMS_SUCCESS indicates successful method execution * PARMS_FAILURE indicates unsuccessful method execution */ enum status {PARMS_SUCCESS, PARMS_FAILURE}; enum outputDataType_t {INT8, INT16, FLOAT32}; outputDataType_t outputDataType; /** * Parameters to define message logging, process registration and triggering */ ParmMain main; /** * Parameters to defining map projection */ ParmProjection proj; /** * Parameters that specify the model data input */ std::vector<ParmFcstIO> modelInput; /** * Url strings that specify the model data input */ std::vector<std::string> modelUrls; /** * Parameters for output climatological dataset */ ParmFcst modelOut; /** * Container for forecast lead times in seconds */ std::vector <int> leadSeconds; /** * 3 and 6 hour precip accumulation field names */ std::string hr3AccumName; std::string hr6AccumName; /** * 3 hour accumulation output directory tail */ std::string hr3AccumOutputDirTail; /** * Flag to indicate subtraction of accumulation fields will be prevented * from generating negative numbers less than -1; */ bool forceAccumNonNegative; /** * 3 hour average Upward Long-Wave Rad. Flux */ std::string hr3UlwrfName; /** * 6 hour average Upward Long-Wave Rad. Flux */ std::string hr6UlwrfName; /** * Names of additional fields to be passed through */ std::vector<std::string> extraDataFields; /** * Number of threads processing the data at input data url */ int numThreads; /** * All the long names, 3 hours */ std::vector<std::string> longNames3hr; /** * All the long names, 6 hours */ std::vector<std::string> longNames6hr; /** * Mapping for field names long/short, 6 hour */ std::vector<std::pair<std::string,std::string> > mdv6hrShortToLong; /** * Mapping for field names long/short, 3 hour */ std::vector<std::pair<std::string,std::string> > mdv3hrShortToLong; /** * Convert short to long name * @return long name * @param[in] hr 3 or 6 * @param[in] shortName */ std::string shortNameToLongName(int hr, const std::string &shortName) const; /** * Convert long to short name * @return short name * @param[in] hr 3 or 6 * @param[in] longName */ std::string longNameToShortName(int hr, const std::string &longName) const; /** * Convert field names from long to short using the converter methods * @param[in] hr 3 or 6 * @param[in] grids Grid data to change field names * @return true for success */ bool longToShort(int hr, MultiGrid &grids) const; protected: private: }; # endif // PARMS_PRECIPACCUMCALC_HH