FEMM 5

Электростатика · Осесимметричная

Ёмкость проволочного кольца: полное тело вращения и тонкое кольцо

Изолированное проволочное кольцо является трёхмерным телом, но его осевая симметрия позволяет вычислить ёмкость в FEMM без трёхмерного решателя. Круг в плоскости r–z представляет сечение проволоки; после вращения он образует тор. Работа проверяет правильный геометрический вес полного тела и сравнивает результат с приближением тонкого кольца.

Большой радиус кольца равен 20 мм, радиусы проволоки — 0.25, 0.5 и 1 мм. Потенциал кольца задан равным одному вольту, окружающая среда — воздух. Нулевая граница удалена на сферу радиусом один метр. Для каждого радиуса проволоки строятся три сетки с подробным разрешением ближнего воздушного поля.

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

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

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

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

От заряда к ёмкости тора

Ёмкость получается отношением полного заряда кольца к разности потенциалов с внешней границей. В осесимметричном модуле заряд и энергия относятся ко всему телу вращения: множитель 2πr уже учтён решателем. Дополнительное умножение на длину окружности или на условную глубину модели недопустимо.

Для тонкой проволоки потенциал кольца можно оценить интегрированием линейного заряда с локальным ограничением по радиусу проволоки. Ведущий результат содержит логарифм 8R/a. Это приближённая формула для a≪R, поэтому она не является точным выражением ёмкости произвольного толстого тора.

C_{\infty}\simeq\frac{4\pi^2\varepsilon_0R}{\ln(8R/a)},\qquad C_{\mathrm{поле}}=Q/U=2W/U^2

Удалённая граница и точность ориентира

Сфера нулевого потенциала находится на конечном расстоянии, поэтому вычисленная ёмкость немного выше ёмкости относительно бесконечности. Ведущая монопольная поправка позволяет согласовать аналитический ориентир с этой конечной границей. Более высокие мультипольные составляющие малы при R≪Rвнеш.

Проверяются совпадение энергетической и зарядовой ёмкостей, сходимость трёх сеток и близость к тонкокольцевой оценке с поправкой границы. Для самостоятельного исследования измените сначала радиус внешней сферы, затем отношение a/R. В первом опыте проверяется усечение пространства, во втором — применимость тонкопроволочного приближения. Эти причины расхождения следует различать в выводах.

\frac1{C_{R_{\mathrm{внеш}}}}\simeq\frac1{C_{\infty}}-\frac1{4\pi\varepsilon_0R_{\mathrm{внеш}}}

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

Осесимметричная

Величины, единицы и происхождение параметров
ПараметрЗначениеЕдиницаПроисхождение
Большой радиус R20ммЗаданный параметр самостоятельной учебной модели
Радиусы проволоки a0.25; 0.5; 1ммЗаданный параметр самостоятельной учебной модели
Радиус внешней сферы1000ммЗаданный параметр самостоятельной учебной модели
Потенциал кольца1ВЗаданный параметр самостоятельной учебной модели
Относительная проницаемость среды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='ring'

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']

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

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

Окна FEMM 5

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

Увеличенное сечение проволочного кольца: центр r = 20 мм, z = 0; радиус проволоки 0,25 мм. Показан меридиональный разрез тела вращения; ось и удалённая граница за кадром.
Увеличенное сечение проволочного кольца: центр r = 20 мм, z = 0; радиус проволоки 0,25 мм. Показан меридиональный разрез тела вращения; ось и удалённая граница за кадром. Открыть в полном размере
Сохранённое решение «Ёмкость проволочного кольца: полное тело вращения и тонкое кольцо». Потенциал V, В, в увеличенной области проволочного кольца. Слева видна ось r = 0; прямоугольник — вспомогательная область сгущения сетки; удалённая сферическая граница за кадром.
Сохранённое решение «Ёмкость проволочного кольца: полное тело вращения и тонкое кольцо». Потенциал V, В, в увеличенной области проволочного кольца. Слева видна ось r = 0; прямоугольник — вспомогательная область сгущения сетки; удалённая сферическая граница за кадром. Открыть в полном размере

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

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

Результаты расчётов и производные итоги
Ёмкость по заряду, ФАналитическая ёмкость, ФЗаряд питающего электрода, КлФайл моделиЧисло узловРадиус внешней границы, ммРадиус проволоки, ммРазность потенциалов, ВЁмкость по энергии, ФЧисло элементовОтносительная ошибка ёмкостиУровень сеткиЭнергия, ДжЁмкость тонкого кольца относительно бесконечности, ФРазмер внешней сетки, мм
1,1041816 × 10⁻¹²1,0925744 × 10⁻¹²1,1041816 × 10⁻¹²ring-a0p25-01.fee1584710000,2511,1041816 × 10⁻¹²312670,010623711552,09082 × 10⁻¹⁵1,0819502 × 10⁻¹²1
1,0990831 × 10⁻¹²1,0925744 × 10⁻¹²1,0990831 × 10⁻¹²ring-a0p25-02.fee5367710000,2511,0990831 × 10⁻¹²1066660,00595714922549,54153 × 10⁻¹⁵1,0819502 × 10⁻¹²0,5
1,0955334 × 10⁻¹²1,0925744 × 10⁻¹²1,0955334 × 10⁻¹²ring-a0p25-03.fee20878710000,2511,0955334 × 10⁻¹²4162390,0027082583547,76671 × 10⁻¹⁵1,0819502 × 10⁻¹²0,25
1,2349961 × 10⁻¹²1,2253089 × 10⁻¹²1,2349961 × 10⁻¹²ring-a0p5-01.fee1580610000,511,2349961 × 10⁻¹²311830,00790597131617,49807 × 10⁻¹⁵1,2119621 × 10⁻¹²1
1,2316099 × 10⁻¹²1,2253089 × 10⁻¹²1,2316099 × 10⁻¹²ring-a0p5-02.fee5347110000,511,2316099 × 10⁻¹²1062330,00514242312615,80497 × 10⁻¹⁵1,2119621 × 10⁻¹²0,5
1,2280839 × 10⁻¹²1,2253089 × 10⁻¹²1,2280839 × 10⁻¹²ring-a0p5-03.fee20875210000,511,2280839 × 10⁻¹²4161450,00226472723614,04193 × 10⁻¹⁵1,2119621 × 10⁻¹²0,25
1,4054916 × 10⁻¹²1,3947545 × 10⁻¹²1,4054916 × 10⁻¹²ring-a1-01.fee157751000111,4054916 × 10⁻¹²311280,00769820681702,7458 × 10⁻¹⁵1,3774871 × 10⁻¹²1
1,4021643 × 10⁻¹²1,3947545 × 10⁻¹²1,4021643 × 10⁻¹²ring-a1-02.fee533841000111,4021643 × 10⁻¹²1060890,00531263072701,08216 × 10⁻¹⁵1,3774871 × 10⁻¹²0,5
1,3996658 × 10⁻¹²1,3947545 × 10⁻¹²1,3996658 × 10⁻¹²ring-a1-03.fee2085181000111,3996658 × 10⁻¹²4156840,00352128093699,83291 × 10⁻¹⁵1,3774871 × 10⁻¹²0,25
Проверки опубликованного расчёта
КритерийПолученоДопуск или ожидаемое значениеИтог
Энергия и терминальный заряд: ring-a0p25-01.fee28,2 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a0p25-01.fee0,010620,015Выполнен
Энергия и терминальный заряд: ring-a0p25-02.fee90,85 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a0p25-02.fee0,0059570,015Выполнен
Энергия и терминальный заряд: ring-a0p25-03.fee117 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a0p25-03.fee0,0027080,015Выполнен
Энергия и терминальный заряд: ring-a0p5-01.fee31,12 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a0p5-01.fee0,0079060,015Выполнен
Энергия и терминальный заряд: ring-a0p5-02.fee65,81 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a0p5-02.fee0,0051420,015Выполнен
Энергия и терминальный заряд: ring-a0p5-03.fee58,76 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a0p5-03.fee0,0022650,015Выполнен
Энергия и терминальный заряд: ring-a1-01.fee12,18 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a1-01.fee0,0076980,015Выполнен
Энергия и терминальный заряд: ring-a1-02.fee42,96 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a1-02.fee0,0053130,015Выполнен
Энергия и терминальный заряд: ring-a1-03.fee104,9 × 10⁻¹²1e-05Выполнен
Тонкое кольцо и поправка удалённой сферы ring-a1-03.fee0,0035210,015Выполнен
Сходимость ёмкости кольца a=0.250,003230,005Выполнен
Сходимость ёмкости кольца a=0.50,0028630,005Выполнен
Сходимость ёмкости кольца a=10,0017820,005Выполнен

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

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

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

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

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