FEMM 5

Электростатика · Плоскопараллельная

Градированная изоляция: распределение поля в слоях

Сравните однослойную и двухслойную изоляцию кабеля при одинаковых размерах и напряжении. Главный вопрос — где возникает максимум E и как выбор ε перераспределяет напряжение между слоями.

Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.

Допущения и устройство учебной модели

Принятые допущения и их назначение
Учебная модель FEMM 5Причина
Две отдельные полные круговые модели с одинаковым напряжениемРезультаты сравниваются без взаимодействия двух соседних кабелей.
Однослойный вариант имеет искусственную границу c с одинаковыми ε по обе стороныГеометрическое разбиение и сеточная процедура сопоставимы.
Максимум по заряду и контрольные точки вдали от интерфейсаПроверяется физический скачок E и устойчивость интегрального результата.

Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.

Физическая и математическая постановка

Последовательные цилиндрические слои

На границе диэлектриков без свободного поверхностного заряда нормальная компонента D непрерывна. Поэтому в каждом слое E=q/(2πε₀εᵢlr), а напряжения слоёв складываются. Проницаемость изменяет поле, но не отменяет зависимость 1/r внутри слоя.

S=\frac{\ln(c/a)}{\varepsilon_1}+\frac{\ln(b/c)}{\varepsilon_2},\qquad C=\frac{2\pi\varepsilon_0 l}{S}
E_i(r)=\frac{U}{S\varepsilon_i r}

Максимум поля и выбор проницаемостей

Внутри однородного слоя поле наибольшее у его внутреннего радиуса. Для двух слоёв необходимо сравнить E₁(a) и E₂(c+), учитывая скачок E на интерфейсе. При ε₁=10 и ε₂=3,68 эти максимумы почти равны.

При U=110 кВ и радиусах 7 и 36 мм однослойная изоляция даёт примерно 9,60 кВ/мм, двухслойная — 5,75 кВ/мм. Перевод единиц следует проверять напрямую: 1 кВ/мм=10⁶ В/м. Эти числа не являются допустимыми рабочими напряжённостями материала.

В FEMM максимум восстанавливается по интегральному заряду и точной радиальной формуле, а поле дополнительно проверяется в точках 10 и 25 мм. Такой подход исключает ложную интерпретацию элемента непосредственно на границе как точного максимума.

E_{\max}=\max\left(\frac{U}{S\varepsilon_1 a},\frac{U}{S\varepsilon_2 c}\right)

Исходные данные

Плоскопараллельная

Величины, единицы и происхождение параметров
ПараметрЗначениеЕдиницаПроисхождение
Радиус жилы a7ммУсловие учебной задачи
Радиус межслойной границы c19ммУсловие учебной задачи
Радиус оболочки b36ммУсловие учебной задачи
Напряжение110кВУсловие учебной задачи
Проницаемость однослойной изоляции2,31Условие учебной задачи
Проницаемость внутреннего слоя101Условие учебной задачи
Проницаемость внешнего слоя3,681Условие учебной задачи

Порядок воспроизведения

  1. Изучите размеры, материалы, возбуждение и выбранную двумерную постановку. Сначала вычислите аналитический ориентир в единицах СИ.
  2. Скачайте файлы по отдельным ссылкам в отдельную рабочую папку. Откройте reproduce.py во встроенном редакторе Python FEMM 5 и выполните сохранённый файл.
  3. Программа строит русифицированные модели, сохраняет их, закрывает и открывает заново. Затем выполняет расчёт и читает свойства проводников по точному русскому имени.
  4. Сравните три уровня пространственной сетки. В таблицах сохранены число узлов и элементов, интегральные величины и независимые критерии. Дополнительные режимы указаны в постановке.
  5. Откройте самый подробный сохранённый вход и соответствующее решение. Проверьте смысл единиц, знаков и объёмного множителя; новый запуск сохранит результаты в новой папке calculated-NN.

Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте reproduce.py во встроенном Python FEMM 5 и выполните его. Сохраните имена файлов и структуру подпапок. Условия конкретного запуска и путь новых результатов указаны в комментариях программы.

Программа встроенного Python FEMM 5
Python · reproduce.py
"""Градирование изоляции высоковольтного кабеля.
Среда: встроенный 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'], 'Не выполнен численный критерий'

Картина рассчитанного поля

Потенциал, В: graded-03.res
Визуализация сохранённого решения FEMM 5 graded-03.res. Электрический потенциал по сохранённым узловым значениям. Показан увеличенный фрагмент расчётной области. Контуры деталей взяты из той же модели. Области вне сохранённых треугольников не заполняются. Это научный график сохранённых данных. Нажмите на карту, чтобы открыть её отдельно и увеличить.

Окна FEMM 5

Снимки интерфейса FEMM показывают геометрию, настройки и работу с результатами в FEMM 5. Откройте изображение, чтобы рассмотреть подписи и значения в полном размере.

Полная геометрия двухслойной изоляции кабеля: жила, граница слоёв и внешний экран. Зелёные точки — метки областей; длинные имена скрыты только в отображении.
Полная геометрия двухслойной изоляции кабеля: жила, граница слоёв и внешний экран. Зелёные точки — метки областей; длинные имена скрыты только в отображении. Открыть в полном размере
Сохранённое решение «Градированная изоляция: распределение поля в слоях». Цвет показывает потенциал V в вольтах, чёрные линии — эквипотенциали. Показана увеличенная рабочая область двухслойной изоляции.
Сохранённое решение «Градированная изоляция: распределение поля в слоях». Цвет показывает потенциал V в вольтах, чёрные линии — эквипотенциали. Показана увеличенная рабочая область двухслойной изоляции. Открыть в полном размере

Результаты и численные проверки

Сохранено решений FEMM: 6. Выполнено проверок: 27. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.

Результаты расчётов и производные итоги
Ёмкость по заряду, ФПоле при r=25 мм, кВ/ммФайл моделиЗаряд, КлАналитическая ёмкость, ФУзловНевязка энергии и зарядаАналитический максимум поля, кВ/ммРазность потенциалов, ВЁмкость по энергии, ФМаксимум поля по заряду, кВ/ммЭлементовОтносительная ошибка ёмкостиПоле при r=10 мм, кВ/ммЭнергия, ДжИзоляцияРазмер сетки, мм
78,170666 × 10⁻¹²2,6728086single-01.fee8,5987733 × 10⁻⁶78,135118 × 10⁻¹²128235,35616 × 10⁻¹²9,595872811000078,170666 × 10⁻¹²9,600238625190454,95678 × 10⁻⁶6,87889380,47293253Однослойная изоляция0,6
78,144091 × 10⁻¹²2,705014single-02.fee8,5958501 × 10⁻⁶78,135118 × 10⁻¹²51216115,86199 × 10⁻¹²9,595872811000078,144091 × 10⁻¹²9,5969748101509114,84132 × 10⁻⁶6,66328420,47277175Однослойная изоляция0,3
78,137356 × 10⁻¹²2,6917913single-03.fee8,5951092 × 10⁻⁶78,135118 × 10⁻¹²2030401,0675072 × 10⁻⁹9,595872811000078,137357 × 10⁻¹²9,596147740425528,644663 × 10⁻⁶6,67283550,47273101Однослойная изоляция0,15
203,46381 × 10⁻¹²4,3480171graded-01.fee22,381019 × 10⁻⁶203,39768 × 10⁻¹²12823116,78902 × 10⁻¹²5,7518647110000203,46381 × 10⁻¹²5,753734925190325,13701 × 10⁻⁶4,11803781,2309561Градированная изоляция0,6
203,4142 × 10⁻¹²4,4008294graded-02.fee22,375562 × 10⁻⁶203,39768 × 10⁻¹²51216968,73309 × 10⁻¹²5,7518647110000203,4142 × 10⁻¹²5,752331810150981,200465 × 10⁻⁶3,98934161,2306559Градированная изоляция0,3
203,40179 × 10⁻¹²4,3794285graded-03.fee22,374197 × 10⁻⁶203,39768 × 10⁻¹²2030401,896413 × 10⁻⁹5,7518647110000203,40179 × 10⁻¹²5,751980940425520,203369 × 10⁻⁶3,99516131,2305808Градированная изоляция0,15
Проверки опубликованного расчёта
КритерийПолученоДопуск или ожидаемое значениеИтог
Энергия и заряд: single-01.fee5,356 × 10⁻¹²1e-05Выполнен
Радиальное поле Однослойная изоляция, r=0.010,024090,04Выполнен
Радиальное поле Однослойная изоляция, r=0.0250,0052240,04Выполнен
Аналитическая ёмкость Однослойная изоляция, сетка 1455 × 10⁻⁶0,003Выполнен
Энергия и заряд: single-02.fee115,9 × 10⁻¹²1e-05Выполнен
Радиальное поле Однослойная изоляция, r=0.010,0080130,04Выполнен
Радиальное поле Однослойная изоляция, r=0.0250,0067620,04Выполнен
Аналитическая ёмкость Однослойная изоляция, сетка 2114,8 × 10⁻⁶0,003Выполнен
Энергия и заряд: single-03.fee1,068 × 10⁻⁹1e-05Выполнен
Радиальное поле Однослойная изоляция, r=0.010,0065910,04Выполнен
Радиальное поле Однослойная изоляция, r=0.0250,0018410,04Выполнен
Аналитическая ёмкость Однослойная изоляция, сетка 328,64 × 10⁻⁶0,003Выполнен
Сходимость ёмкости Однослойная изоляция86,19 × 10⁻⁶0,001Выполнен
Энергия и заряд: graded-01.fee116,8 × 10⁻¹²1e-05Выполнен
Радиальное поле Градированная изоляция, r=0.010,023950,04Выполнен
Радиальное поле Градированная изоляция, r=0.0250,0053530,04Выполнен
Аналитическая ёмкость Градированная изоляция, сетка 1325,1 × 10⁻⁶0,003Выполнен
Энергия и заряд: graded-02.fee968,7 × 10⁻¹²1e-05Выполнен
Радиальное поле Градированная изоляция, r=0.010,0080470,04Выполнен
Радиальное поле Градированная изоляция, r=0.0250,0067280,04Выполнен
Аналитическая ёмкость Градированная изоляция, сетка 281,2 × 10⁻⁶0,003Выполнен
Энергия и заряд: graded-03.fee1,896 × 10⁻⁹1e-05Выполнен
Радиальное поле Градированная изоляция, r=0.010,00660,04Выполнен
Радиальное поле Градированная изоляция, r=0.0250,0018330,04Выполнен
Аналитическая ёмкость Градированная изоляция, сетка 320,2 × 10⁻⁶0,003Выполнен
Сходимость ёмкости Градированная изоляция60,99 × 10⁻⁶0,001Выполнен
Градирование снижает максимум поля00Выполнен

Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.

Модели, решения и программа

Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.

Полные численные результаты

Границы применимости