コード例 #1
0
        public float CalculateEvaporation(SiteCohorts sitecohorts)
        {
            // permafrost
            float frostFreeSoilDepth = sitecohorts.Ecoregion.RootingDepth - FrozenDepth;
            float frostFreeProp      = Math.Min(1.0F, frostFreeSoilDepth / sitecohorts.Ecoregion.RootingDepth);

            // mm/month
            //PET = (float)Calculate_PotentialEvapotranspiration(sitecohorts.SubcanopyPAR, sitecohorts.Ecoregion.Variables.Tday, sitecohorts.Ecoregion.Variables.Daylength);
            PET = (float)Calculate_PotentialEvapotranspiration_umol(sitecohorts.SubcanopyPAR, sitecohorts.Ecoregion.Variables.Tday, sitecohorts.Ecoregion.Variables.Daylength);

            float pressurehead = pressureheadtable[sitecohorts.Ecoregion, (int)Math.Round(Water * 100)];

            // Evaporation begins to decline at 75% of field capacity (Robock et al. 1995)
            // Robock, A., Vinnikov, K. Y., Schlosser, C. A., Speranskaya, N. A., & Xue, Y. (1995). Use of midlatitude soil moisture and meteorological observations to validate soil moisture simulations with biosphere and bucket models. Journal of Climate, 8(1), 15-35.
            float evapCritWater   = sitecohorts.Ecoregion.FieldCap * 0.75f;
            float evapCritWaterPH = pressureheadtable[sitecohorts.Ecoregion, (int)Math.Round(evapCritWater * 100.0)];

            DeliveryPotential = Cohort.ComputeFWater(-1, -1, evapCritWaterPH, 153, pressurehead);

            // mm/month
            float AET = Math.Min(DeliveryPotential * PET, Water * sitecohorts.Ecoregion.RootingDepth * frostFreeProp);

            sitecohorts.SetAet(AET, sitecohorts.Ecoregion.Variables.Month);

            // Evaporation cannot remove water below wilting point, evaporation cannot be negative
            // Transpiration is assumed to replace evaporation
            Evaporation = (float)Math.Max(0, Math.Min((Water - sitecohorts.Ecoregion.WiltPnt) * sitecohorts.Ecoregion.RootingDepth * frostFreeProp, Math.Max(0, AET - (double)sitecohorts.Transpiration)));

            return(Evaporation); //mm/month
        }
コード例 #2
0
        public float CalculateEvaporation(SiteCohorts sitecohorts )
        {
            // this.Ecoregion.Variables.Month, Ecoregion, this.subcanopypar, Transpiration, this.Ecoregion.Variables.Tday, ref water,this.SetAet
            PET = (float)Calculate_PotentialEvapotranspiration(sitecohorts.SubcanopyPAR, sitecohorts.Ecoregion.Variables.Tday);

            float pressurehead = pressureheadtable[sitecohorts.Ecoregion, (int)Water];

            // Evaporation begins to decline at 75% of field capacity (Robock et al. 1995)
            // Robock, A., Vinnikov, K. Y., Schlosser, C. A., Speranskaya, N. A., & Xue, Y. (1995). Use of midlatitude soil moisture and meteorological observations to validate soil moisture simulations with biosphere and bucket models. Journal of Climate, 8(1), 15-35.
            float evapCritWater = sitecohorts.Ecoregion.FieldCap * 0.75f;

            DeliveryPotential = Cohort.ComputeFWater(0, evapCritWater, 153, pressurehead);

            // Per month
            sitecohorts.SetAet(DeliveryPotential * PET, sitecohorts.Ecoregion.Variables.Month);

            float wiltPoint = sitecohorts.Ecoregion.WiltPnt;

            // Evaporation cannot remove water below wilting point, evaporation cannot be negative
            // Transpiration is assumed to replace evaporation
            Evaporation = (float)Math.Max(0,Math.Min(Water - wiltPoint, Math.Max(0, DeliveryPotential * PET - (double)sitecohorts.Transpiration)));

            return Evaporation;
        }