int MDRiverbedShapeExponentDef () {
	int  optID = MFUnset;
	const char *optStr, *optName = MDOptRiverbed;
	const char *options [] = { MDInputStr, "slope-independent", "slope-dependent", "multi-basin", (char *) NULL };

	if (_MDOutRiverbedShapeExponentID != MFUnset) return (_MDOutRiverbedShapeExponentID);

	MFDefEntering ("Riverbed Geometry");
	if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true);

	switch (optID) {
		case MDinput:
			if (((_MDOutRiverbedAvgDepthMeanID  = MFVarGetID (MDVarRiverbedAvgDepthMean,  "m",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedWidthMeanID     = MFVarGetID (MDVarRiverbedWidthMean,     "m",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedVelocityMeanID  = MFVarGetID (MDVarRiverbedVelocityMean,  "m/s",    MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedShapeExponentID = MFVarGetID (MDVarRiverbedShapeExponent, MFNoUnit, MFInput,  MFState, MFBoundary)) == CMfailed))
				return (CMfailed);
			break;
		case MDdependent:
			if ((_MDInRiverbedSlopeID           = MFVarGetID (MDVarRiverbedSlope,         "m/km",   MFInput,  MFState, MFBoundary)) == CMfailed)
				return (CMfailed);
		case MDindependent:
			if (((_MDInDischMeanID = MDDischMeanDef ()) == CMfailed) ||
			    ((_MDInEtaID                    = MFVarGetID (MDVarEta,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
                            ((_MDInNuID                     = MFVarGetID (MDVarNu,                    "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInTauID                    = MFVarGetID (MDVarTau,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInPhiID                    = MFVarGetID (MDVarPhi,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||  
                            ((_MDOutRiverbedAvgDepthMeanID  = MFVarGetID (MDVarRiverbedAvgDepthMean,  "m",      MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedWidthMeanID     = MFVarGetID (MDVarRiverbedWidthMean,     "m",      MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedVelocityMeanID  = MFVarGetID (MDVarRiverbedVelocityMean,  "m/s",    MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedShapeExponentID = MFVarGetID (MDVarRiverbedShapeExponent, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    (MFModelAddFunction (_MDRiverbedShapeExponent) == CMfailed)) return (CMfailed);
			break;
		case MDmultibasin:
			if (((_MDInDischMeanID = MDDischMeanDef ()) == CMfailed) ||
			    ((_MDInEtaID                   = MFVarGetID (MDVarEta,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
                            ((_MDInNuID                     = MFVarGetID (MDVarNu,                    "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInTauID                    = MFVarGetID (MDVarTau,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInPhiID                    = MFVarGetID (MDVarPhi,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||  
                            ((_MDInEta2ID                   = MFVarGetID (MDVarEta2,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
                            ((_MDInNu2ID                    = MFVarGetID (MDVarNu2,                    "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInTau2ID                   = MFVarGetID (MDVarTau2,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInPhi2ID                   = MFVarGetID (MDVarPhi2,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||  
                            ((_MDInEta3ID                   = MFVarGetID (MDVarEta3,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
                            ((_MDInNu3ID                    = MFVarGetID (MDVarNu3,                    "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInTau3ID                   = MFVarGetID (MDVarTau3,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDInPhi3ID                   = MFVarGetID (MDVarPhi3,                   "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||   
			    ((_MDInBasinID                  = MFVarGetID (MDVarBasinID,                "-",      MFInput,  MFState, MFBoundary)) == CMfailed) ||   
			    ((_MDOutRiverbedAvgDepthMeanID  = MFVarGetID (MDVarRiverbedAvgDepthMean,  "m",      MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedWidthMeanID     = MFVarGetID (MDVarRiverbedWidthMean,     "m",      MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedVelocityMeanID  = MFVarGetID (MDVarRiverbedVelocityMean,  "m/s",    MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutRiverbedShapeExponentID = MFVarGetID (MDVarRiverbedShapeExponent, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    (MFModelAddFunction (_MDMultiRiverbedShapeExponent) == CMfailed)) return (CMfailed);
			break;
		default: MFOptionMessage (optName, optStr, options); return (CMfailed);
	}
	MFDefLeaving ("Riverbed Geometry");
	return (_MDOutRiverbedShapeExponentID);
}
示例#2
0
int MDReservoirDef () {
	int optID = MFUnset;
	const char *optStr, *optName = MDOptReservoirs;
	const char *options [] = { MDNoneStr, MDCalculateStr, (char *) NULL };
 
	if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true);
 
	if ((optID == MDnone) || (_MDOutResReleaseID != MFUnset)) return (_MDOutResReleaseID);

	MFDefEntering ("Reservoirs");
	switch (optID) {
		case MDcalculate:
			if (((_MDInDischMeanID      = MDDischMeanDef ())   == CMfailed) ||
			    ((_MDInDischargeID      = MDDischLevel2Def ()) == CMfailed) ||
			    ((_MDInResCapacityID    = MFVarGetID (MDVarReservoirCapacity,      "km3",  MFInput,  MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutResStorageID    = MFVarGetID (MDVarReservoirStorage,       "km3",  MFOutput, MFState, MFInitial))  == CMfailed) ||
			    ((_MDOutResStorageChgID = MFVarGetID (MDVarReservoirStorageChange, "km3",  MFOutput, MFState, MFBoundary)) == CMfailed) ||
			    ((_MDOutResReleaseID    = MFVarGetID (MDVarReservoirRelease,       "m3/s", MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
			    (MFModelAddFunction (_MDReservoir) == CMfailed)) return (CMfailed);
			break;
		default: MFOptionMessage (optName, optStr, options); return (CMfailed);
	}
	MFDefLeaving ("Reservoirs");
	return (_MDOutResReleaseID); 
}
示例#3
0
int MDBQARTpreprocessDef() {
	
	MFDefEntering ("QBARTpreprocess");
	
	if (((_MDInDischargeID = MDDischargeDef    ()) == CMfailed) || 
	   ((_MDInDischMeanID = MDDischMeanDef     ()) == CMfailed) ||
    ((_MDInAirTempID   = MFVarGetID (MDVarAirTemperature,"degC", MFInput,  MFState, MFBoundary)) == CMfailed) ||
	((_MDInContributingAreaAccID 	= MFVarGetID (MDVarContributingAreaAcc,		"km2", 	 MFRoute,  MFState, MFBoundary)) == CMfailed) ||
	//((_MDInElevationID = MFVarGetID (MDVarElevation,	"m", 	MFInput, MFState, MFBoundary)) == CMfailed) ||
	
	((_MDInAirTempAcc_timeID    = MFVarGetID (MDVarAirTemperatureAcc_time,"degC",MFOutput,  MFState, MFInitial)) == CMfailed) ||
	((_MDInAirTempAcc_spaceID    = MFVarGetID (MDVarAirTemperatureAcc_space,"degC",MFRoute,  MFState, MFBoundary)) == CMfailed) ||
	//((_MDOutElevationMaxID    = MFVarGetID (MDVarElevationMax,"km",MFRoute,  MFState, MFBoundary)) == CMfailed) ||
	((_MDInDischargeAccID  = MFVarGetID (MDVarDischargeAcc,     "m3/s",MFOutput, MFState, MFInitial)) == CMfailed) ||
	((_MDInTimeStepsID     = MFVarGetID (MDVarTimeSteps,      MFNoUnit,MFOutput, MFState, MFInitial)) == CMfailed) ||

        // output
    ((_MDOutBQART_AID  		= MFVarGetID (MDVarBQART_A, 	"km2", 	  MFRoute,  MFState, MFBoundary)) == CMfailed) ||
	((_MDOutBQART_RID  		= MFVarGetID (MDVarBQART_R, 	"km" , 	  MFRoute,  MFState, MFBoundary)) == CMfailed) ||
	((_MDOutBQART_Qbar_m3sID  = MFVarGetID (MDVarBQART_Qbar_m3s, 	"m3s",  MFOutput,  MFState, MFBoundary)) == CMfailed) ||
	((_MDOutBQART_Qbar_km3yID = MFVarGetID (MDVarBQART_Qbar_km3y,	"km3/y",  MFOutput,  MFState, MFBoundary)) == CMfailed) ||
	((_MDOutBQART_TID  	  = MFVarGetID (MDVarBQART_T, 		"degC",   MFOutput,  MFState, MFBoundary)) == CMfailed) ||

    ((_MDOutDischMaxID = MFVarGetID(MDVarDischMax, "m3/s", MFOutput, MFState, MFInitial)) == CMfailed) ||
    ((_MDOutYearCountID = MFVarGetID(MDVarYearCount, "", MFOutput, MFState, MFInitial)) == CMfailed) ||
    ((_MDOutLogQMaxM2ID = MFVarGetID(MDVarLogQMaxM2, "m3/s", MFOutput, MFState, MFInitial)) == CMfailed) ||
    ((_MDOutLogQMaxM3ID = MFVarGetID(MDVarLogQMaxM3, "m3/s", MFOutput, MFState, MFInitial)) == CMfailed) ||
    ((_MDOutMeanLogQMaxID = MFVarGetID(MDVarMeanLogQMax , "m3/s", MFOutput, MFState, MFInitial)) == CMfailed) ||
	((_MDInBankfullQ5ID = MDBankfullQcalcDef()) == CMfailed) ||
        
       (MFModelAddFunction (_MDQBARTpreprocess) == CMfailed)) return (CMfailed);

	MFDefLeaving  ("QBARTpreprocess");
	return (_MDOutBQART_TID);
}