int MDWTempGrdWaterDef () { int optID = MDinput; // RJS 061312 const char *optStr, *optName = MDOptGrdWaterTemp; // RJS 061312 const char *options [] = { MDCalculateStr, MDInputStr, (char *) NULL }; // RJS 061312 if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); // RJS 061312 if (_MDOutWTempGrdWaterID != MFUnset) return (_MDOutWTempGrdWaterID); MFDefEntering ("Groundwater temperature"); switch (optID) { // RJS 061312 case MDcalculate: // RJS 061312 if (((_MDInWTempSurfRunoffID = MDWTempSurfRunoffDef ()) == CMfailed) || ((_MDInRainRechargeID = MDRainInfiltrationDef ()) == CMfailed) || ((_MDInIrrReturnFlowID = MDIrrReturnFlowDef ()) == CMfailed) || ((_MDOutGrdWaterID = MDBaseFlowDef ()) == CMfailed) || ((_MDInAirTempID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutWTempGrdWaterID = MFVarGetID (MDVarWTempGrdWater, "degC", MFOutput, MFState, MFInitial)) == CMfailed) || (MFModelAddFunction (_MDWTempGrdWater) == CMfailed)) return (CMfailed); break; // RJS 061312 case MDinput: _MDOutWTempGrdWaterID = MFVarGetID (MDVarWTempGrdWater, "degC", MFInput, MFState, MFBoundary); break; // RJS 061312 MFInitial changed to MFBoundary in order to read in // RJS 061312 default: MFOptionMessage (optName, optStr, options); return (CMfailed); // RJS 061312 } // RJS 061312 MFDefLeaving ("Groundwater temperature"); return (_MDOutWTempGrdWaterID); }
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 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); }
int MDGrossRadDef () { int optID = MFUnset; const char *optStr, *optName = MDVarGrossRadiance; const char *options [] = { MDInputStr, "standard", "Otto", (char *) NULL }; float par; if (_MDOutGrossRadID != MFUnset) return (_MDOutGrossRadID); MFDefEntering ("Gross Radiance"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { case MDinput: _MDOutGrossRadID = MFVarGetID (MDVarGrossRadiance, "MJ/m^2", MFInput, MFFlux, MFBoundary); break; case MDstandard: if (((optStr = MFOptionGet (MDParGrossRadTAU)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDGrossRadStdTAU = par; if (((_MDOutGrossRadID = MFVarGetID (MDVarGrossRadiance, "MJ/m^2", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDGrossRadianceStd) == CMfailed)) return (CMfailed); break; case MDOtto: if (((_MDOutGrossRadID = MFVarGetID (MDVarGrossRadiance, "MJ/m^2", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDGrossRadianceOtto) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Gross Radiance"); return (_MDOutGrossRadID); }
int MDRainPotETSWGdayDef () { if (_MDOutPetID != MFUnset) return (_MDOutPetID); MFDefEntering ("Rainfed Potential Evapotranspiration (Shuttleworth - Wallace [day])"); if (((_MDInDayLengthID = MDSRadDayLengthDef ()) == CMfailed) || ((_MDInI0HDayID = MDSRadI0HDayDef ()) == CMfailed) || ((_MDInCParamAlbedoID = MDCParamAlbedoDef ()) == CMfailed) || ((_MDInCParamCHeightID = MDCParamCHeightDef ()) == CMfailed) || ((_MDInCParamLWidthID = MDCParamLWidthDef ()) == CMfailed) || ((_MDInCParamRSSID = MDCParamRSSDef ()) == CMfailed) || ((_MDInCParamR5ID = MDCParamR5Def ()) == CMfailed) || ((_MDInCParamCDID = MDCParamCDDef ()) == CMfailed) || ((_MDInCParamCRID = MDCParamCRDef ()) == CMfailed) || ((_MDInCParamGLMaxID = MDCParamGLMaxDef ()) == CMfailed) || ((_MDInCParamZ0gID = MDCParamZ0gDef ()) == CMfailed) || ((_MDInLeafAreaIndexID = MDLeafAreaIndexDef ()) == CMfailed) || ((_MDInStemAreaIndexID = MDStemAreaIndexDef ()) == CMfailed) || ((_MDInSolRadID = MDSolarRadDef ()) == CMfailed) || ((_MDInAtMeanID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInAtMinID = MFVarGetID (MDVarAirTempMinimum, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInVPressID = MFVarGetID (MDVarVaporPressure, "kPa", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInWSpeedID = MFVarGetID (MDVarWindSpeed, "m/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPetID = MFVarGetID (MDVarRainPotEvapotrans, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRainPotETSWGday) == CMfailed)) return (CMfailed); MFDefLeaving ("Rainfed Potential Evapotranspiration (Shuttleworth - Wallace [day])"); return(_MDOutPetID); }
int MDRiverbedShapeExponentDef () { int optID = MFUnset; const char *optStr, *optName = MDOptRiverbed; const char *options [] = { MDInputStr, "slope-independent", "slope-dependent", (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) || ((_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; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Riverbed Geometry"); return (_MDOutRiverbedShapeExponentID); }
int MDWTempRiverDef () { const char *optStr; if (_MDOutWTempRiverID != MFUnset) return (_MDOutWTempRiverID); MFDefEntering ("River temperature"); int optID = MFUnset; // RJS 060214 const char *optName = MDVarRunoff; // RJS 060214 const char *options [] = { MDCalculateStr, MDInputStr, MDInput2Str, (char *) NULL }; // RJS 060214 if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); // RJS 060214 switch (optID) { case MDcalculate: if ( ((_MDInSurfRunoffID = MDRainSurfRunoffDef ()) == CMfailed) || // ((_MDInBaseFlowID = MDBaseFlowDef ()) == CMfailed) || // commented out 051614 so that input BaseFlow isn't overwritten ((_MDInBaseFlowID = MFVarGetID (MDVarBaseFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || // ((_MDInWTempSurfRunoffID = MDWTempSurfRunoffDef ()) == CMfailed) || // commented out RJS 060512 ((_MDInWTempSurfRunoffPoolID = MDWTempSurfRunoffPoolDef ()) == CMfailed) || // RJS 060512 ((_MDInWTempGrdWaterID = MDWTempGrdWaterDef ()) == CMfailed) || ((_MDInTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || //RJS 082812 ((_MDOutWTempRiverID = MFVarGetID (MDVarWTempRiver, "degC", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDWTempRiver) == CMfailed)) return (CMfailed); break; case MDinput: if ( ((_MDInTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInBaseFlowID = MFVarGetID (MDVarBaseFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInWTempSurfRunoffPoolID = MDWTempSurfRunoffPoolDef ()) == CMfailed) || // RJS 060512 ((_MDInWTempGrdWaterID = MDWTempGrdWaterDef ()) == CMfailed) || // ((_MDInTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || //RJS 082812 ((_MDOutWTempRiverID = MFVarGetID (MDVarWTempRiver, "degC", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDWTempRiver) == CMfailed)) return (CMfailed); break; case MDinput2: if ( ((_MDInSurfRunoffID = MFVarGetID (MDVarRainSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInBaseFlowID = MFVarGetID (MDVarBaseFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInWTempSurfRunoffPoolID = MDWTempSurfRunoffPoolDef ()) == CMfailed) || // RJS 060512 ((_MDInWTempGrdWaterID = MDWTempGrdWaterDef ()) == CMfailed) || ((_MDInTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || //RJS 082812 ((_MDOutWTempRiverID = MFVarGetID (MDVarWTempRiver, "degC", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDWTempRiver) == CMfailed)) return (CMfailed); break; } MFDefLeaving ("River temperature"); return (_MDOutWTempRiverID); }
int MDRainPotETPsTaylorDef () { if (_MDOutPetID != MFUnset) return (_MDOutPetID); MFDefEntering ("Rainfed Potential Evapotranspiration (Priestley - Taylor)"); if (((_MDInDayLengthID = MDSRadDayLengthDef ()) == CMfailed) || ((_MDInI0HDayID = MDSRadI0HDayDef ()) == CMfailed) || ((_MDInCParamAlbedoID = MDCParamAlbedoDef ()) == CMfailed) || ((_MDInSolRadID = MDSolarRadDef ()) == CMfailed) || ((_MDInAtMeanID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInVPressID = MFVarGetID (MDVarVaporPressure, "kPa", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPetID = MFVarGetID (MDVarRainPotEvapotrans, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRainPotETPsTaylor) == CMfailed)) return (CMfailed); MFDefLeaving ("Rainfed Potential Evapotranspiration (Priestley - Taylor)"); return (_MDOutPetID); }
int MDRainPotETDef () { int optID = MFUnset; const char *optStr, *optName = MDVarRainPotEvapotrans; const char *options [] = { MDInputStr, "Hamon", "Jensen", "PsTaylor", "Pstd", "PMday", "PMdn", "SWGday", "SWGdn", "Turc", (char *) NULL }; if (_MDPotETID != MFUnset) return (_MDPotETID); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); MFDefEntering ("Rainfed Potential Evapotranspiration"); switch (optID) { case MDinput: _MDPotETID = MFVarGetID (MDVarRainPotEvapotrans, "mm", MFInput, MFFlux, false); break; case MDHamon: _MDPotETID = MDRainPotETHamonDef (); break; case MDJensen: _MDPotETID = MDRainPotETJensenDef (); break; case MDPsTaylor: _MDPotETID = MDRainPotETPsTaylorDef (); break; case MDPstd: _MDPotETID = MDRainPotETPstdDef (); break; case MDPMday: _MDPotETID = MDRainPotETPMdayDef (); break; case MDPMdn: _MDPotETID = MDRainPotETPMdnDef (); break; case MDSWGday: _MDPotETID = MDRainPotETSWGdayDef (); break; case MDSWGdn: _MDPotETID = MDRainPotETSWGdnDef (); break; case MDTurc: _MDPotETID = MDRainPotETTurcDef (); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Rainfed Potential Evapotranspiration"); return (_MDPotETID); }
int MDBedloadFluxDef() { MFDefEntering ("BedloadFlux"); if (((_MDInDischargeID = MDDischargeBFDef ()) == CMfailed) || ((_MDInMinSlopeID = MFVarGetID (MDVarMinSlope, " ", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInUpStreamQbID = MFVarGetID (MDVarUpStreamQb, " ", MFRoute, MFState, MFBoundary)) == CMfailed) || // output ((_MDOutBedloadFluxID = MFVarGetID (MDVarBedloadFlux, "kg/s",MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutDeltaBedloadID = MFVarGetID (MDDeltaBedload , "kg/s",MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDBedloadFlux) == CMfailed)) return (CMfailed); MFDefLeaving ("BedloadFlux"); return (_MDOutBedloadFluxID); }
int MDWetlandAreaDef (){ int optID = MFUnset; const char *optStr, *optName = MDVarWetlandAreaFraction; const char *options [] = { MDNoneStr, MDInputStr, MDCalculateStr, (char *) NULL }; if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); if ((optID == MDnone) || (_MDWetlandAreaFracID != MFUnset)) return (_MDWetlandAreaFracID); MFDefEntering ("WetlandArea"); // printf ("Wetland Area optID =%i \n",optID); if (_MDWetlandAreaFracID != MFUnset) return (_MDWetlandAreaFracID); switch (optID) { case MDinput: if ((_MDWetlandAreaFracID = MFVarGetID (MDVarWetlandAreaFraction, "[-]", MFInput, MFState, MFBoundary)) == CMfailed) return (CMfailed); break; case MDcalculate: if ((MFModelAddFunction (_MDWetlandAreaFraction) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving("WetlandArea"); return (_MDWetlandAreaFracID); }
int MDBaseFlowDef () { float par; const char *optStr; if (_MDOutBaseFlowID != MFUnset) return (_MDOutBaseFlowID); MFDefEntering ("Base flow"); if (((optStr = MFOptionGet (MDParGroundWatBETA)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDGroundWatBETA = par; if (((_MDInRechargeID = MDRainInfiltrationDef ()) == CMfailed) || ((_MDInIrrGrossDemandID = MDIrrGrossDemandDef ()) == CMfailed)) return (CMfailed); if ( _MDInIrrGrossDemandID != MFUnset) { if (((_MDInSmallResReleaseID = MDSmallReservoirReleaseDef ()) == CMfailed) || ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ()) == CMfailed) || ((_MDInIrrReturnFlowID = MFVarGetID (MDVarIrrReturnFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrUptakeExternalID = MFVarGetID (MDVarIrrUptakeExternal, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrUptakeGrdWaterID = MDIrrUptakeGrdWaterDef ()) == CMfailed)) return CMfailed; } if (((_MDOutGrdWatID = MFVarGetID (MDVarGroundWater, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutGrdWatChgID = MFVarGetID (MDVarGroundWaterChange, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutGrdWatRechargeID = MFVarGetID (MDVarGroundWaterRecharge, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutGrdWatUptakeID = MFVarGetID (MDVarGroundWaterUptake, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutBaseFlowID = MFVarGetID (MDVarBaseFlow, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDBaseFlow) == CMfailed)) return (CMfailed); MFDefLeaving ("Base flow "); return (_MDOutBaseFlowID); }
int MDRainSurfRunoffDef () { if (_MDOutRainSurfRunoffID != MFUnset) return (_MDOutRainSurfRunoffID); if (((_MDOutRainInfiltrationID = MDRainInfiltrationDef ()) == CMfailed) || ((_MDOutRainSurfRunoffID = MFVarGetID (MDVarRainSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed)) return (CMfailed); return (_MDOutRainSurfRunoffID); }
int MDChlorideDef () { MFDefEntering ("Chloride Calculation"); // TODO: FIX DECLARATIONS HERE THEN INTEGRATE' // TODO: Add option to calculate with specific conductance or via previous method (in DIN?) if ( ((_MDInFlux_SCID = MDSpecCondDef ()) == CMfailed) || ((_MDInDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInPostConc_SCID = MFVarGetID (MDVarPostSpecCond, "uS/cm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPostConc_ClID = MFVarGetID (MDVarPostConcCl, "mg/L", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutFlux_ClID = MFVarGetID (MDVarFluxCl, "kg/day", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDChloride) == CMfailed)) return (CMfailed); MFDefLeaving ("Chloride Calculation"); return (_MDOutPostConc_ClID); }
int MDSPackMeltDef () { if (_MDOutSnowMeltID != MFUnset) return (_MDOutSnowMeltID); if ((MDSPackChgDef () == CMfailed) || ((_MDOutSnowMeltID = MFVarGetID (MDVarSnowMelt, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed)) return (CMfailed); return (_MDOutSnowMeltID); }
int MDIrrReturnFlowDef() { int ret; if (_MDOutIrrReturnFlowID != MFUnset) return (_MDOutIrrReturnFlowID); if ((ret = MDIrrGrossDemandDef ()) == CMfailed) return (CMfailed); if (ret == MFUnset) return (MFUnset); _MDOutIrrReturnFlowID = MFVarGetID (MDVarIrrReturnFlow, "mm", MFInput, MFFlux, MFBoundary); return (_MDOutIrrReturnFlowID); }
int MDSmallReservoirCapacityDef () { int optID = MFUnset; const char *optStr, *optName = MDVarSmallResCapacity; const char *options [] = { MDNoneStr, MDInputStr, MDCalculateStr, (char *) NULL }; if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); if ((optID == MDnone) || (_MDOutSmallResCapacityID != MFUnset)) return (_MDOutSmallResCapacityID); MFDefEntering("SmallReservoirCapacity"); if ((_MDInIrrGrossDemandID = MDIrrGrossDemandDef ()) != MFUnset) { switch (optID) { case MDinput: if ((_MDOutSmallResCapacityID = MFVarGetID (MDVarSmallResCapacity, "mm", MFInput, MFState, MFBoundary)) == CMfailed) return (CMfailed); break; case MDcalculate: if ((_MDInIrrGrossDemandID == CMfailed) || ((_MDInIrrAreaID = MDIrrigatedAreaDef ())== CMfailed) || ((_MDInRainSurfRunoffID = MFVarGetID (MDVarRainSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutRainSurfRunoffAccumulatedID = MFVarGetID ("__SurfaceROAccumulated", "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutIrrGrossDemandAccumulatedID = MFVarGetID ("__GrossDemandAccumulated", "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDInSmallResStorageFractionID = MFVarGetID (MDVarSmallReservoirStorageFrac, "-", MFInput,MFState,MFBoundary)) == CMfailed) || ((_MDOutSmallResCapacityID = MFVarGetID (MDVarSmallResCapacity, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || (MFModelAddFunction (_MDSmallReservoirCapacity) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } } MFDefLeaving("SmallReservoirCapacity"); return (_MDOutSmallResCapacityID); }
int MDCParamZ0gDef () { int optID = MFUnset; const char *optStr, *optName = MDVarCParamZ0g; const char *options [] = { MDInputStr, MDLookupStr, (char *) NULL }; if (_MDOutCParamZ0gID != MFUnset) return (_MDOutCParamZ0gID); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); MFDefEntering ("Z0g"); switch (optID) { case MDinput: _MDOutCParamZ0gID = MFVarGetID (MDVarCParamZ0g, "m", MFInput, MFState, false); break; case MDlookup: if (((_MDInCoverID = MDLandCoverDef ()) == CMfailed) || ((_MDOutCParamZ0gID = MFVarGetID (MDVarCParamZ0g, "m", MFOutput, MFState, false)) == CMfailed) || (MFModelAddFunction (_MDCParamZ0g) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Z0g"); return (_MDOutCParamZ0gID); }
int MDCParamAlbedoDef () { int optID = MFUnset; const char *optStr, *optName = MDVarCParamAlbedo; const char *options [] = { MDInputStr, MDLookupStr, (char *) NULL }; if (_MDOutCParamAlbedoID != MFUnset) return (_MDOutCParamAlbedoID); MFDefEntering ("Albedo"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); switch (optID) { case MDinput: _MDOutCParamAlbedoID = MFVarGetID (MDVarCParamAlbedo, MFNoUnit, MFInput, MFState, MFBoundary); break; case MDlookup: if (((_MDInCoverID = MDLandCoverDef ()) == CMfailed) || ((_MDInSnowPackID = MDSPackChgDef ()) == CMfailed) || ((_MDOutCParamAlbedoID = MFVarGetID (MDVarCParamAlbedo, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDCParamAlbedo) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Albedo"); return (_MDOutCParamAlbedoID); }
int MDDischMeanDef () { int optID = MFUnset; const char *optStr, *optName = MDVarDischMean; const char *options [] = { MDInputStr, MDCalculateStr, (char *) NULL }; if (_MDOutDischMeanID != MFUnset) return (_MDOutDischMeanID); MFDefEntering ("Discharge Mean"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { case MDinput: _MDOutDischMeanID = MFVarGetID (MDVarDischMean, "m3/s", MFInput, MFState, MFBoundary); break; case MDcalculate: if (((_MDInAvgNStepsID = MDAvgNStepsDef ()) == CMfailed) || ((_MDInAccumDischargeID = MDAccumRunoffDef ()) == CMfailed) || ((_MDOutDischMeanID = MFVarGetID (MDVarDischMean, "m3/s", MFOutput, MFState, MFInitial)) == CMfailed) || (MFModelAddFunction (_MDDischMean) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Discharge Mean"); return (_MDOutDischMeanID); }
int MDRunoffVolumeDef () { int optID = MFUnset; const char *optStr, *optName = MDVarRunoffVolume; const char *options [] = { MDInputStr, MDCalculateStr, (char *) NULL }; if (_MDOutRunoffVolumeID != MFUnset) return (_MDOutRunoffVolumeID); MFDefEntering ("Runoff Volume"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { case MDinput: _MDOutRunoffVolumeID = MFVarGetID (MDVarRunoffVolume, "m3/s", MFInput, MFState, MFBoundary); break; case MDcalculate: if (((_MDInRunoffID = MDRunoffDef ()) == CMfailed) || ((_MDOutRunoffVolumeID = MFVarGetID (MDVarRunoffVolume, "m3/s", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRunoffVolume) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Runoff Volume"); return (_MDOutRunoffVolumeID); }
int MDSurfRunoffDef () { int ret; if (_MDOutSurfRunoffID != MFUnset) return (_MDOutSurfRunoffID); MFDefEntering ("Surface runoff"); if (((ret = MDWetlandRunoffDef ()) != MFUnset) && ((ret == CMfailed) || ((_MDInWetlandUptakeID = MFVarGetID (MDVarWetlandSurfROUptake, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed))) return (CMfailed); if (((ret = MDSmallReservoirReleaseDef ()) != MFUnset) && ((ret == CMfailed) || ((_MDInSmallResUptakeID = MFVarGetID (MDVarSmallResUptake, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed))) return (CMfailed); if (((_MDInRainSurfRunoffID = MDRainSurfRunoffDef ()) == CMfailed) || ((_MDOutSurfRunoffID = MFVarGetID (MDVarSurfRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDSurfRunoff) == CMfailed)) return (CMfailed); MFDefLeaving ("Surface runoff"); return (_MDOutSurfRunoffID); }
int MDIrrSoilMoistChgDef() { int optID = MFUnset, ret; const char *optStr, *optName = MDOptIrrigation; const char *options [] = { MDNoneStr, MDInputStr, MDCalculateStr, (char *) NULL }; if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); if ((optID == MDnone) || (optID == MDinput) || (_MDOutIrrSoilMoistChgID != MFUnset)) return (_MDOutIrrSoilMoistChgID); if ((ret = MDIrrGrossDemandDef ()) == CMfailed) return (CMfailed); if (ret == MFUnset) return (MFUnset); _MDOutIrrSoilMoistChgID = MFVarGetID (MDVarIrrSoilMoistChange, "mm", MFInput, MFFlux, MFBoundary); return (_MDOutIrrSoilMoistChgID); }
int MDWTempSurfRunoffPoolDef () { int optID = MDnone; // was MFUnset const char *optStr, *optName = MDOptSurfRunoffPool; const char *options [] = { MDNoneStr, MDCalculateStr, MDInputStr, (char *) NULL }; // RJS 061312 added MDInputStr if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); MFDefEntering ("Surface Runoff Pool Temperature"); switch (optID) { case MDcalculate: if (((_MDInWTempSurfRunoffID = MDWTempSurfRunoffDef ()) == CMfailed) || ((_MDInRainSurfRunoffID = MDRainSurfRunoffDef ()) == CMfailed) || ((_MDInRunoffPoolID = MFVarGetID (MDVarRunoffPool, "mm", MFInput, MFState, MFBoundary)) == CMfailed) || // ((_MDInRainSurfRunoffID = MFVarGetID (MDVarRainSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutWTempSurfRunoffPoolID = MFVarGetID (MDVarWTempSurfRunoffPool, "degC", MFOutput, MFState, MFInitial)) == CMfailed) || (MFModelAddFunction (_MDWTempSurfRunoffPool) == CMfailed)) return (CMfailed); break; case MDnone: if (((_MDInWTempSurfRunoffID = MDWTempSurfRunoffDef ()) == CMfailed) || ((_MDOutWTempSurfRunoffPoolID = MFVarGetID (MDVarWTempSurfRunoffPool, "degC", MFOutput, MFState, MFInitial)) == CMfailed) || (MFModelAddFunction (_MDWTempNoSurfRunoffPool) == CMfailed)) return (CMfailed); break; case MDinput: _MDOutWTempSurfRunoffPoolID = MFVarGetID (MDVarWTempSurfRunoffPool, "degC", MFInput, MFState, MFBoundary); break; // RJS 061312 MFInitial changed to MFBoundary in order to read in // RJS 061312 default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Surface Runoff Pool Temperature"); return (_MDOutWTempSurfRunoffPoolID); }
int MDDischargeDef() { int optID = MFUnset; const char *optStr, *optName = MDOptDischarge; const char *options [] = { MDInputStr, MDCalculateStr, "corrected", (char *) NULL }; if (_MDOutDischargeID != MFUnset) return (_MDOutDischargeID); MFDefEntering ("Discharge"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); switch (optID) { case MDinput: _MDOutDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFInput, MFState, MFBoundary); break; case MDcorrected: if ((_MDInDischObservedID = MFVarGetID (MDVarDischObserved, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) return (CMfailed); case MDcalculate: if (((_MDOutDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFRoute, MFState, MFBoundary)) == CMfailed) || ((_MDInDischLevel1ID = MDDischLevel1Def ()) == CMfailed) || (MFModelAddFunction (_MDDischarge) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Discharge"); return (_MDOutDischargeID); }
int MDSoilAvailWaterCapDef () { int optID = MFUnset; const char *optStr, *optName = MDOptSoilAvailableWaterCapacity; const char *options [] = { MDInputStr, MDCalculateStr, (char *) NULL }; if (_MDOutSoilAvailWaterCapID != MFUnset) return (_MDOutSoilAvailWaterCapID); MFDefEntering ("Soil available water capacity"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { case MDinput: _MDOutSoilAvailWaterCapID = MFVarGetID (MDVarSoilAvailWaterCap, "mm", MFInput, MFState, MFBoundary); break; case MDcalculate: if (((_MDInSoilFieldCapacityID = MFVarGetID (MDVarSoilFieldCapacity, "mm/m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInSoilWiltingPointID = MFVarGetID (MDVarSoilWiltingPoint, "mm/m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInSoilRootingDepthID = MFVarGetID (MDVarSoilRootingDepth, "mm", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSoilAvailWaterCapID = MFVarGetID (MDVarSoilAvailWaterCap, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDSoilAvailWaterCap) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Soil available water capacity"); return (_MDOutSoilAvailWaterCapID); }
int MDAccumBalanceDef() { if (_MDOutAccBalanceID != MFUnset) return (_MDOutAccBalanceID); MFDefEntering ("Accumulated Balance"); if (((_MDInAccPrecipID = MDAccumPrecipDef()) == CMfailed) || ((_MDInAccRunoffID = MDAccumRunoffDef()) == CMfailed) || ((_MDInAccGrdWatChgID = MDAccumGrdWatChgDef()) == CMfailed) || ((_MDInAccSMoistChgID = MDAccumSMoistChgDef()) == CMfailed) || ((_MDInAccEvapID = MDAccumEvapDef()) == CMfailed) || ((_MDOutAccBalanceID = MFVarGetID (MDVarAccBalance, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction(_MDAccumBalance) == CMfailed)) return CMfailed; MFDefLeaving ("Accumulated Balance"); return (_MDOutAccBalanceID); }
int MDDischLevel1Def() { char *optStr; const char *options [] = { MDNoneStr, (char *) NULL }; if (_MDOutDischLevel1ID != MFUnset) return (_MDOutDischLevel1ID); MFDefEntering ("Discharge Level 1"); if ((_MDInDischLevel2ID = MDDischLevel2Def ()) == CMfailed) return (CMfailed); if (((optStr = MFOptionGet (MDOptReservoirs)) != (char *) NULL) && (CMoptLookup (options,optStr,true) == CMfailed)) { if ((_MDInDischReleasedID = MDReservoirDef ()) == CMfailed) return (CMfailed); } if (((_MDOutDischLevel1ID = MFVarGetID ("__DischLevel1", "m3/s", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDDischLevel1) == CMfailed)) return (CMfailed); MFDefLeaving ("Discharge Level 1"); return (_MDOutDischLevel1ID); }
int MDIrrRefEvapotransFAODef () { if (_MDOutIrrRefEvapotransID != MFUnset) return (_MDOutIrrRefEvapotransID); MFDefEntering ("Irrigation Reference ETP (FAO)"); if (((_MDInDayLengthID = MDSRadDayLengthDef ()) == CMfailed) || ((_MDInI0HDayID = MDSRadI0HDayDef ()) == CMfailed) || ((_MDInSolRadID = MDSolarRadDef ()) == CMfailed) || ((_MDInElevationID = MFVarGetID (MDVarMeanElevation, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInAtMeanID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInAtMinID = MFVarGetID (MDVarAirTempMinimum, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInAtMaxID = MFVarGetID (MDVarAirTempMaximum, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInVPressID = MFVarGetID (MDVarVaporPressure, "kPa", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInWSpeedID = MFVarGetID (MDVarWindSpeed, "m/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutIrrRefEvapotransID = MFVarGetID (MDVarIrrRefEvapotrans, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed)) return (CMfailed); if (MFModelAddFunction (_MDIrrRefEvapotransFAO)== CMfailed) return (CMfailed); MFDefLeaving ("Irrigation Reference ETP (FAO)"); return(_MDOutIrrRefEvapotransID); }
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); }