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 MDBaseFlowDef () { 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 ((_MDInSoilPercolationID = MFVarGetID (MDVarSoilPercolation, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) return (CMfailed); // SZ 10212014 } int optID = MFUnset; // RJS 060214 const char *optName = MDVarRunoff; // RJS 060214 const char *options [] = { "spatially", MDCalculateStr, MDPnETStr, (char *) NULL }; // RJS 060214 if (_MDOutBaseFlowID != MFUnset) return (_MDOutBaseFlowID); MFDefEntering ("Base flow"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); // RJS 060214 switch (optID) { case MDspatial: if ((_MDInGroundWatBETAID = MFVarGetID(MDParGroundWatBETA, "1/d", MFInput, MFState, MFBoundary)) == CMfailed) return (CMfailed); case MDcalculate: if (_MDInGroundWatBETAID == MFUnset) { 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); break; case MDPnET: if (_MDInGroundWatBETAID == MFUnset) { if (((optStr = MFOptionGet (MDParGroundWatBETA)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDGroundWatBETA = par; } if (((_MDInRechargeID = MDRainInfiltrationDef ()) == CMfailed) || ((_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 (_MDBaseFlow2) == CMfailed)) return (CMfailed); // RJS 061312 break; } MFDefLeaving ("Base flow "); return (_MDOutBaseFlowID); }
int MDRiverbedShapeExponentDef () { int optID = MFUnset; const char *optStr, *optName = MDOptRiverbed; const char *options [] = { MDInputStr, "slope-independent", "slope-dependent", "multi-basin", (char *) NULL }; if (_MDOutRiverbedShapeExponentID != MFUnset) return (_MDOutRiverbedShapeExponentID); MFDefEntering ("Riverbed Geometry"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options,optStr,true); switch (optID) { case MDinput: if (((_MDOutRiverbedAvgDepthMeanID = MFVarGetID (MDVarRiverbedAvgDepthMean, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedWidthMeanID = MFVarGetID (MDVarRiverbedWidthMean, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedVelocityMeanID = MFVarGetID (MDVarRiverbedVelocityMean, "m/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedShapeExponentID = MFVarGetID (MDVarRiverbedShapeExponent, MFNoUnit, MFInput, MFState, MFBoundary)) == CMfailed)) return (CMfailed); break; case MDdependent: if ((_MDInRiverbedSlopeID = MFVarGetID (MDVarRiverbedSlope, "m/km", MFInput, MFState, MFBoundary)) == CMfailed) return (CMfailed); case MDindependent: if (((_MDInDischMeanID = MDDischMeanDef ()) == CMfailed) || ((_MDInEtaID = MFVarGetID (MDVarEta, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNuID = MFVarGetID (MDVarNu, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInTauID = MFVarGetID (MDVarTau, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInPhiID = MFVarGetID (MDVarPhi, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedAvgDepthMeanID = MFVarGetID (MDVarRiverbedAvgDepthMean, "m", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedWidthMeanID = MFVarGetID (MDVarRiverbedWidthMean, "m", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedVelocityMeanID = MFVarGetID (MDVarRiverbedVelocityMean, "m/s", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedShapeExponentID = MFVarGetID (MDVarRiverbedShapeExponent, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRiverbedShapeExponent) == CMfailed)) return (CMfailed); break; case MDmultibasin: if (((_MDInDischMeanID = MDDischMeanDef ()) == CMfailed) || ((_MDInEtaID = MFVarGetID (MDVarEta, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNuID = MFVarGetID (MDVarNu, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInTauID = MFVarGetID (MDVarTau, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInPhiID = MFVarGetID (MDVarPhi, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInEta2ID = MFVarGetID (MDVarEta2, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNu2ID = MFVarGetID (MDVarNu2, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInTau2ID = MFVarGetID (MDVarTau2, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInPhi2ID = MFVarGetID (MDVarPhi2, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInEta3ID = MFVarGetID (MDVarEta3, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNu3ID = MFVarGetID (MDVarNu3, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInTau3ID = MFVarGetID (MDVarTau3, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInPhi3ID = MFVarGetID (MDVarPhi3, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInBasinID = MFVarGetID (MDVarBasinID, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedAvgDepthMeanID = MFVarGetID (MDVarRiverbedAvgDepthMean, "m", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedWidthMeanID = MFVarGetID (MDVarRiverbedWidthMean, "m", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedVelocityMeanID = MFVarGetID (MDVarRiverbedVelocityMean, "m/s", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverbedShapeExponentID = MFVarGetID (MDVarRiverbedShapeExponent, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDMultiRiverbedShapeExponent) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Riverbed Geometry"); return (_MDOutRiverbedShapeExponentID); }
int MDRunoffDef () { int optID = MFUnset; const char *optStr, *optName = MDVarRunoff; const char *options [] = { MDInputStr, MDCalculateStr, "corrected", MDInput2Str, (char *) NULL }; if (_MDOutRunoffID != MFUnset) return (_MDOutRunoffID); MFDefEntering ("Runoff"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { // case MDinput: _MDOutRunoffID = MFVarGetID (MDVarRunoff, "mm", MFInput, MFFlux, MFBoundary); break; // RJS commented out 061312 case MDinput: // RJS 061312 if (((_MDInBaseFlowID = MFVarGetID (MDVarBaseFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || // RJS 061312 // ((_MDInRunoffPoolReleaseID = MFVarGetID (MDVarRunoffPoolRelease, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || // RJS 061312, commented out 082812 ((_MDInTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || // RJS 082812 ((_MDOutPropROStormWaterID = MFVarGetID (MDVarPropROStormWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100313 ((_MDOutPropROSurfaceWaterID = MFVarGetID (MDVarPropROSurfaceWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100313 ((_MDOutPropROGroundWaterID = MFVarGetID (MDVarPropROGroundWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutRunoffID = MFVarGetID (MDVarRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || // RJS 061312 (MFModelAddFunction (_MDRunoffInput) == CMfailed)) return (CMfailed); // RJS 061312 break; // RJS 061312 case MDinput2: if (((_MDInBaseFlowID = MDBaseFlowDef ()) == CMfailed) || ((_MDInRunoffPoolReleaseID = MDSurfRunoffPoolDef ()) == CMfailed) || // RJS 042612 ((_MDOutPropROStormWaterID = MFVarGetID (MDVarPropROStormWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100313 ((_MDOutPropROSurfaceWaterID = MFVarGetID (MDVarPropROSurfaceWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100313 ((_MDOutPropROGroundWaterID = MFVarGetID (MDVarPropROGroundWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutRunoffID = MFVarGetID (MDVarRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || // RJS 061312 (MFModelAddFunction (_MDRunoffInput2) == CMfailed)) return (CMfailed); // RJS 061312 break; case MDcorrected: if ((_MDInRunoffCorrID = MFVarGetID (MDVarRunoffCorretion, MFNoUnit, MFInput, MFState, MFBoundary)) == CMfailed) return (CMfailed); break; // RJS 082812 case MDcalculate: if (((_MDInBaseFlowID = MDBaseFlowDef ()) == CMfailed) || // ((_MDInSurfRunoffID = MDSurfRunoffDef ()) == CMfailed) || //commented out RJS 042612 ((_MDInRunoffPoolReleaseID = MDSurfRunoffPoolDef ()) == CMfailed) || // RJS 042612 // ((_MDInStormRunoffTotalID = MDStormRunoffDef ()) == CMfailed) || // RJS 082812 ((_MDInStormRunoffTotalID = MFVarGetID (MDVarStormRunoffTotal, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPropROStormWaterID = MFVarGetID (MDVarPropROStormWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100313 ((_MDOutPropROSurfaceWaterID = MFVarGetID (MDVarPropROSurfaceWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || // RJS 100313 ((_MDOutPropROGroundWaterID = MFVarGetID (MDVarPropROGroundWater, "-", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRunoffID = MFVarGetID (MDVarRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutTotalSurfRunoffID = MFVarGetID (MDVarTotalSurfRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRunoff) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Runoff"); return (_MDOutRunoffID); }
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 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 MDDO2Def () { MFDefEntering ("Dissolved Oxygen2"); if (((_MDInWTempRiverID = MDWTempRiverRouteDef ()) == CMfailed) || ((_MDInDischarge0ID = MFVarGetID (MDVarDischarge0, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRunoffID = MFVarGetID (MDVarRunoff, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInRunoffVolumeID = MFVarGetID (MDVarRunoffVolume, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverStorageID = MFVarGetID (MDVarRiverStorage, "m3", MFInput, MFState, MFInitial)) == CMfailed) || ((_MDInRiverStorageChgID = MFVarGetID (MDVarRiverStorageChg, "m3/d", MFInput, MFState, MFInitial)) == CMfailed) || ((_MDOutRiverMassDO2ID = MFVarGetID (MDVarRiverMassDO2, "kg/d", MFRoute, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutRiverConcDO2ID = MFVarGetID (MDVarRiverConcDO2, "mg/L", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverStorMassDO2ID = MFVarGetID (MDVarRiverStorMassDO2, "kg", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutRiverStorMassChgDO2ID = MFVarGetID (MDVarRiverStorMassChgDO2, "kg/d", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutRiverMixingMassDO2ID = MFVarGetID (MDVarRiverMixingMassDO2, "kg/d", MFRoute, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutRiverMixingConcDO2ID = MFVarGetID (MDVarRiverMixingConcDO2, "mg/L", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutRiverMixingStorMassDO2ID = MFVarGetID (MDVarRiverMixingStorMassDO2, "kg", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutRiverMixingStorMassChgDO2ID = MFVarGetID (MDVarRiverMixingStorMassChgDO2, "kg/d", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDDO2) == CMfailed)) return (CMfailed); MFDefLeaving ("Dissolved Oxygen2"); return (_MDOutRiverMassDO2ID); }
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 MDDischLevel3MuskingumCoeffDef () { int optID = MFUnset; const char *optStr, *optName = MDOptMuskingum; const char *options [] = { MDInputStr, "static", (char *) NULL }; if (_MDOutMuskingumC0ID != MFUnset) return (_MDOutMuskingumC0ID); MFDefEntering ("Muskingum Coefficients"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { case MDinput: if (((_MDOutMuskingumC0ID = MFVarGetID (MDVarMuskingumC0, MFNoUnit, MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutMuskingumC1ID = MFVarGetID (MDVarMuskingumC1, MFNoUnit, MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutMuskingumC2ID = MFVarGetID (MDVarMuskingumC2, MFNoUnit, MFInput, MFState, MFBoundary)) == CMfailed)) return (CMfailed); break; case MDstatic: if (((_MDInRiverbedShapeExponentID = MDRiverbedShapeExponentDef ()) == CMfailed) || ((_MDInRiverbedWidthMeanID = MFVarGetID (MDVarRiverbedWidthMean, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverbedAvgDepthMeanID = MFVarGetID (MDVarRiverbedAvgDepthMean, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverbedVelocityMeanID = MFVarGetID (MDVarRiverbedVelocityMean, "m/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverbedSlopeID = MFVarGetID (MDVarRiverbedSlope, "m/km", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutMuskingumC0ID = MFVarGetID (MDVarMuskingumC0, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutMuskingumC1ID = MFVarGetID (MDVarMuskingumC1, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutMuskingumC2ID = MFVarGetID (MDVarMuskingumC2, MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutCourantID = MFVarGetID ("Courant", MFNoUnit, MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDDischRouteMuskingumCoeff) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Muskingum Coefficients"); return (_MDOutMuskingumC0ID); }
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 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 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 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 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); }
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 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); }
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 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 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); }
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 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 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 MDBgcRiverGPPDef () { int optID = MFUnset; const char *optStr; const char *options [] = { "none", "calculate", (char *) NULL }; if (_MDRiverGPPID != MFUnset) return (_MDRiverGPPID); MFDefEntering ("Calculate river GPP"); 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) || ((_MDInRiverLightID = MDBgcRiverLightDef ()) == CMfailed) || ((_MDInDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverWidthID = MFVarGetID (MDVarRiverWidth, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInPAR2BottomID = MFVarGetID (MDVarPAR2Bottom, "MJ/m2/d", MFInput, MFState, MFBoundary)) == CMfailed) || // output ((_MDBenthicAlgaeCHLID = MFVarGetID (MDVarBenthicAlgaeCHL, "g/m2", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDBenthicAlgaeCID = MFVarGetID (MDVarBenthicAlgaeC, "g/m2", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDBenthicGPPID = MFVarGetID (MDVarBenthicGPP, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicRaID = MFVarGetID (MDVarBenthicRa, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicNPPID = MFVarGetID (MDVarBenthicNPP, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicMortalityID = MFVarGetID (MDVarBenthicMortality, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicAlgaeC_REACHID = MFVarGetID (MDVarBenthicAlgaeC_REACH, "g/m2", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDBenthicGPP_REACHID = MFVarGetID (MDVarBenthicGPP_REACH, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicRa_REACHID = MFVarGetID (MDVarBenthicRa_REACH, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicNPP_REACHID = MFVarGetID (MDVarBenthicNPP_REACH, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDBenthicMortality_REACHID = MFVarGetID (MDVarBenthicMortality_REACH, "g/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRiverGPP) == CMfailed)) return (CMfailed); MFDefLeaving ("Calculate river GPP"); return (_MDRiverGPPID); }
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 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 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 MDSpecCondDef () { int optID = MFUnset; //SZ 08212014 const char *optStr, *optName = MDOptSpecConductance; //SZ 08212014 const char *options [] = { MDCalculateStr, MDInputStr, MDInput2Str, MDNoneStr, (char *) NULL }; //SZ 08212014 MFDefEntering ("Specific Conductance Routing"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); //SZ 08212014 switch (optID) { //SZ 08212014 case MDcalculate: if ( // ((_MDInDischargeID = MDDischargeDef()) == CMfailed ) || ((_MDInDINFluxID = MDDINDef ()) == CMfailed) || // Needed for merging with upstream ((_MDInWTempRiverID = MFVarGetID (MDVarWTemp_QxT, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverWidthID = MDRiverWidthDef ()) == CMfailed) || // ((_MDInLitterFall_POCID = MDLitterFallDef ()) == CMfailed) || // ((_MDInLocalLoad_DOCID = MFVarGetID (MDVarLocalLoadDOC, "kg/d", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInDischarge0ID = MFVarGetID (MDVarDischarge0, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverStorageID = MFVarGetID (MDVarRiverStorage, "m3/day", MFInput, MFState, MFInitial)) == CMfailed) || ((_MDInBaseFlowID = MFVarGetID (MDVarBaseFlow, "mm", MFInput, MFFlux,MFBoundary)) == CMfailed) || ((_MDInStormRunoffTotalID = MFVarGetID (MDVarStormRunoffTotal, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInRunoffPoolReleaseID = MFVarGetID (MDVarRunoffPoolRelease, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInAirTemperatureID = MFVarGetID (MDVarAirTemperature, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInSubFractionID = MFVarGetID (MDVarLandUseSpatialSub, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutLocalLoadSCID = MFVarGetID (MDVarLocalLoadSC, "ic/d", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPostConc_SCID = MFVarGetID (MDVarPostSpecCond, "uS/cm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutStoreWater_SCID = MFVarGetID (MDVarStoreWaterSC, "ic/day", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutFlux_SCID = MFVarGetID (MDVarFluxSC, "ic/day", MFRoute, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDSpecCond) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Specific Conductance Routing"); return (_MDOutFlux_SCID); }
int MDBgcRiverLightDef () { int optID = MFUnset; const char *optStr; const char *options [] = { "none", "calculate", (char *) NULL }; if (_MDRiverLightID != MFUnset) return (_MDRiverLightID); MFDefEntering ("Calculate river light"); 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) || // ((_MDInSolarRadID = MDSolarRadDef ()) == CMfailed) || ((_MDInFluxDOCID = MDBgcDOCRoutingDef ()) == CMfailed) || ((_MDInSolarRadID = MFVarGetID (MDVarSolarRadiation, "MJ/m2/d", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInDischargeID = MFVarGetID (MDVarDischarge, "m3/s", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInConcDOCID = MFVarGetID (MDVarDOCConcentration, "kg/m3", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverWidthID = MFVarGetID (MDVarRiverWidth, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverbedWidthMeanID = MFVarGetID (MDVarRiverbedWidthMean, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInRiverDepthID = MFVarGetID (MDVarRiverDepth, "m", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInKoppenID = MFVarGetID (MDVarKoppen, MFNoUnit, MFInput, MFState, MFBoundary)) == CMfailed) || // output ((_MDPAR2BottomID = MFVarGetID (MDVarPAR2Bottom, "MJ/m2/d", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDPAR2ReachID = MFVarGetID (MDVarPAR2Reach, "MJ/d", MFOutput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDRiverLight) == CMfailed)) return (CMfailed); MFDefLeaving ("Calculate river light"); return (_MDRiverLightID); }
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 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); }