Электрическое поле тока · Плоскопараллельная
Электрическое сопротивление тонкой пластины
Пример показывает, почему сопротивление короткого контакта нельзя получить простым делением длины пластины на площадь поперечного сечения. Ток сначала растекается от нижнего электрода, затем постепенно выравнивается по высоте полосы и выходит через правый торец. Наибольшая неоднородность возникает около конца короткого контакта. При этом измеряемое сопротивление остаётся конечной интегральной характеристикой, которую удобно проверять аналитически.
Принята полоса высотой h=6 мм, свободным участком g=20 мм и толщиной 1 мм. Полная длина равна h+g, а g обозначает расстояние от конца нижнего электрода до правой стороны. Это определение следует использовать и в геометрии, и в контрольной формуле. Основной результат — интегральное сопротивление пластины; особенности поля около конца электрода рассматриваются отдельно.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Растекание и сопротивление
В однородной стали потенциал удовлетворяет уравнению непрерывности постоянного тока. На двух контактах задан потенциал, остальные края электрически изолированы. Поток на каждом электроде вычисляется интегрально; сопротивление определяется через разность потенциалов и суммарный ток. Принят ноль на выходе и 0.02 В на входе. Общий сдвиг потенциалов не изменяет электрическое поле и может использоваться как дополнительный проверочный опыт.
Добавка 0.469 к числу квадратов учитывает область растекания и используется как независимый приближённый ориентир. Запись с тремя десятичными знаками не является точным решением произвольной конечной пластины. Допуск 0.5 процента учитывает округление поправки и остаточное влияние дискретизации.
Что проверять на сетке
Программа строит три сетки с ограничениями размера 0.6, 0.3 и 0.15 мм. На каждой проверяются равенство входного и выходного тока и совпадение объёмной джоулевой мощности с мощностью на выводах. Разность сопротивлений двух последних сеток должна быть меньше 0.5 процента. Наличие большого числа элементов около контакта объясняется работой генератора сетки и геометрической особенностью границы.
Сравнивайте ток или сопротивление, а не максимальную плотность тока в точке переключения граничных условий. В идеализированном остром конце контакта локальное поле чувствительно к сгущению сетки. Для оценки нагрева реального соединения потребуются радиус скругления и сопротивление контакта; таких данных исходный пример не задаёт.
Исходные данные
Прямоугольник 26 × 6 мм; нижний контакт 0 ≤ x ≤ 6 мм; правый контакт x=26 мм; глубина 1 мм.
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| h | 6 | мм | Заданный параметр учебной модели |
| g | 20 | мм | Заданный параметр учебной модели |
| Толщина d | 1 | мм | Заданный параметр учебной модели |
| Электропроводность стали | 10000000 | См/м | Заданный параметр учебной модели |
| Разность потенциалов | 0,02 | В | Заданный параметр учебной модели |
Порядок воспроизведения
- Создайте отдельную рабочую папку и поместите в неё 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.6, 0.3, 0.15)
DEPTH_MM = 1
MATERIAL = "Сталь пластины"
SIGMA = 10e6
VOLTAGE = 0.02
LABEL_X = 13
LABEL_Y = 3
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), (6, 0), (26, 0), (26, 6), (0, 6)])
terminal(3, 0, "Входной электрод", mesh)
terminal(26, 3, "Выходной электрод", 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,
}
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 = (20 / 6 + 0.469) / (10e6 * 0.001)
check(
"Аналитическое сопротивление с округлённой поправкой 0.469",
abs(records[-1]["R_ohm"] / reference - 1),
0.005,
)
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.
| Относительная невязка тока | Сопротивление, Ом | Относительная невязка мощности | Модель | Узлов | Ток, А | Мощность, Вт | Масштаб сетки, мм | Элементов |
|---|---|---|---|---|---|---|---|---|
| 690,00938 × 10⁻¹² | 379,44443 × 10⁻⁶ | 22,457583 × 10⁻¹² | model-01.fec | 2159 | 52,708641 | 1,0541728 | 0,6 | 4088 |
| 797,78529 × 10⁻¹² | 379,45183 × 10⁻⁶ | 364,94964 × 10⁻¹² | model-02.fec | 2215 | 52,707613 | 1,0541523 | 0,3 | 4185 |
| 1,9612142 × 10⁻⁹ | 379,60824 × 10⁻⁶ | 2,6189231 × 10⁻⁹ | model-03.fec | 8377 | 52,685895 | 1,0537179 | 0,15 | 16268 |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Баланс токов, сетка 1 | 690 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс мощности, сетка 1 | 22,46 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс токов, сетка 2 | 797,8 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс мощности, сетка 2 | 364,9 × 10⁻¹² | 1e-06 | Выполнен |
| Баланс токов, сетка 3 | 1,961 × 10⁻⁹ | 1e-06 | Выполнен |
| Баланс мощности, сетка 3 | 2,619 × 10⁻⁹ | 1e-06 | Выполнен |
| Сходимость сопротивления | 412,2 × 10⁻⁶ | 0,005 | Выполнен |
| Аналитическое сопротивление с округлённой поправкой 0.469 | 0,001644 | 0,005 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md9130 байт
- Решение электрического тока: model-01.anc201809 байт
- Модель электрического тока: model-01.fec1188 байт
- Решение электрического тока: model-02.anc206476 байт
- Модель электрического тока: model-02.fec1188 байт
- Решение электрического тока: model-03.anc818317 байт
- Модель электрического тока: model-03.fec1188 байт
- Программа встроенного Python: reproduce.py5104 байт
- Файл результатов: verification.json912 байт
Границы применимости
- Проводимость постоянна и изотропна; контакт идеален; температурная зависимость, магнитное поле и переходные процессы отсутствуют.
- Проверены сохранение, повторное открытие и расчёт точных файлов в FEMM 5.0 06Oct2026 со встроенным MicroPython. Проверка относится к данной учебной версии и к указанным численным критериям. Снимки интерфейса FEMM выполняются отдельным согласованным проходом.
- Постановка, объяснения и встроенная программа образуют самостоятельную лабораторную работу курса. Перед расчётом реального изделия необходимо уточнить геометрию, свойства, нагрузку и условия охлаждения.