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 MDWaterBalanceDef() { MFDefEntering ("WaterBalance"); if (( MDAccumBalanceDef () == CMfailed) || ((_MDInPrecipID = MDPrecipitationDef ()) == CMfailed) || ((_MDInDischargeID = MDDischargeDef ()) == CMfailed) || ((_MDInSnowPackChgID = MDSPackChgDef ()) == CMfailed) || ((_MDInSoilMoistChgID = MDSoilMoistChgDef ()) == CMfailed) || ((_MDInRunoffID = MDRunoffDef ()) == CMfailed) || ((_MDInEvaptrsID = MFVarGetID (MDVarEvapotranspiration, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInGrdWatChgID = MFVarGetID (MDVarGroundWaterChange, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInRunoffPoolChgID = MFVarGetID (MDVarRunoffPoolChg, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutWaterBalanceID = MFVarGetID (MDVarWaterBalance, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || (MFModelAddFunction(_MDWaterBalance) == CMfailed)) return (CMfailed); if ((_MDInIrrGrossDemandID = MDIrrGrossDemandDef ()) != MFUnset) { if ((_MDInIrrGrossDemandID == CMfailed) || ((_MDInIrrUptakeRiverID = MDIrrUptakeRiverDef ()) == CMfailed) || ((_MDInIrrUptakeGrdWaterID = MDIrrUptakeGrdWaterDef ()) == CMfailed) || ((_MDInIrrSoilMoistChgID = MDIrrSoilMoistChgDef ()) == CMfailed) || ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ())== CMfailed) || ((_MDInIrrEvapotranspID = MFVarGetID (MDVarIrrEvapotranspiration, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInIrrReturnFlowID = MFVarGetID (MDVarIrrReturnFlow, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInIrrUptakeExcessID = MFVarGetID (MDVarIrrUptakeExcess, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrUptakeBalanceID = MFVarGetID (MDVarIrrUptakeBalance, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutIrrWaterBalanceID = MFVarGetID (MDVarIrrWaterBalance, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed)) return (CMfailed); if ((_MDInSmallResReleaseID = MDSmallReservoirReleaseDef ()) != MFUnset) { if (( _MDInSmallResReleaseID == CMfailed) || ((_MDInSmallResEvapoID = MFVarGetID (MDVarSmallResEvaporation, "mm", MFInput, MFFlux, MFBoundary)) == CMfailed) || ((_MDInSmallResStorageChgID = MFVarGetID (MDVarSmallResStorageChange, "mm", MFInput, MFState, MFInitial)) == CMfailed)) return (CMfailed); } } MFDefLeaving ("WaterBalance"); return (_MDOutWaterBalanceID); }
int 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 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); }