int MDSmallReservoirReleaseDef () { if (_MDOutSmallResReleaseID != MFUnset) return (_MDOutSmallResReleaseID); if ((_MDInIrrGrossDemandID = MDIrrGrossDemandDef ()) == CMfailed) return (CMfailed); if (_MDInIrrGrossDemandID == MFUnset) return (MFUnset); if ((_MDInSmallResCapacityID = MDSmallReservoirCapacityDef ()) == CMfailed) return (CMfailed); if (_MDInSmallResCapacityID == MFUnset) return (MFUnset); MFDefEntering("Small Reservoirs"); if (((_MDInRainSurfRunoffID = MDRainSurfRunoffDef ()) == CMfailed) || ((_MDInIrrAreaFracID = MDIrrigatedAreaDef ()) == CMfailed) || ((_MDInPotEvapotransID = MDIrrRefEvapotransDef ()) == CMfailed) || ((_MDInSmallResStorageFracID = MFVarGetID (MDVarSmallReservoirStorageFrac, "-", MFInput, MFState, MFBoundary)) == CMfailed) || ((_MDOutSmallResUptakeID = MFVarGetID (MDVarSmallResUptake, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutSmallResReleaseID = MFVarGetID (MDVarSmallResRelease, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutSmallResStorageID = MFVarGetID (MDVarSmallResStorage, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSmallResStorageID = MFVarGetID (MDVarSmallResStorage, "mm", MFOutput, MFState, MFInitial)) == CMfailed) || ((_MDOutSmallResEvapoID = MFVarGetID (MDVarSmallResEvaporation, "mm", MFOutput, MFFlux, MFBoundary)) == CMfailed) || ((_MDOutSmallResStorageChgID = MFVarGetID (MDVarSmallResStorageChange, "mm", MFOutput, MFState, MFBoundary)) == CMfailed) || ((MFModelAddFunction (_MDSmallReservoirRelease) == CMfailed))) return (CMfailed); MFDefLeaving("Small Reservoirs"); return (_MDOutSmallResReleaseID); }
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); }