Электрическое поле тока · Плоскопараллельная
Распределение тока в проводнике переменного сечения
Проводник с боковым прямоугольным вырезом связывает привычное правило сопротивления участка с двумерным перераспределением тока. В узком месте средняя плотность тока возрастает, но переход к этому месту создаёт дополнительную неоднородность. По этой причине сумма сопротивлений трёх прямоугольных участков даёт полезную оценку снизу, однако не заменяет решение поля. Пример подходит для обсуждения шин, токоподводов и геометрических концентраторов.
Выбрана внешняя область 121 × 293 мм и боковой вырез 71 × 50 мм. Нижняя и верхняя границы выреза находятся на высоте 123 и 173 мм. Небольшое смещение выреза относительно середины намеренно сохранено, чтобы не полагаться на избыточное условие симметрии. Глубина 1 м служит явной нормировкой: расчёт описывает сопротивление и мощность метровой полосы, а не неуказанную толщину реального изделия.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Уравнение проводимости и нормировка по глубине
Удельное сопротивление в данном примере необычно велико для металлической шины: 0.0097784 Ом м. Оно сохранено как учебный параметр источника. Электропроводность равна обратной величине. Напряжение 10 В задано на верхнем торце, нижний торец имеет нулевой потенциал; боковые стенки и стенки выреза не выпускают ток.
Программа принимает глубину 1 м и прямо сообщает этот выбор. Ток и мощность относятся к этой глубине. Для другой постоянной глубины ток и мощность пропорциональны глубине, а сопротивление обратно пропорционально ей. Распределение потенциала и плотность тока от этой нормировки не меняются. Перед переносом вывода на изделие следует подставить его фактическую толщину.
Интегральная проверка и локальное поле
Для контрольной оценки представьте каждый горизонтальный слой отдельным прямоугольным сопротивлением с равномерным током. Суммарная высота широких участков составляет 243 мм, высота узкого — 50 мм, ширина узкого участка — 50 мм. Получается нижняя энергетическая граница сопротивления. Двумерное растекание увеличивает потери и сопротивление относительно этой идеализированной оценки.
Три сетки с ограничениями 8, 4 и 2 мм проверяют устойчивость сопротивления и плотности тока в точке (96,148) мм. Точка находится внутри шейки и удалена от входящих углов. Допуск по сопротивлению равен 0.5 процента, по этой локальной плотности — 1 процент. На каждой сетке дополнительно проверяются баланс токов и равенство мощности джоулевых потерь и мощности источника питания. Максимум в идеальном углу не используется как критерий приёмки.
Исходные данные
Прямоугольник 121 × 293 мм с боковым вырезом 71 × 50 мм; вырез 123 ≤ y ≤ 173 мм; глубина 1 м.
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| Габарит | 121 × 293 | мм | Заданный параметр учебной модели |
| Вырез | 71 × 50 | мм | Заданный параметр учебной модели |
| Границы выреза y | 123; 173 | мм | Заданный параметр учебной модели |
| Удельное сопротивление | 0,009778 | Ом м | Заданный параметр учебной модели |
| Напряжение | 10 | В | Заданный параметр учебной модели |
| Глубина | 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 = (8, 4, 2)
DEPTH_MM = 1000
MATERIAL = "Проводник переменного сечения"
SIGMA = 1 / 0.0097784
VOLTAGE = 10
LABEL_X = 100
LABEL_Y = 146
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)
polygon(
[
(0, 0),
(121, 0),
(121, 293),
(0, 293),
(0, 173),
(71, 173),
(71, 123),
(0, 123),
]
)
terminal(60, 293, "Входной электрод", mesh)
terminal(60, 0, "Выходной электрод", mesh)
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,
}
values = co_getpointvalues(96, 148)
row["J_neck_A_m2"] = math.sqrt(
abs(complex(values[1])) ** 2 + abs(complex(values[2])) ** 2
)
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,
)
check(
"Сходимость плотности тока вдали от входящего угла",
abs(records[-1]["J_neck_A_m2"] / records[-2]["J_neck_A_m2"] - 1),
0.01,
)
# Нижняя граница следует из одномерной цепи с равномерным током в каждом сечении.
lower = 0.0097784 * (0.243 / 0.121 + 0.050 / 0.050)
check(
"Вариационная нижняя граница сопротивления",
max(0, lower / records[-1]["R_ohm"] - 1),
1e-6,
)
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. Выполнено проверок: 9. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.
| Ток, А | Масштаб сетки, мм | Узлов | Мощность, Вт | Элементов | Плотность тока в сужении, А/м² | Относительная невязка тока | Сопротивление, Ом | Относительная невязка мощности | Модель |
|---|---|---|---|---|---|---|---|---|---|
| 275,85236 | 8 | 3126 | 2758,5236 | 5952 | 5498,9847 | 3,8874189 × 10⁻⁹ | 0,036251276 | 4,1378038 × 10⁻⁹ | model-01.fec |
| 275,85256 | 4 | 3168 | 2758,5256 | 6024 | 5498,9893 | 2,9615226 × 10⁻⁹ | 0,036251249 | 4,0673524 × 10⁻⁹ | model-02.fec |
| 275,71929 | 2 | 9664 | 2757,1929 | 18782 | 5448,9948 | 178,90529 × 10⁻¹² | 0,036268772 | 2,1286849 × 10⁻⁹ | model-03.fec |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Баланс токов, сетка 1 | 3,887 × 10⁻⁹ | 1e-06 | Выполнен |
| Баланс мощности, сетка 1 | 4,138 × 10⁻⁹ | 1e-06 | Выполнен |
| Баланс токов, сетка 2 | 2,962 × 10⁻⁹ | 1e-06 | Выполнен |
| Баланс мощности, сетка 2 | 4,067 × 10⁻⁹ | 1e-06 | Выполнен |
| Баланс токов, сетка 3 | 178,9 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс мощности, сетка 3 | 2,129 × 10⁻⁹ | 1e-06 | Выполнен |
| Сходимость сопротивления | 483,4 × 10⁻⁶ | 0,005 | Выполнен |
| Сходимость плотности тока вдали от входящего угла | 0,009092 | 0,01 | Выполнен |
| Вариационная нижняя граница сопротивления | 0 | 1e-06 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md9504 байт
- Решение электрического тока: model-01.anc289352 байт
- Модель электрического тока: model-01.fec1291 байт
- Решение электрического тока: model-02.anc292615 байт
- Модель электрического тока: model-02.fec1291 байт
- Решение электрического тока: model-03.anc923417 байт
- Модель электрического тока: model-03.fec1291 байт
- Программа встроенного Python: reproduce.py5760 байт
- Файл результатов: verification.json912 байт
Границы применимости
- Острые входящие углы идеализированы. Без скругления и тепловой задачи найденная точечная плотность тока не определяет допустимый длительный ток изделия.
- Проверены сохранение, повторное открытие и расчёт точных файлов в FEMM 5.0 06Oct2026 со встроенным MicroPython. Проверка относится к данной учебной версии и к указанным численным критериям. Снимки интерфейса FEMM выполняются отдельным согласованным проходом.
- Постановка, объяснения и встроенная программа образуют самостоятельную лабораторную работу курса. Перед расчётом реального изделия необходимо уточнить геометрию, свойства, нагрузку и условия охлаждения.