Гармоническое магнитное поле и электрические цепи · Плоскопараллельная
Экранированный полюс: короткозамкнутый виток и фазовый сдвиг
Короткозамкнутый виток не просто ослабляет переменное поле: индуцированный ток меняет его фазу. Если виток охватывает часть полюса, соседние участки зазора получают разные комплексные индукции. Работа исследует этот механизм на неподвижном П-образном магнитопроводе и решает ток витка из полевой матрицы и уравнения замкнутой цепи.
Магнитопровод имеет наружную ширину 36 мм, высоту стоек 36 мм, толщину стоек и основания 6 мм. Якорь занимает y=38…44 мм; воздушный зазор равен 2 мм. Глубина модели 100 мм, относительная проницаемость 500. Первичная обмотка имеет 200 витков с амплитудой тока 1 А. Медные стороны экранирующего витка имеют сечение 1×5 мм; одна проходит в вырезе у вершины левого полюса, другая расположена снаружи. Частоты равны 20, 50 и 200 Гц.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Полевой расчёт и замкнутая цепь
Два независимых единичных возбуждения определяют комплексную матрицу Z. Токи обмоток задаются по очереди, а решатель возвращает напряжения обеих цепей. Медные стороны витка соединены последовательно и имеют противоположные направления тока. При этом распределение тока внутри каждого сечения остаётся результатом гармонического полевого решения: локальные вихревые токи и вытеснение тока не заменяются заранее заданной равномерной плотностью.
В окончательном опыте ток первичной обмотки фиксирован, а ток витка вычисляется из нулевой суммы его полевого напряжения и падения напряжения на торцевых соединениях. Сопротивление этих соединений принято равным 0.2 мОм. Это самостоятельный элемент учебной схемы; их трёхмерная геометрия и индуктивность не рассчитываются. После решения скалярного комплексного уравнения строится новая модель с обоими найденными токами. Она проверяет результат матричного расчёта непосредственно полем.
Как измеряется пространственный фазовый сдвиг
Средняя нормальная индукция в двух участках зазора вычисляется через разность векторного потенциала по краям участка. Такое интегральное измерение устойчивее отдельной точки около кромки. Сравниваются охваченная витком часть полюса x=−18…−15.5 мм и соседняя часть x=−14.5…−12 мм на линии y=37 мм. Аргумент отношения их комплексных средних полей даёт пространственную разность фаз.
В каждой частоте выполняются три сетки для двух единичных возбуждений и замкнутого витка. Проверяются комплексная взаимность, повторный полевой расчёт уравнения Кирхгофа, баланс мощности и разрешимость фазового сдвига. Амплитудные токи требуют множителя 1/2 в выражении средней мощности; встроенный интеграл джоулевых потерь уже возвращает среднюю мощность.
Эта постановка объясняет работу экранированной части полюса, но не рассчитывает двигатель целиком. Ротор, момент, механическое движение, пусковая характеристика и реальная форма торцевых перемычек отсутствуют. По одному пространственному фазовому сдвигу нельзя объявлять рассчитанным вращающий момент двигателя с экранированными полюсами. Линейный непроводящий магнитопровод также исключает насыщение, потери в стали и гистерезис.
Исходные данные
Плоскопараллельная
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| Частоты | 20; 50; 200 | Гц | Заданный параметр самостоятельной учебной модели |
| Глубина модели | 100 | мм | Заданный параметр самостоятельной учебной модели |
| Воздушный зазор | 2 | мм | Заданный параметр самостоятельной учебной модели |
| Относительная проницаемость | 500 | Заданный параметр самостоятельной учебной модели | |
| Первичная обмотка | 200 | витков | Заданный параметр самостоятельной учебной модели |
| Амплитуда первичного тока | 1 | А | Заданный параметр самостоятельной учебной модели |
| Сечение стороны медного витка | 1 × 5 | мм² | Заданный параметр самостоятельной учебной модели |
| Проводимость меди | 58 | МСм/м | Заданный параметр самостоятельной учебной модели |
| Сопротивление торцевых соединений | 200 × 10⁻⁶ | Ом | Заданный параметр самостоятельной учебной модели |
Порядок воспроизведения
- Откройте reproduce.py во встроенном Python FEMM 5 и выполните программу. Новый запуск создаёт отдельный каталог calculated-NN рядом с программой.
- Сначала рассмотрите единичные возбуждения: каждое определяет один столбец комплексной матрицы. Сравните прямые и обратные коэффициенты связи.
- Затем откройте точную модель с рассчитанными комплексными токами замкнутых цепей. Сопоставьте токи, напряжения, средние потери и невязку уравнения Кирхгофа.
- Сравните три сетки отдельно для каждой частоты, возбуждения и нагрузки. Пользуйтесь файлами result.json для точных комплексных чисел; график показывает выбранную вещественную характеристику.
- Измените один параметр и выполните новый расчёт. Результат после изменения параметров подтверждается только новой численной проверкой.
Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте reproduce.py во встроенном Python FEMM 5 и выполните его. Сохраните имена файлов и структуру подпапок. Условия конкретного запуска и путь новых результатов указаны в комментариях программы.
Программа встроенного Python FEMM 5
"""Собственная учебная лабораторная FEMM 5: встроенный Python.
Команды FEMM доступны глобально, внешний пакет femm не используется.
Каждая сетка сохраняется в отдельный FEM, закрывается, открывается повторно
и решается с русскими именами свойств. Новый запуск создаёт calculated-NN.
Опубликованные модели и квитанции не изменяются. Размеры: мм; результаты: СИ.
"""
import os
import sys
import math
import json
CONFIG = {'sigma': 58000000.0, 'variants': [20, 50, 200], 'Rend': 0.0002}
MODE = 'shade'
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=[]
MU0=4*math.pi*1e-7
def real(x):
if isinstance(x,(list,tuple)):x=x[0]
return complex(x).real
def check(name,value,limit):
checks.append({'name':name,'value':value,'limit':limit,'passed':math.isfinite(value) and value<=limit})
def material(name,mu=1,sigma=0):
mi_addmaterial(name,mu,mu,0,0,sigma/1e6)
def label(x,y,name,mesh,group=1,circuit='<None>',turns=1):
mi_addblocklabel(x,y);mi_selectlabel(x,y)
mi_setblockprop(name,0,mesh,circuit,0,group,turns);mi_clearselected()
def polygon(points,boundary=None,spacing=0):
for x,y in points:mi_addnode(x,y)
for i,(x,y) in enumerate(points):
x2,y2=points[(i+1)%len(points)];mi_addsegment(x,y,x2,y2)
if boundary:
mi_selectsegment((x+x2)/2,(y+y2)/2)
mi_setsegmentprop(boundary,spacing,0,0,0);mi_clearselected()
def rect(x1,y1,x2,y2):polygon([(x1,y1),(x2,y1),(x2,y2),(x1,y2)])
def circle(x,y,r,angle,boundary=None):
mi_addnode(x-r,y);mi_addnode(x+r,y)
mi_addarc(x-r,y,x+r,y,180,angle);mi_addarc(x+r,y,x-r,y,180,angle)
if boundary:
mi_selectarcsegment(x,y-r);mi_selectarcsegment(x,y+r)
mi_setarcsegmentprop(angle,boundary,0,0);mi_clearselected()
def halfcircle(r,angle,boundary=None):
mi_addnode(0,-r);mi_addnode(0,r)
mi_addarc(0,-r,0,r,180,angle)
if boundary:
mi_selectarcsegment(r,0);mi_setarcsegmentprop(angle,boundary,0,0);mi_clearselected()
def start(axis,f,outer,level,uniform=0):
newdocument(0)
mi_probdef(f,'millimeters','axi' if axis else 'planar',1e-10,1000,30,0)
material('Воздух')
# Коэффициенты пространственной функции A вводятся на миллиметр геометрии.
mi_addboundprop('Внешняя граница',0,uniform/2000 if axis else 0,0 if axis else uniform/1000,0,0,0,0,0,0)
if axis:
# Ось r=0, z снизу вверх: исходные координаты библиотек не используются.
halfcircle(outer,4/(2**level),'Внешняя граница')
mi_addsegment(0,-outer,0,outer)
else:circle(0,0,outer,4/(2**level),'Внешняя граница')
def close_axis():
# FEMM автоматически разбивает осевой отрезок вершинами внутренних дуг.
pass
def coil(r,z,width,height,current,turns,mesh,num):
name='Обмотка %d'%num
mi_addcircprop(name,current,1)
rect(r-width/2,z-height/2,r+width/2,z+height/2)
label(r,z,'Медь обмотки',mesh,10+num,name,turns)
return name
def solve(level,variant,tag=''):
name='model-%s-%02d%s.fem'%(str(variant).replace('.','p'),level+1,tag)
mi_saveas(directory+'/'+name);mi_close();opendocument(directory+'/'+name)
mi_analyze(1);mi_loadsolution();mo_smooth('off')
mo_groupselectblock();energy=real(mo_blockintegral(2));loss=real(mo_blockintegral(4));mo_clearblock()
return {'model':name,'level':level+1,'variant':variant,'nodes':mo_numnodes(),'elements':mo_numelements(),'energy_J':energy,'ohmic_loss_W':loss,'saved_reopened_solved':True}
def finish():mo_close();mi_close()
def loop_field(r,z,turns,current,position):
r*=0.001;dz=(position-z)*0.001
return MU0*turns*current*r*r/(2*(r*r+dz*dz)**1.5)
def bessel(n,z):
term=(z/2)**n
total=term
for k in range(1,100):
term*=-(z*z/4)/(k*(k+n));total+=term
if abs(term)<1e-15*max(1,abs(total)):break
return total
def skin_resistance(radius,sigma,f):
a=radius*.001
if f==0:return 1/(math.pi*a*a*sigma)
delta=math.sqrt(2/(2*math.pi*f*MU0*sigma));k=(1-1j)/delta
return (k*bessel(0,k*a)/(2*math.pi*a*sigma*bessel(1,k*a))).real
def circuit_values(name):
i,v,psi=mo_getcircuitproperties(name)
return complex(i),complex(v),complex(psi)
def magnetic_b(x,y):
mo_smooth('on')
values=mo_getpointvalues(x,y)
mo_smooth('off')
return values[1],values[2]
def asinh(x):return math.log(x+math.sqrt(x*x+1))
def energy_identity(row,circuits,frequency):
power=0;fluxenergy=0
for name in circuits:
i,v,psi=circuit_values(name)
power+=(v*i.conjugate()).real/2
fluxenergy+=(psi*i.conjugate()).real/(4 if frequency else 2)
row['circuit_active_power_W']=power
row['circuit_energy_J']=fluxenergy
if frequency:
error=abs(power-row['ohmic_loss_W'])/max(abs(power),1e-20)
row['power_balance_relative']=error
check('Баланс активной мощности '+row['model'],error,0.015)
else:
error=abs(fluxenergy-row['energy_J'])/max(abs(fluxenergy),1e-20)
row['energy_identity_relative']=error
check('Энергия и потокосцепление '+row['model'],error,0.012/(2**(row['level']-1)))
def pair(z):return [z.real,z.imag]
def phase(z):return math.atan2(z.imag,z.real)*180/math.pi
def group_current(group):
mo_groupselectblock(group);current=complex(mo_blockintegral(7));mo_clearblock();return current
def circuit_power(names):
total=0
for name in names:
ii,vv,pp=circuit_values(name);total+=(vv*ii.conjugate()).real/2
return total
if MODE=='shade':
def build_shade(f,level,currents):
newdocument(0);mi_probdef(f,'millimeters','planar',1e-10,100,30,0)
material('Воздух');material('Линейный магнитопровод',500);material('Изолированная обмотка');material('Медь экранирующего витка',1,CONFIG['sigma'])
mi_addboundprop('Удалённая граница A=0',0,0,0,0,0,0,0,0,0)
rect(-40,-15,40,60)
for x,y in ((0,-15),(40,20),(0,60),(-40,20)):
mi_selectsegment(x,y);mi_setsegmentprop('Удалённая граница A=0',4/(2**level),0,0,0);mi_clearselected()
polygon([(-18,0),(18,0),(18,36),(12,36),(12,6),(-12,6),(-12,36),(-18,36)])
label(0,3,'Линейный магнитопровод',.8/(2**level),5)
rect(-18,38,18,44);label(0,41,'Линейный магнитопровод',.8/(2**level),6)
names=['Первичная обмотка','Экранирующий виток']
for name,current in zip(names,currents):mi_addcircprop(name,current,1)
for x,sign in ((-20,1),(-10,-1)):
rect(x-1,12,x+1,24);label(x,18,'Изолированная обмотка',.5/(2**level),11,names[0],200*sign)
for x,sign in ((-19.5,1),(-15,-1)):
rect(x-.5,30,x+.5,35);label(x,32.5,'Медь экранирующего витка',.25/(2**level),12,names[1],sign)
# Прорезь выходит на поверхность полюса: без неё железная перемычка
# вокруг внутренней стороны витка шунтировала бы его полезную связь.
rect(-15.5,35,-14.5,36);label(-15,35.5,'Воздух',.2/(2**level),3)
# Дополнительные линии задают подробную сетку зазора и полюсных краёв.
rect(-24,27,24,48);label(22,37,'Воздух',.5/(2**level),3)
label(-17,29,'Линейный магнитопровод',.4/(2**level),5);label(15,30,'Линейный магнитопровод',.4/(2**level),5)
label(0,20,'Воздух',1.5/(2**level),2);label(30,0,'Воздух',4/(2**level),1)
return names
def pole_average(x1,x2):
aa=complex(mo_getpointvalues(x1,37)[0]);bb=complex(mo_getpointvalues(x2,37)[0])
return (aa-bb)/((x2-x1)*.001)
for variant in CONFIG['variants']:
for level in range(3):
Z=[[0j,0j],[0j,0j]]
for excitation in (0,1):
currents=[1 if j==excitation else 0 for j in range(2)]
names=build_shade(variant,level,currents)
row=solve(level,variant,'-exc%d'%excitation);row['excitation']=excitation;row['shape']='matrix'
energy_identity(row,names,variant)
for j,name in enumerate(names):Z[j][excitation]=circuit_values(name)[1]
row.update({'matrix_column_complex_ohm':[pair(Z[j][excitation]) for j in range(2)],'primary':abs(Z[excitation][excitation])})
if excitation==0:
row['open_shaded_B_complex_T']=pair(pole_average(-18,-15.5));row['open_unshaded_B_complex_T']=pair(pole_average(-14.5,-12))
records.append(row);finish()
check('Взаимность матрицы экранирующего витка '+str(variant)+' сетка '+str(level+1),abs(Z[0][1]-Z[1][0])/max(abs(Z[0][1]),abs(Z[1][0])),.006)
current=-Z[1][0]/(Z[1][1]+CONFIG['Rend'])
names=build_shade(variant,level,[1,current])
row=solve(level,variant,'-shorted');row['excitation']=2;row['shape']='shorted'
energy_identity(row,names,variant)
ii,vv,pp=circuit_values(names[1]);primary=circuit_values(names[0]);bend=CONFIG['Rend']*abs(current)**2/2
shaded=pole_average(-18,-15.5);unshaded=pole_average(-14.5,-12)
delta=phase(shaded/unshaded)
kvl=abs(vv+CONFIG['Rend']*ii)/max(abs(Z[1][0]),1e-20)
power=(primary[1]*primary[0].conjugate()).real/2
check('Кирхгоф замкнутого витка '+row['model'],kvl,.0002)
check('Мощность источника равна потерям поля и торцов '+row['model'],abs(power-row['ohmic_loss_W']-bend)/max(abs(power),1e-20),.015)
check('Пассивность короткозамкнутого витка '+row['model'],max(0,-power),0)
row.update({'short_turn_current_real_A':current.real,'short_turn_current_imag_A':current.imag,'short_turn_current_amplitude_A':abs(current),'shaded_field_amplitude_T':abs(shaded),'unshaded_field_amplitude_T':abs(unshaded),'spatial_phase_shift_deg':delta,'end_return_loss_W':bend,'source_active_power_W':power,'loop_KVL_relative':kvl,'primary':abs(current)})
records.append(row);finish()
finest=[r for r in records if r.get('shape')=='shorted' and r['level']==3]
for row in finest:
check('Разрешимый пространственный фазовый сдвиг '+str(row['variant']),max(0,1-abs(row['spatial_phase_shift_deg'])),0)
elif MODE=='matrix':
def build_matrix(f,level,currents):
start(False,f,40,level);material('Медь жил и общей оболочки',1,CONFIG['sigma'])
names=[]
allcurrents=currents+[-sum(currents)]
for j,current in enumerate(allcurrents):
name='Жила %d'%(j+1) if j<3 else 'Общая возвратная оболочка'
mi_addcircprop(name,current,1);names.append(name)
for j,x in enumerate((-4,0,4)):
circle(x,0,1.5,.8/(2**level));label(x,0,'Медь жил и общей оболочки',.24/(2**level),11+j,names[j])
circle(0,0,10,1.2/(2**level));circle(0,0,11,1.2/(2**level));label(0,10.5,'Медь жил и общей оболочки',.2/(2**level),14,names[3])
label(0,5,'Воздух',.7/(2**level),3);label(0,25,'Воздух',4/(2**level),1)
return names
def get_ports(names):
values=[circuit_values(name) for name in names]
return [values[j][1]-values[3][1] for j in range(3)]
for variant in CONFIG['variants']:
for level in range(3):
Z=[[0j]*3 for j in range(3)]
for excitation in range(3):
currents=[1 if j==excitation else 0 for j in range(3)]
names=build_matrix(variant,level,currents)
row=solve(level,variant,'-exc%d'%excitation);row['excitation']=excitation;row['shape']='matrix'
energy_identity(row,names,variant)
ports=get_ports(names)
for j in range(3):Z[j][excitation]=ports[j]
for j,wanted in enumerate(currents+[-sum(currents)]):
check('Интеграл плотности тока проводника '+str(j+1)+' '+row['model'],abs(group_current(11+j)-wanted),.002)
dc=1/(CONFIG['sigma']*math.pi*(.0015)**2)+1/(CONFIG['sigma']*math.pi*(.011**2-.010**2))
check('Нижняя граница равномерного DC-тока '+row['model'],max(0,dc/Z[excitation][excitation].real-1),.002)
row.update({'port_impedances_complex_ohm':[pair(v) for v in ports],'port_self_resistance_ohm':Z[excitation][excitation].real,'port_self_reactance_ohm':Z[excitation][excitation].imag,'dc_uniform_lower_bound_ohm':dc,'primary':abs(ports[excitation])})
records.append(row);finish()
scale=max(abs(z) for line in Z for z in line)
for j in range(3):
for k in range(j):check('Комплексная взаимность Z%d%d '%(j+1,k+1)+str(variant)+' сетка '+str(level+1),abs(Z[j][k]-Z[k][j])/scale,.002)
# Пассивность проверяется для независимого комплексного набора токов.
probe=[1,complex(-.4,.8),complex(.2,-.5)]
p=sum((sum(Z[j][k]*probe[k] for k in range(3))*probe[j].conjugate()).real/2 for j in range(3))
check('Пассивность квадратичной формы '+str(variant)+' сетка '+str(level+1),max(0,-p),0)
for load_index,loads in enumerate(CONFIG['loads']):
aa=Z[1][1]+loads[0];bb=Z[1][2];cc=Z[2][1];dd=Z[2][2]+loads[1]
det=aa*dd-bb*cc
currents=[1,(-Z[1][0]*dd+bb*Z[2][0])/det,(-aa*Z[2][0]+cc*Z[1][0])/det]
names=build_matrix(variant,level,currents)
row=solve(level,variant,'-load%d'%load_index);row['excitation']=3+load_index;row['shape']='load%d'%load_index
energy_identity(row,names,variant)
ports=get_ports(names);predicted=[sum(Z[j][k]*currents[k] for k in range(3)) for j in range(3)]
mismatch=max(abs(ports[j]-predicted[j]) for j in range(3))/max(abs(z) for z in ports)
kvl=max(abs(ports[j]+loads[j-1]*currents[j]) for j in (1,2))/max(abs(z) for z in ports)
loadloss=sum(loads[j-1]*abs(currents[j])**2/2 for j in (1,2));power=ports[0].real/2
check('Суперпозиция полной комплексной матрицы '+row['model'],mismatch,.0002)
check('Кирхгоф двух нагруженных портов '+row['model'],kvl,.0002)
check('Мощность источника — металл и нагрузки '+row['model'],abs(power-row['ohmic_loss_W']-loadloss)/max(abs(power),1e-20),.015)
row.update({'load_index':load_index,'load_resistances_ohm':loads,'port_currents_complex_A':[pair(z) for z in currents],'port_current_amplitudes_A':[abs(z) for z in currents],'port_voltages_complex_V':[pair(z) for z in ports],'load_losses_W':loadloss,'source_active_power_W':power,'matrix_superposition_relative':mismatch,'loaded_KVL_relative':kvl,'primary':power})
records.append(row);finish()
if level==2:records.append({'measurement':'full_complex_port_impedance_matrix','frequency_Hz':variant,'matrix_complex_ohm':[[pair(z) for z in line] for line in Z]})
# Сходимость по трём сеткам проверяется отдельно для каждого физического режима.
groups={}
for row in records:
if 'level' not in row:continue
key=str(row['variant'])+str(row.get('shape',''))+str(row.get('excitation',''))
if key not in groups:groups[key]=[]
groups[key].append(row)
for key,rows in groups.items():
rows.sort(key=lambda row:row['level'])
value=abs(rows[-1]['primary']/rows[-2]['primary']-1)
check('Сходимость измеряемой величины, режим '+key,value,0.025 if MODE in ('shade','matrix') else 0.012)
result={'runtime':'FEMM 5; embedded MicroPython','case_id':'shaded-pole-short-turn','records':records,'checks':checks,'passed':all(c['passed'] for c in checks),'scope':'Самостоятельная учебная 2D/осесимметричная модель; численные проверки относятся к указанным параметрам.'}
with open(directory+'/result.json','w') as stream:json.dump(result,stream)
print(json.dumps(result))
assert result['passed']
Картина рассчитанного поля
Окна FEMM 5
Снимки интерфейса FEMM показывают геометрию, настройки и работу с результатами в FEMM 5. Откройте изображение, чтобы рассмотреть подписи и значения в полном размере.
Результаты и численные проверки
Сохранено решений FEMM: 27. Выполнено проверок: 75. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.
| Поле охваченной части при разомкнутом витке, Тл | Частота, Гц | Файл модели | Сохранение, открытие и решение | Столбец комплексной матрицы Z, Ом | Число узлов | Поле соседней части при разомкнутом витке, Тл | Энергия по потокосцеплениям, Дж | Уровень сетки | Средние джоулевы потери, Вт | Относительная ошибка баланса мощности | Активная мощность цепей, Вт | Число элементов | Номер возбуждения | Энергия поля, Дж | Режим цепи | Основной численный результат | Невязка уравнения Кирхгофа витка | Амплитуда тока витка, А | Мнимая часть тока витка, А | Потери торцевых соединений, Вт | Действительная часть тока витка, А | Амплитуда поля соседней части, Тл | Пространственная разность фаз, ° | Амплитуда поля охваченной части, Тл | Активная мощность источника, Вт |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 значений; полные данные JSON | 20 | model-20-01-exc0.fem | Да | 2 точек; полные данные JSON | 11114 | 2 значений; полные данные JSON | 0,0045889999 | 1 | 69,423826 × 10⁻⁶ | 2,3441476 × 10⁻⁹ | 69,423827 × 10⁻⁶ | 21943 | 0 | 0,0045889999 | matrix | 2,3066829 | — | — | — | — | — | — | — | — | — |
| — | 20 | model-20-01-exc1.fem | Да | 2 точек; полные данные JSON | 11114 | — | 147,81494 × 10⁻⁹ | 1 | 345,00693 × 10⁻⁶ | 2,4266786 × 10⁻¹² | 345,00693 × 10⁻⁶ | 21943 | 1 | 147,81494 × 10⁻⁹ | matrix | 694,00259 × 10⁻⁶ | — | — | — | — | — | — | — | — | — |
| — | 20 | model-20-01-shorted.fem | Да | — | 11114 | — | 0,0045868053 | 1 | 0,0051618611 | 51,191514 × 10⁻¹² | 0,0051618611 | 21943 | 2 | 0,0045868053 | shorted | 3,8420263 | 10,287972 × 10⁻¹² | 3,8420263 | -3,8286302 | 0,0014761166 | -0,32055757 | 0,057410671 | -2,1020933 | 0,056730261 | 0,0066379778 |
| 2 значений; полные данные JSON | 20 | model-20-02-exc0.fem | Да | 2 точек; полные данные JSON | 29549 | 2 значений; полные данные JSON | 0,0045971341 | 2 | 69,44668 × 10⁻⁶ | 1,7774272 × 10⁻¹² | 69,44668 × 10⁻⁶ | 58816 | 0 | 0,0045971341 | matrix | 2,3107716 | — | — | — | — | — | — | — | — | — |
| — | 20 | model-20-02-exc1.fem | Да | 2 точек; полные данные JSON | 29549 | — | 148,33899 × 10⁻⁹ | 2 | 345,00692 × 10⁻⁶ | 99,147514 × 10⁻¹⁵ | 345,00692 × 10⁻⁶ | 58816 | 1 | 148,33899 × 10⁻⁹ | matrix | 694,03083 × 10⁻⁶ | — | — | — | — | — | — | — | — | — |
| — | 20 | model-20-02-shorted.fem | Да | — | 29549 | — | 0,0045949207 | 2 | 0,0051874355 | 273,2119 × 10⁻¹⁵ | 0,0051874355 | 58816 | 2 | 0,0045949207 | shorted | 3,8516531 | 2,4428516 × 10⁻¹² | 3,8516531 | -3,838129 | 0,0014835231 | -0,32248573 | 0,057280743 | -2,0972853 | 0,056541803 | 0,0066709586 |
| 2 значений; полные данные JSON | 20 | model-20-03-exc0.fem | Да | 2 точек; полные данные JSON | 104144 | 2 значений; полные данные JSON | 0,0046019571 | 3 | 69,395134 × 10⁻⁶ | 1,2323119 × 10⁻¹² | 69,395134 × 10⁻⁶ | 207794 | 0 | 0,0046019571 | matrix | 2,313196 | — | — | — | — | — | — | — | — | — |
| — | 20 | model-20-03-exc1.fem | Да | 2 точек; полные данные JSON | 104144 | — | 148,74609 × 10⁻⁹ | 3 | 345,00691 × 10⁻⁶ | 2,4488337 × 10⁻¹² | 345,00691 × 10⁻⁶ | 207794 | 1 | 148,74609 × 10⁻⁹ | matrix | 694,05282 × 10⁻⁶ | — | — | — | — | — | — | — | — | — |
| — | 20 | model-20-03-shorted.fem | Да | — | 104144 | — | 0,0045997311 | 3 | 0,0052028191 | 2,9217587 × 10⁻¹² | 0,0052028191 | 207794 | 2 | 0,0045997311 | shorted | 3,8574568 | 1,3116914 × 10⁻¹² | 3,8574568 | -3,8438387 | 0,0014879973 | -0,32384674 | 0,05730451 | -2,0995248 | 0,056585956 | 0,0066908164 |
| 2 значений; полные данные JSON | 50 | model-50-01-exc0.fem | Да | 2 точек; полные данные JSON | 11114 | 2 значений; полные данные JSON | 0,0045889924 | 1 | 433,83589 × 10⁻⁶ | 47,613605 × 10⁻¹² | 433,83589 × 10⁻⁶ | 21943 | 0 | 0,0045889924 | matrix | 5,766698 | — | — | — | — | — | — | — | — | — |
| — | 50 | model-50-01-exc1.fem | Да | 2 точек; полные данные JSON | 11114 | — | 147,7369 × 10⁻⁹ | 1 | 345,94574 × 10⁻⁶ | 2,1417919 × 10⁻¹² | 345,94574 × 10⁻⁶ | 21943 | 1 | 147,7369 × 10⁻⁹ | matrix | 716,36607 × 10⁻⁶ | — | — | — | — | — | — | — | — | — |
| — | 50 | model-50-01-shorted.fem | Да | — | 11114 | — | 0,0045758167 | 1 | 0,031097495 | 98,401887 × 10⁻¹⁵ | 0,031097495 | 21943 | 2 | 0,0045758167 | shorted | 9,4162719 | 2,2026928 × 10⁻¹² | 9,4162719 | -9,2175069 | 0,0088666176 | -1,9245112 | 0,057564197 | -5,1070762 | 0,05613565 | 0,039964113 |
| 2 значений; полные данные JSON | 50 | model-50-02-exc0.fem | Да | 2 точек; полные данные JSON | 29549 | 2 значений; полные данные JSON | 0,0045971266 | 2 | 433,97782 × 10⁻⁶ | 5,6172788 × 10⁻¹² | 433,97782 × 10⁻⁶ | 58816 | 0 | 0,0045971266 | matrix | 5,7769197 | — | — | — | — | — | — | — | — | — |
| — | 50 | model-50-02-exc1.fem | Да | 2 точек; полные данные JSON | 29549 | — | 148,26083 × 10⁻⁹ | 2 | 345,9457 × 10⁻⁶ | 1,7337421 × 10⁻¹² | 345,9457 × 10⁻⁶ | 58816 | 1 | 148,26083 × 10⁻⁹ | matrix | 716,53691 × 10⁻⁶ | — | — | — | — | — | — | — | — | — |
| — | 50 | model-50-02-shorted.fem | Да | — | 29549 | — | 0,0045838416 | 2 | 0,031243917 | 1,1133263 × 10⁻¹² | 0,031243917 | 58816 | 2 | 0,0045838416 | shorted | 9,4387058 | 3,8136201 × 10⁻¹² | 9,4387058 | -9,2381041 | 0,0089089167 | -1,9356135 | 0,057432928 | -5,0943881 | 0,055947183 | 0,040152833 |
| 2 значений; полные данные JSON | 50 | model-50-03-exc0.fem | Да | 2 точек; полные данные JSON | 104144 | 2 значений; полные данные JSON | 0,0046019496 | 3 | 433,6553 × 10⁻⁶ | 2,136626 × 10⁻¹² | 433,6553 × 10⁻⁶ | 207794 | 0 | 0,0046019496 | matrix | 5,7829804 | — | — | — | — | — | — | — | — | — |
| — | 50 | model-50-03-exc1.fem | Да | 2 точек; полные данные JSON | 104144 | — | 148,66791 × 10⁻⁹ | 3 | 345,94564 × 10⁻⁶ | 6,3094185 × 10⁻¹² | 345,94564 × 10⁻⁶ | 207794 | 1 | 148,66791 × 10⁻⁹ | matrix | 716,66997 × 10⁻⁶ | — | — | — | — | — | — | — | — | — |
| — | 50 | model-50-03-shorted.fem | Да | — | 104144 | — | 0,0045885909 | 3 | 0,031330596 | 7,1345445 × 10⁻¹² | 0,031330596 | 207794 | 2 | 0,0045885909 | shorted | 9,4520238 | 6,8654113 × 10⁻¹² | 9,4520238 | -9,2500757 | 0,0089340755 | -1,9434129 | 0,057456791 | -5,0991002 | 0,055988196 | 0,040264671 |
| 2 значений; полные данные JSON | 200 | model-200-01-exc0.fem | Да | 2 точек; полные данные JSON | 11114 | 2 значений; полные данные JSON | 0,0045888589 | 1 | 0,0069234214 | 20,389841 × 10⁻¹² | 0,0069234214 | 21943 | 0 | 0,0045888589 | matrix | 23,066125 | — | — | — | — | — | — | — | — | — |
| — | 200 | model-200-01-exc1.fem | Да | 2 точек; полные данные JSON | 11114 | — | 146,40896 × 10⁻⁹ | 1 | 361,97705 × 10⁻⁶ | 989,0228 × 10⁻¹⁵ | 361,97705 × 10⁻⁶ | 21943 | 1 | 146,40896 × 10⁻⁹ | matrix | 0,0010323299 | — | — | — | — | — | — | — | — | — |
| — | 200 | model-200-01-shorted.fem | Да | — | 11114 | — | 0,0044646029 | 1 | 0,3107803 | 18,460414 × 10⁻¹² | 0,3107803 | 21943 | 2 | 0,0044646029 | shorted | 29,044602 | 20,664899 × 10⁻¹² | 29,044602 | -22,674992 | 0,084358891 | -18,150307 | 0,059099018 | -13,960558 | 0,049735408 | 0,39513919 |
| 2 значений; полные данные JSON | 200 | model-200-02-exc0.fem | Да | 2 точек; полные данные JSON | 29549 | 2 значений; полные данные JSON | 0,0045969921 | 2 | 0,0069254334 | 22,200315 × 10⁻¹² | 0,0069254334 | 58816 | 0 | 0,0045969921 | matrix | 23,107007 | — | — | — | — | — | — | — | — | — |
| — | 200 | model-200-02-exc1.fem | Да | 2 точек; полные данные JSON | 29549 | — | 146,93116 × 10⁻⁹ | 2 | 361,97448 × 10⁻⁶ | 1,0471376 × 10⁻¹² | 361,97448 × 10⁻⁶ | 58816 | 1 | 146,93116 × 10⁻⁹ | matrix | 0,0010341992 | — | — | — | — | — | — | — | — | — |
| — | 200 | model-200-02-shorted.fem | Да | — | 29549 | — | 0,0044720121 | 2 | 0,31147675 | 177,14993 × 10⁻¹⁵ | 0,31147675 | 58816 | 2 | 0,0044720121 | shorted | 29,077887 | 3,4700544 × 10⁻¹² | 29,077887 | -22,669502 | 0,084552352 | -18,21036 | 0,058950468 | -13,895104 | 0,049563536 | 0,3960291 |
| 2 значений; полные данные JSON | 200 | model-200-03-exc0.fem | Да | 2 точек; полные данные JSON | 104144 | 2 значений; полные данные JSON | 0,0046018148 | 3 | 0,006920171 | 15,264312 × 10⁻¹² | 0,006920171 | 207794 | 0 | 0,0046018148 | matrix | 23,131248 | — | — | — | — | — | — | — | — | — |
| — | 200 | model-200-03-exc1.fem | Да | 2 точек; полные данные JSON | 104144 | — | 147,33772 × 10⁻⁹ | 3 | 361,97288 × 10⁻⁶ | 570,44688 × 10⁻¹⁵ | 361,97288 × 10⁻⁶ | 207794 | 1 | 147,33772 × 10⁻⁹ | matrix | 0,0010356573 | — | — | — | — | — | — | — | — | — |
| — | 200 | model-200-03-shorted.fem | Да | — | 104144 | — | 0,0044763807 | 3 | 0,31174312 | 1,2245665 × 10⁻¹² | 0,31174312 | 207794 | 2 | 0,0044763807 | shorted | 29,090917 | 3,5234821 × 10⁻¹² | 29,090917 | -22,655168 | 0,084628144 | -18,248967 | 0,058972155 | -13,886249 | 0,049583033 | 0,39637126 |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Баланс активной мощности model-20-01-exc0.fem | 2,344 × 10⁻⁹ | 0,015 | Выполнен |
| Баланс активной мощности model-20-01-exc1.fem | 2,427 × 10⁻¹² | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 20 сетка 1 | 1,93 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-20-01-shorted.fem | 51,19 × 10⁻¹² | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-20-01-shorted.fem | 10,29 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-20-01-shorted.fem | 47,32 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-20-01-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-20-02-exc0.fem | 1,777 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-20-02-exc1.fem | 99,15 × 10⁻¹⁵ | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 20 сетка 2 | 2,206 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-20-02-shorted.fem | 273,2 × 10⁻¹⁵ | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-20-02-shorted.fem | 2,443 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-20-02-shorted.fem | 674,3 × 10⁻¹⁵ | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-20-02-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-20-03-exc0.fem | 1,232 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-20-03-exc1.fem | 2,449 × 10⁻¹² | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 20 сетка 3 | 50,04 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-20-03-shorted.fem | 2,922 × 10⁻¹² | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-20-03-shorted.fem | 1,312 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-20-03-shorted.fem | 3,426 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-20-03-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-50-01-exc0.fem | 47,61 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-50-01-exc1.fem | 2,142 × 10⁻¹² | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 50 сетка 1 | 6,377 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-50-01-shorted.fem | 98,4 × 10⁻¹⁵ | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-50-01-shorted.fem | 2,203 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-50-01-shorted.fem | 2,297 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-50-01-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-50-02-exc0.fem | 5,617 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-50-02-exc1.fem | 1,734 × 10⁻¹² | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 50 сетка 2 | 7,677 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-50-02-shorted.fem | 1,113 × 10⁻¹² | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-50-02-shorted.fem | 3,814 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-50-02-shorted.fem | 502 × 10⁻¹⁵ | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-50-02-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-50-03-exc0.fem | 2,137 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-50-03-exc1.fem | 6,309 × 10⁻¹² | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 50 сетка 3 | 37,34 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-50-03-shorted.fem | 7,135 × 10⁻¹² | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-50-03-shorted.fem | 6,865 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-50-03-shorted.fem | 1,384 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-50-03-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-200-01-exc0.fem | 20,39 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-200-01-exc1.fem | 989 × 10⁻¹⁵ | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 200 сетка 1 | 2,692 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-200-01-shorted.fem | 18,46 × 10⁻¹² | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-200-01-shorted.fem | 20,66 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-200-01-shorted.fem | 15,84 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-200-01-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-200-02-exc0.fem | 22,2 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-200-02-exc1.fem | 1,047 × 10⁻¹² | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 200 сетка 2 | 24,01 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-200-02-shorted.fem | 177,1 × 10⁻¹⁵ | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-200-02-shorted.fem | 3,47 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-200-02-shorted.fem | 1,344 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-200-02-shorted.fem | 0 | 0 | Выполнен |
| Баланс активной мощности model-200-03-exc0.fem | 15,26 × 10⁻¹² | 0,015 | Выполнен |
| Баланс активной мощности model-200-03-exc1.fem | 570,4 × 10⁻¹⁵ | 0,015 | Выполнен |
| Взаимность матрицы экранирующего витка 200 сетка 3 | 41,86 × 10⁻¹² | 0,006 | Выполнен |
| Баланс активной мощности model-200-03-shorted.fem | 1,225 × 10⁻¹² | 0,015 | Выполнен |
| Кирхгоф замкнутого витка model-200-03-shorted.fem | 3,523 × 10⁻¹² | 0,0002 | Выполнен |
| Мощность источника равна потерям поля и торцов model-200-03-shorted.fem | 3,034 × 10⁻¹² | 0,015 | Выполнен |
| Пассивность короткозамкнутого витка model-200-03-shorted.fem | 0 | 0 | Выполнен |
| Разрешимый пространственный фазовый сдвиг 20 | 0 | 0 | Выполнен |
| Разрешимый пространственный фазовый сдвиг 50 | 0 | 0 | Выполнен |
| Разрешимый пространственный фазовый сдвиг 200 | 0 | 0 | Выполнен |
| Сходимость измеряемой величины, режим 200shorted2 | 448,1 × 10⁻⁶ | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 200matrix0 | 0,001049 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 200matrix1 | 0,00141 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 50matrix1 | 185,7 × 10⁻⁶ | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 50matrix0 | 0,001049 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 20matrix0 | 0,001049 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 50shorted2 | 0,001411 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 20matrix1 | 31,69 × 10⁻⁶ | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 20shorted2 | 0,001507 | 0,025 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md7614 байт
- Магнитное решение: model-20-01-exc0.ans1551686 байт
- Магнитная модель: model-20-01-exc0.fem4236 байт
- Магнитное решение: model-20-01-exc1.ans1551309 байт
- Магнитная модель: model-20-01-exc1.fem4236 байт
- Магнитное решение: model-20-01-shorted.ans1551778 байт
- Магнитная модель: model-20-01-shorted.fem4273 байт
- Магнитное решение: model-20-02-exc0.ans4300220 байт
- Магнитная модель: model-20-02-exc0.fem4242 байт
- Магнитное решение: model-20-02-exc1.ans4298983 байт
- Магнитная модель: model-20-02-exc1.fem4242 байт
- Магнитное решение: model-20-02-shorted.ans4300197 байт
- Магнитная модель: model-20-02-shorted.fem4279 байт
- Магнитное решение: model-20-03-exc0.ans15467210 байт
- Магнитная модель: model-20-03-exc0.fem4249 байт
- Магнитное решение: model-20-03-exc1.ans15463404 байт
- Магнитная модель: model-20-03-exc1.fem4249 байт
- Магнитное решение: model-20-03-shorted.ans15467184 байт
- Магнитная модель: model-20-03-shorted.fem4286 байт
- Магнитное решение: model-200-01-exc0.ans1551747 байт
- Магнитная модель: model-200-01-exc0.fem4237 байт
- Магнитное решение: model-200-01-exc1.ans1551296 байт
- Магнитная модель: model-200-01-exc1.fem4237 байт
- Магнитное решение: model-200-01-shorted.ans1551788 байт
- Магнитная модель: model-200-01-shorted.fem4273 байт
- Магнитное решение: model-200-02-exc0.ans4300323 байт
- Магнитная модель: model-200-02-exc0.fem4243 байт
- Магнитное решение: model-200-02-exc1.ans4299153 байт
- Магнитная модель: model-200-02-exc1.fem4243 байт
- Магнитное решение: model-200-02-shorted.ans4300205 байт
- Магнитная модель: model-200-02-shorted.fem4279 байт
- Магнитное решение: model-200-03-exc0.ans15467229 байт
- Магнитная модель: model-200-03-exc0.fem4250 байт
- Магнитное решение: model-200-03-exc1.ans15463695 байт
- Магнитная модель: model-200-03-exc1.fem4250 байт
- Магнитное решение: model-200-03-shorted.ans15467606 байт
- Магнитная модель: model-200-03-shorted.fem4286 байт
- Магнитное решение: model-50-01-exc0.ans1551671 байт
- Магнитная модель: model-50-01-exc0.fem4236 байт
- Магнитное решение: model-50-01-exc1.ans1551318 байт
- Магнитная модель: model-50-01-exc1.fem4236 байт
- Магнитное решение: model-50-01-shorted.ans1551763 байт
- Магнитная модель: model-50-01-shorted.fem4272 байт
- Магнитное решение: model-50-02-exc0.ans4300213 байт
- Магнитная модель: model-50-02-exc0.fem4242 байт
- Магнитное решение: model-50-02-exc1.ans4299111 байт
- Магнитная модель: model-50-02-exc1.fem4242 байт
- Магнитное решение: model-50-02-shorted.ans4300387 байт
- Магнитная модель: model-50-02-shorted.fem4278 байт
- Магнитное решение: model-50-03-exc0.ans15467241 байт
- Магнитная модель: model-50-03-exc0.fem4249 байт
- Магнитное решение: model-50-03-exc1.ans15463734 байт
- Магнитная модель: model-50-03-exc1.fem4249 байт
- Магнитное решение: model-50-03-shorted.ans15467009 байт
- Магнитная модель: model-50-03-shorted.fem4285 байт
- Программа встроенного Python: reproduce.py16802 байт
Границы применимости
- Неподвижная плоская полевая модель с линейным непроводящим магнитопроводом. Трёхмерные торцы витка представлены заданным активным сопротивлением; их индуктивность отсутствует. Ротор и вращающий момент двигателя не рассчитываются.