int MDRainInterceptDef () { int optID = MFUnset; const char *optStr, *optName = MDVarRainInterception; const char *options [] = { MDNoneStr, MDInputStr, MDCalculateStr, (char *) NULL }; if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); if ((optID == MDnone) || (_MDOutInterceptID != MFUnset)) return (_MDOutInterceptID); MFDefEntering ("Rainfed Intercept"); switch (optID) { case MDinput: _MDOutInterceptID = MFVarGetID (MDVarRainInterception, "mm", MFInput, MFFlux, false); break; case MDcalc: if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInSPackChgID = MDSPackChgDef ()) == CMfailed) || ((_MDInLeafAreaIndexID = MDLeafAreaIndexDef ()) == CMfailed) || ((_MDInStemAreaIndexID = MDStemAreaIndexDef ()) == CMfailed) || ((_MDInPetID = MDRainPotETDef ()) == CMfailed) || ((_MDOutInterceptID = MFVarGetID (MDVarRainInterception, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRainIntercept) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Rainfed Intercept"); return (_MDOutInterceptID); }
int MDStormRunoffDef () { if (_MDOutStormRunoffTotalID != MFUnset) return (_MDOutStormRunoffTotalID); MFDefEntering ("Storm Runoff"); if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInH2OFractionID = MFVarGetID (MDVarH2OFracSpatial, "-", MFInput, MFState, MFBoundary)) == CMfailed) || //commented out 082812 ((_MDInImpFractionID = MFVarGetID (MDVarImpFracSpatial, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInSPackChgID = MFVarGetID (MDVarSnowPackChange, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInHCIAID = MFVarGetID (MDVarHCIA, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutStormRunoffImpID = MFVarGetID (MDVarStormRunoffImp, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutStormRunoffH2OID = MFVarGetID (MDVarStormRunoffH2O, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || //commented out 082812 ((_MDOutPrecipPervID = MFVarGetID (MDVarPrecipPerv, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutStormRunoffTotalID = MFVarGetID (MDVarStormRunoffTotal,"mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutH2OFractionID = MFVarGetID (MDVarH2OFracSpatial, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100113 ((_MDOutImpFractionID = MFVarGetID (MDVarImpFracSpatial, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100113 ((_MDOutRunofftoPervID = MFVarGetID (MDVarRunofftoPerv, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) ) return (CMfailed); // Add in check for development ... then read-in Impervious and HCIA ... then add model function enum { MFnone, MFcalculate }; const char *optStr; const char *snowImpervMeltOptions [] = { MDNoneStr, MDCalculateStr,(char *) NULL }; int impervSnowMeltCalcID; if ((optStr = MFOptionGet (MDOptImperviousMeltCalc) ) == (char *) NULL) { optStr = MDNoneStr; //CMmsgPrint(CMmsgWarning," Impervious Snow Fall runoff method not specified - defaulting to none (StormRunoff).\n"); } if ((impervSnowMeltCalcID = CMoptLookup (snowImpervMeltOptions,optStr,true)) == CMfailed) { CMmsgPrint(CMmsgUsrError," Impervious Snow Fall runoff method incorrectly specified. Options are 'none' or 'calculate'.\n"); return (CMfailed); } switch (impervSnowMeltCalcID) { case MFnone: // Nothing to be done break; case MFcalculate: if (((_MDInImpSnowFallROID = MFVarGetID ( MDVarImpSnowFallRunoff,"mm", MFInput, MFFlux, MFBoundary)) == CMfailed) ) return (CMfailed); break; default: MFOptionMessage (MDOptImperviousMeltCalc, optStr, snowImpervMeltOptions); return (CMfailed); } // Include StormRunoff if ((MFModelAddFunction (_MDStormRunoff) == CMfailed)) return (CMfailed); MFDefLeaving ("Storm Runoff"); return (_MDOutRunofftoPervID); }
int MDRainSMoistChgDef () { int ret = 0; float par; const char *optStr; if (_MDOutSMoistChgID != MFUnset) return (_MDOutSMoistChgID); const char *soilTemperatureOptions [] = { "none", "calculate", (char *) NULL }; int soilTemperatureID; if (((optStr = MFOptionGet (MDOptSoilTemperature)) == (char *) NULL) || ((soilTemperatureID = CMoptLookup (soilTemperatureOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError," Soil TemperatureOption not specifed! Options = 'none' or 'calculate'\n"); return CMfailed; } if (((optStr = MFOptionGet (MDParSoilMoistALPHA)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDSoilMoistALPHA = par; MFDefEntering ("Rainfed Soil Moisture"); if (soilTemperatureID == MFcalculate ) { if (((ret = MDPermafrostDef()) == CMfailed) || ((_MDInRelativeIceContent = MFVarGetID ("SoilIceContent_01", "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutLiquidSoilMoistureID = MFVarGetID (MDVarLiquidSoilMoisture, "-", MFOutput, MFState, MFBoundary)) == CMfailed)) return CMfailed; } if ((ret = MDIrrGrossDemandDef ()) == CMfailed) return (CMfailed); if ((ret != MFUnset) && ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ())== CMfailed) ) return (CMfailed); if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInSPackChgID = MDSPackChgDef ()) == CMfailed) || ((_MDInPotETID = MDRainPotETDef ()) == CMfailed) || ((_MDInInterceptID = MDRainInterceptDef ()) == CMfailed) || ((_MDInSoilAvailWaterCapID = MDSoilAvailWaterCapDef ()) == CMfailed) || ((_MDInAirTMeanID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutEvaptrsID = MFVarGetID (MDVarRainEvapotranspiration, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutSoilMoistCellID = MFVarGetID (MDVarRainSoilMoistureCell, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSoilMoistID = MFVarGetID (MDVarRainSoilMoisture, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSMoistChgID = MFVarGetID (MDVarRainSoilMoistChange, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRainSMoistChg) == CMfailed)) return (CMfailed); MFDefLeaving ("Rainfed Soil Moisture"); return (_MDOutSMoistChgID); }
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); }
int MDSPackChgDef () { if (_MDOutSPackChgID != MFUnset) return (_MDOutSPackChgID); MFDefEntering ("Snow Pack Change"); const char *optStr; const char *soilTemperatureOptions [] = { "none", "calculate", (char *) NULL }; int soilTemperatureID; float par; if (((optStr = MFOptionGet (MDParSnowMeltThreshold)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDSnowMeltThreshold = par; if (((optStr = MFOptionGet (MDParFallThreshold)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDFallThreshold= par; if (((optStr = MFOptionGet (MDOptSoilTemperature)) == (char *) NULL) || ((soilTemperatureID = CMoptLookup (soilTemperatureOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError," Soil TemperatureOption not specifed! Options = 'none' or 'calculate'\n"); return CMfailed; } if (soilTemperatureID == 1 ){ _MDCalculateSoilTempID=1; if ((_MDInWinterOnsetID = MFVarGetID (MDVarWinterOnsetDoy, "DoY", MFInput, MFState, MFBoundary)) == CMfailed) return CMfailed; } if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInAtMeanID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSnowFallID = MFVarGetID (MDVarSnowFall, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutSnowMeltID = MFVarGetID (MDVarSnowMelt, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutSnowDensityID = MFVarGetID (MDVarSnowDensity, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSnowDepthID = MFVarGetID (MDVarSnowDepth, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSnowPackID = MFVarGetID (MDVarSnowPack, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSPackChgID = MFVarGetID (MDVarSnowPackChange, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDSPackChg) == CMfailed)) return (CMfailed); MFDefLeaving ("Snow Pack Change"); return (_MDOutSPackChgID); }
int MDRainSMoistChgLayeredSoilDef () { int ret = 0; float par; int i; char soilLiquidName [16]; char soilSiltFractionName[22]; char soilClayFractionName[22]; char soilSandFractionName[22]; char soilRelativeSoilMoistName[30]; char soilIceName[20]; char soilDepthName[20]; const char *optStr; const char *soilTemperatureOptions [] = { "none", "calculate", (char *) NULL }; if (_MDOutSMoistChgID != MFUnset) return (_MDOutSMoistChgID); if (((optStr = MFOptionGet (MDOptSoilTemperature)) == (char *) NULL) || ((soilTemperatureID = CMoptLookup (soilTemperatureOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError," Soil TemperatureOption not specifed! Options = 'none' or 'calculate'\n"); return CMfailed; } MFDefEntering ("Rainfed Layered Soil Moisture"); if (soilTemperatureID ==1){ // printf ("SoilTemp is on before\n"); if ((ret = MDPermafrostDef ()) == CMfailed) return (CMfailed); // printf ("SoilTemp is on fater \n"); // if ((_MDActiveLayerDepthID= MFVarGetID (MDVarActiveLayerDepth, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) return CMfailed; if ((_MDActiveLayerDepthID = MFVarGetID (MDVarActiveLayerDepth, "m", MFOutput, MFState, MFBoundary)) == CMfailed)return CMfailed; } if (((optStr = MFOptionGet (MDParSoilMoistALPHA)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDSoilMoistALPHA = par; if (((optStr = MFOptionGet ("SoilMoistureTimeSteps")) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDTimeSteps = par; if (((optStr = MFOptionGet ("SoilMoistureTimeSteps")) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDTimeSteps = par; if ((ret = MDIrrGrossDemandDef ()) == CMfailed) return (CMfailed); if ((ret != MFUnset) && ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ())== CMfailed) ) return (CMfailed); for (i = 0; i < _MDNumberOfSoilMoistureLayers; i++) { _MDInSoilDepthIDs = (int *) realloc (_MDInSoilDepthIDs, (i + 1) * sizeof (int)); _MDOutSMLiquidIDs = (int *) realloc (_MDOutSMLiquidIDs, (i + 1) * sizeof (int)); _MDOutSMIceDs = (int *) realloc (_MDOutSMIceDs, (i + 1) * sizeof (int)); _MDInSoilpctClayIDs = (int *) realloc (_MDInSoilpctClayIDs, (i + 1) * sizeof (int)); _MDInSoilpctSandIDs = (int *) realloc (_MDInSoilpctSandIDs, (i + 1) * sizeof (int)); _MDInSoilpctSiltIDs = (int *) realloc (_MDInSoilpctSiltIDs, (i + 1) * sizeof (int)); _MDSoilRelativeSoilMoistIDs = (int *) realloc (_MDSoilRelativeSoilMoistIDs, (i + 1) * sizeof (int)); // printf ("Reading Layer = %i of %i\n",i, _MDNumberOfSoilMoistureLayers); sprintf (soilDepthName, "SoilDepth_%02d", i + 1); // sprintf (soilLiquidName, "SoilLiquid_%02d", i + 1); // sprintf (soilIceName, "SoilIce_%02d", i + 1); // sprintf (soilSiltFractionName, "SoilSiltPercentage_%02d", i + 1); // sprintf (soilSandFractionName, "SoilSandPercentage_%02d", i + 1); // sprintf (soilClayFractionName, "SoilClayPercentage_%02d", i + 1); // sprintf (soilRelativeSoilMoistName, "SoilRelativeSoilMoisture_%02d", i + 1); // //printf ("SDepth = %s\n", soilLiquidName); //printf ("ID = %i\n",_MDInSoilDepthIDs [i]); if ((_MDInSoilDepthIDs [i] = MFVarGetID (soilDepthName, "mm", MFInput, MFState, MFBoundary)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } if ((_MDOutSMLiquidIDs [i] = MFVarGetID (soilLiquidName, "mm", MFOutput, MFState, MFInitial)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } if ((_MDOutSMIceDs [i] = MFVarGetID (soilIceName, "mm", MFOutput, MFState, MFInitial)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } if ((_MDInSoilpctSiltIDs [i] = MFVarGetID (soilSiltFractionName, "mm", MFInput, MFState, MFBoundary)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } if ((_MDInSoilpctSandIDs [i] = MFVarGetID (soilSandFractionName, "mm", MFInput, MFState, MFBoundary)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } if ((_MDInSoilpctClayIDs [i] = MFVarGetID (soilClayFractionName, "mm", MFInput, MFState, MFBoundary)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } if ((_MDSoilRelativeSoilMoistIDs [i] = MFVarGetID (soilRelativeSoilMoistName, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) { printf("CMfailed in MDInSoilInputDataID \n"); CMmsgPrint (CMmsgUsrError, "CMfailed in MDInSoilDepth \n"); return CMfailed; } } if ((_MDOutRainInfiltrationID= MFVarGetID (MDVarRainInfiltration, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) return CMfailed; if ((_MDOutSatExcessFlowID= MFVarGetID (MDVarSaturationExcessflow, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) return CMfailed; if ((_MDOutSoilDebugID = MFVarGetID(MDVarOutSoilDebug,"mm", MFOutput, MFState, MFBoundary)) == CMfailed) return CMfailed; if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInSPackChgID = MDSPackChgDef ()) == CMfailed) || ((_MDInPotETID = MDRainPotETDef ()) == CMfailed) || ((_MDInInterceptID = MDRainInterceptDef ()) == CMfailed) || ((_MDOutWaterTableDepthID = MFVarGetID (MDVarWaterTableDepth, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDInSoilOrganicLayerID = MFVarGetID (MDVarSoilOrganicLayer, "kg/m3", MFInput, MFState, MFBoundary)) == CMfailed) || // ((_MDInSoilAvailWaterCapID = MDSoilAvailWaterCapDef ()) == CMfailed) || ((_MDOutEvaptrsID = MFVarGetID (MDVarRainEvapotranspiration, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInSoilRootingDepthID = MFVarGetID (MDVarSoilRootingDepth, "mm", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInIsInitialID = MFVarGetID (MDVarSoilMoistureIsInitial, "m", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSoilMoistCellID = MFVarGetID (MDVarRainSoilMoistureCell, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSoilMoistID = MFVarGetID (MDVarRainSoilMoisture, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSMoistChgID = MFVarGetID (MDVarRainSoilMoistChange, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRainSMoistChg) == CMfailed)) return (CMfailed); MFDefLeaving ("Rainfed Layered Soil Moisture"); return (_MDOutSMoistChgID); }
int MDIrrGrossDemandDef () { int optID = MFUnset; const char *optStr, *optName = MDOptIrrigation; const char *options [] = { MDNoneStr, MDInputStr, MDCalculateStr, (char *) NULL }; const char *mapOptions [] = { "FAO", "IWMI", (char *) NULL }; const char *distrOptions [] = { "FirstSeason","Distributed", (char *) NULL }; int i; char varname [20]; char cropETName [20]; char cropGrossDemandName[20]; int mapOptionID = MFUnset; int irrDistribuedID = MFUnset; if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); if ((optID == MDnone) || (_MDOutIrrGrossDemandID != MFUnset)) return (_MDOutIrrGrossDemandID); MFDefEntering ("Irrigation Gross Demand"); switch (optID) { case MDinput: if(((_MDOutIrrGrossDemandID = MFVarGetID (MDVarIrrGrossDemand, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrReturnFlowID = MFVarGetID (MDVarIrrReturnFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrEvapotranspID = MFVarGetID (MDVarIrrEvapotranspiration, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed)) return (CMfailed); break; case MDcalculate: if (((optStr = MFOptionGet (MDOptIrrIntensity)) == (char *) NULL) || ((irrDistribuedID = CMoptLookup (distrOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError,"Irrigation Distribution not specifed! Options = 'Distributed' or 'FirstSeason'\n"); return (CMfailed); } if (((optStr = MFOptionGet (MDOptIrrigatedAreaMap)) == (char *) NULL) || ((mapOptionID = CMoptLookup (mapOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError,"Typ of Irr Area not specifed! Options = 'FAO' or 'IWMI'\n"); return (CMfailed); } _MDIrrigatedAreaMap=mapOptionID; if (_MDIrrigatedAreaMap == 1) { //read irrArea for both seasons from IWMI data; Irr Intensity not needed! _MDIntensityDistributed = true; //Distributed ; } else { // FAO irrigated Area Map; read Irr Area and Intensity if (((optStr = MFOptionGet (MDOptIrrIntensity)) == (char *) NULL) || ((irrDistribuedID = CMoptLookup (distrOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError,"Irrigation Distribution not specifed! Options = 'Distributed' or 'FirstSeason'\n"); return CMfailed; } _MDIntensityDistributed = irrDistribuedID == 0 ? false : true; if (((_MDInIrrIntensityID = MFVarGetID (MDVarIrrIntensity, "-", MFInput, MFState, MFBoundary)) == CMfailed)) return (CMfailed); } if ((optStr = MFOptionGet (MDParIrrigationCropFileName)) != (char *) NULL) CropParameterFileName = optStr; if (readCropParameters (CropParameterFileName) == CMfailed) { CMmsgPrint(CMmsgUsrError,"Error reading crop parameter file : %s \n", CropParameterFileName); return CMfailed; } if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInSPackChgID = MDSPackChgDef ()) == CMfailed) || ((_MDInIrrRefEvapotransID = MDIrrRefEvapotransDef ()) == CMfailed) || ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ())== CMfailed) || ((_MDInWltPntID = MFVarGetID (MDVarSoilWiltingPoint, "mm/m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFldCapaID = MFVarGetID (MDVarSoilFieldCapacity, "mm/m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDGrowingSeason1ID = MFVarGetID (MDVarIrrGrowingSeason1Start, "DoY", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDGrowingSeason2ID = MFVarGetID (MDVarIrrGrowingSeason2Start, "DoY", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDNonIrrFractionID = MFVarGetID (MDNonIrrigatedFraction, "-", MFOutput , MFState, MFBoundary)) == CMfailed) || ((_MDRicePercolationRateID = MFVarGetID (MDVarIrrDailyRicePerolationRate, "mm/day", MFInput , MFState, MFBoundary)) == CMfailed) || ((_MDInIrrEfficiencyID = MFVarGetID (MDVarIrrEfficiency, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutIrrGrossDemandID = MFVarGetID (MDVarIrrGrossDemand, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrReturnFlowID = MFVarGetID (MDVarIrrReturnFlow, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrNetDemandID = MFVarGetID (MDVarIrrNetWaterDemand, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrSoilMoistID = MFVarGetID (MDVarIrrSoilMoisture, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDRicePoindingDepthID = MFVarGetID (MDVarIrrRicePondingDepth, "mm", MFInput, MFState, MFBoundary)) == CMfailed)|| ((_MDOutIrrSMoistChgID = MFVarGetID (MDVarIrrSoilMoistChange, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrEvapotranspID = MFVarGetID (MDVarIrrEvapotranspiration, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed)) return (CMfailed); for (i = 0; i < _MDNumberOfIrrCrops; i++) { sprintf (varname, "CropFraction_%02d", i + 1); // Input Fraction of crop type per cell if ((_MDInCropFractionIDs [i] = MFVarGetID (varname, "mm", MFInput, MFState, MFBoundary)) == CMfailed) { CMmsgPrint (CMmsgUsrError, "CMfailed in MDInCropFractionID \n"); return CMfailed; } } for (i = 0; i < _MDNumberOfIrrCrops + 1;i++) { sprintf (cropETName, "CropET%02d", i + 1); // Keep track of crop ET for each crop seperately z sprintf (cropGrossDemandName, "CropGrossDemand%02d", i + 1); // Keep track of crop ET for each crop seperately z sprintf (varname, "CropSMDeficiency%02d", i + 1); // Output Soil Moisture Deficit, crop ET and WithDrawal per croptype if ((_MDOutCropETIDs[i] = MFVarGetID (cropETName, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed)return CMfailed; if ((_MDOutCropGrossDemandIDs[i] = MFVarGetID (cropGrossDemandName, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed)return CMfailed; if ((_MDOutCropDeficitIDs [i] = MFVarGetID (varname, "mm", MFOutput, MFState, MFInitial)) == CMfailed) return CMfailed; } if (MFModelAddFunction (_MDIrrGrossDemand) == CMfailed) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving("Irrigation Gross Demand"); return (_MDOutIrrGrossDemandID); }
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); }
int MDRainSMoistChgDef () { int ret = 0; float par; const char *optStr; /* // Test if the percolation pathway is active (if its not - PercolationBETA should not be in the Options) if ((optStr = MFOptionGet(MDParSoilPercolationBETA)) != (char *) NULL) { if ((_MDOutPercolationID = MFVarGetID (MDVarSoilPercolation, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) return (CMfailed); // SZ 10212014 } */ if (_MDOutSMoistChgID != MFUnset) return (_MDOutSMoistChgID); const char *soilTemperatureOptions [] = { "none", "calculate", (char *) NULL }; int soilTemperatureID; if (((optStr = MFOptionGet (MDOptSoilTemperature)) == (char *) NULL) || ((soilTemperatureID = CMoptLookup (soilTemperatureOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError," Soil TemperatureOption not specifed! Options = 'none' or 'calculate'\n"); return CMfailed; } if (((optStr = MFOptionGet (MDParSoilMoistALPHA)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDSoilMoistALPHA = par; if (((optStr = MFOptionGet (MDParSoilPercolationBETA)) != (char *) NULL) && (sscanf (optStr,"%f",&par) ==1)) _MDparPercolation = par; MFDefEntering ("Rainfed Soil Moisture"); if (soilTemperatureID == MFcalculate ) { if (((ret = MDPermafrostDef()) == CMfailed) || ((_MDInRelativeIceContent = MFVarGetID ("SoilIceContent_01", "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutLiquidSoilMoistureID = MFVarGetID (MDVarLiquidSoilMoisture, "-", MFOutput, MFState, MFBoundary)) == CMfailed)) return CMfailed; } if ((ret = MDIrrGrossDemandDef ()) == CMfailed) return (CMfailed); if ((ret != MFUnset) && ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ())== CMfailed) ) return (CMfailed); if (((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInSPackChgID = MDSPackChgDef ()) == CMfailed) || ((_MDInPotETID = MDRainPotETDef ()) == CMfailed) || ((_MDInInterceptID = MDRainInterceptDef ()) == CMfailed) || ((_MDInSoilAvailWaterCapID = MDSoilAvailWaterCapDef ()) == CMfailed) || ((_MDInAirTMeanID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRunoffToPervID = MDStormRunoffDef ()) == CMfailed) || // RJS 082812 // ((_MDInH2OFractionID = MFVarGetID (MDVarH2OFracSpatial, "mm", MFInput, MFState, MFBoundary)) == CMfailed) || // RJS 082812 ((_MDInStormRunoffTotalID = MFVarGetID (MDVarStormRunoffTotal, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || // RJS 082812 ((_MDInImpFractionID = MFVarGetID (MDVarImpFracSpatial, "-", MFInput, MFState, MFBoundary)) == CMfailed) || // RJS 082812 ((_MDInH2OFractionID = MFVarGetID (MDVarH2OFracSpatial, "-", MFInput, MFState, MFBoundary)) == CMfailed) || // RJS 082812 ((_MDOutEvaptrsID = MFVarGetID (MDVarRainEvapotranspiration, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutExcessID = MFVarGetID (MDVarExcess, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || // RJS 091813 ((_MDOutExcessNotScaledID = MFVarGetID (MDVarExcessNotScaled, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || // RJS 091813 ((_MDOutEvaptrsNotScaledID = MFVarGetID (MDVarRainETnotScaled, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || // RJS 082812 ((_MDOutSoilMoistNotScaledID = MFVarGetID (MDVarRainSoilMoistureNotScaled, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSoilMoistID = MFVarGetID (MDVarRainSoilMoisture, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSMoistChgNotScaledID = MFVarGetID (MDVarRainSoilMoistureChangeNotScaled, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSMoistChgID = MFVarGetID (MDVarRainSoilMoistChange, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRainSMoistChg) == CMfailed)) return (CMfailed); const char *snowImpervMeltOptions [] = { MDNoneStr, MDCalculateStr,(char *) NULL }; int impervSnowMeltCalcID; if ((optStr = MFOptionGet (MDOptImperviousMeltCalc) ) == (char *) NULL) { optStr = MDNoneStr; //CMmsgPrint(CMmsgWarning," Impervious Snow Fall runoff method not specified - defaulting to none (RainSMoistChgDef).\n"); } if ((impervSnowMeltCalcID = CMoptLookup (snowImpervMeltOptions,optStr,true)) == CMfailed) { CMmsgPrint(CMmsgUsrError," Impervious Snow Fall runoff method incorrectly specified. Options are 'none' or 'calculate'.\n"); return (CMfailed); } switch (impervSnowMeltCalcID) { case MFnone: // Nothing to be done break; case MFcalculate: if (((_MDInImpSnowFallROID = MFVarGetID ( MDVarImpSnowFallRunoff,"mm", MFInput, MFFlux, MFBoundary)) == CMfailed) ) return (CMfailed); break; default: MFOptionMessage (MDOptImperviousMeltCalc, optStr, snowImpervMeltOptions); return (CMfailed); } MFDefLeaving ("Rainfed Soil Moisture"); return (_MDOutSMoistChgID); }