//tu liczymy wpływy na temp w pomieszczeniu - piec klima pogoda rozmiar budynku public void TempUpdate(int TExpected, int TNow, int THeat, int TConditioner, int TWeather) { double conditioner = (TExpected - TNow >= 0) ? 0 : (TConditioner / 2.5); double heater = (TExpected - TNow <= 0) ? 0 : (THeat / 5.0); if (Line_WorkHours[hour].Y == 0) { conditioner = 0; heater = 0; } double weather = ((TNow + 1.0) - TWeather == 0)? 0:Math.Log10(Math.Abs((TNow + 1.0) - TWeather)); if (TWeather < TNow) { weather *= -1; } double buildingDimension = (((WallHeightList[SelectedWallHeight] / 100 * Math.Sqrt(RoomAreaList[SelectedRoomArea]) + WindowAreaList[SelectedWindowArea] / 2) * Math.Sqrt(RoomAreaList[SelectedRoomArea]) / 10)); double result = (heater / buildingDimension + weather - Math.Abs(conditioner)); result = (result > 0) ? (result / StartValues.UpdateTime) : (result / StartValues.UpdateTime); TempNow += result; Line_Weather.AddNext(TempNow, TWeather); }
//metoda wywoływana na okrągło(przerwy jako task.sleep) ma za zadanie //dodanie temp pogody (co godzine) //obliczenie środkow ciezkosci //wyliczanie zmiany temp w pomieszczeniu //przesuwanie wykresu pogody private void TaskMethodHelper(int sleep) { Time = "1"; try { Application.Current.Dispatcher.Invoke((Action)(() => { //dodanie kolejnej temp na wykresie pogody int nextWeatherTemp = Line_Weather.NextTemp(); for (int i = 0; i < StartValues.UpdateTime; i++) { //wyliczanie środkow ciezkosci dla klimy i pieca (wyniki dostepne w geterach) x.Rozmywanie(Line_Heat, Line_Conditioner, Line_Temp, (int)Math.Round(TempNow), Line_WorkHours, hour); //wyliczanie temp pieca i klimatyzacji na podstawie środka ciezkosci CalculateTempOfHeater(x.CenterOfGravityHeater); CalculateTempOfConditioner(x.CenterOfGravityConditioner); //wyliczanie zmiany temp w pomieszczeniu TempUpdate(TempExpected, (int)Math.Round(TempNow), TempHeat, TempConditioner, nextWeatherTemp); } Line_Weather.xWeather += StartValues.UpdateTime; hour = (hour == 23) ? 0 : hour + 1; //przesuwanie wykresu pogody if (_Line_Weather.Count >= StartValues.HoursOnChart) { WeatherXmin += 4; WeatherXmax += 4; } })); } catch (System.NullReferenceException) { //nic sie nie stało wanego } Thread.Sleep(sleep); }