На основании выводов заметки На пути к улью для пчел предлагаю следующую конструкцию:
Время остывания гнезда до 0°С увеличилось практически вдвое и составило 176 часов. И можно сказать, что эквивалентная постоянная времени фактически сравнялась с постоянной времени гнезда в живом дереве.
Серым цветом показаны ПИР-плиты толщиной 30 мм, желтым - деревянные рейки сечением 5×30 мм. На нижнем рисунке крышка снята.
В середине конструкции - гнездовой корпус. Для минимизации площади ограждения его желательно сделать в форме цилиндра, но я сделал в форме шестигранной призмы, так легче изготавливать. Допускаю четырехугольную призму - малоформатник 300×300 мм - чтобы облегчить переход для желающих. При толщине стенки 300 мм внешняя грань - 210 мм, внутренняя - 175.4 мм; высота (вместе с рейками обвязки) - 600 мм. При таких габаритах внутренний объем равен 47.9 литра, площадь поперечного сечения - примерно 8 дм². Если его полностью застроить сотами, оставив внизу 20 мм свободными, получится 139 дм² двусторонних сот - более, чем достаточно для сильной семьи (больше, чем у 12-рамочного дадана объемом 63 литра). Для устойчивости сот необходимо предусмотреть снозы, как в колоде. Леток круглый диаметром 60 мм в центре одной из шести граней, разделен горизонтальной деревянной перегородкой толщиной 20 мм и площадью 60×60мм на два летка по 8 см² каждый. Центр летка по высоте расположен на 200 мм от пола.
Гнездовой корпус помещен в корпус-ограждение в виде четырехугольной призмы с внутренними размерами 450×450мм. Размер выбран из соображений достаточности и совместимости со стандартными корпусами, которые можно будет использовать при переходе. Леток - такой же как в гнездовом корпусе, но на высоте 100 мм от пола (возможны другие варианты).
Таким образом, улей имеет двойное ограждение. Между стенками ограждения ставятся ПЭТ-бутылки с водой в качестве теплового аккумулятора; заполняются неполностью (примерно на 80%) для предотвращения разрыва при замерзании. Бутылки могут плотно приникать к гнездовому корпусу, а с внешним должны иметь зазор 10-20 мм. Общий объем воды 20-30 литров.
Пол - квадрат 580×580 мм из того же материала с дренажными отверстиями для выхода конденсата или воды при аварийном повреждении теплового аккумулятора. Имеются бортики для установки и устойчивости корпусов.
Крыша вальмовая состоит из потолка 580×580 мм с наклеенной на него четырехугольной пирамидой высотой 290 мм; надевается в нахлобучку.
Рассчитаем термическое сопротивление, теплоемкость и постоянную времени предложенной конструкции.
1. Термическое сопротивление гнездового корпуса $$ R_{in} = \frac{1}{\Sigma \frac{A_i}{R_i}}$$
Площадь боковой грани: Aгр = 2.1×6=12.6 дм² = 0.126 м², сопротивление Rгр = 0.9 м²·K/Вт. Площадь пола (потолка) Aп = 11.5 дм² = 0.115 м², сопротивление минимум в два раза больше, чем у боковых граней, т.к. над потолком - крыша, а под полом - земля: Rп = 1.8 м²·K/Вт. Общий коэффициент теплопотерь: \(\Sigma \frac{A_i}{R_i}\) = 6×0.126/0.9 + 2×0.115/1.8 = 0.97 Вт/К, соответnвенно, \(R_{in}\) = 1.2 K/Вт.
2. Теплоемкость гнездового корпуса с сотами, пчелами и медом:
Теплоемкость корпуса возьмем 1.2 кДж/К, сот - 108 кДж/К, пчел -7 кДж/К, меда - 25 кДж/К.
Итого: \(C_{in}\) =1.2 + 108 + 7 + 25 = 141 кДж/К.
3. Термическое сопротивление наружного корпуса считаем аналогично:
общий коэффициент теплопотерь \(4×(0.6×0.5)/0.9 + 2×(0.5×0.5)/1.8 = 1.6 Вт/К\), величина обратная - \(R_{out}= 0.62 Вт/К\).
4. Теплоемкость ограждения:
складывается из теплоемкости материала корпуса ограждения и теплоемкости водяного аккумулятора. Теплоемкость ограждения можно оценить в 2.5 кДж/К, а воды 20 л - в 84 кДж/К. Итого \(C_{out}\)~ 87 кДж/К.
5. Постоянная времени
не может быть посчитана, как, например, сумма постоянных времени \(\tau_{in}\) (35 часов) и \(\tau_{out}\) (12 часов), она находится из следующей эквивалентной схемы:
Характеристическое уравнение: $$s²(R_{in}C_{in}R_{out}C_{out})+s(R_{in}C_{in}+R_{out}C_{out}+R_{in}C_{out})+1=0$$
Если задать начальные условия в виде температуры в гнезде +20°С и температуры снаружи -10°С, и предположить, что пчелы не греют, а вода не совершает фазовый переход (не превращается в лед при охлаждении ниже нуля градусов по Цельсию), то переходной процесс остывания выглядел бы так:
До уровня 0.632 гнездо остывало бы около 69.4 часа, т.е. почти трое суток - в полтора раза дольше, чем рассмотренный ранее теплый клей из 40 мм ЭППС, но, заметим, быстрее, чем гнездо в дупле дерева (там постоянная времени составила 167 часов). Температура в гнезде опустится до нуля примерно через 75 часов. Обратите внимание, что 20 литров воды достигли температуры 0°С примерно за сутки. После этого начинается превращение ее в лед с выделением теплоты плавления, и она будет иметь температуру 0°С пока вся не застынет:
🐝 Python-скрипт
""" Остывание двухслойного улья """
import numpy as np
import matplotlib.pyplot as plt
# --- УТОЧНЕННЫЕ ДАННЫЕ ---
Ci = 141000 # Гнездо (Дж/К)
Ri = 0.9 # Внутренняя стенка (К/Вт)
Co = 87000 # Вода (Дж/К)
Ro = 0.5 # Внешняя стенка (К/Вт)
T_start = 20.0 # Начальная температура (°C)
T_env = -10.0 # Температура на улице (°C)
# --- МАТЕМАТИЧЕСКИЙ РАСЧЕТ ---
a = Ri * Ci * Ro * Co
b = (Ri * Ci) + (Ro * Co) + (Ri * Co)
roots = np.roots([a, b, 1])
t1, t2 = -1/roots # Постоянные времени (tau_slow, tau_fast) в секундах
t_hours = np.linspace(0, 300, 1000)
t_sec = t_hours * 3600
# Коэффициенты для Гнезда (Nest)
An = t1 / (t1 - t2)
# Расчет фактической температуры T(t) = T_env + (T_start - T_env) * Response
Tn = T_env + (T_start - T_env) * (An * np.exp(-t_sec/t1) + (1 - An) * np.exp(-t_sec/t2))
# Коэффициенты для Воды (Water)
Aw = (t1 - Ri*Ci) / (t1 - t2)
Tw = T_env + (T_start - T_env) * (Aw * np.exp(-t_sec/t1) + (1 - Aw) * np.exp(-t_sec/t2))
# Поиск времени достижения 63% падения (до температуры ~1.1°C при старте 20 и финише -10)
T_target = T_env + (T_start - T_env) * 0.368
idx_n = np.argmin(np.abs(Tn - T_target))
idx_w = np.argmin(np.abs(Tw - T_target))
# --- ВИЗУАЛИЗАЦИЯ ---
plt.figure(figsize=(10, 6))
plt.plot(t_hours, Tn, 'r-', lw=2.5, label=f'Гнездо (63% через {t_hours[idx_n]:.1f} ч)')
plt.plot(t_hours, Tw, 'b--', lw=2, label=f'Вода (63% через {t_hours[idx_w]:.1f} ч)')
plt.axhline(T_env, color='black', linestyle=':', label='Улица (-10°C)')
plt.axhline(0, color='gray', lw=1, alpha=0.5, label='Ноль градусов')
plt.axhline(T_target, color='green', linestyle=':', alpha=0.5, label='Уровень 63% остывания')
plt.title('Остывание двухслойного улья')
plt.xlabel('Время (часы)')
plt.ylabel('Температура (°C)')
plt.legend()
plt.grid(True, which='both', alpha=0.2)
plt.ylim(T_env - 2, T_start + 2)
print(f"Эффективная tau гнезда: {t_hours[idx_n]:.1f} ч")
print(f"Эффективная tau воды: {t_hours[idx_w]:.1f} ч")
plt.show()
🐝 Python-скрипт
""" Остывание при замерзании """
import numpy as np
import matplotlib.pyplot as plt
# --- УТОЧНЕННЫЕ ДАННЫЕ (ваши значения) ---
Ci = 141000 # Гнездо (Дж/К)
Ri = 0.9 # Внутренняя стенка (К/Вт)
Co = 87000 # Вода (Дж/К)
Ro = 0.5 # Внешняя стенка (К/Вт)
Mass_water = 20 # кг (20 литров)
Lambda = 334000 # Удельная теплота плавления льда (Дж/кг)
Q_ice_total = Mass_water * Lambda
T_start = 20.0 # Начальная температура (°C)
T_env = -10.0 # Улица (°C)
dt = 60 # Шаг 1 минута
hours = 500 # Длительность (около 20 суток)
steps = int(hours * 3600 / dt)
# Массивы для данных
time_arr = np.zeros(steps)
T_nest_arr = np.zeros(steps)
T_water_arr = np.zeros(steps)
Ice_percent = np.zeros(steps)
Ti, Tw = T_start, T_start
Q_frozen = 0.0
for i in range(steps):
# 1. Потоки тепла
flow_nest_to_water = (Ti - Tw) / Ri
flow_water_to_env = (Tw - T_env) / Ro
# 2. Изменение температуры гнезда
Ti -= (flow_nest_to_water / Ci) * dt
# 3. Логика аккумулятора (вода/лед)
net_flow_water = flow_nest_to_water - flow_water_to_env # Отрицательный при остывании
if Tw > 0.01:
# Обычное охлаждение воды до 0
Tw += (net_flow_water / Co) * dt
elif Q_frozen < Q_ice_total and net_flow_water < 0:
# ФАЗОВЫЙ ПЕРЕХОД: температура замерзла на 0
Tw = 0.0
Q_frozen -= net_flow_water * dt # Энергия уходит наружу
elif Q_frozen >= Q_ice_total:
# Вода полностью стала льдом, охлаждаем лед ниже 0
# Теплоемкость льда ~2100 Дж/кг*К (в 2 раза меньше воды)
Tw += (net_flow_water / (Co * 0.5)) * dt
else:
Tw += (net_flow_water / Co) * dt
time_arr[i] = i * dt / 3600
T_nest_arr[i] = Ti
T_water_arr[i] = Tw
Ice_percent[i] = (Q_frozen / Q_ice_total) * 100
# --- ПОИСК КРИТИЧЕСКИХ ТОЧЕК ---
# Когда гнездо достигнет 0 градусов?
idx_zero = np.where(T_nest_arr <= 0)[0]
time_to_zero = time_arr[idx_zero[0]] if len(idx_zero) > 0 else 0
# --- ВИЗУАЛИЗАЦИЯ ---
fig, ax1 = plt.subplots(figsize=(12, 7))
ax1.plot(time_arr, T_nest_arr, 'r-', label='Температура в гнезде', lw=2.5)
ax1.plot(time_arr, T_water_arr, 'b--', label='Температура воды/льда', lw=1.5)
ax1.axhline(0, color='black', lw=1, alpha=0.5)
ax1.axhline(T_env, color='gray', linestyle=':', label='Улица (-10°C)')
ax1.set_xlabel('Время (часы)')
ax1.set_ylabel('Температура (°C)')
ax1.set_title('Остывание при замерзании 20 литров воды')
ax1.grid(True, alpha=0.2)
# Вторая ось для льда
ax2 = ax1.twinx()
ax2.fill_between(time_arr, 0, Ice_percent, color='cyan', alpha=0.15, label='Процент льда')
ax2.set_ylabel('Замерзание воды (%)')
ax2.set_ylim(0, 105)
# Аннотация
if time_to_zero > 0:
ax1.annotate(f'Гнездо достигло 0°C через {time_to_zero:.0f} ч',
xy=(time_to_zero, 0), xytext=(time_to_zero + 20, 5),
arrowprops=dict(facecolor='black', shrink=0.05))
ax1.legend(loc='upper right')
ax2.legend(loc='lower right')
plt.show()
Но если в гнезде есть пчелы, то они не дожидаются полного замерзания и генерируют тепло. Предположим, мощность термогенеза составляет 10 Вт:
Как видим, в этом случае полное замерзание льда произойдет примерно за 10 суток.
🐝 Python-скрипт
import numpy as np
import matplotlib.pyplot as plt
# --- УТОЧНЕННЫЕ ДАННЫЕ (параметры из вашего запроса) ---
Ci, Ri = 141000, 0.9 # Гнездо
Co, Ro = 87000, 0.5 # Вода
P_bees = 10.0 # Тепловая мощность пчел (Вт)
Mass_water = 20.0 # кг (литров)
Lambda = 334000 # Дж/кг
T_start = 20.0 # Начальная температура внутри (°C)
T_env = -10.0 # Температура снаружи (°C)
dt = 60 # Шаг 1 минута
hours = 600 # Длительность 25 суток
steps = int(hours * 3600 / dt)
# Подготовка массивов
time_arr = np.zeros(steps)
T_nest_arr = np.zeros(steps)
T_water_arr = np.zeros(steps)
Ice_percent = np.zeros(steps)
Ti, Tw = T_start, T_start
Q_frozen = 0.0
Q_ice_total = Mass_water * Lambda
for i in range(steps):
# 1. Тепловые потоки (Ватты)
flow_in = (Ti - Tw) / Ri # Из гнезда в воду
flow_out = (Tw - T_env) / Ro # Из воды на улицу
# 2. Гнездо: приток от пчел минус потери в стенку
Ti += ((P_bees - flow_in) / Ci) * dt
# 3. Аккумулятор: баланс тепловых потоков
net_flow = flow_in - flow_out # Положительно, если вода греется
if Tw > 0.01:
# Вода остывает до нуля
Tw += (net_flow / Co) * dt
elif Q_frozen < Q_ice_total and net_flow < 0:
# ФАЗОВЫЙ ПЕРЕХОД: замерзание
Tw = 0.0
Q_frozen -= net_flow * dt
elif Q_frozen > 0 and net_flow > 0:
# ФАЗОВЫЙ ПЕРЕХОД: оттаивание
Tw = 0.0
Q_frozen -= net_flow * dt
elif Q_frozen >= Q_ice_total:
# Лёд остывает ниже нуля (Cp льда ~2100)
Tw += (net_flow / (Co * 0.5)) * dt
else:
Tw += (net_flow / Co) * dt
time_arr[i] = i * dt / 3600
T_nest_arr[i] = Ti
T_water_arr[i] = Tw
Ice_percent[i] = (max(0, Q_frozen) / Q_ice_total) * 100
# --- ВИЗУАЛИЗАЦИЯ (Две шкалы на одном графике) ---
fig, ax1 = plt.subplots(figsize=(12, 7))
# Температурные кривые
ax1.plot(time_arr, T_nest_arr, 'r-', label='Температура в гнезде', lw=2.5)
ax1.plot(time_arr, T_water_arr, 'b--', label='Температура аккумулятора', lw=1.5)
ax1.axhline(0, color='black', lw=1, alpha=0.4)
ax1.axhline(T_env, color='gray', linestyle=':', label='Улица (-10°C)')
ax1.set_xlabel('Время (часы)')
ax1.set_ylabel('Температура (°C)', color='black')
ax1.set_ylim(T_env - 2, T_start + 2)
ax1.grid(True, alpha=0.2)
# Правая шкала для льда
ax2 = ax1.twinx()
ax2.fill_between(time_arr, 0, Ice_percent, color='cyan', alpha=0.15, label='Процент льда')
ax2.set_ylabel('Замерзание воды (%)', color='darkcyan')
ax2.set_ylim(0, 100)
# Финальное оформление
plt.title(f'Динамика улья: подогрев {P_bees}Вт, мороз {T_env}°C, вода 20л')
ax1.legend(loc='upper right', bbox_to_anchor=(0.95, 0.95))
ax2.legend(loc='lower right', bbox_to_anchor=(0.95, 0.05))
plt.show()
Однако пчелы не держат уровень термогенеза на одном уровне, они его регулируют для поддержания температуры. Предположим, что они поддерживают температуру на уровне 10°С:
В этом случае полное замерзание воды происходит еще дольше - примерно за 270 часов. Пока лед застыл не весь (температура аккумулятора 0°С) пчелы генерируют около 11.5 Вт, а после его застывания - около 14 Вт, это позволяет им поддерживать температуру на уровне 10°С.
🐝 Python-скрипт
import numpy as np
import matplotlib.pyplot as plt
# --- УТОЧНЕННЫЕ ДАННЫЕ ---
Ci, Ri = 141000, 0.9
Co, Ro = 87000, 0.5
Mass_water = 20.0
Lambda = 334000
Q_ice_total = Mass_water * Lambda
# Параметры пчел (Термостат)
T_target = 10.0 # Целевая температура в гнезде
P_max = 20.0 # Макс. мощность клуба (Вт)
P_min = 2.0 # Мин. мощность (метаболизм покоя)
T_start = 20.0 # Начало
T_env = -10.0 # Усилиммороз для наглядности
dt = 60
hours = 800 # 33 суток
steps = int(hours * 3600 / dt)
time_arr = np.zeros(steps)
T_nest_arr = np.zeros(steps)
T_water_arr = np.zeros(steps)
P_bees_arr = np.zeros(steps)
Ice_percent = np.zeros(steps)
Ti, Tw = T_start, T_start
Q_frozen = 0.0
for i in range(steps):
# 1. Расчет необходимой мощности пчел (ПИ-регулятор не нужен, достаточно пропорционального)
# Пчелы пытаются компенсировать потери в воду, чтобы удержать T_target
p_req = (T_target - Tw) / Ri
current_P = np.clip(p_req, P_min, P_max)
# 2. Тепловые потоки
flow_in = (Ti - Tw) / Ri
flow_out = (Tw - T_env) / Ro
# 3. Динамика гнезда
Ti += ((current_P - flow_in) / Ci) * dt
# 4. Динамика аккумулятора (с фазовым переходом)
net_flow = flow_in - flow_out
if Tw > 0.01:
Tw += (net_flow / Co) * dt
elif Q_frozen < Q_ice_total and net_flow < 0:
Tw = 0.0
Q_frozen -= net_flow * dt
elif Q_frozen > 0 and net_flow > 0:
Tw = 0.0
Q_frozen -= net_flow * dt
elif Q_frozen >= Q_ice_total:
Tw += (net_flow / (Co * 0.5)) * dt
else:
Tw += (net_flow / Co) * dt
time_arr[i] = i * dt / 3600
T_nest_arr[i] = Ti
T_water_arr[i] = Tw
P_bees_arr[i] = current_P
Ice_percent[i] = (max(0, Q_frozen) / Q_ice_total) * 100
# --- ВИЗУАЛИЗАЦИЯ ---
fig, ax1 = plt.subplots(figsize=(12, 8))
# Левая ось: Температуры и Мощность
ax1.plot(time_arr, T_nest_arr, 'r-', label='Температура в гнезде (°C)', lw=2.5)
ax1.plot(time_arr, T_water_arr, 'b--', label='Температура воды/льда (°C)', lw=1.5)
ax1.plot(time_arr, P_bees_arr, 'g-', label='Мощность пчел (Вт)', lw=2, alpha=0.8)
ax1.axhline(T_target, color='red', linestyle=':', alpha=0.5, label='Цель +10°C')
ax1.axhline(0, color='black', lw=1, alpha=0.3)
ax1.set_xlabel('Время (часы)')
ax1.set_ylabel('Температура (°C) / Мощность (Вт)')
ax1.set_ylim(min(T_env, -5), max(P_max, T_start) + 5)
ax1.grid(True, alpha=0.2)
# Правая ось: Лед
ax2 = ax1.twinx()
ax2.fill_between(time_arr, 0, Ice_percent, color='cyan', alpha=0.15, label='Замерзание льда (%)')
ax2.set_ylabel('Замерзание воды (%)', color='darkcyan')
ax2.set_ylim(0, 100)
plt.title(f'Адаптивный термогенез пчел (T_target={T_target}°C, T_env={T_env}°C)')
ax1.legend(loc='upper left')
ax2.legend(loc='upper right')
plt.show()
Во время термогенеза пчелы потребляют мед и отдают влагу. Если, например 80% ее вновь конденсируется внутри улья, то возвращается теплота парообразования, а если эта метаболическая вода застынет - то и теплота плавления льда:
Эффект возврата тепла фазовых переходов проявляется в том, что время полного застывания воды увеличивается примерно до 300 часов. Надо отметить, что и в застывшем состоянии водяной аккумулятор будет обеспечивать постоянную времени не менее исходных 69.4 часов, т.е. будет эффективно сглаживать резкие перепады температуры снаружи, снижая беспокойство пчел.
🐝 Python-скрипт
""" Эффект конденсации """
import numpy as np
import matplotlib.pyplot as plt
# --- ДАННЫЕ ---
Ci, Ri = 141000, 0.9
Co, Ro = 87000, 0.5
Mass_water_acc = 20.0 # кг (в бутылках)
Lambda_ice = 334000
L_cond = 2260000 # Теплота конденсации (Дж/кг)
# Параметры пчел
T_target = 10.0
P_max, P_min = 50.0, 2.0
Honey_energy = 13000000 # Дж/кг меда
Water_per_honey = 0.67 # кг воды / кг меда
Eta_cond = 0.2 # 30% влаги конденсируется в межкорпусном пространстве
T_start, T_env = 20.0, -10.0 # Суровый мороз для проверки
dt = 60
hours = 800
steps = int(hours * 3600 / dt)
# Массивы
time_arr, T_nest_arr, T_water_arr = np.zeros(steps), np.zeros(steps), np.zeros(steps)
P_bees_arr, Ice_percent, Honey_total = np.zeros(steps), np.zeros(steps), np.zeros(steps)
Ti, Tw = T_start, T_start
Q_frozen = 0.0
total_honey = 0.0
Q_ice_total = Mass_water_acc * Lambda_ice
for i in range(steps):
# 1. Пчелы греют (Термостат)
p_req = (T_target - Tw) / Ri
current_P = np.clip(p_req, P_min, P_max)
# 2. Расход меда и выход влаги
honey_rate = current_P / Honey_energy # кг/сек
water_rate = honey_rate * Water_per_honey # кг/сек
# 3. Тепло от конденсации (идет в аккумулятор Co)
# Считаем, что во дворе холодно и вся влага Eta_cond выпадает в росу/иней
P_cond = water_rate * Eta_cond * L_cond
if Tw <= 0:
P_cond += water_rate * Eta_cond * Lambda_ice # Доп. тепло от замерзания росы
# 4. Потоки тепла
flow_in = (Ti - Tw) / Ri
flow_out = (Tw - T_env) / Ro
# 5. Динамика
Ti += ((current_P - flow_in) / Ci) * dt
# Аккумулятор получает тепло из гнезда (flow_in) + ТЕПЛО КОНДЕНСАЦИИ
net_flow_water = flow_in - flow_out + P_cond
if Tw > 0.01:
Tw += (net_flow_water / Co) * dt
elif Q_frozen < Q_ice_total and net_flow_water < 0:
Tw = 0.0
Q_frozen -= net_flow_water * dt
elif Q_frozen > 0 and net_flow_water > 0:
Tw = 0.0
Q_frozen -= net_flow_water * dt
elif Q_frozen >= Q_ice_total:
Tw += (net_flow_water / (Co * 0.5)) * dt
else:
Tw += (net_flow_water / Co) * dt
total_honey += honey_rate * dt
time_arr[i] = i * dt / 3600
T_nest_arr[i], T_water_arr[i] = Ti, Tw
P_bees_arr[i] = current_P
Honey_total[i] = total_honey
Ice_percent[i] = (max(0, Q_frozen) / Q_ice_total) * 100
# --- ГРАФИК ---
fig, ax1 = plt.subplots(figsize=(12, 8))
ax1.plot(time_arr, T_nest_arr, 'r-', label='Гнездо (°C)', lw=2)
ax1.plot(time_arr, T_water_arr, 'b--', label='Аккумулятор (°C)', lw=1.5)
ax1.plot(time_arr, P_bees_arr, 'g-', label='Мощность пчел (Вт)', alpha=0.7)
ax1.set_ylabel('Темп. (°C) / Мощность (Вт)')
ax1.set_xlabel('Время (часы)')
ax1.grid(True, alpha=0.2)
ax2 = ax1.twinx()
ax2.plot(time_arr, Honey_total, 'k:', label='Расход меда (кг)', lw=2)
ax2.fill_between(time_arr, 0, Ice_percent, color='cyan', alpha=0.1, label='Лед в бутылках (%)')
ax2.set_ylabel('Мед (кг) / Лед (%)')
ax2.set_ylim(0, max(Honey_total.max() * 1.2, 100))
plt.title(f'Эффект конденсации: Eta={Eta_cond * 100}%, T_env={T_env}°C')
ax1.legend(loc='upper left');
ax2.legend(loc='upper right')
plt.show()
print(f"Итого съедено меда за {hours} ч: {total_honey:.3f} кг")
Таким образом, конструкция улья с двойным ограждением и тепловым аккумулятором позволит создать пчелам комфортные условия зимовки как по температуре и влажности, так и по их стабильности.
Когда коту делать нечего.. он изобретает новую конструкцию улья.
ОтветитьУдалитьНу не все коты от безделья изобретают, некоторые - тролят. :)
Удалить