Найти в Дзене
Академия BIM

Расчет инсоляции

Оглавление

Альберт Сумин

В настоящее время расчеты инсоляции автоматическими методами в России не принимаются на рассмотрение при прохождении экспертизы. Тем не менее, для внутренних проверок подобный инструментарий никто не отменял.

Несколько лет назад я написал скрипт в Grasshopper, который разбивает поверхность фасада на прямоугольную сетку и вычисляет количество часов инсоляции для каждой отдельно взятой ячейки сетки. Сегодня расскажу, как этот скрипт устроен изнутри, и как его использовали архитекторы и студенты в реальной практике.

Начнем с устройства скрипта. Итак, у нас есть задача — посчитать инсоляцию. Как можно к ней подступиться?

Самый очевидный вариант: вычислить положение солнца в определенный момент времени, провести вектор от окна на фасаде в сторону этого положения и проверить, не пересекается ли вектор с какими-либо объектами. Если пересекается, то инсоляции в этот момент нет, если не пересекается, то есть. Далее — смотрим следующий момент времени и т.д. Если взять конкретный день в году и разбить его на минуты, вычислив для каждой минуты положение солнца, то сумма всех минут, в которых инсоляция присутствует, даст нам искомое значение. Сразу можно оптимизировать алгоритм, выбросив из расчета минуты между закатом и рассветом.

Вычисление положения солнца

Самая сложная задача во всей этой цепочке — вычисление положения солнца. Для её решения нужно узнать две вещи: Азимут и Угол возвышения. Нам понадобятся следующие исходные значения:

  • расчетная дата
  • часовой пояс
  • долгота (местоположение рассчитываемого объекта)
  • широта (местоположение рассчитываемого объекта)
-2

Далее используем формулы. Эти формулы я искал по статьям в интернете. Многое есть в английской Википедии, вот еще пример статьи. В целом, так как в расчете используется много тригонометрии, то вид формул в разных статьях может разниться в зависимости от приведения. Ниже я, естественно, опишу тот вариант, что использовал в скрипте. Азимут ищем так:

Azimuth = 180-arcsin(-sin(HRA°)*cos(b°)/sin(tetta°))

Tetta  — это угол зенита, угол между вертикальной линией и положением солнца. Ниже — отличная картинка, которая объясняет и что такое Азимут, и Зенит, и Угол возвышения.
-3
— склонение солнца — это угол между солнечными лучами и экваториальной плоскостью Земли. Для пояснения — картинка ниже:
-4
HRA — это количество градусов (если можно так выразиться), которое солнце прошло по небесному своду в течение дня, причем точка отсчета (0 градусов) здесь не восход, а положение в зените (ну путать с тем зенитом, о котором выше говорилось), то есть в момент восхода HRA отрицательный (в день равноденствия −90 градусов).

Считаем эти величины, начнем с HRA:

HRA = 15*(LST-12)

15 — коэффициент, принятый потому, что солнце проходит 15 градусов по небосводу за один час.
LST — локальное солнечное время (оно отличается от локального времени на часах, как именно, будет понятно дальше).
12 — это 12 часов.

Считаем LST:

LST = LT+(TC/60)

LT — это локальное время (то, что на часах, то есть данное значение мы знаем и вычислять его не требуется).
ТС — корректирующий коэффициент, который учитывает изменение долготы внутри одного часового пояса.

Считаем TC:

TC = 4*(longitude-LSTM)+EoT

longitude — долгота.
LSTM — это разница между локальным временем и Гринвичем, умноженная на 15 градусов (про 15 градусов см. выше), то есть это известная нам величина.
EoT (Equation of time) — величина, рассчитываемая по эмпирически выведенной формуле, необходимая для коррекции отклонения эклиптической орбиты Земли и отклонения осевой линии Земли от перпендикулярного положения в течение года относительно солнечных лучей (чтобы понять написанное читайте эту статью)

Вот эта эмпирическая формула:

EoT = 9.87*sin(2*B°)-7.53*cos(B°)-1.5*sin(B°)

B вычисляется по следующей формуле:

B = (360/365)*(d - 81)

— это количество дней, прошедших с начала года (известная нам величина)

Считаем теперь угол склонения, b (если уже забыли, что это, вернитесь к формуле азимута):

b = 23.45*sin(360°*(d - 81)/365)

23.45 — это максимальный угол склонения, достигаемый в нашем полушарии летом. вот картинка с сайта:
-5
81 — это 22 марта (день весеннего равноденствия), а отношение 360/365 — это коэффициент, который переводит текущий день в положение Земли на орбите в градусах. Таким образом, все данные для вычисления угла склонения у нас есть.

Остался угол зенита, формула такая:

tetta = arccos(sin(f°)*sin(b°)+cos(b°)*cos(f°)*cos(HRA°))

f — это широта положения рассчитываемого объекта

Величины HRA и b (склонения) нам уже известны.

Если мы знаем угол зенита, то знаем и угол возвышения:

h = 90-tetta

А зная угол возвышения и угол азимута, мы знаем положение солнца.

Алгоритм

Далее задача сводится к тому, что мы должны провести из центров ячеек на рассчитываемой поверхности, например, вектора X и повернуть их, поочередно, на углы возвышения и углы азимута. А затем проверяем пересечения этих векторов с затеняющими объектами.

По данной ссылке доступен скрипт расчета инсоляции в Grasshopper для версии 0.9.0076.

Описанный алгоритм подходит для расчета в соответствии с и новыми нормами инсоляции, и старыми, так как расчетная дата может указываться в качестве исходных данных совершенно свободно. Одновременно может быть рассчитана только одна поверхность, поэтому если вам требуется рассчитать несколько поверхностей фасада, то следует делать это последовательно. Среди затеняющих объектов нужно указывать, в том числе, и здание, фасады которого рассчитываются. Вы можете пользоваться скриптом в любых целях, в том числе модифицировать его или использовать описанный алгоритм для создания аналогичных скриптов в других средах, например, в Dynamo под Revit. Если самостоятельно вам этим заниматься лень, то вы можете обратиться к нам и профинансировать разработку полноценного плагина под Revit для расчета инсоляции по российским нормам.

Ниже видео с примером работы скрипта (числа в ячейках указывают на количество часов инсоляции для отдельно взятой ячейки):

Случаи применения скрипта

1. Применение в учебном процессе

В 2016 году в ходе сессии курса «Цифровая культура» в магистратуре МАРШ, мы (Женя Ширинян, Егор Глебов и я) использовали данный скрипт в качестве одного из шаблонов для анализа проектной территории.

Используя предложенные шаблоны в чистом виде или модифицируя их, студенты формировали и проверяли гипотезы под свои проектные предложения. Вот некоторые наиболее интересные работы с фокусом на расчет инсоляции (не все студенты брали именно этот вариант аналитики).

Скриншот из итогового дневника (формат итоговой работы в МАРШ) Елены Губской. Она, совместно с Яковом Абутовым, выполняла расчет инсоляции для выбора оптимального положения видов растений на зеленом фасаде.
Скриншот из итогового дневника (формат итоговой работы в МАРШ) Елены Губской. Она, совместно с Яковом Абутовым, выполняла расчет инсоляции для выбора оптимального положения видов растений на зеленом фасаде.

-7

В данном случае был сделан расчет только инсоляции (на первом слайде присутствует формальная ошибка, заключающаяся в том, что говорится об использовании ladybug, хотя здесь использовался именно алгоритм, описанный выше). Расчет PAR не проводился.

Скриншот из работы Артема Ревы и Александра Смага, здесь алгоритм использовался в чистом виде, без преобразований
Скриншот из работы Артема Ревы и Александра Смага, здесь алгоритм использовался в чистом виде, без преобразований

Работа Яниса Казлаускаса и Дарьи Татаркиной, в которой через скрипт отслеживал угол падения солнечных лучей в момент времени для ориентации перпендикулярно этому углу плоскостей солнечных панелей на крыше здания (также на скриншот попала карта теней, полученная через ladybug)
Работа Яниса Казлаускаса и Дарьи Татаркиной, в которой через скрипт отслеживал угол падения солнечных лучей в момент времени для ориентации перпендикулярно этому углу плоскостей солнечных панелей на крыше здания (также на скриншот попала карта теней, полученная через ladybug)

2. Создание программных решений на основе представленного алгоритма

На основе данного алгоритма компанией BORSH было разработано приложение LUCIOLA, к которому, по сравнению с оригинальным скриптом, были изначально добавлены ряд возможностей, а также пользовательский интерфейс, созданный в плагине HumanUI. В настоящее время алгоритм работы программы переписан практически с нуля и обладает рядом интересных функций. Полное описание приложения доступно по этой ссылке.

3. Применение скрипта при проектировании зданий

Мне известно несколько случаев, когда скрипт применялся при реальном проектировании, но, к сожалению, детали и интересные факты об этих проектах выяснить не удалось (мои запросы к авторам проектов остались без ответа).

Сам я также применял скрипт при реальном проектировании, в частности для объекта по ссылке. Собственно, под этот проект первая версия скрипта и писалась, так как высотность зданий и отдельных секций на стадии концепции постоянно изменялась. Вкупе с плотной квартальной планировкой данный фактор требовал частого пересчета инсоляции. В какой-то момент, проверка с помощью инсоляционной линейки стала слишком трудоемкой и неточной (так как этот метод предполагает определение человеком мест проверки, и можно просто забыть про один из секторов, которые следовало бы проверить, они вовсе не всегда очевидны). Применение алгоритма стало решением этих проблем.