Теплопроводность · Плоскопараллельная
Температура подземного кабеля
Три кабеля в одной траншее нагревают друг друга через грунт. Поэтому средний кабель оказывается горячее крайних даже при одинаковых потерях и одинаковой конструкции. Задача связывает внутренние сопротивления изоляции с распространением тепла в окружающей среде и с конвекцией на поверхности земли. Она полезна для обсуждения групповой прокладки и различия между локальной температурой поверхности и температурой жилы.
Радиусы областей кабеля равны 28.75, 29.5, 52.5, 53, 57 и 61 мм. Расстояние между осями принято 300 мм, глубина осей — 1000 мм. Грунт ограничен нижним полукругом радиуса 5.5 м с центром на поверхности над левым кабелем. Конвекция назначена верхней прямой; через внешнюю дугу тепло не выходит. Это явно заданная конечная расчётная область, влияние которой следует исследовать отдельным опытом.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Объёмные источники и расхождение источников
Потери заданы учебной постановкой и не вычисляются электромагнитным решателем. Плотность источника равна мощности на метр, делённой на площадь соответствующей области. Для меди используется 30.3/2596.72·10⁻⁶, для основной изоляции 13.35/5925.04·10⁻⁶ Вт/м³. Полупроводящие экраны и защитный покров собственного источника не имеют. Теплопроводность грунта равна 1 Вт/(м К), воздуха в расчётной области нет.
В одной металлической оболочке выделяется 0.7 Вт/м, во всех трёх — 2.1 Вт/м. Поэтому плотность мощности можно вычислить как 2.1 Вт/м, делённые на суммарную площадь трёх оболочек 4146.9 мм². Итоговая мощность всех источников равна 133.05 Вт для трёх метровых участков. Такая запись требует аккуратной проверки: нельзя одновременно делить на общую площадь и повторно приписывать общие потери каждому кабелю.
Проверка результата и смысл температуры
Воздух имеет температуру 10 °C, коэффициент теплоотдачи верхней поверхности равен 10 Вт/(м² К). Теплопроводность оболочки принята 35 Вт/(м К). Температура средней жилы около 84 °C служит контрольным ориентиром именно этой учебной постановки. Проверка баланса источников и теплоотдачи имеет самостоятельное значение и не должна заменяться совпадением одной температуры.
Три сетки сгущают кабели, грунт и верхнюю границу. Проверяется изменение температуры жилы между двумя последними решениями не более 0.25 К. Полная мощность вычисляется интегрированием заданных объёмных источников по фактической сетке. Отвод тепла проверяется независимым интегрированием конвекции вдоль поверхности грунта. Для последней сетки средняя жила получается около 83.91 °C, что согласуется с округлённым результатом учебного ориентира. Это численное воспроизведение заданных потерь, а не подтверждение токовой нагрузки реального кабеля.
Исходные данные
Три многослойных кабеля с центрами (0,0), (300,0), (600,0) мм; поверхность грунта y=1000 мм; нижний полукруг радиуса 5500 мм с центром (0,1000) мм.
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| Расстояние осей | 300 | мм | Заданный параметр учебной модели |
| Глубина осей | 1000 | мм | Заданный параметр учебной модели |
| Воздух | 10 | °C | Заданный параметр учебной модели |
| Коэффициент конвекции | 10 | Вт/(м² К) | Заданный параметр учебной модели |
| Потери меди одного кабеля | 30,3 | Вт/м | Заданный параметр учебной модели |
| Потери основной изоляции одного кабеля | 13,35 | Вт/м | Заданный параметр учебной модели |
| Потери оболочки одного кабеля | 0,7 | Вт/м | Заданный параметр учебной модели |
| k оболочки | 35 | Вт/(м К) | Заданный параметр учебной модели |
| Внешний радиус грунта | 5500 | мм | Заданный параметр учебной модели |
Порядок воспроизведения
- Создайте отдельную рабочую папку и поместите в неё reproduce.py. Откройте программу во встроенном редакторе Python FEMM 5. Команды ci_, co_, hi_* и ho_* уже доступны в этой среде; внешний пакет pyFEMM здесь не требуется. Запустите файл целиком. Программа сама создаст новую папку calculated-XX, поэтому повторный опыт не уничтожит предыдущую серию.
- Проследите три последовательных построения. Перед каждым решением программа записывает самостоятельную модель, закрывает документ и повторно открывает этот файл. Такое действие проверяет сохранение геометрии, свойств и русских имён. Для каждой сетки остаются входная модель, расчётное решение и запись численных показателей. Откройте окончательную модель вручную, чтобы сопоставить контуры, материалы и граничные условия с таблицей параметров.
- Откройте result.json из новой папки. records содержит результаты каждой сетки, checks — проверяемую величину, допустимое значение и логический итог. Переходите к обсуждению физики после выполнения всех проверок. Само уменьшение невязки линейного решателя ещё не доказывает достаточность сетки: отдельно сравниваются интегральные характеристики двух последних дискретизаций.
- Изменяйте один физический параметр за опыт и сохраняйте отдельную серию. Сравнивайте результаты при одинаковой длине, глубине и температурном соглашении. В отчёте приведите постановку, таблицу трёх сеток, результат независимой проверки и объяснение оставшегося расхождения.
Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте reproduce.py во встроенном Python FEMM 5 и выполните его. Сохраните имена файлов и структуру подпапок. Условия конкретного запуска и путь новых результатов указаны в комментариях программы.
Программа встроенного Python FEMM 5
"""Температура трёх кабелей в грунте.
Среда: встроенный MicroPython FEMM 5; команды FEMM доступны как глобальные функции.
Модель создаётся заново, сохраняется, закрывается и повторно открывается до расчёта.
Размеры геометрии заданы в миллиметрах; интегральные результаты имеют единицы СИ.
Каждый запуск создаёт новый calculated-XX рядом с программой и не меняет прежние
модели, результаты и квитанции. Все входные параметры заданы непосредственно в программе.
Область применимости и принятые допущения описаны в README.md.
"""
import os
import sys
import math
import json
script = globals().get("__file__", "") or (sys.argv[0] if sys.argv else "")
base = os.path.dirname(os.path.abspath(script)) if script else os.getcwd()
index = 1
while "calculated-%02d" % index in os.listdir(base):
index += 1
directory = base + "/calculated-%02d" % index
os.mkdir(directory)
records = []
checks = []
def real(value):
if isinstance(value, (list, tuple)):
return real(value[0])
return complex(value).real
def check(name, value, limit):
checks.append(
{
"name": name,
"value": value,
"limit": limit,
"passed": math.isfinite(value) and value <= limit,
}
)
BURIED = True
CENTERS = (0, 300, 600)
AMBIENT_K = 283.15
H = 10
SOURCES = (30.3 / 2596.72e-6, 0, 13.35 / 5925.04e-6, 0, 2.1 / 4146.9e-6, 0)
RADII_MM = (28.75, 29.5, 52.5, 53, 57, 61)
NAMES = (
"Медь жилы",
"Экран жилы",
"Маслобумажная изоляция",
"Экран изоляции",
"Свинцовая оболочка",
"Защитный покров",
)
CONDUCTIVITIES = (380, 0.2, 0.2, 0.2, 35, 1 / 3.5)
# Теплопроводность оболочки принята равной 35 Вт/(м К).
def circle(x, radius, angle, boundary=""):
hi_addnode(x - radius, 0)
hi_addnode(x + radius, 0)
hi_addarc(x - radius, 0, x + radius, 0, 180, angle)
hi_addarc(x + radius, 0, x - radius, 0, 180, angle)
hi_selectarcsegment(x, radius)
hi_selectarcsegment(x, -radius)
hi_setarcsegmentprop(angle, boundary or "<None>", 0, 0, "<None>")
hi_clearselected()
for level, mesh in enumerate((3, 1.5, 0.75)):
newdocument(2)
hi_probdef("millimeters", "planar", 1e-10, 1000, 30)
for number, name in enumerate(NAMES):
k = CONDUCTIVITIES[number]
hi_addmaterial(name, k, k, SOURCES[number], 0)
hi_addboundprop("Конвекция в воздух", 2, 0, 0, AMBIENT_K, H, 0)
angle = 4 / (2**level)
for cable, x in enumerate(CENTERS):
previous = 0
for number, radius in enumerate(RADII_MM):
boundary = "Конвекция в воздух" if not BURIED and number == 5 else ""
circle(x, radius, angle, boundary)
label_x = x + (previous + radius) / 2
hi_addblocklabel(label_x, 0)
hi_selectlabel(label_x, 0)
hi_setblockprop(NAMES[number], 0, mesh, cable * 10 + number + 1)
hi_clearselected()
previous = radius
hi_addmaterial("Однородный грунт", 1, 1, 0, 0)
# Расчётная область: нижний полукруг R=5.5 м с центром (0, 1 м).
hi_addnode(-5500, 1000)
hi_addnode(5500, 1000)
hi_addarc(-5500, 1000, 5500, 1000, 180, 2)
hi_addsegment(-5500, 1000, 5500, 1000)
hi_selectsegment(0, 1000)
hi_setsegmentprop("Конвекция в воздух", 100 / (2**level), 0, 0, 0, "<None>")
hi_clearselected()
hi_addblocklabel(0, -500)
hi_selectlabel(0, -500)
hi_setblockprop("Однородный грунт", 0, 200 / (2**level), 99)
hi_clearselected()
model = directory + "/model-%02d.feh" % (level + 1)
hi_saveas(model)
hi_close()
opendocument(model)
hi_analyze(1)
hi_loadsolution()
ho_smooth("off")
temperatures = [real(ho_getpointvalues(x, 0)[0]) for x in CENTERS]
# Интеграл q_v dV использует фактическую площадь многоугольной сетки.
generated = 0
for cable, x in enumerate(CENTERS):
for number, source in enumerate(SOURCES):
if source:
ho_groupselectblock(cable * 10 + number + 1)
generated += source * real(ho_blockintegral(2))
ho_clearblock()
row = {
"mesh_mm": mesh,
"model": "model-%02d.feh" % (level + 1),
"nodes": ho_numnodes(),
"elements": ho_numelements(),
"T_center_K": temperatures,
"generated_W": generated,
}
# Численное интегрирование конвекции вдоль поверхности грунта.
count = 880
total = 0
for n in range(count + 1):
temperature = real(ho_getpointvalues(-5500 + 11000 * n / count, 1000)[0])
total += (0.5 if n in (0, count) else 1) * (temperature - AMBIENT_K)
convection = total * 11 / count * H
row["convection_W"] = convection
row["heat_balance_relative"] = abs(convection - generated) / generated
row["T_ground_over_middle_K"] = real(ho_getpointvalues(300, 1000)[0])
check("Баланс тепла, сетка %d" % (level + 1), row["heat_balance_relative"], 0.01)
records.append(row)
ho_close()
hi_close()
check(
"Сходимость температуры жилы, К",
abs(records[-1]["T_center_K"][0] - records[-2]["T_center_K"][0]),
0.25,
)
check(
"Температура средней жилы против учебного ориентира 84 C, К",
abs(records[-1]["T_center_K"][1] - 357.15),
3,
)
# Общие потери трёх оболочек 2.1 Вт/м: по 0.7 Вт/м на кабель.
check(
"Суммарная мощность заданных источников, Вт",
abs(records[-1]["generated_W"] - (3 * (30.3 + 13.35) + 2.1)),
0.1,
)
result = {
"runtime": "FEMM 5.0; embedded MicroPython",
"records": records,
"checks": checks,
"passed": all(item["passed"] for item in checks),
}
with open(directory + "/result.json", "w") as output:
json.dump(result, output)
print(json.dumps(result))
assert result["passed"]
Картина рассчитанного поля
Окна FEMM 5
Снимки интерфейса FEMM показывают геометрию, настройки и работу с результатами в FEMM 5. Откройте изображение, чтобы рассмотреть подписи и значения в полном размере.
Результаты и численные проверки
Сохранено решений FEMM: 3. Выполнено проверок: 6. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.
| Температура грунта над кабелем, К | Элементов | Температура в центре, К | Тепловыделение, Вт | Конвективный тепловой поток, Вт | Узлов | Относительная невязка тепла | Модель | Масштаб сетки, мм |
|---|---|---|---|---|---|---|---|---|
| 286,98886 | 37504 | 3 значений; полные данные JSON | 132,94207 | 132,94209 | 18890 | 185,50546 × 10⁻⁹ | model-01.feh | 3 |
| 286,99286 | 66060 | 3 значений; полные данные JSON | 133,0231 | 133,02298 | 33275 | 942,56655 × 10⁻⁹ | model-02.feh | 1,5 |
| 286,99549 | 208383 | 3 значений; полные данные JSON | 133,04337 | 133,04331 | 104662 | 397,89521 × 10⁻⁹ | model-03.feh | 0,75 |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Баланс тепла, сетка 1 | 185,5 × 10⁻⁹ | 0,01 | Выполнен |
| Баланс тепла, сетка 2 | 942,6 × 10⁻⁹ | 0,01 | Выполнен |
| Баланс тепла, сетка 3 | 397,9 × 10⁻⁹ | 0,01 | Выполнен |
| Сходимость температуры жилы, К | 0,1178 | 0,25 | Выполнен |
| Температура средней жилы против учебного ориентира 84 C, К | 0,08733 | 3 | Выполнен |
| Суммарная мощность заданных источников, Вт | 0,006635 | 0,1 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md10423 байт
- Тепловое решение: model-01.anh1902003 байт
- Тепловая модель: model-01.feh3831 байт
- Тепловое решение: model-02.anh3396599 байт
- Тепловая модель: model-02.feh3866 байт
- Тепловое решение: model-03.anh10879316 байт
- Тепловая модель: model-03.feh3883 байт
- Программа встроенного Python: reproduce.py6621 байт
- Файл результатов: verification.json912 байт
Границы применимости
- Потери заданы извне; электромагнитная задача, допустимый ток, изменение влажности грунта, неоднородная засыпка и нестационарный нагрев не рассчитываются. Не проверена независимость от конечного радиуса грунта: сохранена выбранная область 5.5 м.
- Проверены сохранение, повторное открытие и расчёт точных файлов в FEMM 5.0 06Oct2026 со встроенным MicroPython. Проверка относится к данной учебной версии и к указанным численным критериям. Снимки интерфейса FEMM выполняются отдельным согласованным проходом.
- Постановка, объяснения и встроенная программа образуют самостоятельную лабораторную работу курса. Перед расчётом реального изделия необходимо уточнить геометрию, свойства, нагрузку и условия охлаждения.