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 void CalculateModel(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; }