Электростатика · Плоскопараллельная
Градированная изоляция: распределение поля в слоях
Сравните однослойную и двухслойную изоляцию кабеля при одинаковых размерах и напряжении. Главный вопрос — где возникает максимум E и как выбор ε перераспределяет напряжение между слоями.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
| Учебная модель FEMM 5 | Причина |
|---|---|
| Две отдельные полные круговые модели с одинаковым напряжением | Результаты сравниваются без взаимодействия двух соседних кабелей. |
| Однослойный вариант имеет искусственную границу c с одинаковыми ε по обе стороны | Геометрическое разбиение и сеточная процедура сопоставимы. |
| Максимум по заряду и контрольные точки вдали от интерфейса | Проверяется физический скачок E и устойчивость интегрального результата. |
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Последовательные цилиндрические слои
На границе диэлектриков без свободного поверхностного заряда нормальная компонента D непрерывна. Поэтому в каждом слое E=q/(2πε₀εᵢlr), а напряжения слоёв складываются. Проницаемость изменяет поле, но не отменяет зависимость 1/r внутри слоя.
Максимум поля и выбор проницаемостей
Внутри однородного слоя поле наибольшее у его внутреннего радиуса. Для двух слоёв необходимо сравнить E₁(a) и E₂(c+), учитывая скачок E на интерфейсе. При ε₁=10 и ε₂=3,68 эти максимумы почти равны.
При U=110 кВ и радиусах 7 и 36 мм однослойная изоляция даёт примерно 9,60 кВ/мм, двухслойная — 5,75 кВ/мм. Перевод единиц следует проверять напрямую: 1 кВ/мм=10⁶ В/м. Эти числа не являются допустимыми рабочими напряжённостями материала.
В FEMM максимум восстанавливается по интегральному заряду и точной радиальной формуле, а поле дополнительно проверяется в точках 10 и 25 мм. Такой подход исключает ложную интерпретацию элемента непосредственно на границе как точного максимума.
Исходные данные
Плоскопараллельная
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| Радиус жилы a | 7 | мм | Условие учебной задачи |
| Радиус межслойной границы c | 19 | мм | Условие учебной задачи |
| Радиус оболочки b | 36 | мм | Условие учебной задачи |
| Напряжение | 110 | кВ | Условие учебной задачи |
| Проницаемость однослойной изоляции | 2,3 | 1 | Условие учебной задачи |
| Проницаемость внутреннего слоя | 10 | 1 | Условие учебной задачи |
| Проницаемость внешнего слоя | 3,68 | 1 | Условие учебной задачи |
Порядок воспроизведения
- Изучите размеры, материалы, возбуждение и выбранную двумерную постановку. Сначала вычислите аналитический ориентир в единицах СИ.
- Скачайте файлы по отдельным ссылкам в отдельную рабочую папку. Откройте reproduce.py во встроенном редакторе Python FEMM 5 и выполните сохранённый файл.
- Программа строит русифицированные модели, сохраняет их, закрывает и открывает заново. Затем выполняет расчёт и читает свойства проводников по точному русскому имени.
- Сравните три уровня пространственной сетки. В таблицах сохранены число узлов и элементов, интегральные величины и независимые критерии. Дополнительные режимы указаны в постановке.
- Откройте самый подробный сохранённый вход и соответствующее решение. Проверьте смысл единиц, знаков и объёмного множителя; новый запуск сохранит результаты в новой папке calculated-NN.
Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте reproduce.py во встроенном Python FEMM 5 и выполните его. Сохраните имена файлов и структуру подпапок. Условия конкретного запуска и путь новых результатов указаны в комментариях программы.
Программа встроенного Python FEMM 5
"""Градирование изоляции высоковольтного кабеля.
Среда: встроенный MicroPython FEMM 5; команды FEMM доступны глобально.
Геометрические размеры: миллиметры; поля и интегралы возвращаются в СИ.
Все материалы и проводники имеют русские имена. Каждая модель сохраняется,
закрывается и повторно открывается до нового расчёта, включая кириллицу.
Запуск создаёт новую папку calculated-NN рядом с программой; опубликованные
модели и предыдущие расчёты не перезаписываются. Все необходимые
исходные данные включены. Условия задачи и ограничения описаны в README.md.
"""
import os
import sys
import math
import json
saved = globals().get('__file__', '') or (sys.argv[0] if sys.argv else '')
base = os.path.dirname(os.path.abspath(saved)) if saved else os.getcwd()
index = 1
while os.path.exists(base + '/calculated-%02d' % index):
index += 1
directory = base + '/calculated-%02d' % index
os.mkdir(directory)
records = []
checks = []
EPS0 = 8.85418781762e-12
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})
def label(x, y, material, mesh, group=1):
ei_addblocklabel(x, y)
ei_selectlabel(x, y)
ei_setblockprop(material, 0, mesh, group)
ei_clearselected()
def circle(x, radius, conductor, angle):
ei_addnode(x - radius, 0)
ei_addnode(x + radius, 0)
ei_addarc(x - radius, 0, x + radius, 0, 180, angle)
ei_addarc(x + radius, 0, x - radius, 0, 180, angle)
ei_selectarcsegment(x, radius)
ei_selectarcsegment(x, -radius)
ei_setarcsegmentprop(angle, '<None>', 0, 0, conductor)
ei_clearselected()
def solve(model):
ei_saveas(model)
ei_close()
opendocument(model)
ei_analyze(1)
ei_loadsolution()
eo_smooth('off')
def electric_result(mesh, model, input_name, output_name, exact_C):
voltage_in, charge_in = eo_getconductorproperties(input_name)
voltage_out, charge_out = eo_getconductorproperties(output_name)
voltage = real(voltage_in) - real(voltage_out)
charge = real(charge_in)
eo_groupselectblock(1)
energy = real(eo_blockintegral(0))
eo_clearblock()
capacitance = charge / voltage
energy_C = 2 * energy / voltage ** 2
row = {'mesh_mm': mesh, 'model': os.path.basename(model),
'nodes': eo_numnodes(), 'elements': eo_numelements(),
'voltage_V': voltage, 'charge_C': charge, 'energy_J': energy,
'capacitance_F': capacitance, 'energy_capacitance_F': energy_C,
'analytic_capacitance_F': exact_C,
'analytic_C_relative_error': abs(capacitance / exact_C - 1),
'energy_charge_relative_error': abs(energy_C / capacitance - 1)}
records.append(row)
check('Энергия и заряд: ' + os.path.basename(model),
row['energy_charge_relative_error'], 1e-5)
return row
U = 110000
a = 0.007
c = 0.019
b = 0.036
for kind in ('Однослойная изоляция', 'Градированная изоляция'):
graded = kind == 'Градированная изоляция'
eps1, eps2 = (10, 3.68) if graded else (2.3, 2.3)
denominator = math.log(c / a) / eps1 + math.log(b / c) / eps2
exact_C = 2 * math.pi * EPS0 / denominator
emax = max(U / (denominator * eps1 * a),
U / (denominator * eps2 * c))
for level, mesh in enumerate((0.6, 0.3, 0.15)):
newdocument(1)
ei_probdef('millimeters', 'planar', 1e-10, 1000, 30)
ei_addmaterial('Внутренний слой изоляции', eps1, eps1, 0)
ei_addmaterial('Внешний слой изоляции', eps2, eps2, 0)
ei_addconductorprop('Жила под напряжением', U, 0, 1)
ei_addconductorprop('Заземлённая оболочка', 0, 0, 1)
angle = 4 / (2 ** level)
circle(0, 7, 'Жила под напряжением', angle)
circle(0, 19, '<None>', angle)
circle(0, 36, 'Заземлённая оболочка', angle)
label(0, 0, '<No Mesh>', mesh, 0)
label(12, 0, 'Внутренний слой изоляции', mesh)
label(25, 0, 'Внешний слой изоляции', mesh)
stem = 'graded' if graded else 'single'
model = directory + '/' + stem + '-%02d.fee' % (level + 1)
solve(model)
row = electric_result(mesh, model, 'Жила под напряжением', 'Заземлённая оболочка', exact_C)
row['insulation'] = kind
row['analytic_Emax_kV_mm'] = emax / 1e6
from_charge = max(row['charge_C'] / (2 * math.pi * EPS0 * eps1 * a),
row['charge_C'] / (2 * math.pi * EPS0 * eps2 * c))
row['Emax_from_charge_kV_mm'] = from_charge / 1e6
for sample_r, eps, field_key in ((0.010, eps1, 'E_10mm_kV_mm'),
(0.025, eps2, 'E_25mm_kV_mm')):
values = eo_getpointvalues(sample_r * 1000, 0)
field = math.sqrt(real(values[3]) ** 2 + real(values[4]) ** 2)
expected = U / (denominator * eps * sample_r)
row[field_key] = field / 1e6
check('Радиальное поле ' + kind + ', r=' + str(sample_r),
abs(field / expected - 1), 0.04)
check('Аналитическая ёмкость ' + kind + ', сетка %d' % (level + 1),
row['analytic_C_relative_error'], 0.003)
eo_close()
ei_close()
check('Сходимость ёмкости ' + kind, abs(records[-1]['capacitance_F'] /
records[-2]['capacitance_F'] - 1), 0.001)
single, graded = records[2], records[5]
check('Градирование снижает максимум поля', max(0, graded['Emax_from_charge_kV_mm'] /
single['Emax_from_charge_kV_mm'] - 1), 0)
columns = {
'mesh_mm': 'Размер сетки, мм', 'model': 'Файл модели',
'nodes': 'Узлов', 'elements': 'Элементов',
'voltage_V': 'Разность потенциалов, В', 'charge_C': 'Заряд, Кл',
'energy_J': 'Энергия, Дж', 'capacitance_F': 'Ёмкость по заряду, Ф',
'energy_capacitance_F': 'Ёмкость по энергии, Ф',
'analytic_capacitance_F': 'Аналитическая ёмкость, Ф',
'analytic_C_relative_error': 'Относительная ошибка ёмкости',
'energy_charge_relative_error': 'Невязка энергии и заряда',
'E_7p5mm_V_m': 'Поле при r=7,5 мм, В/м',
'analytic_E_7p5mm_V_m': 'Аналитическое поле при r=7,5 мм, В/м',
'E_150mm_V_m': 'Поле при r=150 мм, В/м',
'analytic_E_150mm_V_m': 'Аналитическое поле при r=150 мм, В/м',
'outer_radius_mm': 'Радиус внешней границы, мм',
'insulation': 'Изоляция', 'analytic_Emax_kV_mm': 'Аналитический максимум поля, кВ/мм',
'Emax_from_charge_kV_mm': 'Максимум поля по заряду, кВ/мм',
'E_10mm_kV_mm': 'Поле при r=10 мм, кВ/мм',
'E_25mm_kV_mm': 'Поле при r=25 мм, кВ/мм',
'conductivity_S_m': 'Эквивалентная проводимость, См/м',
'I_real_A': 'Активная компонента амплитуды тока, А',
'I_imag_A': 'Квадратурная компонента амплитуды тока, А',
'analytic_I_real_A': 'Аналитическая активная компонента, А',
'analytic_I_imag_A': 'Аналитическая квадратурная компонента, А',
'losses_W': 'Диэлектрические потери, Вт',
'analytic_losses_W': 'Аналитические потери, Вт',
'terminal_power_W': 'Средняя мощность электрода, Вт',
'apparent_power_VA': 'Полная мощность, ВА',
'U_RMS_V': 'Действующее напряжение, В', 'U_amplitude_V': 'Амплитуда напряжения, В'
}
result = {'runtime': 'FEMM 5.0; встроенный MicroPython', 'records': records,
'checks': checks, 'columns': columns,
'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: 6. Выполнено проверок: 27. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.
| Ёмкость по заряду, Ф | Поле при r=25 мм, кВ/мм | Файл модели | Заряд, Кл | Аналитическая ёмкость, Ф | Узлов | Невязка энергии и заряда | Аналитический максимум поля, кВ/мм | Разность потенциалов, В | Ёмкость по энергии, Ф | Максимум поля по заряду, кВ/мм | Элементов | Относительная ошибка ёмкости | Поле при r=10 мм, кВ/мм | Энергия, Дж | Изоляция | Размер сетки, мм |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 78,170666 × 10⁻¹² | 2,6728086 | single-01.fee | 8,5987733 × 10⁻⁶ | 78,135118 × 10⁻¹² | 12823 | 5,35616 × 10⁻¹² | 9,5958728 | 110000 | 78,170666 × 10⁻¹² | 9,6002386 | 25190 | 454,95678 × 10⁻⁶ | 6,8788938 | 0,47293253 | Однослойная изоляция | 0,6 |
| 78,144091 × 10⁻¹² | 2,705014 | single-02.fee | 8,5958501 × 10⁻⁶ | 78,135118 × 10⁻¹² | 51216 | 115,86199 × 10⁻¹² | 9,5958728 | 110000 | 78,144091 × 10⁻¹² | 9,5969748 | 101509 | 114,84132 × 10⁻⁶ | 6,6632842 | 0,47277175 | Однослойная изоляция | 0,3 |
| 78,137356 × 10⁻¹² | 2,6917913 | single-03.fee | 8,5951092 × 10⁻⁶ | 78,135118 × 10⁻¹² | 203040 | 1,0675072 × 10⁻⁹ | 9,5958728 | 110000 | 78,137357 × 10⁻¹² | 9,5961477 | 404255 | 28,644663 × 10⁻⁶ | 6,6728355 | 0,47273101 | Однослойная изоляция | 0,15 |
| 203,46381 × 10⁻¹² | 4,3480171 | graded-01.fee | 22,381019 × 10⁻⁶ | 203,39768 × 10⁻¹² | 12823 | 116,78902 × 10⁻¹² | 5,7518647 | 110000 | 203,46381 × 10⁻¹² | 5,7537349 | 25190 | 325,13701 × 10⁻⁶ | 4,1180378 | 1,2309561 | Градированная изоляция | 0,6 |
| 203,4142 × 10⁻¹² | 4,4008294 | graded-02.fee | 22,375562 × 10⁻⁶ | 203,39768 × 10⁻¹² | 51216 | 968,73309 × 10⁻¹² | 5,7518647 | 110000 | 203,4142 × 10⁻¹² | 5,7523318 | 101509 | 81,200465 × 10⁻⁶ | 3,9893416 | 1,2306559 | Градированная изоляция | 0,3 |
| 203,40179 × 10⁻¹² | 4,3794285 | graded-03.fee | 22,374197 × 10⁻⁶ | 203,39768 × 10⁻¹² | 203040 | 1,896413 × 10⁻⁹ | 5,7518647 | 110000 | 203,40179 × 10⁻¹² | 5,7519809 | 404255 | 20,203369 × 10⁻⁶ | 3,9951613 | 1,2305808 | Градированная изоляция | 0,15 |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Энергия и заряд: single-01.fee | 5,356 × 10⁻¹² | 1e-05 | Выполнен |
| Радиальное поле Однослойная изоляция, r=0.01 | 0,02409 | 0,04 | Выполнен |
| Радиальное поле Однослойная изоляция, r=0.025 | 0,005224 | 0,04 | Выполнен |
| Аналитическая ёмкость Однослойная изоляция, сетка 1 | 455 × 10⁻⁶ | 0,003 | Выполнен |
| Энергия и заряд: single-02.fee | 115,9 × 10⁻¹² | 1e-05 | Выполнен |
| Радиальное поле Однослойная изоляция, r=0.01 | 0,008013 | 0,04 | Выполнен |
| Радиальное поле Однослойная изоляция, r=0.025 | 0,006762 | 0,04 | Выполнен |
| Аналитическая ёмкость Однослойная изоляция, сетка 2 | 114,8 × 10⁻⁶ | 0,003 | Выполнен |
| Энергия и заряд: single-03.fee | 1,068 × 10⁻⁹ | 1e-05 | Выполнен |
| Радиальное поле Однослойная изоляция, r=0.01 | 0,006591 | 0,04 | Выполнен |
| Радиальное поле Однослойная изоляция, r=0.025 | 0,001841 | 0,04 | Выполнен |
| Аналитическая ёмкость Однослойная изоляция, сетка 3 | 28,64 × 10⁻⁶ | 0,003 | Выполнен |
| Сходимость ёмкости Однослойная изоляция | 86,19 × 10⁻⁶ | 0,001 | Выполнен |
| Энергия и заряд: graded-01.fee | 116,8 × 10⁻¹² | 1e-05 | Выполнен |
| Радиальное поле Градированная изоляция, r=0.01 | 0,02395 | 0,04 | Выполнен |
| Радиальное поле Градированная изоляция, r=0.025 | 0,005353 | 0,04 | Выполнен |
| Аналитическая ёмкость Градированная изоляция, сетка 1 | 325,1 × 10⁻⁶ | 0,003 | Выполнен |
| Энергия и заряд: graded-02.fee | 968,7 × 10⁻¹² | 1e-05 | Выполнен |
| Радиальное поле Градированная изоляция, r=0.01 | 0,008047 | 0,04 | Выполнен |
| Радиальное поле Градированная изоляция, r=0.025 | 0,006728 | 0,04 | Выполнен |
| Аналитическая ёмкость Градированная изоляция, сетка 2 | 81,2 × 10⁻⁶ | 0,003 | Выполнен |
| Энергия и заряд: graded-03.fee | 1,896 × 10⁻⁹ | 1e-05 | Выполнен |
| Радиальное поле Градированная изоляция, r=0.01 | 0,0066 | 0,04 | Выполнен |
| Радиальное поле Градированная изоляция, r=0.025 | 0,001833 | 0,04 | Выполнен |
| Аналитическая ёмкость Градированная изоляция, сетка 3 | 20,2 × 10⁻⁶ | 0,003 | Выполнен |
| Сходимость ёмкости Градированная изоляция | 60,99 × 10⁻⁶ | 0,001 | Выполнен |
| Градирование снижает максимум поля | 0 | 0 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md1436 байт
- Электростатическая модель: graded-01.fee1303 байт
- Электростатическое решение: graded-01.res1250113 байт
- Электростатическая модель: graded-02.fee1303 байт
- Электростатическое решение: graded-02.res5216022 байт
- Электростатическая модель: graded-03.fee1303 байт
- Электростатическое решение: graded-03.res21548842 байт
- Программа встроенного Python: reproduce.py9069 байт
- Электростатическая модель: single-01.fee1335 байт
- Электростатическое решение: single-01.res1250247 байт
- Электростатическая модель: single-02.fee1335 байт
- Электростатическое решение: single-02.res5216025 байт
- Электростатическая модель: single-03.fee1335 байт
- Электростатическое решение: single-03.res21548840 байт
Границы применимости
- Линейная электростатическая модель не учитывает проводимость, поверхностный заряд, старение, температуру и частичные разряды.
- Снижение максимума E не доказывает электрическую прочность реального кабеля.
- Полученные максимумы относятся к идеальной радиальной геометрии.