示例#1
0
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: DiffusionLimitedEvaporation -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: DiffusionLimitedEvaporation Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA Montpellier
        //            * Abstract: the evaporation from the diffusion limited soil
        //- inputs:
        //            * name: deficitOnTopLayers
        //                          ** description : deficit On TopLayers
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 5341
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: soilDiffusionConstant
        //                          ** description : soil Diffusion Constant
        //                          ** parametercategory : soil
        //                          ** datatype : DOUBLE
        //                          ** default : 4.2
        //                          ** min : 0
        //                          ** max : 10
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //- outputs:
        //            * name: diffusionLimitedEvaporation
        //                          ** description : the evaporation from the diffusion limited soil
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double deficitOnTopLayers = a.deficitOnTopLayers;
        double diffusionLimitedEvaporation;

        if (deficitOnTopLayers / 1000.0d <= 0.0d)
        {
            diffusionLimitedEvaporation = 8.3d * 1000.0d;
        }
        else
        {
            if (deficitOnTopLayers / 1000.0d < 25.0d)
            {
                diffusionLimitedEvaporation = 2.0d * soilDiffusionConstant * soilDiffusionConstant / (deficitOnTopLayers / 1000.0d) * 1000.0d;
            }
            else
            {
                diffusionLimitedEvaporation = 0.0d;
            }
        }
        s.diffusionLimitedEvaporation = diffusionLimitedEvaporation;
    }
示例#2
0
 public EnergybalanceWrapper(Universe universe) : base(universe)
 {
     s = new EnergybalanceState();
     r = new EnergybalanceRate();
     a = new EnergybalanceAuxiliary();
     energybalanceComponent = new Energybalance();
     loadParameters();
 }
 public EnergybalanceWrapper()
 {
     s = new EnergybalanceState();
     r = new EnergybalanceRate();
     a = new EnergybalanceAuxiliary();
     energybalanceComponent = new EnergybalanceComponent();
     loadParameters();
 }
    public void  Calculate_cropheatflux(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: CropHeatFlux -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: CropHeatFlux Model
        //            * Author: Pierre Martre
        //            * Reference: abModelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract: It is calculated from net Radiation, soil heat flux and potential transpiration
        //- inputs:
        //            * name: netRadiationEquivalentEvaporation
        //                          ** variablecategory : auxiliary
        //                          ** description : net Radiation Equivalent Evaporation
        //                          ** datatype : DOUBLE
        //                          ** default : 638.142
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: soilHeatFlux
        //                          ** description : soil Heat Flux
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** default : 188.817
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: potentialTranspiration
        //                          ** description : potential Transpiration
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** default :  1.413
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: cropHeatFlux
        //                          ** description :  crop Heat Flux
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double netRadiationEquivalentEvaporation = a.netRadiationEquivalentEvaporation;
        double soilHeatFlux           = r.soilHeatFlux;
        double potentialTranspiration = r.potentialTranspiration;
        double cropHeatFlux;

        cropHeatFlux   = netRadiationEquivalentEvaporation - soilHeatFlux - potentialTranspiration;
        r.cropHeatFlux = cropHeatFlux;
    }
    public void  Calculate_soilheatflux(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: SoilHeatFlux -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: SoilHeatFlux Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract: The available energy in the soil
        //- inputs:
        //            * name: netRadiationEquivalentEvaporation
        //                          ** variablecategory : state
        //                          ** description : net Radiation Equivalent Evaporation
        //                          ** datatype : DOUBLE
        //                          ** default : 638.142
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: tau
        //                          ** description : plant cover factor
        //                          ** parametercategory : species
        //                          ** datatype : DOUBLE
        //                          ** default : 0.9983
        //                          ** min : 0
        //                          ** max : 100
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: soilEvaporation
        //                          ** description : soil Evaporation
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** default : 448.240
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: soilHeatFlux
        //                          ** description : soil Heat Flux
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double netRadiationEquivalentEvaporation = s.netRadiationEquivalentEvaporation;
        double soilEvaporation = s.soilEvaporation;
        double soilHeatFlux;

        soilHeatFlux   = tau * netRadiationEquivalentEvaporation - soilEvaporation;
        r.soilHeatFlux = soilHeatFlux;
    }
示例#6
0
 public EnergybalanceWrapper(Universe universe, EnergybalanceWrapper toCopy, bool copyAll) : base(universe)
 {
     s = (toCopy.s != null) ? new EnergybalanceState(toCopy.s, copyAll) : null;
     r = (toCopy.r != null) ? new EnergybalanceRate(toCopy.r, copyAll) : null;
     a = (toCopy.a != null) ? new EnergybalanceAuxiliary(toCopy.a, copyAll) : null;
     if (copyAll)
     {
         energybalanceComponent = (toCopy.energybalanceComponent != null) ? new Energybalance(toCopy.energybalanceComponent) : null;
     }
 }
 public EnergybalanceWrapper(EnergybalanceWrapper toCopy, bool copyAll) : this()
 {
     s = (toCopy.s != null) ? new EnergybalanceState(toCopy.s, copyAll) : null;
     r = (toCopy.r != null) ? new EnergybalanceRate(toCopy.r, copyAll) : null;
     a = (toCopy.a != null) ? new EnergybalanceAuxiliary(toCopy.a, copyAll) : null;
     if (copyAll)
     {
         energybalanceComponent = (toCopy.energybalanceComponent != null) ? new EnergybalanceComponent(toCopy.energybalanceComponent) : null;
     }
 }
 public EnergybalanceRate(EnergybalanceRate toCopy, bool copyAll) // copy constructor
 {
     if (copyAll)
     {
         _evapoTranspirationPriestlyTaylor = toCopy._evapoTranspirationPriestlyTaylor;
         _evapoTranspirationPenman         = toCopy._evapoTranspirationPenman;
         _evapoTranspiration     = toCopy._evapoTranspiration;
         _potentialTranspiration = toCopy._potentialTranspiration;
         _soilHeatFlux           = toCopy._soilHeatFlux;
         _cropHeatFlux           = toCopy._cropHeatFlux;
     }
 }
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: SoilEvaporation -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: SoilEvaporation Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA Montpellier
        //            * Abstract: Starting from a soil at field capacity, soil evaporation  is assumed to
        //                be energy limited during the first phase of evaporation and diffusion limited thereafter.
        //                Hence, the soil evaporation model considers these two processes taking the minimum between
        //                the energy limited evaporation (PtSoil) and the diffused limited
        //                evaporation
        //- inputs:
        //            * name: diffusionLimitedEvaporation
        //                          ** description : diffusion Limited Evaporation
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** default : 6605.505
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: energyLimitedEvaporation
        //                          ** description : energy Limited Evaporation
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** default : 448.240
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: soilEvaporation
        //                          ** description : soil Evaporation
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double diffusionLimitedEvaporation = s.diffusionLimitedEvaporation;
        double energyLimitedEvaporation    = s.energyLimitedEvaporation;
        double soilEvaporation;

        soilEvaporation   = Math.Min(diffusionLimitedEvaporation, energyLimitedEvaporation);
        a.soilEvaporation = soilEvaporation;
    }
示例#10
0
 public void CalculateModel % s(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
 {
     _Diffusionlimitedevaporation.CalculateModel(s, s1, r, a);
     _Conductance.CalculateModel(s, s1, r, a);
     _Netradiation.CalculateModel(s, s1, r, a);
     _Netradiationequivalentevaporation.CalculateModel(s, s1, r, a);
     _Priestlytaylor.CalculateModel(s, s1, r, a);
     _Penman.CalculateModel(s, s1, r, a);
     _Evapotranspiration.CalculateModel(s, s1, r, a);
     _Potentialtranspiration.CalculateModel(s, s1, r, a);
     _Ptsoil.CalculateModel(s, s1, r, a);
     _Soilevaporation.CalculateModel(s, s1, r, a);
     _Soilheatflux.CalculateModel(s, s1, r, a);
     _Cropheatflux.CalculateModel(s, s1, r, a);
     _Canopytemperature.CalculateModel(s, s1, r, a);
 }
示例#11
0
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: PotentialTranspiration -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: PotentialTranspiration Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract: SiriusQuality2 uses availability of water from the soil reservoir as a method to restrict
        //                    transpiration as soil moisture is depleted
        //- inputs:
        //            * name: evapoTranspiration
        //                          ** description : evapoTranspiration
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** default : 830.958
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : mm
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: tau
        //                          ** description : plant cover factor
        //                          ** parametercategory : species
        //                          ** datatype : DOUBLE
        //                          ** default : 0.9983
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //- outputs:
        //            * name: potentialTranspiration
        //                          ** description : potential Transpiration
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double evapoTranspiration = r.evapoTranspiration;
        double potentialTranspiration;

        potentialTranspiration   = evapoTranspiration * (1.0d - tau);
        r.potentialTranspiration = potentialTranspiration;
    }
示例#12
0
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: NetRadiationEquivalentEvaporation -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: NetRadiationEquivalentEvaporation Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract:  It is given by dividing net radiation by latent heat of vaporization of water
        //- inputs:
        //            * name: lambdaV
        //                          ** description : latent heat of vaporization of water
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 2.454
        //                          ** min : 0
        //                          ** max : 10
        //                          ** unit : MJ kg-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: netRadiation
        //                          ** description : net radiation
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** default : 1.566
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : MJ m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: netRadiationEquivalentEvaporation
        //                          ** variablecategory : auxiliary
        //                          ** description : net Radiation in Equivalent Evaporation
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double netRadiation = s.netRadiation;
        double netRadiationEquivalentEvaporation;

        netRadiationEquivalentEvaporation   = netRadiation / lambdaV * 1000.0d;
        a.netRadiationEquivalentEvaporation = netRadiationEquivalentEvaporation;
    }
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: NetRadiation -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: NetRadiation Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA Montpellier
        //            * Abstract: It is calculated at the surface of the canopy and is givenby the difference between incoming and outgoing radiation of both short
        //                     and long wavelength radiation
        //- inputs:
        //            * name: minTair
        //                          ** description : minimum air temperature
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** min : -30
        //                          ** max : 45
        //                          ** default : 0.7
        //                          ** unit : °C
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: maxTair
        //                          ** description : maximum air Temperature
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** min : -30
        //                          ** max : 45
        //                          ** default : 7.2
        //                          ** unit : °C
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: albedoCoefficient
        //                          ** description : albedo Coefficient
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0.23
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: stefanBoltzman
        //                          ** description : stefan Boltzman constant
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 4.903E-09
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: elevation
        //                          ** description : elevation
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0
        //                          ** min : -500
        //                          ** max : 10000
        //                          ** unit : m
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: solarRadiation
        //                          ** description : solar Radiation
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 3
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : MJ m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: vaporPressure
        //                          ** description : vapor Pressure
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 6.1
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : hPa
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: extraSolarRadiation
        //                          ** description : extra Solar Radiation
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 11.7
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : MJ m2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: netRadiation
        //                          ** description :  net radiation
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : MJ m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //            * name: netOutGoingLongWaveRadiation
        //                          ** description : net OutGoing Long Wave Radiation
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double minTair             = a.minTair;
        double maxTair             = a.maxTair;
        double solarRadiation      = a.solarRadiation;
        double vaporPressure       = a.vaporPressure;
        double extraSolarRadiation = a.extraSolarRadiation;
        double netRadiation;
        double netOutGoingLongWaveRadiation;
        double Nsr;
        double clearSkySolarRadiation;
        double averageT;
        double surfaceEmissivity;
        double cloudCoverFactor;
        double Nolr;

        Nsr = (1.0d - albedoCoefficient) * solarRadiation;
        clearSkySolarRadiation = (0.75d + (2 * Math.Pow(10.0d, -5) * elevation)) * extraSolarRadiation;
        averageT          = (Math.Pow(maxTair + 273.16d, 4) + Math.Pow(minTair + 273.16d, 4)) / 2.0d;
        surfaceEmissivity = 0.34d - (0.14d * Math.Sqrt(vaporPressure / 10.0d));
        cloudCoverFactor  = 1.35d * (solarRadiation / clearSkySolarRadiation) - 0.35d;
        Nolr         = stefanBoltzman * averageT * surfaceEmissivity * cloudCoverFactor;
        netRadiation = Nsr - Nolr;
        netOutGoingLongWaveRadiation = Nolr;
        a.netRadiation = netRadiation;
        a.netOutGoingLongWaveRadiation = netOutGoingLongWaveRadiation;
    }
示例#14
0
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: EvapoTranspiration -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: Evapotranspiration Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA Montpellier
        //            * Abstract: According to the availability of wind and/or vapor pressure daily data, the
        //            SiriusQuality2 model calculates the evapotranspiration rate using the Penman (if wind
        //            and vapor pressure data are available) (Penman 1948) or the Priestly-Taylor
        //            (Priestley and Taylor 1972) method
        //- inputs:
        //            * name: isWindVpDefined
        //                          ** description : if wind and vapour pressure are defined
        //                          ** parametercategory : constant
        //                          ** datatype : INT
        //                          ** default : 1
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: evapoTranspirationPriestlyTaylor
        //                          ** description : evapoTranspiration of Priestly Taylor
        //                          ** variablecategory : rate
        //                          ** default : 449.367
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : mm
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: evapoTranspirationPenman
        //                          ** description : evapoTranspiration of Penman
        //                          ** datatype : DOUBLE
        //                          ** variablecategory : rate
        //                          ** default : 830.958
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : mm
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: evapoTranspiration
        //                          ** description : evapoTranspiration
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : mm
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double evapoTranspirationPriestlyTaylor = r.evapoTranspirationPriestlyTaylor;
        double evapoTranspirationPenman         = r.evapoTranspirationPenman;
        double evapoTranspiration;

        if (isWindVpDefined == 1)
        {
            evapoTranspiration = evapoTranspirationPenman;
        }
        else
        {
            evapoTranspiration = evapoTranspirationPriestlyTaylor;
        }
        r.evapoTranspiration = evapoTranspiration;
    }
示例#15
0
    public void  Calculate_penman(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: Penman -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: Penman Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract: This method is used when wind and vapor pressure daily data are available
        //
        //- inputs:
        //            * name: evapoTranspirationPriestlyTaylor
        //                          ** description : evapoTranspiration of Priestly Taylor
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** default : 449.367
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: hslope
        //                          ** description : the slope of saturated vapor pressure temperature curve at a given temperature
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 0.584
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : hPa °C-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: VPDair
        //                          ** description :  vapour pressure density
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 2.19
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : hPa
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: psychrometricConstant
        //                          ** description : psychrometric constant
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0.66
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: Alpha
        //                          ** description : Priestley-Taylor evapotranspiration proportionality constant
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 1.5
        //                          ** min : 0
        //                          ** max : 100
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: lambdaV
        //                          ** description : latent heat of vaporization of water
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 2.454
        //                          ** min : 0
        //                          ** max : 10
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: rhoDensityAir
        //                          ** description : Density of air
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 1.225
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: specificHeatCapacityAir
        //                          ** description : Specific heat capacity of dry air
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0.00101
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: conductance
        //                          ** description : conductance
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** default : 598.685
        //                          ** unit : m d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: evapoTranspirationPenman
        //                          ** description :  evapoTranspiration of Penman Monteith
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double evapoTranspirationPriestlyTaylor = r.evapoTranspirationPriestlyTaylor;
        double hslope      = a.hslope;
        double VPDair      = a.VPDair;
        double conductance = s.conductance;
        double evapoTranspirationPenman;

        evapoTranspirationPenman   = evapoTranspirationPriestlyTaylor / Alpha + (1000.0d * (rhoDensityAir * specificHeatCapacityAir * VPDair * conductance / (lambdaV * (hslope + psychrometricConstant))));
        r.evapoTranspirationPenman = evapoTranspirationPenman;
    }
示例#16
0
    public void  Calculate_conductance(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: Conductance -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: Conductance Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract: The boundary layer conductance is expressed as the wind speed profile above the
        //            canopy and the canopy structure. The approach does not take into account buoyancy
        //            effects.
        //
        //- inputs:
        //            * name: vonKarman
        //                          ** description : von Karman constant
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 1
        //                          ** default : 0.42
        //                          ** unit : dimensionless
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //                          ** parametercategory : constant
        //            * name: heightWeatherMeasurements
        //                          ** description : reference height of wind and humidity measurements
        //                          ** parametercategory : soil
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10
        //                          ** default : 2
        //                          ** unit : m
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: zm
        //                          ** description : roughness length governing momentum transfer, FAO
        //                          ** parametercategory : constant
        //                          ** inputtype : parameter
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 1
        //                          ** default : 0.13
        //                          ** unit : m
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //            * name: zh
        //                          ** description : roughness length governing transfer of heat and vapour, FAO
        //                          ** parametercategory : constant
        //                          ** inputtype : parameter
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 1
        //                          ** default : 0.013
        //                          ** unit : m
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //            * name: d
        //                          ** description : corresponding to 2/3. This is multiplied to the crop heigth for calculating the zero plane displacement height, FAO
        //                          ** inputtype : parameter
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0.67
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit : dimensionless
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547rl
        //            * name: plantHeight
        //                          ** description : plant Height
        //                          ** datatype : DOUBLE
        //                          ** default : 0
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : mm
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //                          ** variablecategory : auxiliary
        //            * name: wind
        //                          ** description : wind
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 124000
        //                          ** min : 0
        //                          ** max : 1000000
        //                          ** unit : m/d
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //- outputs:
        //            * name: conductance
        //                          ** description : the boundary layer conductance
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : m/d
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double plantHeight = a.plantHeight;
        double wind        = a.wind;
        double conductance;
        double h;

        h             = Math.Max(10.0d, plantHeight) / 100.0d;
        conductance   = wind * Math.Pow(vonKarman, 2) / (Math.Log((heightWeatherMeasurements - (d * h)) / (zm * h)) * Math.Log((heightWeatherMeasurements - (d * h)) / (zh * h)));
        s.conductance = conductance;
    }
    public void  Calculate_priestlytaylor(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: PriestlyTaylor -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: evapoTranspirationPriestlyTaylor  Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA Montpellier
        //            * Abstract: Calculate Energy Balance
        //- inputs:
        //            * name: netRadiationEquivalentEvaporation
        //                          ** description : net Radiation in Equivalent Evaporation
        //                          ** variablecategory : state
        //                          ** datatype : DOUBLE
        //                          ** default : 638.142
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: hslope
        //                          ** description : the slope of saturated vapor pressure temperature curve at a given temperature
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** default : 0.584
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : hPa °C-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: psychrometricConstant
        //                          ** description : psychrometric constant
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0.66
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: Alpha
        //                          ** description : Priestley-Taylor evapotranspiration proportionality constant
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 1.5
        //                          ** min : 0
        //                          ** max : 100
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //- outputs:
        //            * name: evapoTranspirationPriestlyTaylor
        //                          ** description : evapoTranspiration of Priestly Taylor
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double netRadiationEquivalentEvaporation = s.netRadiationEquivalentEvaporation;
        double hslope = a.hslope;
        double evapoTranspirationPriestlyTaylor;

        evapoTranspirationPriestlyTaylor   = Math.Max(Alpha * hslope * netRadiationEquivalentEvaporation / (hslope + psychrometricConstant), 0.0d);
        r.evapoTranspirationPriestlyTaylor = evapoTranspirationPriestlyTaylor;
    }
示例#18
0
    public void  Calculate_ptsoil(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: PtSoil -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: PtSoil EnergyLimitedEvaporation Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA Montpellier
        //            * Abstract: Evaporation from the soil in the energy-limited stage
        //- inputs:
        //            * name: evapoTranspirationPriestlyTaylor
        //                          ** description : evapoTranspiration Priestly Taylor
        //                          ** variablecategory : rate
        //                          ** datatype : DOUBLE
        //                          ** default : 120
        //                          ** min : 0
        //                          ** max : 1000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: Alpha
        //                          ** description : Priestley-Taylor evapotranspiration proportionality constant
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 1.5
        //                          ** min : 0
        //                          ** max : 100
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: tau
        //                          ** description : plant cover factor
        //                          ** parametercategory : species
        //                          ** datatype : DOUBLE
        //                          ** default : 0.9983
        //                          ** min : 0
        //                          ** max : 100
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: tauAlpha
        //                          ** description : Fraction of the total net radiation exchanged at the soil surface when AlpaE = 1
        //                          ** parametercategory : soil
        //                          ** datatype : DOUBLE
        //                          ** default : 0.3
        //                          ** min : 0
        //                          ** max : 1
        //                          ** unit :
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //- outputs:
        //            * name: energyLimitedEvaporation
        //                          ** description : energy Limited Evaporation
        //                          ** variablecategory : auxiliary
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 5000
        //                          ** unit : g m-2 d-1
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double evapoTranspirationPriestlyTaylor = r.evapoTranspirationPriestlyTaylor;
        double energyLimitedEvaporation;
        double AlphaE;

        if (tau < tauAlpha)
        {
            AlphaE = 1.0d;
        }
        else
        {
            AlphaE = Alpha - ((Alpha - 1.0d) * (1.0d - tau) / (1.0d - tauAlpha));
        }
        energyLimitedEvaporation   = evapoTranspirationPriestlyTaylor / Alpha * AlphaE * tau;
        a.energyLimitedEvaporation = energyLimitedEvaporation;
    }
    public void  CalculateModel(EnergybalanceState s, EnergybalanceState s1, EnergybalanceRate r, EnergybalanceAuxiliary a)
    {
        //- Name: CanopyTemperature -Version: 1.0, -Time step: 1
        //- Description:
        //            * Title: CanopyTemperature Model
        //            * Author: Pierre Martre
        //            * Reference: Modelling energy balance in the wheat crop model SiriusQuality2:
        //            Evapotranspiration and canopy and soil temperature calculations
        //            * Institution: INRA/LEPSE Montpellier
        //            * Abstract: It is calculated from the crop heat flux and the boundary layer conductance
        //- inputs:
        //            * name: minTair
        //                          ** description : minimum air temperature
        //                          ** datatype : DOUBLE
        //                          ** variablecategory : auxiliary
        //                          ** min : -30
        //                          ** max : 45
        //                          ** default : 0.7
        //                          ** unit : degC
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: maxTair
        //                          ** description : maximum air Temperature
        //                          ** datatype : DOUBLE
        //                          ** variablecategory : auxiliary
        //                          ** min : -30
        //                          ** max : 45
        //                          ** default : 7.2
        //                          ** unit : degC
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : variable
        //            * name: cropHeatFlux
        //                          ** description : Crop heat flux
        //                          ** variablecategory : rate
        //                          ** inputtype : variable
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** default : 447.912
        //                          ** unit : g/m**2/d
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //            * name: conductance
        //                          ** description : the boundary layer conductance
        //                          ** variablecategory : state
        //                          ** inputtype : variable
        //                          ** datatype : DOUBLE
        //                          ** min : 0
        //                          ** max : 10000
        //                          ** default : 598.685
        //                          ** unit : m/d
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //            * name: lambdaV
        //                          ** description : latent heat of vaporization of water
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 2.454
        //                          ** min : 0
        //                          ** max : 10
        //                          ** unit : MJ/kg
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: rhoDensityAir
        //                          ** description : Density of air
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 1.225
        //                          ** unit : kg/m**3
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //            * name: specificHeatCapacityAir
        //                          ** description : Specific heat capacity of dry air
        //                          ** parametercategory : constant
        //                          ** datatype : DOUBLE
        //                          ** default : 0.00101
        //                          ** unit : MJ/kg/degC
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //                          ** inputtype : parameter
        //- outputs:
        //            * name: minCanopyTemperature
        //                          ** description : minimal Canopy Temperature
        //                          ** datatype : DOUBLE
        //                          ** variablecategory : state
        //                          ** min : -30
        //                          ** max : 45
        //                          ** unit : degC
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        //            * name: maxCanopyTemperature
        //                          ** description : maximal Canopy Temperature
        //                          ** datatype : DOUBLE
        //                          ** variablecategory : state
        //                          ** min : -30
        //                          ** max : 45
        //                          ** unit : degC
        //                          ** uri : http://www1.clermont.inra.fr/siriusquality/?page_id=547
        double minTair      = a.minTair;
        double maxTair      = a.maxTair;
        double cropHeatFlux = r.cropHeatFlux;
        double conductance  = s.conductance;
        double minCanopyTemperature;
        double maxCanopyTemperature;

        minCanopyTemperature   = minTair + (cropHeatFlux / (rhoDensityAir * specificHeatCapacityAir * conductance / lambdaV * 1000.0d));
        maxCanopyTemperature   = maxTair + (cropHeatFlux / (rhoDensityAir * specificHeatCapacityAir * conductance / lambdaV * 1000.0d));
        s.minCanopyTemperature = minCanopyTemperature;
        s.maxCanopyTemperature = maxCanopyTemperature;
    }