本文整理汇总了C++中MetadataInfo::SetDescription方法的典型用法代码示例。如果您正苦于以下问题:C++ MetadataInfo::SetDescription方法的具体用法?C++ MetadataInfo::SetDescription怎么用?C++ MetadataInfo::SetDescription使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类MetadataInfo
的用法示例。
在下文中一共展示了MetadataInfo::SetDescription方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: MetadataInformation
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char* MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Zhiqiang Yu");
mdi.SetClass("erosion", "Calculate the amount of sediment yield.");
mdi.SetDescription("use MUSLE method to calcualte sediment yield of each cell");
mdi.SetEmail("");
mdi.SetID("MUSLE_I30");
mdi.SetName("MUSLE_I30");
mdi.SetVersion("0.5");
mdi.SetWebsite("");
mdi.SetHelpfile("MUSLE_I30.chm");
mdi.AddParameter("cellwidth","m","the width (length) of cell","mask.asc",DT_Single);
mdi.AddParameter("USLE_C","","the cover management factor","ParameterDB_Sediment",DT_Raster1D);
mdi.AddParameter("USLE_P","","the erosion control practice factor ","ParameterDB_Sediment",DT_Raster1D);
mdi.AddParameter("USLE_K","","the soil erodibility factor","ParameterDB_Sediment",DT_Raster1D);
mdi.AddParameter("flow_acc","","the number of flow accumulation cells of each cell","ParameterDB_Sediment",DT_Raster1D);
mdi.AddParameter("slope","%","slope of the cell","ParameterDB_WaterBalance",DT_Raster1D);
mdi.AddParameter("T0_s","hr","time of concentration","ParameterDB_Sediment",DT_Raster1D);
mdi.AddParameter("adj_pkr","","peak rate adjustment factor","ParameterDB_Sediment",DT_Single);
mdi.AddParameter("rain_yrs","","number of yeares of data used to obtain values for RAINHHMX","ParameterDB_Sediment",DT_Single);
mdi.AddParameter("p_stat","","static information of precipitation","HydroclimateDB",DT_Array2D);
//input from other module
mdi.AddInput("D_SURU","mm","surface runoff","Module",DT_Raster1D); //from depression module
mdi.AddInput("D_SNAC","mm","snow accumulation","Module",DT_Raster1D); //from snow water balance module
mdi.AddInput("D_P","mm","precipitation","Module",DT_Raster1D); //from interpolation module
mdi.AddInput("D_SNME","mm","snow melt","Module",DT_Raster1D); //from snow melt module
// set the output variables
mdi.AddOutput("SOER","metric tons", "distribution of soil erosion", DT_Raster1D);
// write out the XML file.
string res = mdi.GetXMLDocument();
char* tmp = new char[res.size()+1];
strprintf(tmp, res.size()+1, "%s", res.c_str());
return tmp;
}
示例2: MetadataInformation
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char* MetadataInformation()
{
string res = "";
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Junzhi Liu");
mdi.SetClass("Surface runoff", "Calculate infiltration and excess precipitation using saturation excess mechanism.");
mdi.SetDescription("saturation excess method to calculate infiltration and excess precipitation.");
mdi.SetEmail("[email protected]");
mdi.SetHelpfile("SUR_ES.chm");
mdi.SetID("SUR_ES");
mdi.SetName("SUR_ES");
mdi.SetVersion("0.1");
mdi.SetWebsite("http://www.website.com");
mdi.AddParameter("TimeStep","s","time step","file.in",DT_Single);
mdi.AddParameter("Conductivity","mm/h","Soil hydraulic conductivity","ParameterDB_WaterBalance", DT_Raster);
mdi.AddParameter("Moist_in","%","Initial soil moisture","ParameterDB_WaterBalance", DT_Raster);
mdi.AddParameter("Porosity", "%", "Soil porosity","ParameterDB_WaterBalance", DT_Raster);
mdi.AddParameter("FieldCap", "%", "Field capacity","ParameterDB_WaterBalance", DT_Raster);
mdi.AddParameter("RootDepth", "mm", "Root depth","ParameterDB_WaterBalance", DT_Raster);
mdi.AddInput("D_TMin","degree Celsius","The minimum air temperature","Module",DT_Raster); //from interpolation module
mdi.AddInput("D_TMax","degree Celsius","The maximum air temperature","Module",DT_Raster); //from interpolation module
mdi.AddInput("D_NEPR","mm","The net precipitation","Module", DT_Raster);
mdi.AddInput("D_DPST","mm","The depression storage","Module",DT_Raster);
mdi.AddInput("D_SOTE","degree Celsius","The soil temperature","Module",DT_Raster); //from soil temperature module
mdi.AddInput("D_SNAC","mm","The snow accumulation","Module",DT_Raster); //from snow accumulation module
mdi.AddInput("D_SNME","mm","The snowmelt","Module",DT_Raster); //from snowmelt module
mdi.AddOutput("SOMO", "%", "soil moisture", DT_Raster);
mdi.AddOutput("EXCP", "mm","The excess precipitation", DT_Raster);
mdi.AddOutput("INFIL","mm","Infiltration map of watershed", DT_Raster);
res = mdi.GetXMLDocument();
char* tmp = new char[res.size()+1];
strprintf(tmp, res.size()+1, "%s", res.c_str());
return tmp;
}
示例3: MetadataInformation
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char* MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Zhiqiang Yu");
mdi.SetClass("erosion", "Calculate the amount of sediment yield.");
mdi.SetDescription("use MUSLE method to calcualte sediment yield of each cell");
mdi.SetEmail("[email protected]");
mdi.SetID("MUSLE_AS");
mdi.SetName("MUSLE_AS");
mdi.SetVersion("0.5");
mdi.SetWebsite("http://seims.github.io/SEIMS");
mdi.SetHelpfile("MUSLE_AS.chm");
//3 grid parameter
mdi.AddParameter("CellWidth","m","the width (length) of cell","mask.asc",DT_Single);
mdi.AddParameter("USLE_C","","the cover management factor","ParameterDB_Sediment",DT_Raster);
mdi.AddParameter("USLE_P","","the erosion control practice factor ","ParameterDB_Sediment",DT_Raster);
mdi.AddParameter("USLE_K","","the soil erodibility factor","ParameterDB_Sediment",DT_Raster);
mdi.AddParameter("acc","","the number of flow accumulation cells of each cell","ParameterDB_Sediment",DT_Raster);
mdi.AddParameter("slope","%","slope of the cell","ParameterDB_WaterBalance",DT_Raster);
mdi.AddParameter("subbasin","","subbasin grid","ParameterDB_Snow", DT_Raster);
mdi.AddParameter("STREAM_LINK", "", "Stream link (id of reaches)", "ParameterDB_Discharge", DT_Raster);
//input from other module
mdi.AddInput("D_SURU","mm","surface runoff","Module",DT_Raster); //from depression module
mdi.AddInput("D_SNAC","mm","snow accumulation","Module",DT_Raster); //from snow water balance module
// set the output variables
mdi.AddOutput("SOER","metric tons", "distribution of soil erosion", DT_Raster);
mdi.AddOutput("USLE_LS","USLE LS factor", "USLE LS factor", DT_Raster);
mdi.AddOutput("SEDTOCH","metric tons", "sediment to channel", DT_Array1D); // added by wu hui
mdi.AddOutput("SEDTOCH_T","kg", "Total sediment flowing to channel", DT_Single); // added by wu hui
// write out the XML file.
string res = mdi.GetXMLDocument();
char* tmp = new char[res.size()+1];
strprintf(tmp, res.size()+1, "%s", res.c_str());
return tmp;
}
示例4: strprintf
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Junzhi Liu");
mdi.SetClass(MCLS_PERCO, MCLSDESC_PERCO);
mdi.SetDescription(MDESC_PER_PI);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetID(MID_PER_PI);
mdi.SetName(MID_PER_PI);
mdi.SetVersion("0.5");
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("PER_PI.chm");
mdi.AddParameter(Tag_TimeStep, UNIT_SECOND, UNIT_NON_DIM, File_Input, DT_Single);
mdi.AddParameter(VAR_T_SOIL, UNIT_TEMP_DEG, DESC_T_SOIL, Source_ParameterDB, DT_Single);
//mdi.AddParameter(VAR_SOILDEPTH, UNIT_LEN_M, DESC_SOILDEPTH, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOILLAYERS, UNIT_NON_DIM, DESC_SOILLAYERS, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_SOILTHICK, UNIT_DEPTH_MM, DESC_SOILTHICK, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_CONDUCT, UNIT_WTRDLT_MMH, DESC_CONDUCT, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_POREID, UNIT_NON_DIM, DESC_POREID, Source_ParameterDB, DT_Raster2D);
//mdi.AddParameter(VAR_POROST, UNIT_NON_DIM, DESC_POROST, Source_ParameterDB, DT_Raster2D); => VAR_SOL_UL
//mdi.AddParameter(VAR_FIELDCAP, UNIT_WAT_RATIO, DESC_FIELDCAP, Source_ParameterDB, DT_Raster2D); => VAR_SOL_AWC
//mdi.AddParameter(VAR_WILTPOINT,UNIT_WAT_RATIO, DESC_WILTPOINT, Source_ParameterDB, DT_Raster2D); => VAR_SOL_WPMM
mdi.AddParameter(VAR_SOL_UL, UNIT_DEPTH_MM, DESC_SOL_UL, Source_ParameterDB, DT_Raster2D); // m_sat
mdi.AddParameter(VAR_SOL_AWC, UNIT_DEPTH_MM, DESC_SOL_AWC, Source_ParameterDB, DT_Raster2D); // m_fc
mdi.AddParameter(VAR_SOL_WPMM, UNIT_DEPTH_MM, DESC_SOL_WPMM, Source_ParameterDB, DT_Raster2D); // m_wp
mdi.AddInput(VAR_SOTE, UNIT_TEMP_DEG, DESC_SOTE, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_INFIL, UNIT_DEPTH_MM, DESC_INFIL, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_SOL_ST, UNIT_DEPTH_MM, DESC_SOL_ST, Source_Module, DT_Raster2D);
mdi.AddInput(VAR_SOL_SW, UNIT_DEPTH_MM, DESC_SOL_SW, Source_Module, DT_Raster1D);
// set the output variables
mdi.AddOutput(VAR_PERCO, UNIT_DEPTH_MM, DESC_PERCO, DT_Raster2D);
string res = mdi.GetXMLDocument();
char *tmp = new char[res.size() + 1];
strprintf(tmp, res.size() + 1, "%s", res.c_str());
return tmp;
}
示例5: strprintf
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
string res;
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Alex Storey, Junzhi Liu");
mdi.SetClass(MCLS_INTERC, MCLSDESC_INTERC);
mdi.SetDescription(MDESC_PI_STORM);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetID(MID_PI_STORM);
mdi.SetName(MID_PI_STORM);
mdi.SetVersion("0.4");
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("");
// set the input variables (time series)
mdi.AddInput(VAR_PCP, UNIT_DEPTH_MM, DESC_PCP, Source_Module, DT_Raster1D);
mdi.AddParameter(VAR_SLOPE, UNIT_PERCENT, DESC_SLOPE, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(Tag_HillSlopeTimeStep, UNIT_SECOND, DESC_TIMESTEP, File_Input, DT_Single);
// set the parameters (non-time series)
mdi.AddParameter(VAR_INTERC_MAX, UNIT_DEPTH_MM, DESC_INTERC_MAX, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_INTERC_MIN, UNIT_DEPTH_MM, DESC_INTERC_MIN, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_PI_B, UNIT_NON_DIM, DESC_PI_B, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_INIT_IS, UNIT_NON_DIM, DESC_INIT_IS, Source_ParameterDB, DT_Single);
// set the output variables
mdi.AddOutput(VAR_INLO, UNIT_DEPTH_MM, DESC_INLO, DT_Raster1D);
mdi.AddOutput(VAR_NEPR, UNIT_DEPTH_MM, DESC_NEPR, DT_Raster1D);
// set the dependencies
mdi.AddDependency(MCLS_CLIMATE, MCLSDESC_CLIMATE);
// write out the XML file.
res = mdi.GetXMLDocument();
//return res;
char *tmp = new char[res.size() + 1];
strprintf(tmp, res.size() + 1, "%s", res.c_str());
return tmp;
}
示例6: strprintf
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Zhiqiang Yu");
mdi.SetClass(MCLS_OL_EROSION, MCLSDESC_OL_EROSION);
mdi.SetDescription(MDESC_MUSLE_AS);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetID(MID_MUSLE_AS);
mdi.SetName(MID_MUSLE_AS);
mdi.SetVersion("0.5");
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("MUSLE_AS.chm");
mdi.AddParameter(Tag_CellWidth, UNIT_LEN_M, DESC_CellWidth, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_DEPRATIO, UNIT_NON_DIM, DESC_DEPRATIO, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_USLE_K, UNIT_NON_DIM, DESC_USLE_K, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_USLE_C, UNIT_NON_DIM, DESC_USLE_C, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_USLE_P, UNIT_NON_DIM, DESC_USLE_P, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_ACC, UNIT_NON_DIM, DESC_ACC, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_SLOPE, UNIT_PERCENT, DESC_SLOPE, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_SUBBASIN_PARAM, UNIT_NON_DIM, DESC_SUBBASIN_PARAM, Source_ParameterDB, DT_Subbasin);
mdi.AddParameter(VAR_STREAM_LINK, UNIT_NON_DIM, DESC_STREAM_LINK, Source_ParameterDB, DT_Raster1D);
//input from other module
mdi.AddInput(VAR_FLOW_OL, UNIT_DEPTH_MM, DESC_OLFLOW, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_SNAC, UNIT_DEPTH_MM, DESC_SNAC, Source_Module, DT_Raster1D);
// set the output variables
mdi.AddOutput(VAR_SOER, UNIT_KG, DESC_SOER, DT_Raster1D);
mdi.AddOutput(VAR_USLE_LS, UNIT_NON_DIM, DESC_USLE_LS, DT_Raster1D);
// write out the XML file
string res = mdi.GetXMLDocument();
char *tmp = new char[res.size() + 1];
strprintf(tmp, res.size() + 1, "%s", res.c_str());
return tmp;
}
示例7: MetadataInformation
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char* MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Wu Hui");
mdi.SetClass(MCLS_INTERFLOW, MCLSDESC_INTERFLOW);
mdi.SetDescription(MDESC_IUH_IF);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetHelpfile("IUH_IF.chm");
mdi.SetID(MID_IUH_IF);
mdi.SetName(MID_IUH_IF);
mdi.SetVersion("0.1");
mdi.SetWebsite(SEIMS_SITE);
mdi.AddParameter(Tag_TimeStep, UNIT_TIMESTEP_HOUR, DESC_TIMESTEP, File_Input, DT_Single);
mdi.AddParameter(Tag_CellSize, UNIT_NON_DIM, DESC_CellSize, Source_ParameterDB, DT_Single);
mdi.AddParameter(Tag_CellWidth, UNIT_LEN_M, DESC_CellWidth, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_OL_IUH, UNIT_NON_DIM, DESC_OL_IUH, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SUBBSN, UNIT_NON_DIM, DESC_SUBBSN, Source_ParameterDB, DT_Raster1D);
//mdi.AddParameter("uhminCell","","start time of IUH for each grid cell","ParameterDB_Discharge",DT_Array1D);
//mdi.AddParameter("uhmaxCell","","end time of IUH for each grid cell","ParameterDB_Discharge",DT_Array1D);
mdi.AddInput(VAR_SSRU, UNIT_DEPTH_MM, DESC_SSRU, Source_Module, DT_Raster1D);
mdi.AddOutput(VAR_SBIF, UNIT_DEPTH_MM, DESC_SBIF, DT_Array1D);
// set the dependencies
mdi.AddDependency("SSR_DA","Subsurface Runoff module");
// write out the XML file.
string res = mdi.GetXMLDocument();
char* tmp = new char[res.size()+1];
strprintf(tmp, res.size()+1, "%s", res.c_str());
return tmp;
}
示例8: strprintf
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Junzhi Liu, Liangjun Zhu");
mdi.SetClass(MCLS_CLIMATE, MCLSDESC_CLIMATE);
mdi.SetDescription(MDESC_ITP);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetID(MID_ITP);
mdi.SetName(MID_ITP);
mdi.SetVersion("0.5");
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("");
//from parameter database, e.g., Weight_P, Weight_PET, Weight_T.
mdi.AddParameter(Tag_Weight, UNIT_NON_DIM, DESC_WEIGHT_ITP, Source_ParameterDB, DT_Array1D);
// from config.fig, e.g. Interpolation_P_1
mdi.AddParameter(Tag_VerticalInterpolation, UNIT_NON_DIM, DESC_VER_ITP, File_Config, DT_Single);
// these three parameters are just read when it will do vertical interpolation
mdi.AddParameter(VAR_DEM, UNIT_LEN_M, DESC_DEM, Source_ParameterDB, DT_Raster1D);//from spatial database
mdi.AddParameter(Tag_StationElevation, UNIT_LEN_M, Tag_StationElevation, Source_HydroClimateDB,
DT_Array1D);/// from stations table
// Lapse_rate is the combined lapse rate table name in HydroClimate database.
// TODO, currently, LapseRate is defined in ModuleFactory.cpp and not imported into MongoDB. By LJ
mdi.AddParameter(VAR_LAP_RATE, UNIT_LAP_RATE, DESC_LAP_RATE, Source_HydroClimateDB, DT_Array2D);
// This is the climate data of all sites.
// T means time series and it is same with first part of output id, e.g T_P. It may be P,PET,TMean, TMin or TMax data.
mdi.AddInput(DataType_Prefix_TS, UNIT_NON_DIM, DESC_NONE, Source_Module, DT_Array1D);
/// Must be "D". This is used to match with output id in file.out with data type.
mdi.AddOutput(DataType_Prefix_DIS, UNIT_NON_DIM, DESC_NONE, DT_Raster1D);
string res = mdi.GetXMLDocument();
char *tmp = new char[res.size() + 1];
strprintf(tmp, res.size() + 1, "%s", res.c_str());
return tmp;
}
示例9: MetadataInformation
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char* MetadataInformation()
{
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Chunping Ou");
mdi.SetClass("Percolation", "Calculate the amount of water percolated out of the root zone within the time step.");
mdi.SetDescription("The method relating percolation with soil moisture and pore size distribution index used in the original WetSpa will be the default method to estimate percolation out of the root zone.");
mdi.SetEmail("[email protected]");
mdi.SetID("Percolation");
mdi.SetName("Percolation");
mdi.SetVersion("0.5");
mdi.SetWebsite("http://seims.github.io/SEIMS");
mdi.SetHelpfile("Percolation.chm");
//mdi.AddParameter("t_soil","oC","threshold soil freezing temperature","ParameterDB_WaterBalance", DT_Single); //
mdi.AddParameter("DT_HS", "second", "time step for storm simulation","ParameterDB_WaterBalance", DT_Single);
mdi.AddParameter("CellWidth", "m", "Cell size", "file.in", DT_Single);
mdi.AddParameter("Conductivity","mm/h","saturation hydraulic conductivity","ParameterDB_WaterBalance",DT_Raster);
mdi.AddParameter("Porosity","m3/m3","soil porosity","ParameterDB_WaterBalance",DT_Raster);
//mdi.AddParameter("Residual","m3/m3","residual moisture content","ParameterDB_WaterBalance",DT_Raster);
mdi.AddParameter("Poreindex","-","pore size distribution index","ParameterDB_WaterBalance",DT_Raster);
mdi.AddParameter("FieldCap","m3/m3","Soil field capacity","ParameterDB_WaterBalance",DT_Raster);
mdi.AddParameter("RootDepth", "mm", "Root depth","ParameterDB_WaterBalance", DT_Raster);
//mdi.AddInput("D_SOTE","oC", "Soil Temperature","Module", DT_Raster); //soil temperature
mdi.AddInput("D_SOMO","mm","Distribution of soil moisture","Module",DT_Raster); //from soil water balance module 0
//mdi.AddInput("D_ES","mm","ES","Module",DT_Raster); //from actual evapotranspiration module, the output id may not be correct.
// set the output variables
mdi.AddOutput("PERCOLATION","mm", "Distribution of groundwater recharge (percolation)", DT_Raster);
// write out the XML file.
string res = mdi.GetXMLDocument();
char* tmp = new char[res.size()+1];
strprintf(tmp, res.size()+1, "%s", res.c_str());
return tmp;
}
示例10: strprintf
/// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
MetadataInfo mdi;
string res;
mdi.SetAuthor("Liang-Jun Zhu");
mdi.SetClass(MCLS_MGT, MCLSDESC_MGT);
mdi.SetDescription(MDESC_PLTMGT_SWAT);
mdi.SetID(MID_PLTMGT_SWAT);
mdi.SetName(MID_PLTMGT_SWAT);
mdi.SetVersion("0.1");
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("");
/// set parameters from database
mdi.AddParameter(VAR_CSWAT, UNIT_NON_DIM, DESC_CSWAT, Source_ParameterDB, DT_Single);
//mdi.AddParameter(VAR_BACT_SWF, UNIT_NON_DIM, DESC_BACT_SWF, Source_ParameterDB, DT_Single); ///TODO
mdi.AddParameter(Tag_CellWidth, UNIT_LEN_M, DESC_CellWidth, Source_ParameterDB, DT_Single);
/// basic parameters
mdi.AddParameter(VAR_SUBBASIN_PARAM, UNIT_NON_DIM, DESC_SUBBASIN_PARAM, Source_ParameterDB, DT_Subbasin);
mdi.AddParameter(VAR_SUBBSN, UNIT_NON_DIM, DESC_SUBBSN, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_MGT_FIELD, UNIT_NON_DIM, DESC_MGT_FIELD, Source_ParameterDB, DT_Raster1D);
/// soil
mdi.AddParameter(VAR_SOILLAYERS, UNIT_NON_DIM, DESC_SOILLAYERS, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_SOL_ZMX, UNIT_DEPTH_MM, DESC_SOL_ZMX, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_SOL_SUMAWC, UNIT_DEPTH_MM, DESC_SOL_SUMAWC, Source_ParameterDB, DT_Raster1D); /// m_soilSumFC
mdi.AddParameter(VAR_SOILDEPTH, UNIT_DEPTH_MM, DESC_SOILDEPTH, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOILTHICK, UNIT_DEPTH_MM, DESC_SOILTHICK, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_BD, UNIT_DENSITY, DESC_SOL_BD, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_CBN, UNIT_PERCENT, DESC_SOL_CBN, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_N, UNIT_CONT_KGHA, DESC_SOL_N, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_CLAY, UNIT_PERCENT, DESC_CLAY, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SILT, UNIT_PERCENT, DESC_SILT, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SAND, UNIT_PERCENT, DESC_SAND, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_ROCK, UNIT_PERCENT, DESC_ROCK, Source_ParameterDB, DT_Raster2D);
/// landuse/landcover
mdi.AddParameter(VAR_LANDUSE, UNIT_NON_DIM, DESC_LANDUSE, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_LANDCOVER, UNIT_NON_DIM, DESC_LANDCOVER, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_CN2, UNIT_NON_DIM, DESC_CN2, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_HVSTI, UNIT_CONT_RATIO, DESC_HVSTI, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_WSYF, UNIT_CONT_RATIO, DESC_WSYF, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_PHUPLT, UNIT_HEAT_UNIT, DESC_PHUPLT, Source_ParameterDB, DT_Raster1D);
/// lookup table as 2D array, such as crop, management, landuse, tillage, etc.
mdi.AddParameter(VAR_LANDUSE_LOOKUP, UNIT_NON_DIM, DESC_LANDUSE_LOOKUP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_CROP_LOOKUP, UNIT_NON_DIM, DESC_CROP_LOOKUP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_TILLAGE_LOOKUP, UNIT_NON_DIM, DESC_TILLAGE_LOOKUP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_FERTILIZER_LOOKUP, UNIT_NON_DIM, DESC_FERTILIZER_LOOKUP, Source_ParameterDB, DT_Array2D);
/// set scenario data
mdi.AddParameter(VAR_SCENARIO, UNIT_NON_DIM, DESC_SCENARIO, Source_ParameterDB, DT_Scenario);
mdi.AddParameter(VAR_SOL_SORGN, UNIT_CONT_KGHA, DESC_SOL_SORGN, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_HORGP, UNIT_CONT_KGHA, DESC_SOL_HORGP, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_SOLP, UNIT_CONT_KGHA, DESC_SOL_SOLP, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_NH3, UNIT_CONT_KGHA, DESC_SOL_NH3, Source_ParameterDB, DT_Raster2D);
mdi.AddParameter(VAR_SOL_NO3, UNIT_CONT_KGHA, DESC_SOL_NO3, Source_Module, DT_Raster2D);
/// set input from other modules
/// soil properties
mdi.AddInput(VAR_SOL_AORGN, UNIT_CONT_KGHA, DESC_SOL_AORGN, Source_Module, DT_Raster2D);
mdi.AddInput(VAR_SOL_FON, UNIT_CONT_KGHA, DESC_SOL_FON, Source_Module, DT_Raster2D);
mdi.AddInput(VAR_SOL_FOP, UNIT_CONT_KGHA, DESC_SOL_FOP, Source_Module, DT_Raster2D);
mdi.AddInput(VAR_SOL_ACTP, UNIT_CONT_KGHA, DESC_SOL_ACTP, Source_Module, DT_Raster2D);
mdi.AddInput(VAR_SOL_STAP, UNIT_CONT_KGHA, DESC_SOL_STAP, Source_Module, DT_Raster2D);
mdi.AddInput(VAR_SOL_RSD, UNIT_CONT_KGHA, DESC_SOL_RSD, Source_Module, DT_Raster2D);
/// landuse/landcover
mdi.AddInput(VAR_PHUBASE, UNIT_HEAT_UNIT, DESC_PHUBASE, Source_Module, DT_Raster1D); /// PET modules
mdi.AddInput(VAR_IGRO, UNIT_NON_DIM, DESC_IGRO, Source_Module, DT_Raster1D); /// BIO_EPIC module
mdi.AddInput(VAR_FR_PHU_ACC, UNIT_HEAT_UNIT, DESC_FR_PHU_ACC, Source_Module, DT_Raster1D); /// BIO_EPIC module
mdi.AddParameter(VAR_TREEYRS, UNIT_YEAR, DESC_TREEYRS, Source_ParameterDB, DT_Raster1D); /// m_curYearMat, from ParameterDB
mdi.AddInput(VAR_HVSTI_ADJ, UNIT_CONT_RATIO, DESC_HVSTI_ADJ, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_LAIDAY, UNIT_AREA_RATIO, DESC_LAIDAY, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_DORMI, UNIT_NON_DIM, DESC_DORMI, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_LAIMAXFR, UNIT_NON_DIM, DESC_LAIMAXFR, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_OLAI, UNIT_AREA_RATIO, DESC_OLAI, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_PLANT_N, UNIT_CONT_KGHA, DESC_PLANT_N, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_PLANT_P, UNIT_CONT_KGHA, DESC_PLANT_P, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_FR_PLANT_N, UNIT_NON_DIM, DESC_FR_PLANT_N, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_FR_PLANT_P, UNIT_NON_DIM, DESC_FR_PLANT_P, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_PLTET_TOT, UNIT_DEPTH_MM, DESC_PLTET_TOT, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_PLTPET_TOT, UNIT_DEPTH_MM, DESC_PLTPET_TOT, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_FR_ROOT, UNIT_NON_DIM, DESC_FR_ROOT, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_BIOMASS, UNIT_CONT_KGHA, DESC_BIOMASS, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_LAST_SOILRD, UNIT_DEPTH_MM, DESC_LAST_SOILRD, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_FR_STRSWTR, UNIT_NON_DIM, DESC_FR_STRSWTR, Source_Module, DT_Raster1D);
/// groundwater table, currently, shallow and deep aquifer are not distinguished
//mdi.AddInput(VAR_DEEPST, UNIT_DEPTH_MM, DESC_DEEPST, Source_Module, DT_Raster1D);
//mdi.AddInput(VAR_SHALLST, UNIT_DEPTH_MM, DESC_SHALLST, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_SBGS, UNIT_DEPTH_MM, DESC_SBGS, Source_Module, DT_Array1D);
/// set the output variables
///// outputs of plant operation. NO NEED TO OUTPUT?
mdi.AddOutput(VAR_BIOTARG, UNIT_CONT_KGHA, DESC_BIOTARG, DT_Raster1D);
mdi.AddOutput(VAR_HVSTI_TARG, UNIT_NON_DIM, DESC_HVSTI_TARG, DT_Raster1D);
///// outputs of irrigation / autoIrrigation operation
mdi.AddOutput(VAR_IRR_FLAG, UNIT_NON_DIM, DESC_IRR_FLAG, DT_Raster1D);
mdi.AddOutput(VAR_IRR_WTR, UNIT_DEPTH_MM, DESC_IRR_WTR, DT_Raster1D);
//.........这里部分代码省略.........
示例11: strprintf
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
string res = "";
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Liu Junzhi");
mdi.SetClass(MCLS_CH_ROUTING, MCLSDESC_CH_ROUTING);
mdi.SetDescription(MDESC_MUSK_CH);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetHelpfile("MUSK_CH.chm");
mdi.SetID(MID_MUSK_CH);
mdi.SetName(MID_MUSK_CH);
mdi.SetVersion("0.2");
mdi.SetWebsite(SEIMS_SITE);
mdi.AddParameter(Tag_ChannelTimeStep, UNIT_SECOND, DESC_TIMESTEP, File_Input, DT_Single);
mdi.AddParameter(VAR_K_CHB, UNIT_WTRDLT_MMH, DESC_K_CHB, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_K_BANK, UNIT_WTRDLT_MMH, DESC_K_BANK, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_EP_CH, UNIT_WTRDLT_MMH, DESC_EP_CH, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_BNK0, UNIT_STRG_M3M, DESC_BNK0, Source_ParameterDB, DT_Single);
//mdi.AddParameter(VAR_CHS0, UNIT_STRG_M3M, DESC_CHS0, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_CHS0_PERC, UNIT_NON_DIM, DESC_CHS0_PERC, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_VSEEP0, UNIT_FLOW_CMS, DESC_VSEEP0, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_A_BNK, UNIT_NON_DIM, DESC_A_BNK, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_B_BNK, UNIT_NON_DIM, DESC_B_BNK, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_MSK_X, UNIT_NON_DIM, DESC_MSK_X, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_MSK_CO1, UNIT_NON_DIM, DESC_MSK_CO1, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_VSF, UNIT_NON_DIM, DESC_VSF, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_GWRQ, UNIT_FLOW_CMS, DESC_GWRQ, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_SUBBSN, UNIT_NON_DIM, DESC_SUBBSN, Source_ParameterDB, DT_Raster1D);
// add reach information
mdi.AddParameter(VAR_REACH_PARAM, UNIT_NON_DIM, DESC_REACH_PARAM, Source_ParameterDB, DT_Reach);
// add BMPs management operations, such as point source discharge
mdi.AddParameter(VAR_SCENARIO, UNIT_NON_DIM, DESC_SCENARIO, Source_ParameterDB, DT_Scenario);
mdi.AddInput(VAR_SBOF, UNIT_FLOW_CMS, DESC_SBOF, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SBIF, UNIT_FLOW_CMS, DESC_SBIF, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SBQG, UNIT_FLOW_CMS, DESC_SBQG, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SBPET, UNIT_DEPTH_MM, DESC_SBPET, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SBGS, UNIT_DEPTH_MM, DESC_SBGS, Source_Module, DT_Array1D);
mdi.AddOutput(VAR_QRECH, UNIT_FLOW_CMS, DESC_QRECH, DT_Array1D);
mdi.AddOutput(VAR_QOUTLET, UNIT_FLOW_CMS, DESC_QOUTLET, DT_Single);
mdi.AddOutput(VAR_QSOUTLET, UNIT_FLOW_CMS, DESC_QSOUTLET, DT_Single);
mdi.AddOutput(VAR_QS, UNIT_NON_DIM, DESC_QS, DT_Array1D);
mdi.AddOutput(VAR_QI, UNIT_NON_DIM, DESC_QI, DT_Array1D);
mdi.AddOutput(VAR_QG, UNIT_NON_DIM, DESC_QG, DT_Array1D);
mdi.AddOutput(VAR_CHST, UNIT_VOL_M3, DESC_CHST, DT_Array1D);
mdi.AddOutput(VAR_PRECHST, UNIT_VOL_M3, DESC_PRECHST, DT_Array1D);
mdi.AddOutput(VAR_BKST, UNIT_VOL_M3, DESC_BKST, DT_Array1D);
mdi.AddOutput(VAR_SEEPAGE, UNIT_VOL_M3, DESC_SEEPAGE, DT_Array1D);
mdi.AddOutput(VAR_CHWTDEPTH, UNIT_LEN_M, DESC_CHWTDEPTH, DT_Array1D);
mdi.AddOutput(VAR_CHWTWIDTH, UNIT_LEN_M, DESC_CHWTWIDTH, DT_Array1D);
mdi.AddOutput(VAR_CHBTMWIDTH, UNIT_LEN_M, DESC_CHBTMWIDTH, DT_Array1D);
mdi.AddOutput(VAR_PRECHWTDEPTH, UNIT_LEN_M, DESC_PRECHWTDEPTH, DT_Array1D);
res = mdi.GetXMLDocument();
char *tmp = new char[res.size() + 1];
strprintf(tmp, res.size() + 1, "%s", res.c_str());
return tmp;
}
示例12: MetadataInformation
//! function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char* MetadataInformation()
{
MetadataInfo mdi;
mdi.SetAuthor("Huiran Gao");
mdi.SetClass(MCLS_NMINRL, MCLSDESC_NMINRL);
mdi.SetDescription(MDESC_NMINRL);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetID(MDESC_NMINRL);
mdi.SetName(MDESC_NMINRL);
mdi.SetVersion("1.0");
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("NMINRL.html");
// set the parameters
//Latitude is used to calculate max solar radiation. It is read in the similar format with elevation.
mdi.AddParameter(VAR_CMN, UNIT_NON_DIM, DESC_CMN,Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_NACTFR, UNIT_NON_DIM, DESC_NACTFR, Source_ParameterDB, DT_Single);
mdi.AddParameter(Tag_CellSize, UNIT_NON_DIM, DESC_CellSize, Source_ParameterDB, DT_Single);
mdi.AddParameter(Tag_CellWidth, UNIT_LEN_M, DESC_CellWidth, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_DNIT, UNIT_CONT_KGKM2, DESC_WSHD_DNIT, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_HMN, UNIT_CONT_KGKM2, DESC_WSHD_HMN, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_HMP, UNIT_CONT_KGKM2, DESC_WSHD_HMP, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_RMN, UNIT_CONT_KGKM2, DESC_WSHD_RMN, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_RMP, UNIT_CONT_KGKM2, DESC_WSHD_RMP, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_RWN, UNIT_CONT_KGKM2, DESC_WSHD_RWN, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_NITN, UNIT_CONT_KGKM2, DESC_WSHD_NITN, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_VOLN, UNIT_CONT_KGKM2, DESC_WSHD_VOLN, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_PAL, UNIT_CONT_KGKM2, DESC_WSHD_PAL, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_WSHD_PAS, UNIT_CONT_KGKM2, DESC_WSHD_PAS, Source_ParameterDB, DT_Single);
// set the input
mdi.AddParameter(VAR_CDN, UNIT_NON_DIM, DESC_CDN, Source_ParameterDB, DT_Array1D);
mdi.AddParameter(VAR_LCC, UNIT_NON_DIM, DESC_LCC, Source_ParameterDB, DT_Array1D);
mdi.AddParameter(VAR_PL_RSDCO, UNIT_NON_DIM, DESC_PL_RSDCO, Source_ParameterDB, DT_Array1D);
mdi.AddParameter(VAR_PSP, UNIT_NON_DIM, DESC_PSP, Source_ParameterDB, DT_Array1D);
mdi.AddParameter(VAR_SOL_CBN, UNIT_PERCENT, DESC_SOL_CBN, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_WST, UNIT_DEPTH_MM, DESC_SOL_WST, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_WFC, UNIT_DEPTH_MM, DESC_SOL_WFC, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_TMP, UNIT_TEMP_DEG, DESC_SOL_TMP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_WH, UNIT_DEPTH_MM, DESC_SOL_WH, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_AORGN, UNIT_CONT_KGKM2, DESC_SOL_AORGN, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_FON, UNIT_CONT_KGKM2, DESC_SOL_FON, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_FOP, UNIT_CONT_KGKM2, DESC_SOL_FOP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_NO3, UNIT_CONT_KGKM2, DESC_SOL_NO3, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_ORGN, UNIT_CONT_KGKM2, DESC_SOL_ORGN, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_ORGP, UNIT_CONT_KGKM2, DESC_SOL_ORGP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_RSD, UNIT_CONT_KGKM2, DESC_SOL_RSD, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_SOLP, UNIT_CONT_KGKM2, DESC_SOL_SOLP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_NH3, UNIT_CONT_KGKM2, DESC_SOL_NH3, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_WPMM, UNIT_CONT_KGKM2, DESC_SOL_WPMM, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_ROOTDEPTH, UNIT_CONT_KGKM2, DESC_ROOTDEPTH, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_ACTP, UNIT_CONT_KGKM2, DESC_SOL_ACTP, Source_ParameterDB, DT_Array2D);
mdi.AddParameter(VAR_SOL_STAP, UNIT_CONT_KGKM2, DESC_SOL_STAP, Source_ParameterDB, DT_Array2D);
// set the input
// set the output variables
mdi.AddOutput(VAR_HMNTL, UNIT_CONT_KGKM2, DESC_HMNTL, DT_Single);
mdi.AddOutput(VAR_HMPTL, UNIT_CONT_KGKM2, DESC_HMPTL, DT_Single);
mdi.AddOutput(VAR_RMN2TL, UNIT_CONT_KGKM2, DESC_RMN2TL, DT_Single);
mdi.AddOutput(VAR_RMPTL, UNIT_CONT_KGKM2, DESC_RMPTL, DT_Single);
mdi.AddOutput(VAR_RWNTL, UNIT_CONT_KGKM2, DESC_RWNTL, DT_Single);
mdi.AddOutput(VAR_WDNTL, UNIT_CONT_KGKM2, DESC_WDNTL, DT_Single);
mdi.AddOutput(VAR_RMP1TL, UNIT_CONT_KGKM2, DESC_RMP1TL, DT_Single);
mdi.AddOutput(VAR_ROCTL, UNIT_CONT_KGKM2, DESC_ROCTL, DT_Single);
mdi.AddOutput(VAR_WSHD_DNIT, UNIT_CONT_KGKM2, DESC_WSHD_DNIT, DT_Single);
mdi.AddOutput(VAR_WSHD_HMN, UNIT_CONT_KGKM2, DESC_WSHD_HMN, DT_Single);
mdi.AddOutput(VAR_WSHD_HMP, UNIT_CONT_KGKM2, DESC_WSHD_HMP, DT_Single);
mdi.AddOutput(VAR_WSHD_RMN, UNIT_CONT_KGKM2, DESC_WSHD_RMN, DT_Single);
mdi.AddOutput(VAR_WSHD_RMP, UNIT_CONT_KGKM2, DESC_WSHD_RMP, DT_Single);
mdi.AddOutput(VAR_WSHD_RWN, UNIT_CONT_KGKM2, DESC_WSHD_RWN, DT_Single);
mdi.AddOutput(VAR_WSHD_NITN, UNIT_CONT_KGKM2, DESC_WSHD_NITN, DT_Single);
mdi.AddOutput(VAR_WSHD_VOLN, UNIT_CONT_KGKM2, DESC_WSHD_VOLN, DT_Single);
mdi.AddOutput(VAR_WSHD_PAL, UNIT_CONT_KGKM2, DESC_WSHD_PAL, DT_Single);
mdi.AddOutput(VAR_WSHD_PAS, UNIT_CONT_KGKM2, DESC_WSHD_PAS, DT_Single);
mdi.AddOutput(VAR_SOL_AORGN, UNIT_CONT_KGKM2, DESC_SOL_AORGN, DT_Array2D);
mdi.AddOutput(VAR_SOL_FON, UNIT_CONT_KGKM2, DESC_SOL_FON, DT_Array2D);
mdi.AddOutput(VAR_SOL_FOP, UNIT_CONT_KGKM2, DESC_SOL_FOP, DT_Array2D);
mdi.AddOutput(VAR_SOL_NO3, UNIT_CONT_KGKM2, DESC_SOL_NO3, DT_Array2D);
mdi.AddOutput(VAR_SOL_ORGN, UNIT_CONT_KGKM2, DESC_SOL_ORGN, DT_Array2D);
mdi.AddOutput(VAR_SOL_ORGP, UNIT_CONT_KGKM2, DESC_SOL_ORGP, DT_Array2D);
mdi.AddOutput(VAR_SOL_RSD, UNIT_CONT_KGKM2, DESC_SOL_RSD, DT_Array2D);
mdi.AddOutput(VAR_SOL_SOLP, UNIT_CONT_KGKM2, DESC_SOL_SOLP, DT_Array2D);
mdi.AddOutput(VAR_SOL_NH3, UNIT_CONT_KGKM2, DESC_SOL_NH3, DT_Array2D);
mdi.AddOutput(VAR_SOL_WPMM, UNIT_CONT_KGKM2, DESC_SOL_WPMM, DT_Array2D);
mdi.AddOutput(VAR_ROOTDEPTH, UNIT_CONT_KGKM2, DESC_ROOTDEPTH, DT_Array2D);
mdi.AddOutput(VAR_SOL_ACTP, UNIT_CONT_KGKM2, DESC_SOL_ACTP, DT_Array2D);
mdi.AddOutput(VAR_SOL_STAP, UNIT_CONT_KGKM2, DESC_SOL_STAP, DT_Array2D);
string res = mdi.GetXMLDocument();
char* tmp = new char[res.size()+1];
strprintf(tmp, res.size()+1, "%s", res.c_str());
return tmp;
}
示例13: strprintf
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
string res = "";
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Wang Lin");
mdi.SetClass("Sediment Bound Nutrient OL", "Sediment Bound Nutrient Overland.");
mdi.SetDescription("Sediment Bound Nutrient Overland transport method using Knisel functions.");
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetHelpfile("SedBonNutrient_OL.chm");
mdi.SetID("SedBonNutrient_OL");
mdi.SetName("SedBonNutrient_OL");
mdi.SetVersion("0.1");
mdi.SetWebsite(SEIMS_SITE);
mdi.AddParameter("STORM_DT", "second", "Time step of the simulation", "file.in", DT_Single);
mdi.AddParameter(Tag_CellSize, UNIT_NON_DIM, DESC_CellSize, Source_ParameterDB, DT_Single);
mdi.AddParameter(Tag_CellWidth, UNIT_LEN_M, DESC_CellWidth, Source_ParameterDB, DT_Single);
mdi.AddParameter("Slope", "%", "Slope", "ParameterDB_WaterBalance", DT_Raster1D);
//mdi.AddParameter("Theta", "", "theta parameter for 4-point implicit finite difference", "ParameterDB_Discharge", DT_Single);
/*mdi.AddParameter("InitConc_P", "kg/kg", "Initial average concentration of P in the soil", "ParameterDB_soil", DT_Single);
mdi.AddParameter("InitConc_NH4", "kg/kg", "Initial average concentration of ammonium in the soil", "ParameterDB_soil", DT_Single);
mdi.AddParameter("InitConc_NO3", "kg/kg", "Initial average concentration of nitrate in the soil", "ParameterDB_soil", DT_Single);*/
mdi.AddParameter("Clay", "", "Clay proportion in soil", "ParameterDB_WaterBalance", DT_Raster1D);
mdi.AddParameter("Porosity", "m/m", "Soil porosity", "ParameterDB_WaterBalance", DT_Raster1D);
mdi.AddParameter("Density", "kg/m3", "Soil density", "ParameterDB_Discharge", DT_Raster1D);
mdi.AddParameter("CHWIDTH", "m", "Channel width", "ParameterDB_Discharge", DT_Raster1D);
mdi.AddInput("D_FlowWidth", "m", "Flow width of overland plane", "Module", DT_Raster1D);
//mdi.AddInput("D_FlowLen","m", "Flow length of overland plane","Module",DT_Raster);
mdi.AddParameter("STREAM_LINK", "", "Stream link", "ParameterDB_Discharge", DT_Raster1D);
mdi.AddParameter("Manning", "", "Manning's roughness", "ParameterDB_Discharge", DT_Raster1D);
//mdi.AddParameter("FLOW_DIR", "", "Flow direction by the rule of ArcGIS", "ParameterDB_Discharge", DT_Raster);
//mdi.AddParameter("FLOWOUT_INDEX", "", "The index of flow in cell in the compressed array", "ParameterDB_Discharge", DT_Array1D);
mdi.AddParameter("FLOWIN_INDEX_D8", "", "The index of flow in cell in the compressed array,"
" and the first element in each sub-array is the number of flow in cells in this sub-array",
"ParameterDB_Discharge", DT_Array2D);
mdi.AddParameter("ROUTING_LAYERS", "", "Routing layers according to the flow direction"
"There are not flow relationships within each layer, and the first element in each layer is the number of cells in the layer",
"ParameterDB_Discharge", DT_Array2D);
mdi.AddInput("D_QOverland", "m3/s", "Flux in the downslope boundary of cells", "Module", DT_Raster1D);
mdi.AddInput("D_SURU", "mm", "Water depth in the downslope boundary of cells", "Module", DT_Raster1D);
mdi.AddInput("D_INFIL", "mm", "Infiltration map of watershed", "Module", DT_Raster1D);
mdi.AddInput("D_DPST", "mm", "Distribution of depression storage", "Module", DT_Raster1D);
mdi.AddInput("D_HTOCH", "mm", "Water depth added to channel water depth", "Module", DT_Raster1D);
mdi.AddOutput("SedBonP", "kg/s", "distribution of dissovlved P", DT_Raster1D);
mdi.AddOutput("SedBonAmmonium", "kg/s", "distribution of nutrient, ammonium", DT_Raster1D);
mdi.AddOutput("SedBonPToCh", "kg", "dissovlved P flow to channel", DT_Raster1D);
mdi.AddOutput("SedBonAmmoniumToCh", "kg", "ammonium flow to channel", DT_Raster1D);
//test
mdi.AddOutput("TESTDPST", "mm", "Distribution of depression storage", DT_Raster1D);
//mdi.AddOutput("ID_OUTLET", "", "index of outlet in the compressed array", DT_Single);
// set the dependencies
mdi.AddDependency("Depression", "Calculate depression storage");
mdi.AddDependency("Overland routing", "Overland routing module"); //for WH
//mdi.AddDependency("Soil Detachment","Rain and overland soil detachment erosion module");
res = mdi.GetXMLDocument();
char *tmp = new char[res.size() + 1];
strprintf(tmp, res.size() + 1, "%s", res.c_str());
return tmp;
}
示例14: runoff
// function to return the XML Metadata document string
extern "C" SEIMS_MODULE_API const char *MetadataInformation()
{
string res = "";
MetadataInfo mdi;
// set the information properties
mdi.SetAuthor("Wang Lin");
mdi.SetClass("NutrientTransport_OL", "Nutrient Transport Overland.");
mdi.SetDescription("Nutrient Transport Overland.");
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetHelpfile("NutrientTransport_OL.chm");
mdi.SetID("NutrientTransport_OL");
mdi.SetName("NutrientTransport_OL");
mdi.SetVersion("0.1");
mdi.SetWebsite(SEIMS_SITE);
// Nitrate
mdi.AddParameter("AniExcF", "", "the fraction of porosity from which anions are excluded", "file.in", DT_Single);
mdi.AddParameter("NitPC", "", "the nitrate percolation coefficient", "file.in", DT_Single);
mdi.AddParameter("Porosity_2D", "m3/m3", "soil porosity", "ParameterDB_WaterBalance", DT_Array2D);
mdi.AddInput("D_Nitrate", "kg N/ha", "amount of nitrate", "Module", DT_Array2D);
mdi.AddInput("D_SURU", "mm", "Distribution of surface runoff", "Module", DT_Raster1D); //from DEP_LINSLEY
mdi.AddInput("D_SSRU_2D", "mm", "Distribution of subsurface runoff(lateral flow / interflow).", "Module",
DT_Array2D); //from SSR_DA
mdi.AddInput("D_Percolation_2D", "mm", "Distribution of groundwater recharge (percolation)", "Module",
DT_Array2D); // from PER_PI
// Ammonium
mdi.AddParameter("Clay_2D", "", "Clay fraction in soil", "ParameterDB_WaterBalance", DT_Raster1D);
mdi.AddInput("D_Ammon", "kg N/ha", "ammonium pool for soil nitrogen", "Module", DT_Array2D);
// Organic N
mdi.AddParameter(Tag_CellSize, UNIT_NON_DIM, DESC_CellSize, Source_ParameterDB, DT_Single);
mdi.AddParameter(Tag_CellWidth, UNIT_LEN_M, DESC_CellWidth, Source_ParameterDB, DT_Single);
mdi.AddParameter("Density_2D", "g/cm3", "Soil density", "ParameterDB_WaterBalance", DT_Array2D);
//mdi.AddParameter("RootDepth", "mm", "depth from the soil surface", "file.in", DT_Raster);
mdi.AddInput("D_SOER", "metric tons", "distribution of soil erosion", "Module", DT_Raster1D); // from MUSLE_AS
mdi.AddInput("D_Depth", "mm", "depth of the layer", "Module", DT_Array2D);
mdi.AddInput("D_ActOrgN", "kg N/ha", "amount of nitrogen in the active organic pool in layer ly", "Module",
DT_Array2D);
mdi.AddInput("D_StaOrgN", "kg N/ha", "amount of nitrogen in the stable organic pool", "Module", DT_Array2D);
mdi.AddInput("D_FreOrgN", "kg N/ha", "nitrogen in the fresh organic pool in layer ly", "Module", DT_Array2D);
// soluble P
mdi.AddParameter("ParCoeP", "m3/Mg", "phosphorus soil partitioning coefficient", "file.in", DT_Single);
mdi.AddInput("D_SoluP", "kg P/ha", "amount of phosphorus in solution in layer ly", "Module", DT_Array2D);
// Attached P
mdi.AddInput("D_ActMinP", "kg P/ha", "amount of phosphorus in the active mineral pool", "Module", DT_Array2D);
mdi.AddInput("D_StaMinP", "kg P/ha", "amount of phosphorus in the stable mineral pool", "Module", DT_Array2D);
mdi.AddInput("D_HumOrgP", "kg P/ha", "amount of humic organic phosphorus in the layer", "Module", DT_Array2D);
mdi.AddInput("D_FreOrgP", "kg P/ha", "phosphorus in the fresh organic pool in the top 10mm", "Module", DT_Array2D);
// Nitrate
mdi.AddOutput("SurNit", "kg N/ha", "the nitrate removed in surface runoff", DT_Raster1D);
mdi.AddOutput("SatW", "mm H2O", "the saturated water content of the soil layer", DT_Array2D);
mdi.AddOutput("MobQ", "mm H2O", "the amount of mobile water in the layer", DT_Array2D);
mdi.AddOutput("ConNit", "kg N/mm H2O", "the concentration of nitrate in the mobile water for a given layer",
DT_Array2D);
mdi.AddOutput("LatNit", "kg N/ha", " the nitrate removed in lateral flow from a layer", DT_Array2D);
mdi.AddOutput("PerNit", "kg N/ha", "the nitrate moved to the underlying layer by percolation", DT_Array2D);
// Ammonium
mdi.AddOutput("SurAmm", "kg N/ha", "the ammonium removed in surface runoff", DT_Raster1D);
mdi.AddOutput("ConAmm", "kg N/mm H2O", "the concentration of Ammonium in the mobile water for a given layer",
DT_Array2D);
// Organic N
mdi.AddOutput("ConSed", "Mg sed/m3 H2O", "the concentration of sediment in surface runoff", DT_Raster1D);
mdi.AddOutput("EnrN", "", "nitrogen enrichment ratio", DT_Raster1D);
mdi.AddOutput("ConOrgN", "g N/ metric ton soil", "the concentration of organic nitrogen in the top 10 mm",
DT_Raster1D);
mdi.AddOutput("TraOrgN", "kg N/ha", "the amount of organic nitrogen transported to the next cell in surface runoff",
DT_Raster1D);
// soluble P
mdi.AddOutput("SurSolP", "kg P/ha", "the amount of soluble phosphorus lost in surface runoff", DT_Raster1D);
// Attached P
mdi.AddOutput("EnrP", "", "phosphorus enrichment ratio", DT_Raster1D);
mdi.AddOutput("ConAttP", "g P/ metric ton soil",
"the concentration of phosphorus attached to sediment in the top 10 mm", DT_Raster1D);
mdi.AddOutput("TraAttP", "kg P/ha",
"the amount of phosphorus attached to sediment transported to the next cell in surface runoff",
DT_Raster1D);
// to subbasin
mdi.AddParameter("subbasin", "", "subbasin grid", "ParameterDB_Discharge", DT_Raster1D);
mdi.AddOutput("SNITTOCH", "kg", "surface nitrate to channel", DT_Array1D);
mdi.AddOutput("SNITTOCH_T", "kg", "Total surface nitrate flowing to channel", DT_Single);
mdi.AddOutput("SAMMTOCH", "kg", "surface ammonium to channel", DT_Array1D);
mdi.AddOutput("SAMMTOCH_T", "kg", "Total surface ammonium flowing to channel", DT_Single);
mdi.AddOutput("SSOLPTOCH", "kg", "surface soluble phosphorus to channel", DT_Array1D);
//.........这里部分代码省略.........
示例15: MetadataInformation
extern "C" SEIMS_MODULE_API const char* MetadataInformation() {
MetadataInfo mdi;
mdi.SetAuthor("Huiran Gao, Liangjun Zhu");
mdi.SetClass(MCLS_NutCHRout, MCLSDESC_NutCHRout);
mdi.SetDescription(MDESC_NUTRCH_QUAL2E);
mdi.SetEmail(SEIMS_EMAIL);
mdi.SetID(MDESC_NUTRCH_QUAL2E);
mdi.SetName(MDESC_NUTRCH_QUAL2E);
mdi.SetVersion("1.2");
mdi.SetWebsite(SEIMS_SITE);
mdi.SetHelpfile("");
// set the parameters
mdi.AddParameter(Tag_SubbasinId, UNIT_NON_DIM, Tag_SubbasinId, Source_ParameterDB, DT_Single);
mdi.AddParameter(Tag_ChannelTimeStep, UNIT_SECOND, DESC_TIMESTEP, File_Input, DT_Single);
mdi.AddParameter(VAR_RNUM1, UNIT_NON_DIM, DESC_RNUM1, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_IGROPT, UNIT_NON_DIM, DESC_IGROPT, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI0, UNIT_NUTR_RATIO, DESC_AI0, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI1, UNIT_NUTR_RATIO, DESC_AI1, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI2, UNIT_NUTR_RATIO, DESC_AI2, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI3, UNIT_NUTR_RATIO, DESC_AI3, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI4, UNIT_NUTR_RATIO, DESC_AI4, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI5, UNIT_NUTR_RATIO, DESC_AI5, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_AI6, UNIT_NUTR_RATIO, DESC_AI6, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_LAMBDA0, UNIT_NON_DIM, DESC_LAMBDA0, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_LAMBDA1, UNIT_NON_DIM, DESC_LAMBDA1, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_LAMBDA2, UNIT_NON_DIM, DESC_LAMBDA2, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_K_L, UNIT_SR, DESC_K_L, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_K_N, UNIT_CONCENTRATION, DESC_K_N, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_K_P, UNIT_CONCENTRATION, DESC_K_P, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_P_N, UNIT_CONCENTRATION, DESC_P_N, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_TFACT, UNIT_NON_DIM, DESC_TFACT, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_MUMAX, UNIT_PER_DAY, DESC_MUMAX, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_RHOQ, UNIT_PER_DAY, DESC_RHOQ, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_COD_N, UNIT_NON_DIM, DESC_COD_N, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_COD_K, UNIT_NON_DIM, DESC_COD_K, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_STREAM_LINK, UNIT_NON_DIM, DESC_STREAM_LINK, Source_ParameterDB, DT_Raster1D);
mdi.AddParameter(VAR_CH_ONCO, UNIT_CONCENTRATION, DESC_CH_ONCO, Source_ParameterDB, DT_Single);
mdi.AddParameter(VAR_CH_OPCO, UNIT_CONCENTRATION, DESC_CH_OPCO, Source_ParameterDB, DT_Single);
// add reach information
mdi.AddParameter(VAR_REACH_PARAM, UNIT_NON_DIM, DESC_REACH_PARAM, Source_ParameterDB, DT_Reach);
// add BMPs management operations, such as point source discharge
mdi.AddParameter(VAR_SCENARIO, UNIT_NON_DIM, DESC_SCENARIO, Source_ParameterDB, DT_Scenario);
// set the input variables
mdi.AddInput(DataType_SolarRadiation, UNIT_SR, DESC_SR, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_DAYLEN, UNIT_HOUR, DESC_DAYLEN, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_SOTE, UNIT_TEMP_DEG, DESC_SOTE, Source_Module, DT_Raster1D);
mdi.AddInput(VAR_QRECH, UNIT_FLOW_CMS, DESC_QRECH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_CHST, UNIT_VOL_M3, DESC_CHST, Source_Module, DT_Array1D);
mdi.AddInput(VAR_RTE_WTRIN, UNIT_VOL_M3, DESC_RTE_WTRIN, Source_Module, DT_Array1D);
mdi.AddInput(VAR_RTE_WTROUT, UNIT_VOL_M3, DESC_RTE_WTROUT, Source_Module, DT_Array1D);
mdi.AddInput(VAR_CHWTRDEPTH, UNIT_LEN_M, DESC_CHWTDEPTH, Source_Module, DT_Array1D);
/// input from hillslope
//nutrient from surface water
mdi.AddInput(VAR_SUR_NO3_TOCH, UNIT_KG, DESC_SUR_NO3_ToCH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SUR_NH4_TOCH, UNIT_KG, DESC_SUR_NH4_ToCH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SUR_SOLP_TOCH, UNIT_KG, DESC_SUR_SOLP_ToCH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SUR_COD_TOCH, UNIT_KG, DESC_SUR_COD_ToCH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SEDORGN_TOCH, UNIT_KG, DESC_SEDORGN_CH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SEDORGP_TOCH, UNIT_KG, DESC_SEDORGP_CH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SEDMINPA_TOCH, UNIT_KG, DESC_SEDMINPA_CH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_SEDMINPS_TOCH, UNIT_KG, DESC_SEDMINPS_CH, Source_Module, DT_Array1D);
//nutrient from interflow
mdi.AddInput(VAR_LATNO3_TOCH, UNIT_KG, DESC_LATNO3_CH, Source_Module, DT_Array1D);
//nutrient from ground water
mdi.AddInput(VAR_NO3GW_TOCH, UNIT_KG, DESC_NO3GW_CH, Source_Module, DT_Array1D);
mdi.AddInput(VAR_MINPGW_TOCH, UNIT_KG, DESC_MINPGW_CH, Source_Module, DT_Array1D);
// channel erosion
mdi.AddInput(VAR_RCH_DEG, UNIT_KG, DESC_RCH_DEG, Source_Module_Optional, DT_Array1D);
// set the output variables
/// 1. Amount (kg) outputs
mdi.AddInOutput(VAR_CH_ALGAE, UNIT_KG, DESC_CH_ALGAE, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_ORGN, UNIT_KG, DESC_CH_ORGN, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_ORGP, UNIT_KG, DESC_CH_ORGP, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_NH4, UNIT_KG, DESC_CH_NH4, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_NO2, UNIT_KG, DESC_CH_NO2, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_NO3, UNIT_KG, DESC_CH_NO3, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_SOLP, UNIT_KG, DESC_CH_SOLP, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_COD, UNIT_KG, DESC_CH_COD, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_CHLORA, UNIT_KG, DESC_CH_CHLORA, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_DOX, UNIT_KG, DESC_CH_DOX, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_TN, UNIT_KG, DESC_CH_TN, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_TP, UNIT_KG, DESC_CH_TP, DT_Array1D, TF_SingleValue);
/// 2. Concentration (mg/L) outputs
mdi.AddInOutput(VAR_CH_ALGAEConc, UNIT_CONCENTRATION, DESC_CH_ALGAE, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_ORGNConc, UNIT_CONCENTRATION, DESC_CH_ORGN, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_ORGPConc, UNIT_CONCENTRATION, DESC_CH_ORGP, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_NH4Conc, UNIT_CONCENTRATION, DESC_CH_NH4, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_NO2Conc, UNIT_CONCENTRATION, DESC_CH_NO2, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_NO3Conc, UNIT_CONCENTRATION, DESC_CH_NO3, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_SOLPConc, UNIT_CONCENTRATION, DESC_CH_SOLP, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_CODConc, UNIT_CONCENTRATION, DESC_CH_COD, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_CHLORAConc, UNIT_CONCENTRATION, DESC_CH_CHLORA, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_DOXConc, UNIT_CONCENTRATION, DESC_CH_DOX, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_TNConc, UNIT_CONCENTRATION, DESC_CH_TNConc, DT_Array1D, TF_SingleValue);
mdi.AddInOutput(VAR_CH_TPConc, UNIT_CONCENTRATION, DESC_CH_TPConc, DT_Array1D, TF_SingleValue);
// 3. point source loadings
mdi.AddOutput(VAR_PTTN2CH, UNIT_KG, DESC_PTTN2CH, DT_Array1D);
//.........这里部分代码省略.........