示例#1
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);
}
示例#2
0
int MDWTempRiverRouteDef () {
   int optID = MFUnset, waterBalanceID;
   const char *optStr;
   const char *options [] = { "none", "calculate", (char *) NULL };
  
	if (_MDWTempRiverRouteID != MFUnset) return (_MDWTempRiverRouteID);

	MFDefEntering ("Route river temperature");
	
	if (((optStr = MFOptionGet (MDOptReservoirs))  == (char *) NULL) ||
       ((optID  = CMoptLookup ( options, optStr, true)) == CMfailed)) {
      CMmsgPrint(CMmsgUsrError,"Reservoir Option not specified! Option none or calculate");
		return CMfailed;
   }
   if (optID==1) {
      if ((( waterBalanceID             = MDWaterBalanceDef  ()) == CMfailed) ||
          ((_MDInResStorageChangeID     = MFVarGetID (MDVarReservoirStorageChange, "km3",     MFInput,  MFState, MFBoundary)) == CMfailed) ||	//RJS 071511
          ((_MDInResStorageID           = MFVarGetID (MDVarReservoirStorage,       "km3",     MFInput,  MFState, MFInitial))  == CMfailed) ||	//RJS 121311 changed from MFBoundary to MFInitial
          ((_MDInResCapacityID          = MFVarGetID (MDVarReservoirCapacity,      "km3",     MFInput,  MFState, MFBoundary)) == CMfailed))
         return (CMfailed);
    }
	//input
	if (((_MDInDischargeID            = MDDischargeDef     ()) == CMfailed) ||
       (( waterBalanceID             = MDWaterBalanceDef  ()) == CMfailed) ||
       ((_MDInSolarRadID             = MDSolarRadDef      ()) == CMfailed) ||
       ((_MDInWTempRiverID           = MDWTempRiverDef    ()) == CMfailed) ||
       ((_MDInRiverWidthID           = MDRiverWidthDef    ()) == CMfailed) ||
       ((_MDInRunoffVolumeID         = MDRunoffVolumeDef  ()) == CMfailed) ||
       ((_MDInWdl_QxTID	             = MDThermalInputsDef ()) == CMfailed) ||	//RJS 072011
       ((_MDInDischargeIncomingID    = MFVarGetID (MDVarDischarge0,             "m3/s",       MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
       ((_MDInWindSpeedID            = MFVarGetID (MDVarWindSpeed,              "m/s",        MFInput,  MFState, MFBoundary)) == CMfailed) ||
       ((_MDInAirTemperatureID       = MFVarGetID (MDVarAirTemperature,         "degC",       MFInput,  MFState, MFBoundary)) == CMfailed) ||
       ((_MDInCloudCoverID           = MFVarGetID (MDVarCloudCover,             "%",          MFInput,  MFState, MFBoundary)) == CMfailed) ||
       ((_MDInRiverStorageChgID      = MFVarGetID (MDVarRiverStorageChg,        "m3/s",       MFInput,  MFState, MFBoundary)) == CMfailed) ||
       ((_MDInRiverStorageID         = MFVarGetID (MDVarRiverStorage,           "m3",         MFInput,  MFState, MFInitial))  == CMfailed) ||
       ((_MDInSnowPackID             = MFVarGetID (MDVarSnowPack,               "mm",         MFInput,  MFState, MFBoundary)) == CMfailed) ||
       ((_MDInWarmingTempID	       = MFVarGetID (MDVarWarmingTemp,		        "degC",	    MFInput,  MFState, MFBoundary)) == CMfailed) ||	//RJS 072011
       ((_MDInThermalWdlID           = MFVarGetID (MDVarThermalWdl, 		        "-",          MFInput,  MFState, MFBoundary)) == CMfailed) ||	//RJS 072011
       // output
       ((_MDLocalIn_QxTID            = MFVarGetID (MDVarBgcLocalIn_QxT,         "m3*degC/d", MFOutput, MFFlux,  MFBoundary)) == CMfailed)   ||
       ((_MDRemoval_QxTID            = MFVarGetID (MDVarRemoval_QxT,            "m3*degC/d", MFOutput, MFFlux,  MFBoundary)) == CMfailed)   ||
       ((_MDFlux_QxTID               = MFVarGetID (MDVarFlux_QxT,               "m3*degC/d", MFRoute,  MFFlux,  MFBoundary)) == CMfailed)   ||
       ((_MDStorage_QxTID            = MFVarGetID (MDVarStorage_QxT,            "m3*degC",   MFOutput, MFState, MFInitial))  == CMfailed)   ||
       ((_MDDeltaStorage_QxTID       = MFVarGetID (MDVarDeltaStorage_QxT,       "m3*degC/d", MFOutput, MFFlux,  MFBoundary)) == CMfailed)   ||
       ((_MDWTemp_QxTID              = MFVarGetID (MDVarWTemp_QxT,              "degC",      MFOutput, MFState, MFBoundary)) == CMfailed)   ||
       ((_MDWTempDeltaT_QxTID        = MFVarGetID (MDVarWTempDeltaT_QxT,        "degC",      MFOutput, MFState, MFBoundary)) == CMfailed)   ||
       //output mixing
       ((_MDFluxMixing_QxTID         = MFVarGetID (MDVarFluxMixing_QxT,         "m3*degC/d", MFRoute,  MFFlux,  MFBoundary)) == CMfailed)   ||
       ((_MDStorageMixing_QxTID      = MFVarGetID (MDVarStorageMixing_QxT,      "m3*degC",   MFOutput, MFState, MFInitial))  == CMfailed)   ||
       ((_MDDeltaStorageMixing_QxTID = MFVarGetID (MDVarDeltaStorageMixing_QxT, "m3*degC/d", MFOutput, MFFlux,  MFBoundary)) == CMfailed)   ||
       ((_MDWTempMixing_QxTID        = MFVarGetID (MDVarWTempMixing_QxT,        "degC",      MFOutput, MFState, MFBoundary)) == CMfailed)   ||
       (MFModelAddFunction (_MDWTempRiverRoute) == CMfailed)) return (CMfailed);
      
	   MFDefLeaving ("Route river temperature");
	   return (_MDWTemp_QxTID);
}
示例#3
0
文件: MDBgcDIN.c 项目: bmfekete/RGIS
int MDBgcDINRoutingDef () {
	int optID = MFUnset;
	const char *optStr;
	const char *options [] = { "none", "calculate", (char *) NULL };
     //const char *options [] = { MDNoneStr, (char *) NULL };

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

	MFDefEntering ("DIN Routing Calculation");
	if (((optStr = MFOptionGet (MDOptReservoirs))  == (char *) NULL) || ((optID = CMoptLookup ( options, optStr, true)) == CMfailed)) {
						CMmsgPrint(CMmsgUsrError,"Reservoir Option not specified! Option none or calculate \n");
						return CMfailed;
					}
		    if (optID==1){
		  //  	printf ("Resoption=%i\n",optID);
		    if (((_MDInResStorageID       = MFVarGetID (MDVarReservoirStorage,       "km3",   MFInput, MFState, MFInitial))  == CMfailed) ||
		        ((_MDInResStorageChangeID = MFVarGetID (MDVarReservoirStorageChange, "km3/s", MFInput, MFState, MFBoundary)) == CMfailed))
		    	return CMfailed;
		    }	
		    
   // Input
	if (((_MDInDischargeID            = MDDischargeDef    ()) == CMfailed) ||
        ((_MDInRiverWidthID           = MDRiverWidthDef   ()) == CMfailed) ||
	    ((_MDInRunoffVolumeID         = MDRunoffVolumeDef ()) == CMfailed) ||
	    ((_MDInRunoffID               = MDRunoffDef ()) == CMfailed) ||
	    ((_MDInWTempRiverRouteID      = MDWTempRiverRouteDef ()) == CMfailed) ||
	    ((_MDInRiverStorageChgID      = MFVarGetID (MDVarRiverStorageChg,         "m3/s",   MFInput,  MFState, MFBoundary)) == CMfailed) ||
	    ((_MDInRiverStorageID         = MFVarGetID (MDVarRiverStorage,            "m3",     MFInput,  MFState, MFInitial))  == CMfailed) ||
	    ((_MDInPointScenarioID        = MFVarGetID (MDVarPointScenario,           MFNoUnit, MFInput,  MFState, MFBoundary)) == CMfailed) ||
        ((_MDNonPoint_DINID           = MFVarGetID (MDVarBGCNonPoint_DIN,         "kg/m3",  MFInput,  MFState, MFBoundary)) == CMfailed) ||
	    ((_MDPointSources_DINID       = MFVarGetID (MDVarBGCPointSources_DIN,     "kg/day", MFInput,  MFState, MFBoundary)) == CMfailed) ||
	    	    
	    // Output
	    ((_MDLocalIn_DINID            = MFVarGetID (MDVarDINLocalIn,              "kg/d",   MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDRemoval_DINID            = MFVarGetID (MDVarDINRemoval,              "kg/d",   MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
        ((_MDConc_DINID               = MFVarGetID (MDVarDINConcentration,        "kg/m3",  MFOutput, MFState, MFBoundary)) == CMfailed) ||
	    ((_MDStorage_DINID            = MFVarGetID (MDVarDINStorage,              "kg",     MFOutput, MFState, MFInitial))  == CMfailed) ||
	    ((_MDDeltaStorage_DINID       = MFVarGetID (MDVarDINDeltaStorage,         "kg/day", MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
        ((_MDFlux_DINID               = MFVarGetID (MDVarDINFlux  ,               "kg/day", MFRoute,  MFFlux,  MFBoundary)) == CMfailed) ||
        ((_MDConcMixing_DINID         = MFVarGetID (MDVarDINConcentration_Mixing, "kg/m3",  MFOutput, MFState, MFBoundary)) == CMfailed) ||
        ((_MDStorageMixing_DINID      = MFVarGetID (MDVarDINStorage_Mixing,       "kg",     MFOutput, MFState, MFInitial))  == CMfailed) ||
        ((_MDDeltaStorageMixing_DINID = MFVarGetID (MDVarDINDeltaStorage_Mixing,  "kg/day", MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
        ((_MDFluxMixing_DINID         = MFVarGetID (MDVarDINFlux_Mixing ,         "kg/day", MFRoute,  MFFlux,  MFBoundary)) == CMfailed) ||
        (MFModelAddFunction (_MDDINRouting) == CMfailed)) return (CMfailed); 

	MFDefLeaving ("DIN Routing Calculation");
	return (_MDFlux_DINID); 
}
示例#4
0
int MDWaterBalanceDef() {
 
	MFDefEntering ("WaterBalance");
	if ((                                  MDAccumBalanceDef     ()  == CMfailed) ||
	    ((_MDInPrecipID                  = MDPrecipitationDef    ()) == CMfailed) ||
	    ((_MDInDischargeID               = MDDischargeDef        ()) == CMfailed) ||
	 
	    ((_MDInSnowPackChgID             = MDSPackChgDef         ()) == CMfailed) ||
	    ((_MDInSoilMoistChgID            = MDSoilMoistChgDef     ()) == CMfailed) ||
	    ((_MDInRunoffID                  = MDRunoffDef           ()) == CMfailed) ||
	    ((_MDInEvaptrsID                 = MFVarGetID (MDVarEvapotranspiration,      "mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInGrdWatChgID               = MFVarGetID (MDVarGroundWaterChange,       "mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInRunoffPoolChgID           = MFVarGetID (MDVarRunoffPoolChg,           "mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDOutWaterBalanceID           = MFVarGetID (MDVarWaterBalance,            "mm",   MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
	    (MFModelAddFunction(_MDWaterBalance) == CMfailed))
	    return (CMfailed);
	if ((_MDInIrrGrossDemandID           = MDIrrGrossDemandDef    ()) != MFUnset) {
		if ((_MDInIrrGrossDemandID == CMfailed) ||
	        ((_MDInIrrUptakeRiverID      = MDIrrUptakeRiverDef    ()) == CMfailed) ||
	        ((_MDInIrrUptakeGrdWaterID   = MDIrrUptakeGrdWaterDef ()) == CMfailed) ||
	        ((_MDInIrrSoilMoistChgID     = MDIrrSoilMoistChgDef   ()) == CMfailed) ||
	        ((_MDInIrrAreaFracID         = MDIrrigatedAreaDef    ())==  CMfailed) ||
	        ((_MDInIrrEvapotranspID      = MFVarGetID (MDVarIrrEvapotranspiration, "mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
	        ((_MDInIrrReturnFlowID       = MFVarGetID (MDVarIrrReturnFlow,         "mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) || 
	        ((_MDInIrrUptakeExcessID     = MFVarGetID (MDVarIrrUptakeExcess,       "mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
		    ((_MDOutIrrUptakeBalanceID   = MFVarGetID (MDVarIrrUptakeBalance,      "mm",   MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
		    ((_MDOutIrrWaterBalanceID    = MFVarGetID (MDVarIrrWaterBalance,       "mm",   MFOutput, MFFlux,  MFBoundary)) == CMfailed))
	    	return (CMfailed);		
		if ((_MDInSmallResReleaseID        = MDSmallReservoirReleaseDef ()) != MFUnset) {
			if (( _MDInSmallResReleaseID == CMfailed) ||
			    ((_MDInSmallResEvapoID      = MFVarGetID (MDVarSmallResEvaporation,   "mm", MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
			    ((_MDInSmallResStorageChgID = MFVarGetID (MDVarSmallResStorageChange, "mm", MFInput, MFState, MFInitial))  == CMfailed))
			    return (CMfailed);
		}
	}
	MFDefLeaving ("WaterBalance");
	return (_MDOutWaterBalanceID);	
}
示例#5
0
int MDWaterBalanceDef() {
        enum { MDaccumulate, MDmuskingum, MDcascade };
        int  RoptID = MFUnset;
        const char *RoptStr, *RoptName = MDOptRouting;
        const char *Roptions [] = { "accumulate", "muskingum", "cascade", (char *) NULL };
        if ((RoptStr = MFOptionGet (RoptName)) != (char *) NULL) RoptID = CMoptLookup (Roptions, RoptStr, true);
        
        enum { MDinput, MDcalculate, MDinput2};
        int  optID = MFUnset;
	const char *optStr, *optName = MDVarRunoff;
	const char *options [] = { MDInputStr, MDCalculateStr, MDInput2Str, (char *) NULL };
        
	MFDefEntering ("WaterBalance");
        if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true);
        switch (optID) {
        
        case MDcalculate:
            // Build the calculation hierarchy
        if ((                                  MDAccumBalanceDef     ()  == CMfailed) ||
	    ((_MDInPrecipID                  = MDPrecipitationDef    ()) == CMfailed) ||
	    ((_MDInDischargeID               = MDDischargeDef        ()) == CMfailed) || 
	    ((_MDInSnowPackChgID             = MDSPackChgDef         ()) == CMfailed) ||
	    ((_MDInSoilMoistChgID            = MDSoilMoistChgDef     ()) == CMfailed) ||
	    ((_MDInRunoffID                  = MDRunoffDef           ()) == CMfailed)
            ) return (CMfailed);
            // Fill in the routing parameters            
            switch (RoptID) {
                case MDaccumulate:
                    //Nothing to do
                    break;
                case MDmuskingum:
                    if (
                       ((_MDInMuskingumC0ID                  = MFVarGetID(MDVarMuskingumC0, MFNoUnit,MFInput,  MFState,  MFBoundary)) == CMfailed) ||
                       ((_MDInMuskingumC1ID                  = MFVarGetID(MDVarMuskingumC1, MFNoUnit,MFInput,  MFState,  MFBoundary)) == CMfailed) ||
                       ((_MDInMuskingumC2ID                  = MFVarGetID(MDVarMuskingumC2, MFNoUnit,MFInput,  MFState,  MFBoundary)) == CMfailed)
                        )    return (CMfailed);
                    break;
                case MDcascade:
                    if (
                       ((_MDInCascadeC0ID                  = MFVarGetID(MDVarCascadeC0, MFNoUnit,MFInput,  MFState,  MFBoundary)) == CMfailed)
                       ) return (CMfailed);
                    break;
            }
            // Continue with remaining parameters and add function
	if (
//	    ((_MDInEvaptrsID                 = MFVarGetID (MDVarEvapotranspiration,      	"mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||    
	    ((_MDInGrdWatChgID               = MFVarGetID (MDVarGroundWaterChange,       	"mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInRunoffPoolChgID           = MFVarGetID (MDVarRunoffPoolChg,           	"mm",   MFInput,  MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInRunoffPoolID              = MFVarGetID (MDVarRunoffPool,         		"mm", MFInput, MFState, MFInitial))  == CMfailed) ||
	    ((_MDInRunoffPoolRechargeID      = MFVarGetID (MDVarRunoffPoolRecharge, 		"mm", MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInRunoffPoolReleaseID       = MFVarGetID (MDVarRunoffPoolRelease,  		"mm", MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInStormRunoffImpID    		 = MFVarGetID (MDVarStormRunoffImp,  			"mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInStormRunoffH2OID    		 = MFVarGetID (MDVarStormRunoffH2O,  			"mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInPrecipPervID        		 = MFVarGetID (MDVarPrecipPerv,      			"mm",   MFInput, MFFlux, MFBoundary)) == CMfailed) ||
	    ((_MDInStormRunoffTotalID  		 = MFVarGetID (MDVarStormRunoffTotal,			"mm",   MFInput, MFFlux, MFBoundary))  == CMfailed) ||
	    ((_MDInRunofftoPervID      		 = MFVarGetID (MDVarRunofftoPerv,    			"mm",   MFInput, MFFlux, MFBoundary))  == CMfailed) ||
 	    ((_MDInPetID                        = MFVarGetID (MDVarRainPotEvapotrans,                  "mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
            ((_MDInEvaptrsID         		 = MFVarGetID (MDVarRainEvapotranspiration,     "mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
 	    ((_MDInEvaptrsNotScaledID		 = MFVarGetID (MDVarRainETnotScaled,            "mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||	// RJS 082812
	    ((_MDInSoilMoistNotScaledID		 = MFVarGetID (MDVarRainSoilMoistureNotScaled,  "mm",   MFInput, MFState, MFInitial))  == CMfailed) ||
	    ((_MDInSoilMoistChgNotScaledID	 = MFVarGetID (MDVarRainSoilMoistureChangeNotScaled,  "mm",   MFInput, MFState, MFInitial))  == CMfailed) ||
	    ((_MDInSoilMoistID       		 = MFVarGetID (MDVarRainSoilMoisture,           "mm",   MFInput, MFState, MFBoundary)) == CMfailed) ||
	    ((_MDInSoilAvailWaterCapID 	 	 = MFVarGetID (MDVarSoilAvailWaterCap,          "mm",   MFInput,  MFFlux, MFInitial)) == CMfailed) ||
 	    ((_MDInExcessID           		 = MFVarGetID (MDVarExcess,                     "mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||	// RJS 091813
 	    ((_MDInExcessNotScaledID    	 = MFVarGetID (MDVarExcessNotScaled,            "mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||	// RJS 091813
 	    ((_MDInImpFractionID       		 = MFVarGetID (MDVarImpFracSpatial,             "-",    MFInput,  MFState, MFBoundary)) == CMfailed) ||   // RJS 082812
	    ((_MDInH2OFractionID       	 	 = MFVarGetID (MDVarH2OFracSpatial,             "-",    MFInput,  MFState, MFBoundary)) == CMfailed) ||   // RJS 082812
	    ((_MDInQPreID       	 	 = MFVarGetID (MDVarQPre,                     "m3/s",   MFInput,  MFState, MFInitial)) == CMfailed) ||   // RJS 100213
	    ((_MDInQCurID       	 	 = MFVarGetID (MDVarQCur,                     "m3/s",   MFInput,  MFState, MFInitial)) == CMfailed) ||   // RJS 100213
            ((_MDInQOutID       	 	 = MFVarGetID (MDVarQOut,                     "m3/s",   MFInput,  MFState, MFInitial)) == CMfailed) ||   // RJS 100213
            ((_MDInDischRJSID                    = MFVarGetID (MDVarDischRJS,                 "m3/s",   MFInput,  MFState, MFInitial)) == CMfailed) ||   // RJS 100213
            ((_MDInRiverStorChgID                = MFVarGetID (MDVarRiverStorageChg,  "m3",     MFInput, MFFlux,  MFBoundary)) == CMfailed) ||          // RJS 100213
	    ((_MDInRiverStorageID                = MFVarGetID (MDVarRiverStorage,     "m3",     MFInput, MFState, MFInitial))  == CMfailed) ||          // RJS 100213
            ((_MDInRunoffVolumeID                = MFVarGetID (MDVarRunoffVolume,      "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) ||
	    ((_MDInRainWaterSurplusID            = MFVarGetID (MDVarRainWaterSurplus,     		"mm", MFInput, MFFlux, MFBoundary)) == CMfailed) ||  
            ((_MDInRainSurfRunoffID            = MFVarGetID (MDVarRainSurfRunoff,     		"mm", MFInput, MFFlux, MFBoundary)) == CMfailed) ||            
            ((_MDInRainInfiltrationID            = MFVarGetID (MDVarRainInfiltration,     		"mm", MFInput, MFFlux, MFBoundary)) == CMfailed) ||
	    ((_MDInGrdWatID                	 = MFVarGetID (MDVarGroundWater,         		"mm", MFInput, MFState, MFInitial))  == CMfailed) ||
            ((_MDInGrdWatRechargeID        	 = MFVarGetID (MDVarGroundWaterRecharge, 		"mm", MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInBaseFlowID              	 = MFVarGetID (MDVarBaseFlow,            		"mm", MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInSnowFallID    			 = MFVarGetID (MDVarSnowFall,       			"mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInSnowMeltID   			 = MFVarGetID (MDVarSnowMelt,       			"mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
	    ((_MDInSnowPackID   			 = MFVarGetID (MDVarSnowPack,       			"mm",   MFInput, MFState, MFInitial))  == CMfailed) ||
            ((_MDInTotalSurfRunoffID 		 = MFVarGetID (MDVarTotalSurfRunoff, 			"mm",   MFInput, MFFlux,  MFBoundary)) == CMfailed) ||
            ((_MDInPropROStormWaterID      = MFVarGetID (MDVarPropROStormWater,    "-",   MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInPropROSurfaceWaterID    = MFVarGetID (MDVarPropROSurfaceWater,  "-",   MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313 
            ((_MDInPropROGroundWaterID     = MFVarGetID (MDVarPropROGroundWater,   "-",   MFInput, MFState, MFBoundary)) == CMfailed) ||   
            ((_MDInQStormWaterID         = MFVarGetID (MDVarQStormWater,    "m3/s",    MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInQSurfaceWaterID       = MFVarGetID (MDVarQSurfaceWater,  "m3/s",    MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313 
            ((_MDInQGroundWaterID        = MFVarGetID (MDVarQGroundWater,   "m3/s",    MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313  
	    ((_MDInPropRSStormWaterID        = MFVarGetID (MDVarPropRSStormWater,   "-",   MFInput, MFState, MFInitial)) == CMfailed) ||       // RJS 100313
            ((_MDInPropRSSurfaceWaterID      = MFVarGetID (MDVarPropRSSurfaceWater, "-",   MFInput, MFState, MFInitial)) == CMfailed) ||       // RJS 100313 
            ((_MDInPropRSGroundWaterID       = MFVarGetID (MDVarPropRSGroundWater,  "-",   MFInput, MFState, MFInitial)) == CMfailed) ||       // RJS 100313  	    
            ((_MDInPropQinStormWaterID    = MFVarGetID (MDVarPropQinStormWater,   "-",   MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInPropQinSurfaceWaterID  = MFVarGetID (MDVarPropQinSurfaceWater,   "-", MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInPropQinGroundWaterID   = MFVarGetID (MDVarPropQinGroundWater,   "-",  MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInPropRSinStormWaterID   = MFVarGetID (MDVarPropRSinStormWater,   "-",  MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInPropRSinSurfaceWaterID = MFVarGetID (MDVarPropRSinSurfaceWater,  "-", MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313
            ((_MDInPropRSinGroundWaterID  = MFVarGetID (MDVarPropRSinGroundWater,   "-", MFInput, MFState, MFBoundary)) == CMfailed) ||       // RJS 100313            
            ((_MDInPropROFlagID           = MFVarGetID (MDVarPropROFlag,          "-",   MFInput, MFState, MFBoundary)) == CMfailed) ||
            ((_MDInQFlagID                = MFVarGetID (MDVarQFlag,            "m3/s",   MFInput, MFState, MFBoundary)) == CMfailed) ||
            ((_MDInPropRSFlagID           = MFVarGetID (MDVarPropRSFlag,       "-",      MFInput, MFState, MFInitial)) == CMfailed) || 
            ((_MDInPropQinFlagID          = MFVarGetID (MDVarPropQinFlag,      "-",      MFInput, MFState, MFBoundary))  == CMfailed) ||
            ((_MDInPropRSinFlagID         = MFVarGetID (MDVarPropRSinFlag,     "-",      MFInput, MFState, MFBoundary))  == CMfailed) ||
            ((_MDOutWaterBalanceID        = MFVarGetID (MDVarWaterBalance,      "mm",    MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
	    (MFModelAddFunction(_MDWaterBalance) == CMfailed))
	    return (CMfailed);
        
        break;
        
        case MDinput: 																										       			// RJS 061312
        if (((_MDInRunoffID               = MDRunoffDef           ()) == CMfailed) ||			
            ((_MDOutWaterBalanceID        = MFVarGetID (MDVarWaterBalance,      "mm",    MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
            (MFModelAddFunction (_MDWaterBalanceInput) == CMfailed)) return (CMfailed);														// RJS 061312
        break;	
        case MDinput2: 																										       			// RJS 061312
        if (((_MDInRunoffID               = MDRunoffDef           ()) == CMfailed) ||			
            ((_MDOutWaterBalanceID        = MFVarGetID (MDVarWaterBalance,      "mm",    MFOutput, MFFlux,  MFBoundary)) == CMfailed) ||
            (MFModelAddFunction (_MDWaterBalanceInput) == CMfailed)) return (CMfailed);														// RJS 061312
        break;	
        default: MFOptionMessage (optName, optStr, options); return (CMfailed);
        }
	MFDefLeaving ("WaterBalance");
	return (_MDOutWaterBalanceID);	
}