Введение
Помню, в школе на уроках биологии рассказывали про теплокровных и холоднокровных животных; насекомых, а, значит, и пчелу относили к холоднокровным. Поэтому когда первый раз прочитал, что пчела - пойкилотермное животное, слегка насторожился. Оказалось - зря, это тоже, что холоднокровное, но "по-научному", ещё встречается "эктотермное". А теплокровные - гомойтермные или эндотермные; они способны сохранять постоянную температуру тела, независимо от температуры окружающей среды - это птицы и млекопитающие, остальные - холоднокровные. Итак, согласимся: пчела - пойкилотермное животное.
Однако, "всё не так однозначно".
Например голый землекоп - холоднокровное млекопитающее. А в мае 2015 года нашли "полностью теплокровную рыбу" . Оказалось, правда, на мой взгляд, не полностью - она способна держать температуру всего на 5°С выше окружающей. Выделяют отдельную группу гетеротермных животных, куда относят как некоторых холоднокровных, так и некоторых теплокровных - они могут менять интенсивность собственной теплопродукции. К ним относят насекомоядных грызунов, летучих мышей, медведей. Гетеротермия свойственна также ряду мелких птиц с быстрым обменом веществ, с её помощью переживающих ночное время, а также периоды бескормицы. Так, стрижи в дождливую погоду способны голодать до 4-х дней, при этом температура их тела падает до 20°C. Цепенеют на ночь и колибри, температура их тела снижается при этом до 20-17°C. Среди холоднокровных гетеротермия встречается у некоторых летающих насекомых, рыб, питонов. В определённом состоянии температура их тела может значительно превышать температуру среды (например, у насекомых во время полёта).
Ещё гомойтермию делят на истинную и инерциальную. При
инерциальной - температура тела, нагретого за день на солнце, не успевает
упасть за ночь за счёт большой массы и размеров. Этим характеризуются крупные
крокодилы, черепахи, вараны, питоны, удавы.
Медоносная пчела в отличие от многих холоднокровных не
впадает в спячку в зимнее время, способна поднять свою температуру не сходя с
места, а в полёте она у неё может быть на 15°С выше окружающей, имеет волосяной
покров, что характерно именно для теплокровных. Что-то не очень похоже на
холоднокровность...
Знаменитый Bernd Heinrich в 1993 году даже издал книгу под
названием "Теплокровные насекомые. Стратегии и механизмы
терморегуляции" The Hot-Blooded Insects. Strategies and Mechanisms of
Thermoregulation (увы - не читал, не встречалась в свободном доступе).
Профессор Т. Цесельский более века назад (книга 1913 года второе издание перевода с польского) тоже
усомнился в верности отнесения пчелы к холоднокровным и решил измерить
температуру внутри пчелы своими руками:
Мы этого делать (размозжать в ступке - "O tempora, o mores!") не будем и ограничимся уже имеющимися опубликованными данными. И, да, признаем, что сомнения профессора в холоднокровности пчелы были обоснованные.
В общем, дело в терминологии. По мере накопления новых
фактов возникает определённая кластеризация, и для её описания вводят термины.
Однако, как видим, имеет место нечёткая логика. Поэтому не будем обращать
внимание на категории и имеющиеся классификации - "хоть горшком назови,
только в печку не ставь!" - а просто рассмотрим, как меняется температура
и теплопродукция пчелы в зависимости от внешних условий.
В процессе метаболизма в организме пчелы из пищи (мёд и
перга) извлекается энергия. Она расходуется на обеспечение жизнедеятельности
организма, выработку необходимых ферментов и пр. и механическую работу мышц -
мышц сердца для прокачки гемолимфы, мышц ног для перемещения по твёрдой
поверхности, мышц крыльев для совершения полёта, а также мышц брюшка, мышц
головы и органов головы и др. Энергия химических связей преобразуется в
механическую с определённым коэффициентом (КПД), оставшаяся часть переходит в тепловую
форму, повышая температуру тела пчелы и рассеиваясь в пространство.
Скорость метаболизма и соответствующая ей мощность при этом
разная для разных процессов - в покое, в полёте, в улье, в клубе. Разным будет
и тепловыделение, называемое обычно термогенезом. Здесь рассмотрим термогенез в покое и в полёте.
В покое. Итерация 0.
В начале своего развития от яйца к личинке и куколке пчела
находится в инкубационных условиях при стабильной температуре, поддерживаемой
семьёй с высокой точностью в районе 35-36°С. Видимо, эта температура оптимальна
и для взрослой пчелы.
Пчела может нормально существовать (жить) в интервале
температур окружающего воздуха от 14 до 39°С. За пределами этого интервала, она
тоже может жить, но недолго. В этом случае она стремится покинуть
неблагоприятную среду или, объединяясь с другими пчёлами, предпринимает меры к
нагреванию или охлаждению среды и друг друга до приемлемой температуры -
создаёт локальный микроклимат. В покое температура тела пчелы выше температуры
окружающего воздуха на 9°С при 10°С и на 1°С при 34°С ( [5]
- правда, здесь Еськов Е.К. пишет по данным Е. Шульз-Лангер 1958 "летающих пчёл", первоисточника у меня нет, но летающих - не летящих - звучит как "праздно шатающихся", поэтому некорректно будем считать "в покое". Появится новая информация - перепишем). Если считать, что зависимость
от наружной температуры линейная, то по этим двум точкам для произвольной
температуры воздуха \(T_a\) в рабочем интервале можно оценить температуру тела
пчелы, как
$$T_{пч}=12.33(3)+\frac{2}{3}T_a\tag{1}~,$$
а разность температур -
$$ \Delta T = 12.33(3)-\frac{1}{3}T_a~.\tag{2}$$
Минимальный уровень метаболизма происходит в летний сезон ночью или когда
температура тела близка к температуре окружающего воздуха, а в зимний - при оптимальных
условиях зимовки; есть ещё осенний безрасплодный период, когда не надо держать
высокую температуру в гнезде [6]
- пчела в это время отдыхает. Минимальный уровень термогенеза в зимующем клубе по
разным источникам составляет от 2 до 4 Вт/кг. В килограмме пчел примерно 10000
особей. Считаем, что в это время (при минимальном термогенезе) лишь единицы
работают "печкой" (подробнее этот режим рассмотрим позже в другой заметке). Тогда
на одну пчелу приходится от 0,2 до 0,4 мВт.
Примем для определённости \(P_{мин}=0,2~мВт\).
При 30°С пчелы активно двигаются, потребление кислорода при этом составляет 1,13-1,15 мл/пчелу в час, при 20°С большинство из них неподвижны, но потребление кислорода составляет 2,25-2,45 мл/пчелу в час - они усиливают метаболизм, чтоб не застыть!
Ещё раз отдельно: у пчелы есть "автономный обогреватель" никак не связанный с движителем полёта.
Переведём мл в мг, разделив на 22 (объём моля, л) и умножив на 32 (масса моля кислорода, г). Получим, соответственно, 1,64-1,67 мг/пчелу в час при 30°С и 3,27-3,56 мг/пчелу в час при 20°С. Кислород расходуется в количестве 0.86 кг на каждый килограмм мёда калорийностью 13000 кДж/кг [7] . Одному мг/час кислорода будет соответствовать 1,16 мг/час мёда или 15,080 Дж/час = 4,2 мВт.
Таким образом, при 30°С (разности температур 2,3°С) мощность
термогенеза составит 6,9-7,0 мВт, а при 20°С (разности температур 5,7°С) -
13,7-15,0 мВт. Очевидно, - это термогенез в состоянии равновесия - мощность
термогенеза равна мощности рассеиваемого пчелой тепла.
Если взять средние из данных интервалов, то при площади
поверхности тела пчелы 2 см\(^2\) и разности температур из формулы (2), можно
рассчитать плотность рассеиваемой мощности в зависимости от разности
температур:
Коэффициент 11,027 \(Вт/(м^2K)\) - это коэффициент теплоотдачи для формулы Ньютона-Рихмана, а формула линейной зависимости позволяет рассчитать мощность рассеяния тепла в зависимости от разности температур пчелы и окружающего воздуха. Например, при температуре воздуха 21°С разность температур по формуле (2) составит 5,3°С; мощность термогенеза будет равна (8,9+11,03\(\times 5,3\))\(\times\) 0,0002=13,5 мВт.
Можно также рассчитать зависимость генерируемой мощности от
температуры воздуха:
Перед полётом пчела "прогревает двигатель", т. к.
грудные мышцы не могут нормально работать, если их температура ниже 27°С.
Нагрев идёт за счет изометрической работы грудных мышц - без махания крыльями.
Темп нагрева - 2 градуса в минуту. Температура торакса доводится до 33-36°С.
При этом температура брюшка "отстает" на 10-15°С - при температуре
воздуха 18°С она доходит до 21-22°С.
По этим данным посчитаем, какая мощность (скорость
метаболизма) реализуется при разогреве:
$$ P_р =m_{th}c\frac{\Delta T_{th}}{\Delta t} + m_{ab}c\frac{\Delta
T_{ab}}{\Delta t},\tag{3}$$
где \(m_{th}\)
- масса торакса и головы, примем равной 32,50 + 10,25 \(\approx\) 43 мг [8] ,
\(m_{ab}\)
- масса остальной части пчелы, 57 мг,
\(c=3,513~кДж/(кг\cdot
K)\) - теплоемкость [9] ,
\(\Delta
T_{th}/\Delta t = 2/60 = 0,033(3)~K/c\) - темп изменения температуры торакса,
\(\Delta
T_{ab}/\Delta t\) - темп изменения
температуры брюшка, он по исходным данным в шесть раз меньше, чем торакса;
положим 0,0055(5).
Получаем \(P_р \approx 6,3~мВт\). (Примечание: в дальнейшем выяснилось, что гораздо больше - примерно 45 мВт). Очевидно эту мощность
нужно добавить к равновесной при данной температуре; например, при 21°С нужно
прибавить к 13,5 мВт, тогда общая требуемая для разогрева скорость метаболизма
составит 19,8 мВт. Когда температура достигнет 33-36°С пчела может взлетать.
В заметке Полёт пчелы было определено, что при парящем полёте и взлёте на нагрев из-за работы машущих мышц идёт (95,6% общей скорости метаболизма) - 46 мВт, в горизонтальном полёте - примерно в два раза меньше \(0,956\cdot 22,7 = 21,7~мВт\). Причём эта величина никак не привязана к температуре воздуха, т.е. от неё не зависит.
В статье Honeybee flight metabolic rate: does it depend upon air temperature? [10] обобщены данные пяти исследований:
Последнему исследованию соответствует штрих-пунктирная линия, которая показывает, что скорость метаболизма практически не зависит от температуры воздуха и составляет около 550 мВт/г. В пересчёте на одну пчелу - 55 мВт, что неплохо согласуется с нашими расчётными данными (46 мВт). А если брать данные исследования Heinrich 1980 года (треугольники), то там ещё ближе - меньше 50 мВт на пчелу. Но, поскольку мы брали КПД без обоснования (4,4% из опубликованных данных, которые тоже были получены теоретическим путём - аппроксимацией данных для более крупных насекомых - If Weis-Fogh & Alexander’s (1977) model is quantitatively correct and 250 W kg−1 is a reasonable estimate of maximum mechanical power output, then the mechanical efficiency (Po,m/Pi) of the flight muscle must decrease progressively with size in the _Euglossa_ spp., varying from about 10·4% in a 1·0-g bee to about 4·4% in a 0·1-g bee., то это является поводом для корректировки принятого ранее значения КПД в сторону уменьшения до 3,7%, т.к. экспериментальные данные должны быть использованы для валидации модели. С другой стороны эксперименты проводились в лабораторных условиях, полёт был парящим в пол-литровой камере, что существенно отличается от естественных условий. Для пчелы это условия стрессовые: их там то кормят - то не кормят, то встряхивают - то не встряхивают, то они в помещении - то на улице, и вообще она не понимает, что она тут делает. А, как мы видели в цитате из Т. Цесельского в таком состоянии термогенез повышается. Совсем другое дело, когда пчела летит "по делу": она в хорошем настроении, у неё плановая заправка в зобике, хороший солнечный денёк, лёгкий бриз приятно обдувает тело... Поэтому оставим пока КПД без корректировки в ожидании новых поводов.
Также в этой статье приведены экспериментальные данные с
измерениями температуры головы, торакса и брюшка в полёте в зависимости от
температуры воздуха:
Регрессии, соответственно, следующие:
$$ \left\{ \array{ T_{th} = 0,181T_a + 33,35 \cr T_h = 0,328T_a + 23,02\cr T_{ab} = 0,566T_a + 12,04} \right. \tag{4}$$
Учитывая, что средняя масса головы составляет 10,25 мг, а торакса - 32,50 мг,
можно, проведя весовое (в прямом смысле) суммирование, получить регрессию для
средней температуры пчелы:
\(T_{пч} = 0,398T_a + 20,95\)
Видим, что в полёте температура пчелы слабее зависит от температуры воздуха, чем в покое в 0,667/0,398=1,675 раза, что позволяет ей держать рабочую температуру торакса близкой к оптимальной во всём рабочем диапазоне температур на уровне \(38,5\pm2,1\)°С (примечание: далее увидим, что ещё точнее, но с другим абсолютным значением).
Стоит обратить внимание на тот факт, что при температуре 28°С температура брюшка, а при температуре 35°С и температура головы ниже температуры воздуха. Этого пчела достигает за счёт испарения влаги Потеря тепла на испарение увеличилась с 51 мВт г -1 при 25 °C до 158 мВт г -1 при 37 °C и, по-видимому, объясняет резкое падение избыточной температуры головы и живота в том же диапазоне температур воздуха.
Влагу она подаёт каплей в хоботок, а также открывая дыхальца, раздвигая тергиты. Человек во время жары тоже потеет, чтобы остыть.
Известно, что при температуре выше 38°С пчела прекращает лёт, считается, это оттого, что цветы плохо выделяют нектар в такую жару. Думаю, что не последнее значение здесь имеют температурные возможности самой пчелы - ведь в такую жару обычно светит солнце, а оно добавляет к температуре пчелы ещё 4 градуса.
По имеющимся экспериментальным данным построим тепловую математическую модель пчелы в полёте.
Представим пчелу в виде трех частей тела - головы (hd), торакса (th) и брюшка (ab), считая их цилиндрами диаметром 4 мм и высотой, соответственно, 1,5 мм, 4,5 мм и 6 мм. Они разделены/соединены небольшими зазорами и соединительными каналами.
Площадь "обдува" каждого цилиндра можно посчитать: головы - площадь переднего круга \(s_r\) плюс площадь боковой поверхности головы \(s_{hd}\) , торакса - площадь боковой поверхности торакса \(s_{th}\) , брюшка - площадь боковой поверхности брюшка \(s_{ab}\) плюс площадь заднего круга \(s_r\) .
Источник тепла находится в тораксе. Одна часть тепла рассеивается с поверхности торакса в воздух, другая - передаётся голове, третья - брюшку. В свою очередь голова и брюшко также рассеивают тепло со своей поверхности в воздух. Кроме того, голова и брюшко имеют возможность охлаждаться испарением воды через дыхальца и хоботок. Помимо контактного теплообмена (теплопроводность и конвекция) необходимо учесть теплообмен излучением. Система уравнений теплового баланса, таким образом, будет иметь вид:
$$\left\{ \array {\frac{t_{th}-t_{hd}}{r_{th\_hd}}+\frac{t_{th}-t_{ab}}{r_{th\_ab}}+\frac{t_{th}-t_{air}}{r_{th\_air}}+p_{rth}=P_t\cr q_{e\_hd}+\frac{t_{hd}-t_{air}}{r_{hd\_air}}+p_{rhd}=\frac{t_{th}-t_{hd}}{r_{th\_hd}} \cr q_{e\_ab}+\frac{t_{ab}-t_{air}}{r_{ab\_air}}+p_{rab}=\frac{t_{th}-t_{ab}}{r_{th\_ab}}} \right. \tag{5}$$
- где \(P_t\) - мощность термогенеза,
- \(t\_\) - температура,
- \(r\_\) - тепловые сопротивления соответствующих переходов,
- \(q_e\_\)- мощность, отводимая испарением воды,
- \(p_r\)- мощность излучения.


Как видим, совпадение неплохое. Напомню, эксперименты проводились в лабораторных условиях для парящего (машущего) полёта. Однако, для горизонтального свободного полёта требуемая мощность движителя в два раза меньше, соответственно меньше будет и тепловая мощность. Подставим в модель \(P_t=0,055/2\cdot(1-0,044)=26,3~мВт\) и посмотрим, что получится:Пчела так не полетит - при температуре воздуха до 19°С торакс не прогревается до минимально необходимых 27°С, т.е. термогенеза недостаточно. Вспоминаем, что у пчелы же есть "автономный подогреватель", который мы обнаружили при рассмотрении термогенеза "в покое"! Давайте посмотрим, что будет, если пчела его включит - добавит термогенеза мощностью (29,133 - 0,739t) мВт:

Из рисунка видно, что до 22°С основным "радиатором охлаждения" является торакс, но с ростом температуры воздуха величина рассеиваемой мощности снижается практически линейно от 26 мВт при 12°С до нуля - к 34°С, а затем становится отрицательной - т.е. нагревается воздухом. Тепло, отдаваемое брюшком, остаётся практически постоянным в районе 12-14 мВт, головой - практически линейно растёт от 9 до 19 мВт. Общая рассеиваемая тепловая мощность снижается от 46 мВт при 12°С до 26 мВт при 39°С.

охлаждение испарением осталось примерно таким же, а нагрев солнцем компенсировался изменением конвекционного охлаждения (оно, напомню, пропорционально разности температур тела и среды).
Это означает, что пчела подпитывается от солнца с мощностью от 4,5 до 9 мВт.
🐝 Python-скрипт
import numpy as np
import matplotlib.pyplot as plt
from scipy.optimize import fsolve
# Параметры
m_th, m_hd, m_ab = 32.5e-6, 10.25e-6, 57.0e-6 # масса торакса, головы и брюшка, кг
m = m_th + m_hd + m_ab # масса пчелы
sigma = 5.67e-8 # постоянная Стефана-Больцмана, Вт/(м²K^4)
t0 = -273.15 # температура абсолютного нуля, °С
l_th, l_hd, l_ab = 4.5e-3, 1.5e-3, 6e-3 # длина торакса, головы, брюшка, м
k_hd = 0.065 # Вт/(м°С)
k_ab = 0.042 # Вт/(м°С)
ke0 = 3e-5 # коэффициент испарения в покое, Вт/°C
efficiency = 0.044 # КПД
r = 2e-3 # радиус цилиндра тела пчелы, м
sr = np.pi * r ** 2 # площадь торца цилиндра
lr = 2 * np.pi * r # длина окружности цилиндра
s_th, s_hd, s_ab = l_th * lr, sr + l_hd * lr, sr + l_ab * lr # площади обдува торакса, головы и брюшка
sun = True # солнечно
# sun = False # пасмурно
eps_th, eps_hd, eps_ab = 0.22, 0.22, 0.22 # коэффициент поглощения излучения
#eps_th, eps_hd, eps_ab = 0.5, 0.5, 0.5
Isolar = 700
flight = True # в полете
# flight = False # в покое
if flight:
h_fl = 20.8 # конвекция в полете, Вт/(м²·°C)
else:
h_fl = 11 # конвекция в покое, Вт/(м²·°C)
# тепловые сопротивления
r_th_air = 1 / (h_fl * s_th)
r_hd_air = 1 / (h_fl * s_hd)
r_ab_air = 1 / (h_fl * s_ab)
def model(t_air):
""" Температура торакса, головы и брюшка в зависимости от температуры окружающего воздуха """
if flight:
p_fl = 0.055 * (1. - efficiency) / 2 + (29.133 - 0.739 * t_air) * 1e-3 # тепловая мощность, Вт
k_evap_hd = (0.0261 * t_air - 0.3116) * 1e-3 # коэффициенты испарения, Вт/°С
k_evap_ab = (0.0326 * t_air - 0.3833) * 1e-3
else:
p_fl = (29.133 - 0.739 * t_air) * 1e-3
k_evap_hd = ke0
k_evap_ab = ke0
l = 1.3493 * np.exp(-0.058 * t_air) * 1e-3 # средний зазор
r_th_hd = l / (k_hd * sr) # тепловое сопротивление между тораксом и головой
r_th_ab = l / (k_ab * sr) # тепловое сопротивление между тораксом и брюшком
def equations(vars):
t_th, t_hd, t_ab = vars # искомые температуры торакса, головы и брюшка
q_evap_hd = k_evap_hd * t_th # мощность испарения с головы
q_evap_ab = k_evap_ab * t_th # мощность испарения с брюшка
# мощности излучения
if sun:
p_s_th = eps_th * (Isolar * l_th * 2 * r - sigma * ((t_th - t0) ** 4 - (t_air - t0) ** 4) * s_th)
p_s_hd = eps_hd * (Isolar * l_hd * 2 * r - sigma * ((t_hd - t0) ** 4 - (t_air - t0) ** 4) * s_hd)
p_s_ab = eps_ab * (Isolar * l_ab * 2 * r - sigma * ((t_ab - t0) ** 4 - (t_air - t0) ** 4) * s_ab)
else:
p_s_th = - eps_th * sigma * ((t_th - t0) ** 4 - (t_air - t0) ** 4) * s_th
p_s_hd = - eps_hd * sigma * ((t_hd - t0) ** 4 - (t_air - t0) ** 4) * s_hd
p_s_ab = - eps_ab * sigma * ((t_ab - t0) ** 4 - (t_air - t0) ** 4) * s_ab
# балансы мощностей
eq1 = p_fl + p_s_th - (t_th - t_hd) / r_th_hd - (t_th - t_ab) / r_th_ab - (t_th - t_air) / r_th_air
eq2 = p_s_hd + (t_th - t_hd) / r_th_hd - (t_hd - t_air) / r_hd_air - q_evap_hd
eq3 = p_s_ab + (t_th - t_ab) / r_th_ab - (t_ab - t_air) / r_ab_air - q_evap_ab
return [eq1, eq2, eq3]
# Начальное приближение (экспериментальные регрессии)
t_init = [0.181 * t_air + 33.35, 0.328 * t_air + 23.02, 0.566 * t_air + 12.04]
solution = fsolve(equations, t_init)
return solution
t_air_range = np.arange(12, 40, 1) # задаем диапазон температур моделирования
results = []
# основной цикл моделирования
for t_a in t_air_range:
t_th, t_hd, t_ab = model(t_a)
t_mo = (t_th * m_th + t_hd * m_hd + t_ab * m_ab) / m
if flight:
k_evap_hd = (0.0261 * t_a - 0.3116) * 1e-3
k_evap_ab = (0.0326 * t_a - 0.3833) * 1e-3
else:
k_evap_hd = ke0
k_evap_ab = ke0
if sun:
p_s_th = eps_th * (Isolar * l_th * 2 * r - sigma * ((t_th - t0) ** 4 - (t_a - t0) ** 4) * s_th)
p_s_hd = eps_hd * (Isolar * l_hd * 2 * r - sigma * ((t_hd - t0) ** 4 - (t_a - t0) ** 4) * s_hd)
p_s_ab = eps_ab * (Isolar * l_ab * 2 * r - sigma * ((t_ab - t0) ** 4 - (t_a - t0) ** 4) * s_ab)
else:
p_s_th = - eps_th * sigma * ((t_th - t0) ** 4 - (t_a - t0) ** 4) * s_th
p_s_hd = - eps_hd * sigma * ((t_hd - t0) ** 4 - (t_a - t0) ** 4) * s_hd
p_s_ab = - eps_ab * sigma * ((t_ab - t0) ** 4 - (t_a - t0) ** 4) * s_ab
q_evap_hd = k_evap_hd * t_th * 1e3
q_evap_ab = k_evap_ab * t_th * 1e3
p_th = (t_th - t_a) / r_th_air * 1e3
p_hd = (t_hd - t_a) / r_hd_air * 1e3
p_ab = (t_ab - t_a) / r_ab_air * 1e3
pr_th = p_s_th * 1e3
pr_hd = p_s_hd * 1e3
pr_ab = p_s_ab * 1e3
results.append({
"t_air": t_a,
"t_th_mo": t_th,
"t_th_ex": 0.181 * t_a + 33.35,
"t_hd_mo": t_hd,
"t_hd_ex": 0.328 * t_a + 23.02,
"t_ab_mo": t_ab,
"t_ab_ex": 0.566 * t_a + 12.04,
"t_t": 0.6667 * t_a + 12.333,
"p_th": p_th,
"p_hd": p_hd,
'p_ab': p_ab,
"p_sum": p_th + p_hd + p_ab,
"q_e_hd": q_evap_hd,
"q_e_ab": q_evap_ab,
"q_e_sum": q_evap_hd + q_evap_ab,
"pr_th": - pr_th,
"pr_hd": - pr_hd,
"pr_ab": - pr_ab,
"pr_sum": - pr_th - pr_hd - pr_ab,
"t_mo": t_mo,
"t_ex": ((0.181 * t_a + 33.35) * m_th + (0.328 * t_a + 23.02) * m_hd + (0.566 * t_a + 12.04) * m_ab) / m
})
# Графики
def draw1(string):
plt.figure(figsize=(8, 4))
plt.plot(t_air_range, [res["t_th_mo"] for res in results], 'r.', label='Торакс (модель)')
plt.plot(t_air_range, [res["t_th_ex"] for res in results], 'r-', linewidth=0.5, label='Торакс (эксп.)')
plt.plot(t_air_range, [res["t_hd_mo"] for res in results], 'b.', label='Голова (модель)')
plt.plot(t_air_range, [res["t_hd_ex"] for res in results], 'b-', linewidth=0.5, label='Голова (эксп.)')
plt.plot(t_air_range, [res["t_ab_mo"] for res in results], 'g.', label='Брюшко (модель)')
plt.plot(t_air_range, [res["t_ab_ex"] for res in results], 'g-', linewidth=0.5, label='Брюшко (эксп.)')
plt.xlabel('Температура воздуха (°C)')
plt.ylabel('Температура тела (°C)')
plt.title('Сравнение модели с экспериментальными данными' + string)
plt.legend()
plt.grid()
plt.minorticks_on(), plt.grid(which='minor', linestyle=':'), plt.tight_layout()
plt.show()
def draw_model_only(string):
plt.figure(figsize=(8, 4))
plt.plot(t_air_range, [res["t_th_mo"] for res in results], 'r.', label='Торакс')
plt.plot(t_air_range, [res["t_hd_mo"] for res in results], 'b.', label='Голова')
plt.plot(t_air_range, [res["t_ab_mo"] for res in results], 'g.', label='Брюшко')
plt.xlabel('Температура воздуха (°C)')
plt.ylabel('Температура тела (°C)')
plt.title('Модельные данные при ' + string + 'Вт/м²')
plt.legend()
plt.grid()
plt.minorticks_on(), plt.grid(which='minor', linestyle=':'), plt.tight_layout()
plt.show()
def draw2(string):
plt.figure(figsize=(8, 4))
plt.plot(t_air_range, [res["t_th_mo"] for res in results], 'r.', label='Торакс (модель)')
plt.plot(t_air_range, [res["t_hd_mo"] for res in results], 'b.', label='Голова (модель)')
plt.plot(t_air_range, [res["t_ab_mo"] for res in results], 'g.', label='Брюшко (модель)')
plt.plot(t_air_range, [res["t_mo"] for res in results], 'b-', label='Средняя (весовое суммирование)')
plt.plot(t_air_range, [res["t_t"] for res in results], 'bx', label='Исходная - по формуле (1)')
# plt.plot(t_air_range, [res["t_ex"] for res in results], 'b-.', label='Средняя (эксперимент)')
plt.xlabel('Температура воздуха (°C)')
plt.ylabel('Температура тела (°C)')
plt.title('Сравнение модели с исходными данными' + string)
plt.legend()
plt.grid()
plt.minorticks_on(), plt.grid(which='minor', linestyle=':'), plt.tight_layout()
plt.show()
def draw3(string):
plt.figure(figsize=(8, 4))
plt.plot(t_air_range, [res["p_th"] + res["pr_th"] for res in results], 'r.', label='Торакс')
plt.plot(t_air_range, [res["p_hd"] + res["pr_hd"] + res["q_e_hd"] for res in results], 'b.', label='Голова')
plt.plot(t_air_range, [res["p_ab"] + res["pr_ab"] + res["q_e_ab"] for res in results], 'g.', label='Брюшко')
plt.plot(t_air_range, [res["p_sum"] + res["pr_sum"] + res["q_e_sum"] for res in results], 'b-', label='Сумма')
plt.xlabel('Температура воздуха (°C)')
plt.ylabel('Мощность (мВт)')
plt.title('Теплообмен' + string)
plt.legend()
plt.grid()
plt.minorticks_on(), plt.grid(which='minor', linestyle=':'), plt.tight_layout()
plt.show()
def draw4(string):
fig, ax = plt.subplots(1, 3, figsize=(10, 5))
fig.suptitle('Теплообмен конвекцией, испарением и излучением' + string)
ax[0].set_title('Торакс')
ax[0].grid()
ax[0].plot(t_air_range, [res["p_th"] for res in results], 'r-')
ax[0].plot(t_air_range, [res["pr_th"] for res in results], 'r.')
ax[0].set_ylim(-20, 35)
ax[0].set_xlabel('Температура воздуха (°C)')
ax[0].set_ylabel('Мощность (мВт)')
ax[1].set_title('Голова')
ax[1].grid()
ax[1].plot(t_air_range, [res["p_hd"] for res in results], 'b-')
ax[1].plot(t_air_range, [res["pr_hd"] for res in results], 'b.')
ax[1].plot(t_air_range, [res["q_e_hd"] for res in results], 'b--')
ax[1].set_ylim(-20, 35)
ax[1].set_xlabel('Температура воздуха (°C)')
ax[2].set_title('Брюшко')
ax[2].grid()
ax[2].plot(t_air_range, [res["p_ab"] for res in results], 'g-', label='Конвекция')
ax[2].plot(t_air_range, [res["pr_ab"] for res in results], 'g.', label='Излучение')
ax[2].plot(t_air_range, [res["q_e_ab"] for res in results], 'g--', label='Испарение')
ax[2].set_ylim(-20, 35)
ax[2].set_xlabel('Температура воздуха (°C)')
ax[2].legend()
plt.show()
def draw_r(string, epsilon):
plt.figure(figsize=(8, 4))
plt.plot(t_air_range, [res["pr_th"] for res in results], 'r.', label='Торакс')
plt.plot(t_air_range, [res["pr_hd"] for res in results], 'b.', label='Голова')
plt.plot(t_air_range, [res["pr_ab"] for res in results], 'g.', label='Брюшко')
plt.plot(t_air_range, [res["pr_sum"] for res in results], 'b-', label='Сумма')
plt.xlabel('Температура воздуха (°C)')
plt.ylabel('Мощность (мВт)')
plt.title('Излучение' + string + ' (' + '$\epsilon =$' + str(epsilon) + ')')
plt.legend()
plt.grid()
plt.minorticks_on(), plt.grid(which='minor', linestyle=':'), plt.tight_layout()
plt.show()
if flight:
st = ' в полёте'
if sun:
st += ', солнечно'
else:
st += ', пасмурно'
draw1(st)
draw4(st)
st = 'I = ' + str(Isolar)
draw_model_only(st)
else:
st = ' в покое'
if sun:
st += ', солнечно'
else:
st += ', пасмурно'
draw2(st)
draw3(st)
draw_r(st, epsilon=eps_th)























Расчет скорости и мощности метаболизма никак не соотносится с мощностью термогенеза. Скорость метаболизма соотносится со скоростью потребления кислорода, хотя кислород не участвует в реакциях окисления той же глюкозы. Кислород восстанавливается до воды за счет протонов, но энергия образования воды в общем балансе почему-то принята нулевой. Термогенез и его можность и энергия полета - суть разные процессы на разных доменах сократительных белков. Пока вы будете исходить из равенства энергии сгорания в кислороде и энергии метаболизма на белках - ни к чему не придете. Это тупик по причине плохого знания анатомии и физиологии объекта, и работы воды на белках. Не хочу обсуждать ваши выкладки, они в самой своей основе не верны. Волмар Георг
ОтветитьУдалитьУважаемый Волмар Георг! Замысел моделирования термогенеза пчелы и ее температуры не предполагал подробного анализа внутренних процессов метаболизма. Модель предполагает формальное описание лишь внешних проявлений этих процессов по опубликованным экспериментальным данным. Если скорость метаболизма не равна в точности мощности окисления глюкозы, то это можно будет учесть в дальнейшем введением поправочного коэффициента. Если у Вас есть данные по их соотношению, приведите их здесь, и я учту это в модели. Спасибо!
Удалить"The Hot-Blooded Insects : Strategies and Mechanisms of Thermoregulation"
ОтветитьУдалитьBernd Heinrich есть на сайте welib.org
Спасибо! Скачал.
Удалить