FEMM 5

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

Ёмкость коаксиального кабеля: заряд, энергия и поле

Определите ёмкость участка коаксиального кабеля двумя способами и проверьте радиальный закон поля. Круговая геометрия позволяет отличить ошибку интегральной ёмкости от локальной ошибки градиента потенциала.

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

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

Принятые допущения и их назначение
Учебная модель FEMM 5Причина
Плоское поперечное сечение с глубиной 1000 ммДаёт ёмкость участка длиной 1 м.
Внутренность металлической жилы исключена из сеткиВ идеальном проводнике электростатическое поле отсутствует.
Три сетки и отдельная проба поля при r=7,5 ммИнтеграл энергии и градиент имеют разную чувствительность к сетке.

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

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

От закона Гаусса к ёмкости

Между идеальными соосными проводниками нет объёмного заряда. Поток электрической индукции через цилиндр радиуса r и длины l равен заряду жилы q. Поэтому поле убывает обратно пропорционально радиусу.

Интегрирование поля от внутреннего радиуса a до внешнего b даёт положительную разность потенциалов U при b>a. В логарифме ёмкости стоит отношение b/a. Для заданных размеров аналитическая ёмкость составляет около 80,26 пФ на метр.

E(r)=\frac{q}{2\pi\varepsilon_0\varepsilon_r l r},\qquad U=\frac{q\ln(b/a)}{2\pi\varepsilon_0\varepsilon_r l}
C=\frac{q}{U}=\frac{2\pi\varepsilon_0\varepsilon_r l}{\ln(b/a)}

Интегральный контроль

В линейном диэлектрике энергия равна половине произведения заряда на напряжение. Сравнение C=q/U и C=2W/U² проверяет согласованность постобработки одного поля; отдельная аналитическая формула проверяет численное решение. Три сетки дают независимый контроль пространственной дискретизации.

W=\frac12\int\mathbf E\cdot\mathbf D\,dV=\frac12 qU,\qquad C_W=\frac{2W}{U^2}

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

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

Величины, единицы и происхождение параметров
ПараметрЗначениеЕдиницаПроисхождение
Радиус жилы a5ммУсловие учебной задачи
Внутренний радиус экрана b10ммУсловие учебной задачи
Длина l1мУсловие учебной задачи
Относительная проницаемость11Условие учебной задачи
Напряжение1ВУсловие учебной задачи

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

  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


exact_C = 2 * math.pi * EPS0 / math.log(10 / 5)
for level, mesh in enumerate((0.4, 0.2, 0.1)):
    newdocument(1)
    ei_probdef('millimeters', 'planar', 1e-10, 1000, 30)
    ei_addmaterial('Воздух изоляции', 1, 1, 0)
    ei_addconductorprop('Жила кабеля', 1, 0, 1)
    ei_addconductorprop('Заземлённый экран', 0, 0, 1)
    angle = 4 / (2 ** level)
    circle(0, 5, 'Жила кабеля', angle)
    circle(0, 10, 'Заземлённый экран', angle)
    label(0, 0, '<No Mesh>', mesh, 0)
    label(7.5, 0, 'Воздух изоляции', mesh)
    model = directory + '/coax-%02d.fee' % (level + 1)
    solve(model)
    row = electric_result(mesh, model, 'Жила кабеля', 'Заземлённый экран', exact_C)
    values = eo_getpointvalues(7.5, 0)
    field = math.sqrt(real(values[3]) ** 2 + real(values[4]) ** 2)
    expected = 1 / (0.0075 * math.log(2))
    row['E_7p5mm_V_m'] = field
    row['analytic_E_7p5mm_V_m'] = expected
    check('Поле в контрольной точке, сетка %d' % (level + 1),
          abs(field / expected - 1), 0.025)
    eo_close()
    ei_close()
check('Ёмкость по логарифмической формуле', records[-1]['analytic_C_relative_error'], 0.001)
check('Сходимость ёмкости', abs(records[-1]['capacitance_F'] /
      records[-2]['capacitance_F'] - 1), 0.001)

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'], 'Не выполнен численный критерий'

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

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

Окна FEMM 5

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

Геометрия коаксиального кабеля: внутренняя жила, круговая граница оболочки и русское имя материала изоляции. Размеры заданы в миллиметрах.
Геометрия коаксиального кабеля: внутренняя жила, круговая граница оболочки и русское имя материала изоляции. Размеры заданы в миллиметрах. Открыть в полном размере
Сохранённое электростатическое решение коаксиального кабеля. Цвет показывает потенциал V в вольтах; чёрные линии — эквипотенциали. Жила имеет потенциал 1 В, оболочка — 0 В.
Сохранённое электростатическое решение коаксиального кабеля. Цвет показывает потенциал V в вольтах; чёрные линии — эквипотенциали. Жила имеет потенциал 1 В, оболочка — 0 В. Открыть в полном размере

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

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

Результаты расчётов и производные итоги
Ёмкость по заряду, ФФайл моделиЗаряд, КлАналитическая ёмкость, ФУзловНевязка энергии и зарядаРазность потенциалов, ВЁмкость по энергии, ФПоле при r=7,5 мм, В/мЭлементовОтносительная ошибка ёмкостиЭнергия, ДжАналитическое поле при r=7,5 мм, В/мРазмер сетки, мм
80,299499 × 10⁻¹²coax-01.fee80,299499 × 10⁻¹²80,260736 × 10⁻¹²279919,827029 × 10⁻¹²180,299499 × 10⁻¹²194,084075313482,96806 × 10⁻⁶40,14975 × 10⁻¹²192,359340,4
80,275699 × 10⁻¹²coax-02.fee80,275699 × 10⁻¹²80,260736 × 10⁻¹²7069136,76593 × 10⁻¹²180,275699 × 10⁻¹²189,3104513606186,43088 × 10⁻⁶40,137849 × 10⁻¹²192,359340,2
80,264464 × 10⁻¹²coax-03.fee80,264464 × 10⁻¹²80,260736 × 10⁻¹²27820380,19499 × 10⁻¹²180,264464 × 10⁻¹²191,579895457846,449665 × 10⁻⁶40,132232 × 10⁻¹²192,359340,1
Проверки опубликованного расчёта
КритерийПолученоДопуск или ожидаемое значениеИтог
Энергия и заряд: coax-01.fee19,83 × 10⁻¹²1e-05Выполнен
Поле в контрольной точке, сетка 10,0089660,025Выполнен
Энергия и заряд: coax-02.fee136,8 × 10⁻¹²1e-05Выполнен
Поле в контрольной точке, сетка 20,015850,025Выполнен
Энергия и заряд: coax-03.fee380,2 × 10⁻¹²1e-05Выполнен
Поле в контрольной точке, сетка 30,0040520,025Выполнен
Ёмкость по логарифмической формуле46,45 × 10⁻⁶0,001Выполнен
Сходимость ёмкости140 × 10⁻⁶0,001Выполнен

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

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

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

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

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