예제 #1
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);
}
예제 #2
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); 
}