Esempio n. 1
0
        /// <summary>
        /// Calculates the radiation absorbed by the canopy, based on the position of the sun
        /// </summary>
        private void CalcAbsorbedRadiations(ISolarRadiation radiation)
        {
            // Set parameters
            Absorbed.DiffuseExtinction = Canopy.DiffuseExtCoeff;
            Absorbed.LeafScattering    = Canopy.LeafScatteringCoeff;
            Absorbed.DiffuseReflection = Canopy.DiffuseReflectionCoeff;

            // Photon calculations (used by photosynthesis)
            var photons = Absorbed.CalcTotalRadiation(radiation.DirectPAR, radiation.DiffusePAR);

            Sunlit.PhotonCount = Absorbed.CalcSunlitRadiation(radiation.DirectPAR, radiation.DiffusePAR);
            Shaded.PhotonCount = photons - Sunlit.PhotonCount;

            // Energy calculations (used by water interaction)
            var PARDirect  = radiation.Direct * 0.5 * 1000000;
            var PARDiffuse = radiation.Diffuse * 0.5 * 1000000;
            var NIRDirect  = radiation.Direct * 0.5 * 1000000;
            var NIRDiffuse = radiation.Diffuse * 0.5 * 1000000;

            var PARTotalIrradiance       = Absorbed.CalcTotalRadiation(PARDirect, PARDiffuse);
            var SunlitPARTotalIrradiance = Absorbed.CalcSunlitRadiation(PARDirect, PARDiffuse);
            var ShadedPARTotalIrradiance = PARTotalIrradiance - SunlitPARTotalIrradiance;

            // Adjust parameters for NIR calculations
            Absorbed.DiffuseExtinction = Canopy.DiffuseExtCoeffNIR;
            Absorbed.LeafScattering    = Canopy.LeafScatteringCoeffNIR;
            Absorbed.DiffuseReflection = Canopy.DiffuseReflectionCoeffNIR;

            var NIRTotalIrradiance       = Absorbed.CalcTotalRadiation(NIRDirect, NIRDiffuse);
            var SunlitNIRTotalIrradiance = Absorbed.CalcSunlitRadiation(NIRDirect, NIRDiffuse);
            var ShadedNIRTotalIrradiance = NIRTotalIrradiance - SunlitNIRTotalIrradiance;

            Sunlit.AbsorbedRadiation = SunlitPARTotalIrradiance + SunlitNIRTotalIrradiance;
            Shaded.AbsorbedRadiation = ShadedPARTotalIrradiance + ShadedNIRTotalIrradiance;
        }
Esempio n. 2
0
 public DCAPSTModel(
     ISolarGeometry solar,
     ISolarRadiation radiation,
     ITemperature temperature,
     IPathwayParameters pathway,
     ICanopyAttributes canopy,
     Transpiration trans
     )
 {
     Solar         = solar;
     Radiation     = radiation;
     Temperature   = temperature;
     this.pathway  = pathway;
     Canopy        = canopy;
     transpiration = trans;
 }
Esempio n. 3
0
 /// <summary>
 /// Recalculates canopy parameters for a new time step
 /// </summary>
 public void DoTimestepAdjustment(ISolarRadiation radiation)
 {
     CalcLAI();
     CalcAbsorbedRadiations(radiation);
     CalcMaximumRates();
 }