FEMM 5

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

Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление

Дифференциальная пара имеет две связанные сигнальные полосы и общий опорный проводник. Её электрические свойства описываются матрицей ёмкостей, а не суммой двух независимых одиночных линий. В этой работе матрица определяется в реальном диэлектрическом сечении и в вакуумном контрольном сечении; затем вычисляется дифференциальное волновое сопротивление в квазиTEM приближении.

Ширина каждой идеальной полосы 1 мм, промежуток между ними 0.5 мм. Полосы расположены на поверхности подложки толщиной 1.6 мм и εr=4.2. Расчётное сечение ограничено заземлённым экраном x=±10 мм, y=−1.6…10 мм. В контрольном опыте εr подложки заменяется единицей при полностью той же геометрии. Длина вдоль линии принята равной одному метру.

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

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

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

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

Матрица и дифференциальный заряд

Два опыта с потенциалами (1,0) и (0,1) дают столбцы матрицы Максвелла. Вектор зарядов выражается через напряжения относительно опорного экрана. Диагональные элементы положительны, взаимные отрицательны, а в линейной взаимной среде C12=C21.

При дифференциальном напряжении один вольт потенциалы полос равны +0.5 и −0.5 В. Поэтому погонная дифференциальная ёмкость определяется четвертью сочетания C11+C22−C12−C21. Потеря этого множителя приводит к двукратной ошибке волнового сопротивления, даже если все полевые заряды вычислены правильно.

C_d=\tfrac14(C_{11}+C_{22}-C_{12}-C_{21}),\qquad C_c=\sum_{i,j}C_{ij}

Переход к квазиTEM оценке

Для немагнитной линии вакуумная погонная ёмкость задаёт индуктивный масштаб. Из Cд и Cд0 получаются эффективная диэлектрическая проницаемость и волновое сопротивление. Проверяется физическая граница 1≤εэфф≤εr. Это оценка распространяющегося режима по статическим поперечным полям, а не полноволновое решение распространения.

На каждом из трёх уровней сетки решаются четыре поля: два возбуждения и две среды. Баланс зарядов включает заземлённый экран; энергия сравнивается с зарядами проводников, матрица проверяется на взаимность и положительность. Особое сгущение вводится в обоих диэлектриках возле краёв идеальных полос, поскольку локальная особенность поля замедляет сходимость ёмкости.

\varepsilon_{\mathrm{эфф},d}=C_d/C_{d0},\qquad Z_d\simeq\frac{1}{c\sqrt{C_dC_{d0}}}

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

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

Величины, единицы и происхождение параметров
ПараметрЗначениеЕдиницаПроисхождение
Ширина сигнальной полосы1ммЗаданный параметр самостоятельной учебной модели
Зазор между полосами0,5ммЗаданный параметр самостоятельной учебной модели
Толщина подложки1,6ммЗаданный параметр самостоятельной учебной модели
Относительная проницаемость1; 4.2Заданный параметр самостоятельной учебной модели
Длина модели1мЗаданный параметр самостоятельной учебной модели

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

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

Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте 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


def circle_xy(cx, cy, radius, conductor, angle):
    ei_addnode(cx - radius, cy)
    ei_addnode(cx + radius, cy)
    ei_addarc(cx - radius, cy, cx + radius, cy, 180, angle)
    ei_addarc(cx + radius, cy, cx - radius, cy, 180, angle)
    ei_selectarcsegment(cx, cy + radius)
    ei_selectarcsegment(cx, cy - radius)
    ei_setarcsegmentprop(angle, '<None>', 0, 0, conductor)
    ei_clearselected()


def polygon(points, conductor='<None>', mesh=0):
    for x, y in points:
        ei_addnode(x, y)
    for k, (x, y) in enumerate(points):
        x2, y2 = points[(k + 1) % len(points)]
        ei_addsegment(x, y, x2, y2)
        if conductor != '<None>':
            ei_selectsegment((x + x2) / 2, (y + y2) / 2)
            ei_setsegmentprop('<None>', mesh, 0, 0, 0, conductor)
            ei_clearselected()


def terminal(x, y, name, mesh):
    ei_selectsegment(x, y)
    ei_setsegmentprop('<None>', mesh, 0, 0, 0, name)
    ei_clearselected()


def summary(mesh, model, source, ground, exact_C=None):
    v1, q1 = eo_getconductorproperties(source)
    v0, q0 = eo_getconductorproperties(ground)
    v1, v0, q1, q0 = real(v1), real(v0), real(q1), real(q0)
    voltage = v1 - v0
    eo_groupselectblock(1)
    energy = real(eo_blockintegral(0))
    eo_clearblock()
    capacitance = q1 / voltage
    row = {'mesh_mm': mesh, 'model': os.path.basename(model),
           'nodes': eo_numnodes(), 'elements': eo_numelements(),
           'voltage_V': voltage, 'charge_C': q1, 'energy_J': energy,
           'capacitance_F': capacitance,
           'energy_capacitance_F': 2 * energy / voltage ** 2}
    if exact_C is not None:
        row['analytic_capacitance_F'] = exact_C
        row['analytic_C_relative_error'] = abs(capacitance / exact_C - 1)
    records.append(row)
    check('Энергия и терминальный заряд: ' + os.path.basename(model),
          abs(2 * energy / voltage ** 2 / capacitance - 1), 1e-5)
    return row


def field(x, y):
    values = eo_getpointvalues(x, y)
    return math.sqrt(real(values[3]) ** 2 + real(values[4]) ** 2)


def rectangle_field(mesh, filename, epsx=2, epsy=2, voltage=100, width=10, height=10, depth=100):
    newdocument(1)
    ei_probdef('millimeters', 'planar', 1e-10, depth, 30)
    ei_addmaterial('Диэлектрик учебного образца', epsx, epsy, 0)
    ei_addconductorprop('Питающий электрод', voltage, 0, 1)
    ei_addconductorprop('Заземлённый электрод', 0, 0, 1)
    polygon(((0, 0), (width, 0), (width, height), (0, height)))
    terminal(0, height / 2, 'Питающий электрод', mesh)
    terminal(width, height / 2, 'Заземлённый электрод', mesh)
    label(width / 2, height / 2, 'Диэлектрик учебного образца', mesh)
    model = directory + '/' + filename + '.fee'
    solve(model)
    return model


MODE='pair'

if MODE=='rogowski':
    voltage=200;gap=10;umin=-5;umax=1.5
    def mapped(u,v):
        scale=gap/math.pi
        return (scale*(u+math.exp(u)*math.cos(v)),scale*(v+math.exp(u)*math.sin(v)))
    for level,mesh in enumerate((.8,.4,.2)):
        newdocument(1);ei_probdef('millimeters','planar',1e-11,1000,30)
        ei_addmaterial('Воздух между профилями',1,1,0)
        ei_addconductorprop('Верхний профиль Роговского',voltage/2,0,1)
        ei_addconductorprop('Нижний профиль Роговского',-voltage/2,0,1)
        count=40*(2**level)
        sides=[([mapped(umin+(umax-umin)*j/count,math.pi/2) for j in range(count+1)],'Верхний профиль Роговского'),([mapped(umax,math.pi/2-math.pi*j/count) for j in range(count+1)],None),([mapped(umax-(umax-umin)*j/count,-math.pi/2) for j in range(count+1)],'Нижний профиль Роговского'),([mapped(umin,-math.pi/2+math.pi*j/count) for j in range(count+1)],None)]
        for points,name in sides:
            for x,y in points:ei_addnode(x,y)
            for j,(x,y) in enumerate(points[:-1]):
                x2,y2=points[j+1];ei_addsegment(x,y,x2,y2)
                if name:terminal((x+x2)/2,(y+y2)/2,name,mesh)
        label(0,0,'Воздух между профилями',mesh)
        model=directory+'/rogowski-%02d.fee'%(level+1);solve(model)
        exact=EPS0*(umax-umin)/math.pi
        row=summary(mesh,model,'Верхний профиль Роговского','Нижний профиль Роговского',exact)
        row['level']=level+1
        check('Конформная аналитическая ёмкость '+os.path.basename(model),row['analytic_C_relative_error'],.004)
        eo_smooth('on')
        samples=[]
        for u in (-3,0,1):
            x,y=mapped(u,0);value=field(x,y);theory=voltage/(gap*.001)/(1+math.exp(u));samples.append([u,x,value,theory])
            check('Поле конформного профиля u='+str(u)+' '+os.path.basename(model),abs(value/theory-1),.025/(2**level))
        row['midplane_samples_u_mm_V_m']=samples
        eo_close();ei_close()
    check('Сходимость ёмкости Роговского',abs(records[-1]['capacitance_F']/records[-2]['capacitance_F']-1),.002)

elif MODE=='pair':
    vacuum=[]
    for level,mesh in enumerate((.4,.2,.1)):
        for eps in (1,4.2):
            matrix=[[0,0],[0,0]];rows=[]
            for excitation in (0,1):
                newdocument(1);ei_probdef('millimeters','planar',1e-11,1000,30)
                ei_addmaterial('Воздух над парой',1,1,0);ei_addmaterial('Подложка пары',eps,eps,0)
                names=('Первая сигнальная полоса','Вторая сигнальная полоса')
                for i,name in enumerate(names):ei_addconductorprop(name,1 if i==excitation else 0,0,1)
                ei_addconductorprop('Опорный проводник и экран',0,0,1)
                polygon(((-10,-1.6),(10,-1.6),(10,0),(10,10),(-10,10),(-10,0)),'Опорный проводник и экран',mesh)
                xs=(-10,-1.25,-.25,.25,1.25,10)
                for x in xs:ei_addnode(x,0)
                for j in range(len(xs)-1):ei_addsegment(xs[j],0,xs[j+1],0)
                terminal(-.75,0,names[0],mesh/4);terminal(.75,0,names[1],mesh/4)
                # Сгущение обоих диэлектриков около краёв идеальных полос.
                for x in (-3,3):
                    for y in (-1.6,0,2):ei_addnode(x,y)
                    ei_addsegment(x,-1.6,x,0);ei_addsegment(x,0,x,2)
                ei_addsegment(-3,2,3,2)
                label(0,-.8,'Подложка пары',mesh/10);label(0,1,'Воздух над парой',mesh/10)
                label(-6,-.8,'Подложка пары',mesh/2);label(6,-.8,'Подложка пары',mesh/2);label(0,5,'Воздух над парой',mesh)
                model=directory+'/pair-eps%s-e%d-%02d.fee'%(str(eps).replace('.','p'),excitation+1,level+1);solve(model)
                charges=[real(eo_getconductorproperties(n)[1]) for n in names]
                for k in range(2):matrix[k][excitation]=charges[k]
                qground=real(eo_getconductorproperties('Опорный проводник и экран')[1])
                eo_groupselectblock(1);energy=real(eo_blockintegral(0));eo_clearblock()
                row={'model':os.path.basename(model),'level':level+1,'mesh_mm':mesh,'eps_r':eps,'excitation':excitation+1,'nodes':eo_numnodes(),'elements':eo_numelements(),'energy_J':energy,'first_charge_C':charges[0],'second_charge_C':charges[1]}
                check('Баланс трёх зарядов '+os.path.basename(model),abs(sum(charges)+qground)/max(abs(q) for q in charges),1e-6)
                check('Энергия и заряд матричного опыта '+os.path.basename(model),abs(2*energy/charges[excitation]-1),1e-5)
                records.append(row);rows.append(row);eo_close();ei_close()
            cd=(matrix[0][0]+matrix[1][1]-matrix[0][1]-matrix[1][0])/4
            cm=sum(sum(r) for r in matrix)
            check('Взаимность ёмкостей ε='+str(eps)+' сетка'+str(level),abs(matrix[0][1]/matrix[1][0]-1),1e-5)
            check('Пассивная ёмкостная матрица ε='+str(eps)+' сетка'+str(level),max(0,matrix[0][1]**2/(matrix[0][0]*matrix[1][1])-1),0)
            for row in rows:row['differential_C_F_per_m']=cd;row['common_C_F_per_m']=cm
            if eps==1:vacuum.append(cd)
            else:
                effective=cd/vacuum[-1];zd=1/(299792458*math.sqrt(cd*vacuum[-1]))
                for row in rows:row['effective_eps_differential']=effective;row['differential_Z_ohm']=zd
                check('Эффективная проницаемость между1иεr',max(0,1-effective,effective-eps),0)
    for eps in (1,4.2):
        selected=[r for r in records if r['eps_r']==eps and r['excitation']==1]
        check('Сходимость дифференциальной ёмкости ε='+str(eps),abs(selected[-1]['differential_C_F_per_m']/selected[-2]['differential_C_F_per_m']-1),.006)

elif MODE=='ring':
    major=20;outer=1000
    for radius in (.25,.5,1):
      for level,mesh in enumerate((1,.5,.25)):
        newdocument(1);ei_probdef('millimeters','axi',1e-11,1,30)
        ei_addmaterial('Воздух вокруг кольца',1,1,0)
        ei_addconductorprop('Проволочное кольцо',1,0,1);ei_addconductorprop('Удалённая сферическая граница',0,0,1)
        circle_xy(major,0,radius,'Проволочное кольцо',4/(2**level));label(major,0,'<No Mesh>',radius/5,0)
        ei_addnode(0,-outer);ei_addnode(0,outer);ei_addarc(0,-outer,0,outer,180,4/(2**level))
        ei_selectarcsegment(outer,0);ei_setarcsegmentprop(4/(2**level),'<None>',0,0,'Удалённая сферическая граница');ei_clearselected()
        ei_addsegment(0,-outer,0,outer)
        polygon(((0,-25),(50,-25),(50,25),(0,25)))
        label(10,0,'Воздух вокруг кольца',mesh/2);label(200,0,'Воздух вокруг кольца',40/(2**level))
        model=directory+'/ring-a%s-%02d.fee'%(str(radius).replace('.','p'),level+1);solve(model)
        # Ориентир тонкого кольца с ведущей монопольной поправкой конечной сферы.
        isolated=4*math.pi**2*EPS0*(major*.001)/math.log(8*major/radius)
        exact=1/(1/isolated-1/(4*math.pi*EPS0*outer*.001))
        row=summary(mesh,model,'Проволочное кольцо','Удалённая сферическая граница',exact)
        row.update({'level':level+1,'wire_radius_mm':radius,'slender_isolated_C_F':isolated,'outer_radius_mm':outer})
        check('Тонкое кольцо и поправка удалённой сферы '+os.path.basename(model),row['analytic_C_relative_error'],.015)
        eo_close();ei_close()
    for radius in (.25,.5,1):
        rr=[r for r in records if r['wire_radius_mm']==radius]
        check('Сходимость ёмкости кольца a='+str(radius),abs(rr[-1]['capacitance_F']/rr[-2]['capacitance_F']-1),.005)

elif MODE=='coupling':
    frequency=1000;eps=3.5;sigma=2e-8
    names=('Жила A — источник','Жила B — приёмник','Жила C — защитная')
    def current_circle(x,y,r,name,angle):
        ci_addnode(x-r,y);ci_addnode(x+r,y);ci_addarc(x-r,y,x+r,y,180,angle);ci_addarc(x+r,y,x-r,y,180,angle)
        ci_selectarcsegment(x,y+r);ci_selectarcsegment(x,y-r);ci_setarcsegmentprop(angle,'<None>',0,0,name);ci_clearselected()
    def current_label(x,y,name,mesh,group=1):
        ci_addblocklabel(x,y);ci_selectlabel(x,y);ci_setblockprop(name,0,mesh,group);ci_clearselected()
    def cable(voltages,mesh,level,stem):
        newdocument(3);ci_probdef('millimeters','planar',frequency,1e-11,1000,30)
        ci_addmaterial('Изоляция с диэлектрическими потерями',sigma,sigma,eps,eps,0,0)
        ci_addconductorprop('Заземлённая оболочка',0,0,1)
        current_circle(0,0,10,'Заземлённая оболочка',3/(2**level))
        for k,(x,y) in enumerate(((-4,0),(0,4),(4,0))):
            ci_addconductorprop(names[k],voltages[k],0,1);current_circle(x,y,1.5,names[k],3/(2**level));current_label(x,y,'<No Mesh>',mesh,0)
        current_label(0,-4,'Изоляция с диэлектрическими потерями',mesh)
        model=directory+'/'+stem+'.fec';ci_saveas(model);ci_close();opendocument(model);ci_analyze(1);ci_loadsolution();co_smooth('off')
        currents=[complex(co_getconductorproperties(n)[1]) for n in names]
        currents.append(complex(co_getconductorproperties('Заземлённая оболочка')[1]))
        co_groupselectblock(1);power=real(co_blockintegral(0));co_clearblock()
        inputpower=.5*sum((complex(voltages[k])*currents[k].conjugate()).real for k in range(3))
        row={'model':os.path.basename(model),'level':level+1,'mesh_mm':mesh,'nodes':co_numnodes(),'elements':co_numelements(),'dielectric_loss_W':power,'terminal_power_W':inputpower}
        check('Баланс токов четырёх электродов '+stem,abs(sum(currents))/max(abs(i) for i in currents),1e-6)
        check('Баланс диэлектрической мощности '+stem,abs(power-inputpower)/max(power,1e-20),1e-5)
        co_close();ci_close()
        return row,currents
    for level,mesh in enumerate((.5,.25,.125)):
        matrix=[[0j]*3 for _ in range(3)]
        for exc in range(3):
            vv=[0,0,0];vv[exc]=1
            row,currents=cable(vv,mesh,level,'Y%d-%02d'%(exc+1,level+1));row['excitation']=exc+1
            for k in range(3):matrix[k][exc]=currents[k]
            records.append(row)
        for i in range(3):
          for j in range(3):check('Взаимность комплексной матрицы Y%d%d сетка%d'%(i,j,level+1),abs(matrix[i][j]-matrix[j][i])/max(abs(matrix[i][i]),1e-20),1e-5)
        for load in (1e6,1e7,1e8):
            induced=-matrix[1][0]*100/(matrix[1][1]+1/load)
            row,currents=cable([100,induced,0],mesh,level,'load%s-%02d'%(str(int(load)),level+1))
            row.update({'load_ohm':load,'receiver_voltage_real_V':induced.real,'receiver_voltage_imag_V':induced.imag,'receiver_voltage_amplitude_V':abs(induced),'load_power_W':abs(induced)**2/(2*load),'source_power_W':.5*(100*currents[0].conjugate()).real})
            check('Узел нагруженной жилы '+row['model'],abs(currents[1]+induced/load)/max(abs(induced/load),1e-20),1e-5)
            check('Источник питает потери изоляции и нагрузку '+row['model'],abs(row['source_power_W']-row['dielectric_loss_W']-row['load_power_W'])/row['source_power_W'],1e-5)
            records.append(row)
    for load in (1e6,1e7,1e8):
        rr=[r for r in records if r.get('load_ohm')==load]
        check('Сходимость наведённого напряжения R='+str(load),abs(rr[-1]['receiver_voltage_amplitude_V']/rr[-2]['receiver_voltage_amplitude_V']-1),.005)

result={'runtime':'FEMM 5; embedded MicroPython','records':records,'checks':checks,'passed':all(c['passed'] for c in checks),'scope':'Самостоятельная учебная электротехническая модель; численные проверки относятся к точным сохранённым файлам.'}
with open(directory+'/result.json','w') as f:json.dump(result,f)
print(json.dumps(result));assert result['passed']

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

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

Окна FEMM 5

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

Рабочая область модели «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Нативный препроцессор FEMM 5.
Рабочая область модели «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Нативный препроцессор FEMM 5. Открыть в полном размере
Сохранённое решение «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Электростатический потенциал V, В: один базисный режим возбуждения дифференциальной пары для определения её параметров.
Сохранённое решение «Дифференциальная пара: матрица ёмкостей и квазистатическое сопротивление». Электростатический потенциал V, В: один базисный режим возбуждения дифференциальной пары для определения её параметров. Увеличенная область около пары; верхняя удалённая граница за кадром. Открыть в полном размере

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

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

Результаты расчётов и производные итоги
Число узловЭнергия, ДжЗаряд первой полосы, КлРазмер внешней сетки, ммЧисло элементовДифференциальная погонная ёмкость, Ф/мФайл моделиУровень сеткиЗаряд второй полосы, КлОбщая погонная ёмкость, Ф/мПроницаемость подложкиНомер единичного возбужденияДифференциальное волновое сопротивление, ОмЭффективная дифференциальная проницаемость
2082513,13 × 10⁻¹²26,26 × 10⁻¹²0,44122817,96 × 10⁻¹²pair-eps1-e1-01.fee1-9,663 × 10⁻¹²33,2 × 10⁻¹²11——
2082513,13 × 10⁻¹²-9,663 × 10⁻¹²0,44122817,96 × 10⁻¹²pair-eps1-e2-01.fee126,26 × 10⁻¹²33,2 × 10⁻¹²12——
2082536,6 × 10⁻¹²73,2 × 10⁻¹²0,44122847,59 × 10⁻¹²pair-eps4p2-e1-01.fee1-21,99 × 10⁻¹²102,4 × 10⁻¹²4,21114,12,649
2082536,58 × 10⁻¹²-21,99 × 10⁻¹²0,44122847,59 × 10⁻¹²pair-eps4p2-e2-01.fee173,16 × 10⁻¹²102,4 × 10⁻¹²4,22114,12,649
7340213,04 × 10⁻¹²26,07 × 10⁻¹²0,214604217,8 × 10⁻¹²pair-eps1-e1-02.fee2-9,525 × 10⁻¹²33,09 × 10⁻¹²11——
7340213,04 × 10⁻¹²-9,525 × 10⁻¹²0,214604217,8 × 10⁻¹²pair-eps1-e2-02.fee226,07 × 10⁻¹²33,09 × 10⁻¹²12——
7340236,33 × 10⁻¹²72,65 × 10⁻¹²0,214604247,15 × 10⁻¹²pair-eps4p2-e1-02.fee2-21,64 × 10⁻¹²102 × 10⁻¹²4,21115,22,649
7340236,33 × 10⁻¹²-21,64 × 10⁻¹²0,214604247,15 × 10⁻¹²pair-eps4p2-e2-02.fee272,66 × 10⁻¹²102 × 10⁻¹²4,22115,22,649
28832312,99 × 10⁻¹²25,97 × 10⁻¹²0,157517517,71 × 10⁻¹²pair-eps1-e1-03.fee3-9,452 × 10⁻¹²33,04 × 10⁻¹²11——
28832312,99 × 10⁻¹²-9,452 × 10⁻¹²0,157517517,71 × 10⁻¹²pair-eps1-e2-03.fee325,98 × 10⁻¹²33,04 × 10⁻¹²12——
28832336,2 × 10⁻¹²72,4 × 10⁻¹²0,157517546,94 × 10⁻¹²pair-eps4p2-e1-03.fee3-21,48 × 10⁻¹²101,9 × 10⁻¹²4,21115,72,65
28832336,21 × 10⁻¹²-21,48 × 10⁻¹²0,157517546,94 × 10⁻¹²pair-eps4p2-e2-03.fee372,42 × 10⁻¹²101,9 × 10⁻¹²4,22115,72,65
Проверки опубликованного расчёта
КритерийПолученоДопуск или ожидаемое значениеИтог
Баланс трёх зарядов pair-eps1-e1-01.fee2,523 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps1-e1-01.fee26 × 10⁻¹²1e-05Выполнен
Баланс трёх зарядов pair-eps1-e2-01.fee3,573 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps1-e2-01.fee4,693 × 10⁻¹²1e-05Выполнен
Взаимность ёмкостей ε=1 сетка012,08 × 10⁻¹²1e-05Выполнен
Пассивная ёмкостная матрица ε=1 сетка000Выполнен
Баланс трёх зарядов pair-eps4p2-e1-01.fee16,23 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps4p2-e1-01.fee33,29 × 10⁻¹²1e-05Выполнен
Баланс трёх зарядов pair-eps4p2-e2-01.fee3,659 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps4p2-e2-01.fee11,83 × 10⁻¹²1e-05Выполнен
Взаимность ёмкостей ε=4.2 сетка046,67 × 10⁻¹²1e-05Выполнен
Пассивная ёмкостная матрица ε=4.2 сетка000Выполнен
Эффективная проницаемость между1иεr00Выполнен
Баланс трёх зарядов pair-eps1-e1-02.fee22,55 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps1-e1-02.fee18,55 × 10⁻¹²1e-05Выполнен
Баланс трёх зарядов pair-eps1-e2-02.fee20,25 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps1-e2-02.fee17,02 × 10⁻¹²1e-05Выполнен
Взаимность ёмкостей ε=1 сетка118,31 × 10⁻¹²1e-05Выполнен
Пассивная ёмкостная матрица ε=1 сетка100Выполнен
Баланс трёх зарядов pair-eps4p2-e1-02.fee22,95 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps4p2-e1-02.fee24,75 × 10⁻¹²1e-05Выполнен
Баланс трёх зарядов pair-eps4p2-e2-02.fee61,37 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps4p2-e2-02.fee29,06 × 10⁻¹²1e-05Выполнен
Взаимность ёмкостей ε=4.2 сетка16,442 × 10⁻¹²1e-05Выполнен
Пассивная ёмкостная матрица ε=4.2 сетка100Выполнен
Эффективная проницаемость между1иεr00Выполнен
Баланс трёх зарядов pair-eps1-e1-03.fee1,836 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps1-e1-03.fee21,08 × 10⁻¹²1e-05Выполнен
Баланс трёх зарядов pair-eps1-e2-03.fee13,65 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps1-e2-03.fee35,07 × 10⁻¹²1e-05Выполнен
Взаимность ёмкостей ε=1 сетка250,68 × 10⁻¹²1e-05Выполнен
Пассивная ёмкостная матрица ε=1 сетка200Выполнен
Баланс трёх зарядов pair-eps4p2-e1-03.fee19,76 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps4p2-e1-03.fee60,18 × 10⁻¹²1e-05Выполнен
Баланс трёх зарядов pair-eps4p2-e2-03.fee132,1 × 10⁻¹²1e-06Выполнен
Энергия и заряд матричного опыта pair-eps4p2-e2-03.fee41,23 × 10⁻¹²1e-05Выполнен
Взаимность ёмкостей ε=4.2 сетка24,14 × 10⁻¹²1e-05Выполнен
Пассивная ёмкостная матрица ε=4.2 сетка200Выполнен
Эффективная проницаемость между1иεr00Выполнен
Сходимость дифференциальной ёмкости ε=10,0047750,006Выполнен
Сходимость дифференциальной ёмкости ε=4.20,004330,006Выполнен

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

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

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

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

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