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; }
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; }
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; }
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); }
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; }
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; }
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; }
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; }
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; }
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; }