// Use this for initialization
 void Start()
 {
     solarRadiation = GetComponent <SolarRadiation>();
     city           = new BuildingModel[buildingsX, buildingsY];
     for (int i = 0; i < buildingsX; i++)
     {
         for (int j = 0; j < buildingsY; j++)
         {
             city[i, j]             = new BuildingModel();
             city[i, j].parentModel = this;
         }
     }
 }
예제 #2
0
        public void HourlyRadiation_WhenTimeOutOfBounds_ThrowsException(double time, double sunAngle)
        {
            // Arrange
            var mock      = SetupMockSolar(time, sunAngle);
            var radiation = new SolarRadiation(mock.Object)
            {
                Daily = 16.5,
                RPAR  = 0.5
            };

            // Act

            // Assert
            Assert.Throws <Exception>(() => radiation.UpdateRadiationValues(time));
        }
예제 #3
0
        public void DirectRadiation_GivenValidInput_MatchesExpectedValue(double time, double expected, double sunAngle)
        {
            // Arrange
            var mock      = SetupMockSolar(time, sunAngle);
            var radiation = new SolarRadiation(mock.Object)
            {
                Daily = 16.5,
                RPAR  = 0.5
            };

            // Act
            radiation.UpdateRadiationValues(time);
            var actual = radiation.Direct;

            // Assert
            Assert.AreEqual(expected, actual);
            mock.Verify();
        }
예제 #4
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="CP"></param>
        /// <param name="PP"></param>
        /// <param name="DOY"></param>
        /// <param name="latitude"></param>
        /// <param name="maxT"></param>
        /// <param name="minT"></param>
        /// <param name="radn"></param>
        /// <param name="rpar"></param>
        /// <returns></returns>
        public static DCAPSTModel SetUpModel(
            ICanopyParameters CP,
            IPathwayParameters PP,
            int DOY,
            double latitude,
            double maxT,
            double minT,
            double radn,
            double rpar)
        {
            // Model the solar geometry
            var SG = new SolarGeometry
            {
                Latitude  = latitude.ToRadians(),
                DayOfYear = DOY
            };

            // Model the solar radiation
            var SR = new SolarRadiation(SG)
            {
                Daily = radn,
                RPAR  = rpar
            };

            // Model the environmental temperature
            var TM = new Temperature(SG)
            {
                MaxTemperature      = maxT,
                MinTemperature      = minT,
                AtmosphericPressure = 1.01325
            };

            // Model the pathways
            var SunlitAc1 = new AssimilationPathway(CP, PP);
            var SunlitAc2 = new AssimilationPathway(CP, PP);
            var SunlitAj  = new AssimilationPathway(CP, PP);

            var ShadedAc1 = new AssimilationPathway(CP, PP);
            var ShadedAc2 = new AssimilationPathway(CP, PP);
            var ShadedAj  = new AssimilationPathway(CP, PP);

            // Model the canopy
            IAssimilation A;

            if (CP.Type == CanopyType.C3)
            {
                A = new AssimilationC3(CP, PP);
            }
            else if (CP.Type == CanopyType.C4)
            {
                A = new AssimilationC4(CP, PP);
            }
            else
            {
                A = new AssimilationCCM(CP, PP);
            }

            var sunlit = new AssimilationArea(SunlitAc1, SunlitAc2, SunlitAj, A);
            var shaded = new AssimilationArea(ShadedAc1, ShadedAc2, ShadedAj, A);
            var CA     = new CanopyAttributes(CP, PP, sunlit, shaded);

            // Model the transpiration
            var WI = new WaterInteraction(TM);
            var TR = new TemperatureResponse(CP, PP);
            var TS = new Transpiration(CP, PP, WI, TR);

            // Model the photosynthesis
            var DM = new DCAPSTModel(SG, SR, TM, PP, CA, TS)
            {
                B = 0.409
            };

            return(DM);
        }
 public void Add(SolarRadiation ladiation)
 {
     pvSimulationContext.SolarRadiations.Add(ladiation);
 }
예제 #6
0
 public AirCondition(string name, double windSpeedGround, double windDirection, TimeDomain timeDomain, SolarRadiation solarRadiation, double envTem)
 {
     this.Name            = name;
     this.WindDirection   = windDirection;
     this.WindSpeedGround = windSpeedGround;
     this.TimeDomain      = timeDomain;
     this.SolarRadiation  = solarRadiation;
     this.EnvTem          = envTem;
 }
        public void ExtraterrestrialRadiationHasMaximumOnJanuaryFirst()
        {
            var result = SolarRadiation.GetExtraterrestrialRadiation(new DateTime(2020, 1, 1));

            Assert.AreEqual(1415, result, 1);
        }
        public void ExtraterrestrialRadiationHasMinimumOnJulyFirst()
        {
            var result = SolarRadiation.GetExtraterrestrialRadiation(new DateTime(2020, 7, 1));

            Assert.AreEqual(1321, result, 1);
        }