Электрическое поле тока · Плоскопараллельная
Ток утечки коаксиальной линии
Задача отделяет две электрические характеристики кабеля: продольное сопротивление металлических проводников и поперечную утечку через изоляцию. Здесь рассчитывается только вторая величина. Потенциал внутреннего электрода равен 1 В, внешнего — нулю; ток проходит радиально через слабопроводящий диэлектрик. Удельная проводимость столь мала, что при единичном напряжении ток всего кабеля имеет порядок десятков микроампер.
Круглое поперечное сечение выглядит осесимметричным, но в FEMM следует выбрать именно плоскую постановку. Ось кабеля направлена перпендикулярно рисунку, а глубина задаёт действительную длину 10 км. Осесимметричная постановка вокруг оси на самом рисунке описывала бы другую пространственную геометрию. Этот пример особенно полезен для проверки правильного выбора типа задачи и единиц глубины.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Независимое аналитическое решение
Через любую коаксиальную цилиндрическую поверхность проходит один и тот же суммарный ток. Поэтому плотность тока обратно пропорциональна радиусу. Радиальная напряжённость получается делением плотности тока на проводимость; интегрирование между радиусами даёт логарифм отношения радиусов. Толщина изоляции сама по себе недостаточна для плоской формулы R=ρl/S, потому что площадь поверхности меняется вдоль пути тока.
В формуле можно использовать либо диаметры D и d, либо соответствующие радиусы: отношение одинаково. Проводимость задаётся в См/м, длина — в метрах. Число 1.4 нСм/м переводится в 1.4·10⁻⁹ См/м. Перепутанная приставка или введённая в миллиметрах длина без учёта единиц изменяет ответ на многие порядки.
Граница электродов и проверка
Металлические электроды заменены эквипотенциальными окружностями. Внутри малого круга область помечена как не подлежащая разбиению: электрическое поле в металле для этой задачи не требуется. В кольце действует единственный материал с изотропной проводимостью. Имена материала и обоих проводников русские и проходят проверку сохранения и повторного открытия.
На трёх уровнях уменьшаются и размер элементов 0.4, 0.2, 0.1 мм, и максимальный угол отрезка дуги 4, 2, 1 градус. Это важно: только уменьшение площади треугольников внутри кольца не устраняет погрешность многоугольного приближения окружности. Окончательное сопротивление должно отличаться от формулы меньше чем на 0.1 процента, а от предыдущей сетки — меньше чем на 0.5 процента. Балансы тока и мощности дают дополнительные проверки знаков и нормировки.
Исходные данные
Кольцо изоляции с радиусами 2 и 5 мм; плоское поперечное сечение; глубина модели 10 км.
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| Внутренний диаметр | 4 | мм | Заданный параметр учебной модели |
| Наружный диаметр | 10 | мм | Заданный параметр учебной модели |
| Проводимость изоляции | 1,4 × 10⁻⁹ | См/м | Заданный параметр учебной модели |
| Длина | 10000 | м | Заданный параметр учебной модели |
| Контрольное напряжение | 1 | В | Заданный параметр учебной модели |
Порядок воспроизведения
- Создайте отдельную рабочую папку и поместите в неё 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,
}
)
MESHES = (0.4, 0.2, 0.1)
DEPTH_MM = 10e6
MATERIAL = "Слабопроводящая изоляция"
SIGMA = 1.4e-9
VOLTAGE = 1
LABEL_X = 3
LABEL_Y = 0
def polygon(points):
for x, y in points:
ci_addnode(x, y)
for number, (x, y) in enumerate(points):
x2, y2 = points[(number + 1) % len(points)]
ci_addsegment(x, y, x2, y2)
def terminal(x, y, name, mesh):
ci_selectsegment(x, y)
ci_setsegmentprop("<None>", mesh, 0, 0, 0, name)
ci_clearselected()
def circle(radius, conductor, angle):
ci_addnode(-radius, 0)
ci_addnode(radius, 0)
ci_addarc(-radius, 0, radius, 0, 180, angle)
ci_addarc(radius, 0, -radius, 0, 180, angle)
ci_selectarcsegment(0, radius)
ci_selectarcsegment(0, -radius)
ci_setarcsegmentprop(angle, "<None>", 0, 0, conductor)
ci_clearselected()
for level, mesh in enumerate(MESHES):
newdocument(3)
ci_probdef("millimeters", "planar", 0, 1e-10, DEPTH_MM, 30)
ci_addmaterial(MATERIAL, SIGMA, SIGMA, 1, 1, 0, 0)
ci_addconductorprop("Входной электрод", VOLTAGE, 0, 1)
ci_addconductorprop("Выходной электрод", 0, 0, 1)
circle(2, "Входной электрод", 4 / (2**level))
circle(5, "Выходной электрод", 4 / (2**level))
ci_addblocklabel(0, 0)
ci_selectlabel(0, 0)
ci_setblockprop("<No Mesh>", 0, mesh, 0)
ci_clearselected()
ci_addblocklabel(LABEL_X, LABEL_Y)
ci_selectlabel(LABEL_X, LABEL_Y)
ci_setblockprop(MATERIAL, 0, mesh, 1)
ci_clearselected()
model = directory + "/model-%02d.fec" % (level + 1)
ci_saveas(model)
ci_close()
# Проверяется именно записанная версия с кириллическими именами.
opendocument(model)
ci_analyze(1)
ci_loadsolution()
co_smooth("off")
potential_in, current_in = co_getconductorproperties("Входной электрод")
potential_out, current_out = co_getconductorproperties("Выходной электрод")
current = abs(complex(current_in))
co_groupselectblock(1)
power = real(co_blockintegral(0))
co_clearblock()
balance = abs(complex(current_in) + complex(current_out)) / current
power_error = abs(power - VOLTAGE * current) / (VOLTAGE * current)
row = {
"mesh_mm": mesh,
"model": "model-%02d.fec" % (level + 1),
"nodes": co_numnodes(),
"elements": co_numelements(),
"I_A": current,
"R_ohm": VOLTAGE / current,
"P_W": power,
"current_balance_relative": balance,
"power_balance_relative": power_error,
}
records.append(row)
check("Баланс токов, сетка %d" % (level + 1), balance, 1e-6)
check("Баланс мощности, сетка %d" % (level + 1), power_error, 1e-6)
co_close()
ci_close()
check(
"Сходимость сопротивления",
abs(records[-1]["R_ohm"] / records[-2]["R_ohm"] - 1),
0.005,
)
reference = math.log(5 / 2) / (2 * math.pi * 10000 * SIGMA)
check(
"Логарифмическая формула сопротивления изоляции",
abs(records[-1]["R_ohm"] / reference - 1),
0.001,
)
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. Выполнено проверок: 8. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.
| Относительная невязка тока | Сопротивление, Ом | Относительная невязка мощности | Модель | Узлов | Ток, А | Мощность, Вт | Масштаб сетки, мм | Элементов |
|---|---|---|---|---|---|---|---|---|
| 554,27376 × 10⁻¹² | 10410,226 | 598,96677 × 10⁻¹² | model-01.fec | 3188 | 96,059398 × 10⁻⁶ | 96,059398 × 10⁻⁶ | 0,4 | 6091 |
| 337,37424 × 10⁻¹² | 10410,839 | 623,44292 × 10⁻¹² | model-02.fec | 3352 | 96,053739 × 10⁻⁶ | 96,053739 × 10⁻⁶ | 0,2 | 6344 |
| 1,0434576 × 10⁻⁹ | 10414,292 | 779,92668 × 10⁻¹² | model-03.fec | 8487 | 96,021887 × 10⁻⁶ | 96,021887 × 10⁻⁶ | 0,1 | 16254 |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Баланс токов, сетка 1 | 554,3 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс мощности, сетка 1 | 599 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс токов, сетка 2 | 337,4 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс мощности, сетка 2 | 623,4 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс токов, сетка 3 | 1,043 × 10⁻⁹ | 1e-06 | Выполнен |
| Баланс мощности, сетка 3 | 779,9 × 10⁻¹² | 1e-06 | Выполнен |
| Сходимость сопротивления | 331,7 × 10⁻⁶ | 0,005 | Выполнен |
| Логарифмическая формула сопротивления изоляции | 220,2 × 10⁻⁶ | 0,001 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md9422 байт
- Решение электрического тока: model-01.anc308676 байт
- Модель электрического тока: model-01.fec1202 байт
- Решение электрического тока: model-02.anc324274 байт
- Модель электрического тока: model-02.fec1202 байт
- Решение электрического тока: model-03.anc833872 байт
- Модель электрического тока: model-03.fec1202 байт
- Программа встроенного Python: reproduce.py5158 байт
- Файл результатов: verification.json912 байт
Границы применимости
- Напряжение служит линейной нормировкой. Модель не описывает пробой, зависимость проводимости от поля, ёмкостный ток, концевую утечку, загрязнение поверхности или неравномерность температуры вдоль кабеля.
- Проверены сохранение, повторное открытие и расчёт точных файлов в FEMM 5.0 06Oct2026 со встроенным MicroPython. Проверка относится к данной учебной версии и к указанным численным критериям. Снимки интерфейса FEMM выполняются отдельным согласованным проходом.
- Постановка, объяснения и встроенная программа образуют самостоятельную лабораторную работу курса. Перед расчётом реального изделия необходимо уточнить геометрию, свойства, нагрузку и условия охлаждения.