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