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 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 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 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 main (int argc,char *argv []) { int argNum; int optID = MDbalance; const char *optStr, *optName = MDOptModel; const char *options [] = { "pet", "surplus", "infiltration", "runoff", "discharge", "watertemp", "thermal", "thermal2", "thermal3", "balance", "geometry", "bgc", "bgc_DIN","bgc_DINPLUSBIOMASS", "bgc_DOC", "fecal", "DO2", (char *) NULL }; argNum = MFOptionParse (argc,argv); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); switch (optID) { case MDpet: return (MFModelRun (argc,argv,argNum,MDRainPotETDef)); case MDsurplus: return (MFModelRun (argc,argv,argNum,MDRainWaterSurplusDef)); case MDinfiltration: return (MFModelRun (argc,argv,argNum,MDRainInfiltrationDef)); case MDrunoff: return (MFModelRun (argc,argv,argNum,MDRunoffDef)); case MDdischarge: return (MFModelRun (argc,argv,argNum,MDDischargeDef)); case MDbalance: return (MFModelRun (argc,argv,argNum,MDWaterBalanceDef)); case MDwatertemp: return (MFModelRun (argc,argv,argNum,MDWTempRiverRouteDef)); case MDthermal: return (MFModelRun (argc,argv,argNum,MDThermalInputsDef)); // RJS 013112 case MDthermal2: return (MFModelRun (argc,argv,argNum,MDThermalInputs2Def)); // RJS 062012 case MDthermal3: return (MFModelRun (argc,argv,argNum,MDThermalInputs3Def)); // RJS 112712 case MDgeometry: return (MFModelRun (argc,argv,argNum,MDRiverWidthDef)); case MDbgc: return (MFModelRun (argc,argv,argNum,MDBgcRoutingDef)); case MDbgc_DOC: return (MFModelRun (argc,argv,argNum,MDBgcDOCRoutingDef)); case MDbgc_DIN: return (MFModelRun (argc,argv,argNum,MDBgcDINRoutingDef)); case MDbgc_DINPLUSBIOMASS: return (MFModelRun (argc,argv,argNum,MDBgcDINPlusBiomassRoutingDef)); case MDDO2: return (MFModelRun (argc,argv,argNum,MDDO2Def)); // RJS 111612 default: MFOptionMessage (optName, optStr, options); return (CMfailed); } return (CMfailed); }
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 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 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 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 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 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 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 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 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 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 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 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 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 main (int argc,char *argv []) { //printf("at start of main\n"); int argNum; //int DELAY=10; //int i; int optID = MDbankfullQcalc; //CHANGED may2011 const char *optStr, *optName = MDOptModel; const char *options [] = { "pet", "surplus", "infiltration", "runoff", "discharge", "watertemp", "balance", "geometry", "bgc", "bgc_DIN","bgc_DINPLUSBIOMASS", "bgc_DOC", "fecal", "sedimentflux","bedloadflux", "BQARTinputs" , "BQARTpreprocess","bankfullQcalc","riverbedshape",(char *) NULL }; argNum = MFOptionParse (argc,argv); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); //printf("before switch\n"); switch (optID) { case MDpet: return (MFModelRun (argc,argv,argNum,MDRainPotETDef)); case MDsurplus: return (MFModelRun (argc,argv,argNum,MDRainWaterSurplusDef)); case MDinfiltration: return (MFModelRun (argc,argv,argNum,MDRainInfiltrationDef)); case MDrunoff: return (MFModelRun (argc,argv,argNum,MDRunoffDef)); case MDdischarge: return (MFModelRun (argc,argv,argNum,MDDischargeDef)); case MDwatertemp: return (MFModelRun (argc,argv,argNum,MDWTempRiverRouteDef)); case MDbalance: return (MFModelRun (argc,argv,argNum,MDWaterBalanceDef)); case MDgeometry: return (MFModelRun (argc,argv,argNum,MDRiverWidthDef)); case MDbgc: return (MFModelRun (argc,argv,argNum,MDBgcRoutingDef)); case MDbgc_DOC: return (MFModelRun (argc,argv,argNum,MDBgcDOCRoutingDef)); case MDbgc_DIN: return (MFModelRun (argc,argv,argNum,MDBgcDINRoutingDef)); case MDbgc_DINPLUSBIOMASS: return (MFModelRun (argc,argv,argNum,MDBgcDINPlusBiomassRoutingDef)); case MDsedimentflux: return (MFModelRun (argc,argv,argNum,MDSedimentFluxDef)); case MDbedloadflux: return (MFModelRun (argc,argv,argNum,MDBedloadFluxDef)); case MDBQARTpreprocess: return (MFModelRun (argc,argv,argNum,MDBQARTpreprocessDef)); case MDbankfullQcalc: return (MFModelRun (argc,argv,argNum,MDBankfullQcalcDef)); case MDRiverbedShapeExponent: return (MFModelRun (argc,argv,argNum,MDRiverbedShapeExponentDef)); default: MFOptionMessage (optName, optStr, options); return (CMfailed); } return (CMfailed); }
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 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); }
int MDRainInfiltrationDef () { int optID = MFUnset; int ret =0; const char *optStr, *optName = MDVarRainInfiltration; const char *options [] = { MDInputStr, "simple", "varying","spatially" ,(char *) NULL }; float par; //printf ("THE framework = greatest time sink ever invented\n"); if (_MDOutRainInfiltrationID != MFUnset) return (_MDOutRainInfiltrationID); const char *soilMoistureOptions [] = { "bucket", "layers", (char *) NULL }; int soilMoistureOptionID; //TODO Add baseflow from layered SM to infiltration! if (((optStr = MFOptionGet (MDOptSoilMoisture)) == (char *) NULL) || ((soilMoistureOptionID = CMoptLookup (soilMoistureOptions, optStr, true)) == CMfailed)) { CMmsgPrint(CMmsgUsrError," Soil Moisture mode not specifed! Options = 'bucket' or 'layers'\n"); return CMfailed; } MFDefEntering ("Rainfed Infiltration"); if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); //if ((ret = MDPermafrostDef()) == CMfailed) return CMfailed; if (soilMoistureOptionID ==1){ //layer is the soil moisture option infiltration will be calculated differently. //if ((_MDInRainWaterSurplusID = MDRainWaterSurplusDef ()) == CMfailed) return (CMfailed); if ((ret = MDRainSMoistChgLayeredSoilDef()) == CMfailed) return CMfailed; if ((_MDOutRainSurfRunoffID = MFVarGetID (MDVarRainSurfRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed)return CMfailed; if ((_MDOutRainInfiltrationID = MFVarGetID (MDVarRainInfiltration, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) return CMfailed; if ((_MDInSaturationExcessRunoffID = MFVarGetID (MDVarSaturationExcessflow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed)return CMfailed; if ((_MDInRainInfiltrationID = MFVarGetID (MDVarRainInfiltration, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) return CMfailed; if (MFModelAddFunction (_MDRainInfiltrationSaturation) == CMfailed) return CMfailed; MFDefLeaving ("Rainfed Infiltration"); return (_MDOutRainInfiltrationID); } switch (optID) { case MDinput: _MDOutRainInfiltrationID = MFVarGetID (MDVarRainInfiltration, "mm", MFInput, MFFlux, MFBoundary); break; case MDSpatially: _MDInfiltrationFractionID = MFVarGetID (MDParInfiltrationFracSpatial, "mm", MFInput, MFState, MFBoundary); case MDsimple: case MDvarying: if ((_MDInRainWaterSurplusID = MDRainWaterSurplusDef ()) == CMfailed) return (CMfailed); if (_MDInfiltrationFractionID != MFUnset) { if (((optStr = MFOptionGet (MDParInfiltrationFrac)) != (char *) NULL) && (sscanf (optStr,"%f",&par) == 1)) _MDInfiltrationFrac = par; else goto Stop; } if ((_MDOutRainSurfRunoffID = MFVarGetID (MDVarRainSurfRunoff, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) return CMfailed; if ((_MDOutRainInfiltrationID = MFVarGetID (MDVarRainInfiltration, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) return CMfailed; if (MFModelAddFunction (_MDRainInfiltrationSimple) == CMfailed) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Rainfed Infiltration"); return (_MDOutRainInfiltrationID); Stop: MFOptionMessage (optName, optStr, options); return (CMfailed); }
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 MDThermalInputsDef () { int optID = MFUnset; const char *optStr, *optName = MDOptThermalInputs; const char *options [] = { MDNoneStr, MDInputStr, (char *) NULL }; if ((optStr = MFOptionGet (optName)) != (char *) NULL) optID = CMoptLookup (options, optStr, true); MFDefEntering ("Thermal Inputs"); switch (optID) { case MDinput: if (((_MDPlaceHolderID = MDWTempRiverRouteDef ()) == CMfailed) || ((_MDInDischargeID = MDDischLevel2Def ()) == CMfailed) || ((_MDInDischargeIncomingID = MFVarGetID (MDVarDischarge0, "m3/s", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDFluxMixing_QxTID = MFVarGetID (MDVarFluxMixing_QxT, "m3*degC/d", MFRoute, MFFlux, MFBoundary)) == CMfailed) || ((_MDFlux_QxTID = MFVarGetID (MDVarFlux_QxT, "m3*degC/d", MFRoute, MFFlux, MFBoundary)) == CMfailed) || ((_MDInNamePlate1ID = MFVarGetID (MDVarNamePlate1, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate2ID = MFVarGetID (MDVarNamePlate2, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate3ID = MFVarGetID (MDVarNamePlate3, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate4ID = MFVarGetID (MDVarNamePlate4, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate5ID = MFVarGetID (MDVarNamePlate5, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate6ID = MFVarGetID (MDVarNamePlate6, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate7ID = MFVarGetID (MDVarNamePlate7, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInNamePlate8ID = MFVarGetID (MDVarNamePlate8, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType1ID = MFVarGetID (MDVarFuelType1, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType2ID = MFVarGetID (MDVarFuelType2, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType3ID = MFVarGetID (MDVarFuelType3, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType4ID = MFVarGetID (MDVarFuelType4, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType5ID = MFVarGetID (MDVarFuelType5, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType6ID = MFVarGetID (MDVarFuelType6, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType7ID = MFVarGetID (MDVarFuelType7, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInFuelType8ID = MFVarGetID (MDVarFuelType8, "MW", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInOptDeltaTID = MFVarGetID (MDVarOptDeltaT, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDInTempLimitID = MFVarGetID (MDVarTempLimit, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutTotalThermalWdlsID = MFVarGetID (MDVarTotalThermalWdls, "m3", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutTotalOptThermalWdlsID = MFVarGetID (MDVarTotalOptThermalWdls, "m3", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDWTempMixing_QxTID = MFVarGetID (MDVarWTempMixing_QxT, "degC", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDWTemp_QxTID = MFVarGetID (MDVarWTemp_QxT, "degC", MFOutput, MFState, MFBoundary)) == CMfailed) || //RJS 013112 ((_MDOutPowerOutput1ID = MFVarGetID (MDVarPowerOutput1, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput2ID = MFVarGetID (MDVarPowerOutput2, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput3ID = MFVarGetID (MDVarPowerOutput3, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput4ID = MFVarGetID (MDVarPowerOutput4, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput5ID = MFVarGetID (MDVarPowerOutput5, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput6ID = MFVarGetID (MDVarPowerOutput6, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput7ID = MFVarGetID (MDVarPowerOutput7, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerOutput8ID = MFVarGetID (MDVarPowerOutput8, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit1ID = MFVarGetID (MDVarPowerDeficit1, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit2ID = MFVarGetID (MDVarPowerDeficit2, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit3ID = MFVarGetID (MDVarPowerDeficit3, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit4ID = MFVarGetID (MDVarPowerDeficit4, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit5ID = MFVarGetID (MDVarPowerDeficit5, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit6ID = MFVarGetID (MDVarPowerDeficit6, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit7ID = MFVarGetID (MDVarPowerDeficit7, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficit8ID = MFVarGetID (MDVarPowerDeficit8, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent1ID = MFVarGetID (MDVarPowerPercent1, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent2ID = MFVarGetID (MDVarPowerPercent2, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent3ID = MFVarGetID (MDVarPowerPercent3, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent4ID = MFVarGetID (MDVarPowerPercent4, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent5ID = MFVarGetID (MDVarPowerPercent5, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent6ID = MFVarGetID (MDVarPowerPercent6, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent7ID = MFVarGetID (MDVarPowerPercent7, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerPercent8ID = MFVarGetID (MDVarPowerPercent8, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || ((_MDOutPowerOutputTotalID = MFVarGetID (MDVarPowerOutputTotal, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerDeficitTotalID = MFVarGetID (MDVarPowerDeficitTotal, "MW", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutPowerPercentTotalID = MFVarGetID (MDVarPowerDeficitTotal, "MW", MFOutput, MFState, MFBoundary)) == CMfailed) || // ((_MDInThermalWdlID = MFVarGetID (MDVarThermalWdl, "m3", MFInput, MFState, MFBoundary)) == CMfailed) || // ((_MDOutWdl_QxTID = MFVarGetID (MDVarWithdrawal_QxT, "m3*degC/d", MFOutput, MFFlux, MFBoundary)) == CMfailed) || // ((_MDInWarmingTempID = MFVarGetID (MDVarWarmingTemp, "degC", MFInput, MFState, MFBoundary)) == CMfailed) || (MFModelAddFunction (_MDThermalInputs) == CMfailed)) return (CMfailed); break; default: MFOptionMessage (optName, optStr, options); return (CMfailed); } MFDefLeaving ("Thermal Inputs"); return (_MDWTemp_QxTID); }
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); }