コード例 #1
0
ファイル: MDGrossRad.c プロジェクト: KyleWhittinghill/WBMplus
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);
}
コード例 #2
0
ファイル: MDBaseFlow.c プロジェクト: rjs80/WBMplus
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);
}
コード例 #3
0
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);
}
コード例 #4
0
ファイル: MDRunoff.c プロジェクト: KyleWhittinghill/WBMplus
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);
}
コード例 #5
0
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);
}
コード例 #6
0
ファイル: MDRainIntercept.c プロジェクト: wk1984/wbmsed
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); 
}
コード例 #7
0
ファイル: MDDO2.c プロジェクト: ArielMiara/WBMplus
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);
}
コード例 #8
0
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);
}
コード例 #9
0
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);
}
コード例 #10
0
ファイル: MDBaseFlow.c プロジェクト: nimaehsani/WBMplus
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);
}
コード例 #11
0
ファイル: MDWetlandArea.c プロジェクト: bmfekete/RGIS
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);
	
}
コード例 #12
0
ファイル: MDSmallReservoirCap.c プロジェクト: wk1984/wbmsed
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);
}
コード例 #13
0
ファイル: MDReservoirs.c プロジェクト: wk1984/wbmsed
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); 
}
コード例 #14
0
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);
}
コード例 #15
0
ファイル: MDWTempGrdWater.c プロジェクト: bmfekete/RGIS
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);
}
コード例 #16
0
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);
}
コード例 #17
0
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);
}
コード例 #18
0
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);
}
コード例 #19
0
ファイル: MDBgcDIN.c プロジェクト: bmfekete/RGIS
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); 
}
コード例 #20
0
ファイル: MDStormRunoff.c プロジェクト: rjs80/WBMplus
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);
}
コード例 #21
0
ファイル: MDBedloadFlux.c プロジェクト: ArielMiara/WBMplus
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);
}
コード例 #22
0
ファイル: MDAccBalance.c プロジェクト: wk1984/wbmsed
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);	
}
コード例 #23
0
ファイル: MDBgcRiverGPP.c プロジェクト: wk1984/wbmsed
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);
}
コード例 #24
0
ファイル: MDChloride.c プロジェクト: bmfekete/WBMplus
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);
}
コード例 #25
0
ファイル: MDIrrRefETFAO.c プロジェクト: bmfekete/RGIS
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);
}
コード例 #26
0
ファイル: MDDischLevel1.c プロジェクト: ArielMiara/WBMplus
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);
}
コード例 #27
0
ファイル: MDSpecCond.c プロジェクト: Niharsamal/WBMplus
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);
}
コード例 #28
0
ファイル: MDBgcRiverLight.c プロジェクト: bmfekete/RGIS
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);
}
コード例 #29
0
ファイル: MDRainSMoistChg.c プロジェクト: wk1984/wbmsed
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);
}
コード例 #30
0
ファイル: MDCParams.c プロジェクト: ArielMiara/WBMplus
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); 
}