Годовая симуляция: 8760 часов расчета вместо одной цифры
Как KIB4D перешел от статического расчета теплопотерь к почасовой симуляции отопления с учетом погоды, тепловой инерции и работы системы отопления.
Годовая симуляция: 8760 часов расчета вместо одной цифры
Давно хотел дойти до этого момента.
До сих пор KIB4D в основном работал как набор отдельных расчетов: задал конструкцию, получил теплопотери, посмотрел результат. Это удобно, но у такого подхода есть очевидное ограничение. Это статика, расчет самого холодного периода, который берется из СП.
Например, мы можем посчитать теплопотери при температуре на улице −25 °C и получить 6 кВт.
Но что будет с этим домом через час?
А через сутки?
А в январе, когда температура несколько раз скачет от −5 до −25? И дело ведь не только в температуре. Погода вообще постоянно меняется: влажность, ветер, солнце, снег, дождь.
И сколько энергии вообще потребуется за весь отопительный сезон?
Вот здесь и начинается уже совсем другая задача.
8760 часов (365 × 24)
Я решил сделать годовую симуляцию отопления.
Вместо одного расчета движок получает погодные данные и последовательно проходит весь год, час за часом.
8760 расчетных шагов.
На каждом шаге меняется погода, определяется текущая тепловая нагрузка здания, учитывается накопленное тепло и рассчитывается работа системы отопления.
Причем погода берется не из какого-то усредненного набора данных. Симуляция получает координаты дома и по ним подтягивает погодные данные для конкретного региона. Поэтому неважно, где находится дом: можно выбрать свое место и посмотреть, как расчет ведет себя именно с его погодой. В бета-версии пока использую координаты городов (из шапки сайта), но в планах — добавить возможность указывать любую точку на карте.
На выходе получается уже не одна цифра, а целая картина года.
Можно посмотреть почасовые теплопотери, температуру внутри дома, работу котла, потребление энергии и стоимость отопления.
Это та информация, которую не дает обычная статика.
Самое важное — тепловая инерция
Главная причина, по которой мне вообще хотелось сделать такую штуку, — тепловая инерция.
Дом не состоит только из воздуха.
Стены, перекрытия, стяжка и другие конструкции имеют массу и теплоемкость. Они могут накопить энергию, а потом постепенно отдавать ее обратно.
Вы задумывались, в чем разница между каменным домом и легким каркасником?
Наверное, мы их ощущаем по-разному, но почему? В чем же отличие?
Поэтому если котел выключился, дом не должен мгновенно перейти из +22 °C в состояние «на улице холодно».
Он какое-то время продолжает жить за счет накопленного тепла.
И наоборот: если резко включить мощный котел, вся эта энергия не превращается мгновенно в изменение температуры воздуха.
Мне было важно, чтобы расчет учитывал это поведение, а не просто складывал статические теплопотери за каждый час.
Отдельное расчетное ядро
В процессе пришлось немного пересобрать сам проект.
Расчетные функции я вынес отдельно от интерфейса.
Например, тот же расчет теплопередачи теперь существует как независимая функция. Я даже встроил такие функции прямо в статьи справочника, чтобы любой желающий мог ввести свои значения и проверить результат.
Это оказалось полезно не только для пользователей.
Когда начинаешь собирать из таких небольших независимых функций более сложный расчет, гораздо проще понимать, откуда берется каждая цифра.
В итоге годовая симуляция стала не каким-то огромным монолитным расчетом, а последовательностью более простых физических операций.
И теперь у меня есть нормальное расчетное ядро, поверх которого можно планомерно наращивать дополнительный функционал, не боясь запутаться в расчетах или сломать ядро.
Что показывает симуляция
Сейчас в бета-версии инструмента можно задать основные параметры дома, выбрать регион, указать мощность котла, тарифы и теплоаккумулятор и прогнать весь год.
Это пока скорее ознакомительная модель, нежели что-то стабильное. Но уже она показывает интересные моменты.
На графике можно увидеть сразу несколько процессов:
- теплопотери здания;
- работу котла;
- температуру внутри дома;
- наружную температуру;
- почасовое изменение нагрузки.
А ниже уже более привычные для пользователя цифры:
сколько энергии потребовалось за год, сколько пришлось на ночной тариф и сколько это стоило.
И вот здесь начинается самое интересное.
Например, можно увеличить мощность котла и посмотреть, насколько этого хватает для работы преимущественно ночью.
Можно добавить теплоаккумулятор и посмотреть, как меняется поведение системы.
Можно поменять тарифы и сравнить стоимость разных режимов отопления.
То есть вместо вопроса «какой котел мне поставить?» появляется возможность задать более корректный инженерный вопрос:
Как будет вести себя вся система отопления моего дома в течение года?
Пока это только бета
При этом я прекрасно понимаю, что до законченного инструмента здесь еще довольно далеко.
Сейчас самое главное уже работает — есть само ядро годового расчета.
Дальше предстоит довольно большая работа вокруг него.
Нужно проверить модель на реальных домах, прогнать несколько своих объектов и сравнить результаты с тем, что происходит в реальности.
Отдельная большая задача — аналитика.
Потому что график на 8760 точек — это здорово, но без внятной аналитики это просто каша из цифр. График ради графика.
Мне нужно понимать:
сколько энергии потребуется, где максимальная нагрузка, насколько хватает мощности котла, сколько тепла теряется, что дает теплоаккумулятор и сколько это все стоит.
Поэтому следующий этап для меня — научить KIB4D не только считать эти цифры, но и нормально их объяснять.
И вот здесь проект выходит на новый вектор развития
Брюки превращаются, брюки превращаются
Наверное, это самое интересное ощущение от всей этой работы.
Следующий логичный шаг — добавлять в эту модель новые физические процессы.
Солнце.
Вентиляцию.
Разные режимы отопления.
Автоматику.
Более сложную модель теплоаккумулятора.
Параллельно поверх накопленных расчетов делать нормальную аналитику и отчеты.
Но это уже следующие этапы.
Пока просто приятно нажать на кнопку «Запустить годовую симуляцию» и приготовиться увидеть, как «брюки превращаются, превращаются...» — когда симуляция не запускается просто потому, что вы забыли создать конструкцию, добавить ее в теплопотери и выбрать город 😅.