Гармоническое магнитное поле · Осесимметричная
Индукционный каротаж: передатчик, приёмник и слоистая проводимость
В индукционном измерении передающая катушка возбуждает токи в окружающей проводящей среде, а приёмная регистрирует изменённое поле. Комплексный коэффициент передачи зависит от проводимости и расположения слоёв. Работа демонстрирует прямой полевой отклик двух катушек и проверяет его взаимность; геологическая интерпретация по этому отклику не выполняется.
Обе катушки имеют средний радиус 50 мм, сечение 4×10 мм и по 100 витков. Их центры расположены на z=−250 и +250 мм внутри воздушной скважины радиусом 75 мм. Амплитуда активного возбуждения 1 А, частота 100 кГц. Сравниваются воздух, однородные среды 0.1, 1 и 10 См/м и двухслойная среда: ниже z=0 проводимость 0.1, выше 10 См/м.
Самостоятельная учебная модель FEMM 5: от физических соотношений к полевому решению и проверке результата.
Допущения и устройство учебной модели
Все размеры, свойства материалов и условия возбуждения заданы ниже. Численные результаты относятся к опубликованной версии модели FEMM 5.
Физическая и математическая постановка
Прямая комплексная связь
Открытая приёмная обмотка имеет нулевой ток, но ненулевое потокосцепление. Его отношение к току передатчика определяет комплексную взаимную индуктивность. Мнимая часть появляется из-за фазового сдвига вторичного поля вихревых токов. Амплитуда идеального приёмного напряжения равна ω|M||Iперед|.
Все среды немагнитны; электрическое смещение в магнитоквазистатической задаче не учитывается. Размер области r≤20 м, |z|≤20 м выбран с учётом наибольшей глубины проникновения для ненулевой проводимости. Скважина и ближайшая к катушкам область имеют отдельную более подробную сетку, чтобы удалённая граница не определяла размер элементов возле измерительных обмоток.
Независимые проверки
Воздушный контроль сравнивается с независимым интегралом Неймана для двух тонких круговых обмоток. В каждой проводящей среде выполняются прямое и обратное возбуждения: катушки меняются ролями без изменения геометрии и свойств слоёв. Комплексные коэффициенты передачи должны совпасть по взаимности даже в несимметричной слоистой среде.
На трёх сетках проверяются модуль передачи и баланс активной мощности между цепью возбуждения и проводящей средой. Отдельные критерии подтверждают разрешимый отклик на увеличение проводимости и на слоистость. Изменение сигнала не доказывает однозначную возможность восстановить свойства: разные распределения проводимости могут давать близкие показания. Реальная скважина потребует учёта бурового раствора, корпуса прибора, смещения катушек от оси и диапазона измерительных шумов.
Исходные данные
Осесимметричная
| Параметр | Значение | Единица | Происхождение |
|---|---|---|---|
| Радиус катушки | 50 | мм | Заданный параметр самостоятельной учебной модели |
| Сечение катушки | 4 × 10 | мм | Заданный параметр самостоятельной учебной модели |
| Расстояние Tx/Rx | 500 | мм | Заданный параметр самостоятельной учебной модели |
| Число витков каждой катушки | 100 | Заданный параметр самостоятельной учебной модели | |
| Радиус скважины | 75 | мм | Заданный параметр самостоятельной учебной модели |
| Частота | 100000 | Гц | Заданный параметр самостоятельной учебной модели |
| Амплитуда тока | 1 | А | Заданный параметр самостоятельной учебной модели |
| Проводимости сред | 0;0.1;1;10 | См/м | Заданный параметр самостоятельной учебной модели |
| Радиус и полуразмах внешней области | 20 | м | Заданный параметр самостоятельной учебной модели |
Порядок воспроизведения
- До запуска запишите уравнение контрольной величины и ожидаемое направление изменения при вариации параметра. Согласуйте миллиметры геометрии с единицами СИ в формулах. Создайте отдельную папку и откройте reproduce.py во встроенном редакторе Python FEMM 5. Команды mi_* и mo_* в этой среде уже доступны глобально.
- Выполните программу целиком. Она создаёт новый calculated-NN, строит каждую модель с русскими именами материалов и цепей, сохраняет файл FEM, закрывает его и повторно открывает перед решением. Поэтому проверка относится к точному записанному варианту модели и охватывает сохранение кириллицы.
- Изучите result.json: records хранит численные результаты всех режимов и трёх сеток, checks — названия проверок, измеренные отклонения, допуски и итог. Откройте модель и решение финальной сетки; сопоставьте материалы, направление токов и характерные размеры с таблицей параметров.
- Составьте отчёт с физическим объяснением, таблицей сходимости и независимым контрольным расчётом. Затем измените один параметр и выполните новую серию. Сохраняйте предыдущую серию для сравнения; успешное завершение решателя само по себе не заменяет проверки физического масштаба и сеточной устойчивости.
Скачайте нужные файлы по отдельным ссылкам ниже в одну рабочую папку, затем откройте 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 = {'N': 100, 'I': 1, 'f': 100000, 'variants': [0, 1, 2, 3, 4]}
MODE = 'logging'
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)))
if MODE=='lvdt':
for variant in CONFIG['variants']:
for excitation in (1,2):
for level in range(3):
start(True,0,250,level);material('Медь идеальных обмоток');material('Линейный сердечник LVDT',CONFIG['mu'])
rect(0,variant-15,3,variant+15);label(1,variant,'Линейный сердечник LVDT',.6/(2**level),5)
names=[]
specs=[(0,200,1 if excitation==1 else 0),(20,100,1 if excitation==2 else 0),(-20,100,0)]
for num,(z,turns,current) in enumerate(specs,1):
name=('Первичная обмотка','Верхняя вторичная обмотка','Нижняя вторичная обмотка')[num-1]
mi_addcircprop(name,current,1);names.append(name)
rect(6,z-4,10,z+4);label(8,z,'Медь идеальных обмоток',.6/(2**level),10+num,name,turns)
rect(0,-60,30,60);label(20,0,'Воздух',1.2/(2**level),3);label(150,0,'Воздух',15/(2**level),1)
row=solve(level,variant,'-exc%d'%excitation);row['excitation']=excitation
energy_identity(row,names,0)
flux=[circuit_values(n)[2].real for n in names]
if excitation==1:
row.update({'primary_L_H':flux[0],'upper_M_H':flux[1],'lower_M_H':flux[2],'differential_M_H':flux[1]-flux[2],'differential_voltage_amplitude_V':2*math.pi*CONFIG['f']*abs(flux[1]-flux[2]),'differential_voltage_signed_V':2*math.pi*CONFIG['f']*(flux[1]-flux[2]),'primary':flux[0]})
else:row.update({'reverse_upper_M_H':flux[0],'upper_self_L_H':flux[1],'primary':flux[1]})
records.append(row);finish()
for displacement in CONFIG['variants']:
a=[r for r in records if r['variant']==displacement and r['level']==3 and r['excitation']==1][0]
b=[r for r in records if r['variant']==displacement and r['level']==3 and r['excitation']==2][0]
check('Взаимность первичная — верхняя при смещении '+str(displacement),abs(a['upper_M_H']/b['reverse_upper_M_H']-1),.002)
if displacement==0:check('Дифференциальный нуль в центре',abs(a['differential_M_H'])/max(abs(a['upper_M_H']),abs(a['lower_M_H'])),.002)
else:check('Знак дифференциального отклика при смещении '+str(displacement),max(0,-a['differential_M_H']*displacement),0)
for displacement in (5,10):
positive=[r for r in records if r['variant']==displacement and r['level']==3 and r['excitation']==1][0]
negative=[r for r in records if r['variant']==-displacement and r['level']==3 and r['excitation']==1][0]
check('Нечётность калибровочной характеристики ±'+str(displacement),abs(positive['differential_M_H']+negative['differential_M_H'])/max(abs(positive['differential_M_H']),abs(negative['differential_M_H'])),.01)
elif MODE=='logging':
def filament_mutual(radius,spacing,turns):
count=720;step=2*math.pi/count;total=0
for k in range(count+1):
angle=k*step
value=math.cos(angle)/math.sqrt(2*radius*radius+spacing*spacing-2*radius*radius*math.cos(angle))
total+=value*(1 if k in (0,count) else 4 if k%2 else 2)
return MU0*turns*turns*radius*radius/2*total*step/3
controls=((0,0),(.1,.1),(1,1),(10,10),(.1,10))
for variant in CONFIG['variants']:
for excitation in (1,2):
for level in range(3):
# Прямоугольная область: r=0..20м,z=±20м; ближние области сгущаются отдельно.
newdocument(0);mi_probdef(CONFIG['f'],'millimeters','axi',1e-10,1000,30,0)
material('Воздух скважины');material('Медь идеальных катушек')
lo,hi=controls[variant]
material('Нижний пласт',1,lo);material('Верхний пласт',1,hi)
mi_addboundprop('Удалённая граница A=0',0,0,0,0,0,0,0,0,0)
polygon([(0,-20000),(75,-20000),(1500,-20000),(20000,-20000),(20000,0),(20000,20000),(1500,20000),(75,20000),(0,20000)],'Удалённая граница A=0',1000/(2**level))
# Полный цилиндр скважины и два горизонтальных пласта.
for y in (-1000,0,1000):mi_addnode(75,y)
for a,b in ((-20000,-1000),(-1000,0),(0,1000),(1000,20000)):mi_addsegment(75,a,75,b)
mi_addsegment(75,0,20000,0)
# Ближняя зона горной среды и скважины не изменяет физических материалов.
for y in (-1000,1000):
mi_addnode(1500,y);mi_addsegment(75,y,1500,y)
mi_addnode(1500,0);mi_addsegment(1500,-1000,1500,0);mi_addsegment(1500,0,1500,1000)
for y in (-750,750):
mi_addnode(0,y);mi_addnode(75,y);mi_addsegment(0,y,75,y)
label(40,0,'Воздух скважины',8/(2**level),3)
label(40,-10000,'Воздух скважины',1000/(2**level),1);label(40,10000,'Воздух скважины',1000/(2**level),1)
label(500,-500,'Нижний пласт',60/(2**level),5);label(500,500,'Верхний пласт',60/(2**level),6)
label(5000,-5000,'Нижний пласт',600/(2**level),5);label(5000,5000,'Верхний пласт',600/(2**level),6)
names=[]
for num,z in enumerate((-250,250),1):
name='Передающая катушка' if num==1 else 'Приёмная катушка'
current=1 if num==excitation else 0
mi_addcircprop(name,current,1);names.append(name)
rect(48,z-5,52,z+5);label(50,z,'Медь идеальных катушек',1/(2**level),10+num,name,CONFIG['N'])
row=solve(level,variant,'-exc%d'%excitation);row['excitation']=excitation
energy_identity(row,names,CONFIG['f'])
ii,vv,mm=circuit_values(names[1 if excitation==1 else 0]);transfer=mm
row.update({'sigma_lower_S_m':lo,'sigma_upper_S_m':hi,'mutual_real_H':transfer.real,'mutual_imag_H':transfer.imag,'mutual_abs_H':abs(transfer),'transfer_phase_deg':math.atan2(transfer.imag,transfer.real)*180/math.pi,'receiver_voltage_amplitude_V':2*math.pi*CONFIG['f']*abs(transfer),'primary':abs(transfer)})
if variant==0:
exact=filament_mutual(.05,.5,CONFIG['N']);row['Neumann_air_mutual_H']=exact
check('Независимый интеграл Неймана в воздухе '+row['model'],abs(transfer.real/exact-1),.025)
check('Воздушный контроль без фазового сдвига '+row['model'],abs(transfer.imag)/abs(transfer),1e-8)
records.append(row);finish()
for variant in CONFIG['variants']:
a=[r for r in records if r['variant']==variant and r['level']==3 and r['excitation']==1][0]
b=[r for r in records if r['variant']==variant and r['level']==3 and r['excitation']==2][0]
ma=complex(a['mutual_real_H'],a['mutual_imag_H']);mb=complex(b['mutual_real_H'],b['mutual_imag_H'])
check('Комплексная взаимность Tx/Rx в среде '+str(variant),abs(ma-mb)/abs(ma),.003)
air=[r for r in records if r['variant']==0 and r['level']==3 and r['excitation']==1][0]
homogeneous=[r for r in records if r['variant']==2 and r['level']==3 and r['excitation']==1][0]
layered=[r for r in records if r['variant']==4 and r['level']==3 and r['excitation']==1][0]
high=[r for r in records if r['variant']==3 and r['level']==3 and r['excitation']==1][0]
signal=abs(complex(high['mutual_real_H']-air['mutual_real_H'],high['mutual_imag_H']-air['mutual_imag_H']))/air['mutual_abs_H']
layer_signal=abs(complex(layered['mutual_real_H']-homogeneous['mutual_real_H'],layered['mutual_imag_H']-homogeneous['mutual_imag_H']))/homogeneous['mutual_abs_H']
check('Разрешимый отклик на проводимость среды',max(0,.01-signal),0)
check('Разрешимый отклик на слоистость',max(0,.005-layer_signal),0)
elif MODE=='meissner':
for variant in CONFIG['variants']:
for level in range(3):
radius=variant;outer=20*radius
start(True,0,outer,level,CONFIG['B'])
mi_addboundprop('Идеальная граница Мейснера',0,0,0,0,0,0,0,0,0)
halfcircle(radius,2/(2**level),'Идеальная граница Мейснера')
label(radius*.5,0,'<No Mesh>',radius/10,0)
halfcircle(3*radius,3/(2**level))
label(2*radius,0,'Воздух',radius/10/(2**level),3);label(10*radius,0,'Воздух',outer/20/(2**level),1)
row=solve(level,variant)
probes=[]
for rp,zp in ((1.5,0),(2,0),(0,1.5),(0,2),(.9,.9)):
rr=math.sqrt(rp*rp+zp*zp);alpha=1/rr**3
br=-1.5*CONFIG['B']*alpha*rp*zp/(rr*rr)
bz=CONFIG['B']*((1-alpha)*zp*zp+(1+alpha/2)*rp*rp)/(rr*rr)
measured_r,measured_z=magnetic_b(rp*radius,zp*radius)
measured_r=real(measured_r);measured_z=real(measured_z)
err=math.sqrt((measured_r-br)**2+(measured_z-bz)**2)/CONFIG['B']
check('Аналитическое поле идеальной диамагнитной сферы '+str(rp)+','+str(zp)+' '+row['model'],err,.035/(2**level))
probes.append([rp,zp,measured_r,measured_z,br,bz])
row.update({'radius_mm':radius,'equator_1p5a_Bz_T':probes[0][3],'pole_1p5a_Bz_T':probes[2][3],'field_probes_r_over_a_z_over_a_T':probes,'energy_per_radius_cubed_J_m3':row['energy_J']/(radius*.001)**3,'primary':probes[0][3]})
records.append(row);finish()
finest=[r for r in records if r['level']==3]
for row in finest[1:]:check('Геометрическое подобие энергии a='+str(row['radius_mm']),abs(row['energy_per_radius_cubed_J_m3']/finest[0]['energy_per_radius_cubed_J_m3']-1),.005)
# Сходимость по трём сеткам проверяется отдельно для каждого физического режима.
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 ('lvdt','logging','meissner') else 0.012)
result={'runtime':'FEMM 5; embedded MicroPython','case_id':'electromagnetic-well-logging','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: 30. Выполнено проверок: 59. Полная точность чисел и условия сравнения доступны в таблицах результатов JSON.
| Файл модели | Сохранение, открытие и решение | Активная мощность цепей, Вт | Число элементов | Мнимая часть взаимной индуктивности, Гн | Уровень сетки | Интеграл Неймана в воздухе, Гн | Средние джоулевы потери, Вт | Относительная ошибка баланса мощности | Проводимость нижнего пласта, См/м | Фаза взаимной индуктивности, ° | Энергия по потокосцеплениям, Дж | Модуль взаимной индуктивности, Гн | Энергия поля, Дж | Амплитуда напряжения приёмника, В | Действительная часть взаимной индуктивности, Гн | Номер физического режима | Основной численный результат | Проводимость верхнего пласта, См/м | Номер возбуждения | Число узлов |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| model-0-01-exc1.fem | Да | 0 | 17178 | 0 | 1 | 958,24766 × 10⁻⁹ | 0 | 0 | 0 | 0 | 436,78096 × 10⁻⁶ | 949,86814 × 10⁻⁹ | 436,61443 × 10⁻⁶ | 0,59681976 | 949,86814 × 10⁻⁹ | 0 | 949,86814 × 10⁻⁹ | 0 | 1 | 8953 |
| model-0-02-exc1.fem | Да | 0 | 49608 | 0 | 2 | 958,24766 × 10⁻⁹ | 0 | 0 | 0 | 0 | 443,65932 × 10⁻⁶ | 954,99847 × 10⁻⁹ | 443,70066 × 10⁻⁶ | 0,60004324 | 954,99847 × 10⁻⁹ | 0 | 954,99847 × 10⁻⁹ | 0 | 1 | 25312 |
| model-0-03-exc1.fem | Да | 0 | 187185 | 0 | 3 | 958,24766 × 10⁻⁹ | 0 | 0 | 0 | 0 | 446,48917 × 10⁻⁶ | 958,03748 × 10⁻⁹ | 446,48671 × 10⁻⁶ | 0,6019527 | 958,03748 × 10⁻⁹ | 0 | 958,03748 × 10⁻⁹ | 0 | 1 | 94416 |
| model-0-01-exc2.fem | Да | 0 | 17178 | 0 | 1 | 958,24766 × 10⁻⁹ | 0 | 0 | 0 | 0 | 435,11705 × 10⁻⁶ | 949,86771 × 10⁻⁹ | 435,20097 × 10⁻⁶ | 0,59681948 | 949,86771 × 10⁻⁹ | 0 | 949,86771 × 10⁻⁹ | 0 | 2 | 8953 |
| model-0-02-exc2.fem | Да | 0 | 49608 | 0 | 2 | 958,24766 × 10⁻⁹ | 0 | 0 | 0 | 0 | 442,97504 × 10⁻⁶ | 954,9984 × 10⁻⁹ | 442,9492 × 10⁻⁶ | 0,60004319 | 954,9984 × 10⁻⁹ | 0 | 954,9984 × 10⁻⁹ | 0 | 2 | 25312 |
| model-0-03-exc2.fem | Да | 0 | 187185 | 0 | 3 | 958,24766 × 10⁻⁹ | 0 | 0 | 0 | 0 | 446,55262 × 10⁻⁶ | 958,03751 × 10⁻⁹ | 446,53657 × 10⁻⁶ | 0,60195272 | 958,03751 × 10⁻⁹ | 0 | 958,03751 × 10⁻⁹ | 0 | 2 | 94416 |
| model-1-01-exc1.fem | Да | 0,012425022 | 17178 | -8,8652771 × 10⁻⁹ | 1 | — | 0,012424777 | 19,706792 × 10⁻⁶ | 0,1 | -0,53506508 | 436,78081 × 10⁻⁶ | 949,32442 × 10⁻⁹ | 436,61428 × 10⁻⁶ | 0,59647813 | 949,28303 × 10⁻⁹ | 1 | 949,32442 × 10⁻⁹ | 0,1 | 1 | 8953 |
| model-1-02-exc1.fem | Да | 0,012370272 | 49608 | -8,8340282 × 10⁻⁹ | 2 | — | 0,01237021 | 5,0217955 × 10⁻⁶ | 0,1 | -0,53031312 | 443,65916 × 10⁻⁶ | 954,45453 × 10⁻⁹ | 443,70051 × 10⁻⁶ | 0,59970147 | 954,41365 × 10⁻⁹ | 1 | 954,45453 × 10⁻⁹ | 0,1 | 1 | 25312 |
| model-1-03-exc1.fem | Да | 0,012338978 | 187185 | -8,8316403 × 10⁻⁹ | 3 | — | 0,012338962 | 1,2945513 × 10⁻⁶ | 0,1 | -0,52848701 | 446,48901 × 10⁻⁶ | 957,49352 × 10⁻⁹ | 446,48655 × 10⁻⁶ | 0,60161092 | 957,45279 × 10⁻⁹ | 1 | 957,49352 × 10⁻⁹ | 0,1 | 1 | 94416 |
| model-1-01-exc2.fem | Да | 0,01244628 | 17178 | -8,8652752 × 10⁻⁹ | 1 | — | 0,012446033 | 19,793784 × 10⁻⁶ | 0,1 | -0,53506521 | 435,1169 × 10⁻⁶ | 949,32399 × 10⁻⁹ | 435,20082 × 10⁻⁶ | 0,59647785 | 949,28259 × 10⁻⁹ | 1 | 949,32399 × 10⁻⁹ | 0,1 | 2 | 8953 |
| model-1-02-exc2.fem | Да | 0,012394567 | 49608 | -8,8340276 × 10⁻⁹ | 2 | — | 0,012394503 | 5,1574797 × 10⁻⁶ | 0,1 | -0,53031312 | 442,97489 × 10⁻⁶ | 954,45446 × 10⁻⁹ | 442,94905 × 10⁻⁶ | 0,59970142 | 954,41357 × 10⁻⁹ | 1 | 954,45446 × 10⁻⁹ | 0,1 | 2 | 25312 |
| model-1-03-exc2.fem | Да | 0,012334398 | 187185 | -8,8316406 × 10⁻⁹ | 3 | — | 0,012334382 | 1,2676735 × 10⁻⁶ | 0,1 | -0,52848702 | 446,55247 × 10⁻⁶ | 957,49354 × 10⁻⁹ | 446,53641 × 10⁻⁶ | 0,60161093 | 957,45281 × 10⁻⁹ | 1 | 957,49354 × 10⁻⁹ | 0,1 | 2 | 94416 |
| model-2-01-exc1.fem | Да | 0,11988287 | 17178 | -75,083221 × 10⁻⁹ | 1 | — | 0,1198805 | 19,758922 × 10⁻⁶ | 1 | -4,5957087 | 436,77622 × 10⁻⁶ | 937,08464 × 10⁻⁹ | 436,60968 × 10⁻⁶ | 0,58878764 | 934,0718 × 10⁻⁹ | 2 | 937,08464 × 10⁻⁹ | 1 | 1 | 8953 |
| model-2-02-exc1.fem | Да | 0,11933122 | 49608 | -74,75678 × 10⁻⁹ | 2 | — | 0,11933062 | 5,0331336 × 10⁻⁶ | 1 | -4,5508905 | 443,65459 × 10⁻⁶ | 942,17935 × 10⁻⁹ | 443,69593 × 10⁻⁶ | 0,59198874 | 939,20889 × 10⁻⁹ | 2 | 942,17935 × 10⁻⁹ | 1 | 1 | 25312 |
| model-2-03-exc1.fem | Да | 0,11901619 | 187185 | -74,729065 × 10⁻⁹ | 3 | — | 0,11901604 | 1,2961373 × 10⁻⁶ | 1 | -4,5346907 | 446,48443 × 10⁻⁶ | 945,18757 × 10⁻⁹ | 446,48197 × 10⁻⁶ | 0,59387886 | 942,2288 × 10⁻⁹ | 2 | 945,18757 × 10⁻⁹ | 1 | 1 | 94416 |
| model-2-01-exc2.fem | Да | 0,12009469 | 17178 | -75,083203 × 10⁻⁹ | 1 | — | 0,12009231 | 19,824082 × 10⁻⁶ | 1 | -4,5957097 | 435,11231 × 10⁻⁶ | 937,08421 × 10⁻⁹ | 435,19624 × 10⁻⁶ | 0,58878737 | 934,07137 × 10⁻⁹ | 2 | 937,08421 × 10⁻⁹ | 1 | 2 | 8953 |
| model-2-02-exc2.fem | Да | 0,1195731 | 49608 | -74,756772 × 10⁻⁹ | 2 | — | 0,11957248 | 5,169019 × 10⁻⁶ | 1 | -4,5508903 | 442,97031 × 10⁻⁶ | 942,17928 × 10⁻⁹ | 442,94446 × 10⁻⁶ | 0,5919887 | 939,20883 × 10⁻⁹ | 2 | 942,17928 × 10⁻⁹ | 1 | 2 | 25312 |
| model-2-03-exc2.fem | Да | 0,11897078 | 187185 | -74,729067 × 10⁻⁹ | 3 | — | 0,11897063 | 1,2704808 × 10⁻⁶ | 1 | -4,5346908 | 446,54789 × 10⁻⁶ | 945,18759 × 10⁻⁹ | 446,53183 × 10⁻⁶ | 0,59387888 | 942,22882 × 10⁻⁹ | 2 | 945,18759 × 10⁻⁹ | 1 | 2 | 94416 |
| model-3-01-exc1.fem | Да | 1,0633785 | 17178 | -394,56165 × 10⁻⁹ | 1 | — | 1,0633574 | 19,86527 × 10⁻⁶ | 10 | -30,424316 | 436,65176 × 10⁻⁶ | 779,15053 × 10⁻⁹ | 436,48516 × 10⁻⁶ | 0,48955472 | 671,86059 × 10⁻⁹ | 3 | 779,15053 × 10⁻⁹ | 10 | 1 | 8953 |
| model-3-02-exc1.fem | Да | 1,0584946 | 49608 | -392,45344 × 10⁻⁹ | 2 | — | 1,0584893 | 5,0603863 × 10⁻⁶ | 10 | -30,033438 | 443,53127 × 10⁻⁶ | 784,11441 × 10⁻⁹ | 443,57254 × 10⁻⁶ | 0,49267362 | 678,83408 × 10⁻⁹ | 3 | 784,11441 × 10⁻⁹ | 10 | 1 | 25312 |
| model-3-03-exc1.fem | Да | 1,0552227 | 187185 | -391,92356 × 10⁻⁹ | 3 | — | 1,0552213 | 1,3034719 × 10⁻⁶ | 10 | -29,873008 | 446,3615 × 10⁻⁶ | 786,86983 × 10⁻⁹ | 446,35902 × 10⁻⁶ | 0,4944049 | 682,31961 × 10⁻⁹ | 3 | 786,86983 × 10⁻⁹ | 10 | 1 | 94416 |
| model-3-01-exc2.fem | Да | 1,0655258 | 17178 | -394,56151 × 10⁻⁹ | 1 | — | 1,0655046 | 19,927868 × 10⁻⁶ | 10 | -30,424322 | 434,98757 × 10⁻⁶ | 779,15013 × 10⁻⁹ | 435,07161 × 10⁻⁶ | 0,48955447 | 671,86021 × 10⁻⁹ | 3 | 779,15013 × 10⁻⁹ | 10 | 2 | 8953 |
| model-3-02-exc2.fem | Да | 1,0608138 | 49608 | -392,4534 × 10⁻⁹ | 2 | — | 1,0608083 | 5,1973562 × 10⁻⁶ | 10 | -30,033437 | 442,84687 × 10⁻⁶ | 784,11436 × 10⁻⁹ | 442,8209 × 10⁻⁶ | 0,49267358 | 678,83404 × 10⁻⁹ | 3 | 784,11436 × 10⁻⁹ | 10 | 2 | 25312 |
| model-3-03-exc2.fem | Да | 1,0547851 | 187185 | -391,92357 × 10⁻⁹ | 3 | — | 1,0547837 | 1,2776363 × 10⁻⁶ | 10 | -29,873008 | 446,42498 × 10⁻⁶ | 786,86985 × 10⁻⁹ | 446,40889 × 10⁻⁶ | 0,49440491 | 682,31963 × 10⁻⁹ | 3 | 786,86985 × 10⁻⁹ | 10 | 2 | 94416 |
| model-4-01-exc1.fem | Да | 0,041433347 | 17178 | -252,61646 × 10⁻⁹ | 1 | — | 0,041432563 | 18,919415 × 10⁻⁶ | 0,1 | -17,079647 | 436,767 × 10⁻⁶ | 860,11503 × 10⁻⁹ | 436,60046 × 10⁻⁶ | 0,54042621 | 822,18173 × 10⁻⁹ | 4 | 860,11503 × 10⁻⁹ | 10 | 1 | 8953 |
| model-4-02-exc1.fem | Да | 0,041350964 | 49608 | -250,29181 × 10⁻⁹ | 2 | — | 0,041350762 | 4,8617514 × 10⁻⁶ | 0,1 | -16,819644 | 443,64534 × 10⁻⁶ | 864,98414 × 10⁻⁹ | 443,68668 × 10⁻⁶ | 0,54348556 | 827,98041 × 10⁻⁹ | 4 | 864,98414 × 10⁻⁹ | 10 | 1 | 25312 |
| model-4-03-exc1.fem | Да | 0,041370992 | 187185 | -249,90241 × 10⁻⁹ | 3 | — | 0,04137094 | 1,2468689 × 10⁻⁶ | 0,1 | -16,735939 | 446,47517 × 10⁻⁶ | 867,83341 × 10⁻⁹ | 446,4727 × 10⁻⁶ | 0,54527581 | 831,07377 × 10⁻⁹ | 4 | 867,83341 × 10⁻⁹ | 10 | 1 | 94416 |
| model-4-01-exc2.fem | Да | 1,0589725 | 17178 | -252,61631 × 10⁻⁹ | 1 | — | 1,0589514 | 19,936988 × 10⁻⁶ | 0,1 | -17,079645 | 435,00168 × 10⁻⁶ | 860,11461 × 10⁻⁹ | 435,0857 × 10⁻⁶ | 0,54042595 | 822,18134 × 10⁻⁹ | 4 | 860,11461 × 10⁻⁹ | 10 | 2 | 8953 |
| model-4-02-exc2.fem | Да | 1,0539779 | 49608 | -250,29176 × 10⁻⁹ | 2 | — | 1,0539725 | 5,2004011 × 10⁻⁶ | 0,1 | -16,819642 | 442,86103 × 10⁻⁶ | 864,98407 × 10⁻⁹ | 442,83507 × 10⁻⁶ | 0,54348552 | 827,98036 × 10⁻⁹ | 4 | 864,98407 × 10⁻⁹ | 10 | 2 | 25312 |
| model-4-03-exc2.fem | Да | 1,0479005 | 187185 | -249,90241 × 10⁻⁹ | 3 | — | 1,0478992 | 1,2783506 × 10⁻⁶ | 0,1 | -16,735939 | 446,43913 × 10⁻⁶ | 867,83343 × 10⁻⁹ | 446,42304 × 10⁻⁶ | 0,54527582 | 831,07379 × 10⁻⁹ | 4 | 867,83343 × 10⁻⁹ | 10 | 2 | 94416 |
| Критерий | Получено | Допуск или ожидаемое значение | Итог |
|---|---|---|---|
| Баланс активной мощности model-0-01-exc1.fem | 0 | 0,015 | Выполнен |
| Независимый интеграл Неймана в воздухе model-0-01-exc1.fem | 0,008745 | 0,025 | Выполнен |
| Воздушный контроль без фазового сдвига model-0-01-exc1.fem | 0 | 1e-08 | Выполнен |
| Баланс активной мощности model-0-02-exc1.fem | 0 | 0,015 | Выполнен |
| Независимый интеграл Неймана в воздухе model-0-02-exc1.fem | 0,003391 | 0,025 | Выполнен |
| Воздушный контроль без фазового сдвига model-0-02-exc1.fem | 0 | 1e-08 | Выполнен |
| Баланс активной мощности model-0-03-exc1.fem | 0 | 0,015 | Выполнен |
| Независимый интеграл Неймана в воздухе model-0-03-exc1.fem | 219,3 × 10⁻⁶ | 0,025 | Выполнен |
| Воздушный контроль без фазового сдвига model-0-03-exc1.fem | 0 | 1e-08 | Выполнен |
| Баланс активной мощности model-0-01-exc2.fem | 0 | 0,015 | Выполнен |
| Независимый интеграл Неймана в воздухе model-0-01-exc2.fem | 0,008745 | 0,025 | Выполнен |
| Воздушный контроль без фазового сдвига model-0-01-exc2.fem | 0 | 1e-08 | Выполнен |
| Баланс активной мощности model-0-02-exc2.fem | 0 | 0,015 | Выполнен |
| Независимый интеграл Неймана в воздухе model-0-02-exc2.fem | 0,003391 | 0,025 | Выполнен |
| Воздушный контроль без фазового сдвига model-0-02-exc2.fem | 0 | 1e-08 | Выполнен |
| Баланс активной мощности model-0-03-exc2.fem | 0 | 0,015 | Выполнен |
| Независимый интеграл Неймана в воздухе model-0-03-exc2.fem | 219,3 × 10⁻⁶ | 0,025 | Выполнен |
| Воздушный контроль без фазового сдвига model-0-03-exc2.fem | 0 | 1e-08 | Выполнен |
| Баланс активной мощности model-1-01-exc1.fem | 19,71 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-1-02-exc1.fem | 5,022 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-1-03-exc1.fem | 1,295 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-1-01-exc2.fem | 19,79 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-1-02-exc2.fem | 5,157 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-1-03-exc2.fem | 1,268 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-2-01-exc1.fem | 19,76 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-2-02-exc1.fem | 5,033 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-2-03-exc1.fem | 1,296 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-2-01-exc2.fem | 19,82 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-2-02-exc2.fem | 5,169 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-2-03-exc2.fem | 1,27 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-3-01-exc1.fem | 19,87 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-3-02-exc1.fem | 5,06 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-3-03-exc1.fem | 1,303 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-3-01-exc2.fem | 19,93 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-3-02-exc2.fem | 5,197 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-3-03-exc2.fem | 1,278 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-4-01-exc1.fem | 18,92 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-4-02-exc1.fem | 4,862 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-4-03-exc1.fem | 1,247 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-4-01-exc2.fem | 19,94 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-4-02-exc2.fem | 5,2 × 10⁻⁶ | 0,015 | Выполнен |
| Баланс активной мощности model-4-03-exc2.fem | 1,278 × 10⁻⁶ | 0,015 | Выполнен |
| Комплексная взаимность Tx/Rx в среде 0 | 24,45 × 10⁻⁹ | 0,003 | Выполнен |
| Комплексная взаимность Tx/Rx в среде 1 | 24,32 × 10⁻⁹ | 0,003 | Выполнен |
| Комплексная взаимность Tx/Rx в среде 2 | 24,24 × 10⁻⁹ | 0,003 | Выполнен |
| Комплексная взаимность Tx/Rx в среде 3 | 21,69 × 10⁻⁹ | 0,003 | Выполнен |
| Комплексная взаимность Tx/Rx в среде 4 | 24,93 × 10⁻⁹ | 0,003 | Выполнен |
| Разрешимый отклик на проводимость среды | 0 | 0 | Выполнен |
| Разрешимый отклик на слоистость | 0 | 0 | Выполнен |
| Сходимость измеряемой величины, режим 21 | 0,003193 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 32 | 0,003514 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 12 | 0,003184 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 31 | 0,003514 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 01 | 0,003182 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 41 | 0,003294 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 42 | 0,003294 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 02 | 0,003182 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 11 | 0,003184 | 0,025 | Выполнен |
| Сходимость измеряемой величины, режим 22 | 0,003193 | 0,025 | Выполнен |
Допуски относятся к указанной учебной задаче и способу сравнения. Число показанных цифр не означает такой же физической точности.
Модели, решения и программа
Для нового расчёта сохраните программу, модели и необходимые данные в одну рабочую папку, сохраняя структуру подпапок.
- Файл результатов: README.md7331 байт
- Магнитное решение: model-0-01-exc1.ans1010931 байт
- Магнитная модель: model-0-01-exc1.fem3686 байт
- Магнитное решение: model-0-01-exc2.ans1010947 байт
- Магнитная модель: model-0-01-exc2.fem3686 байт
- Магнитное решение: model-0-02-exc1.ans3066727 байт
- Магнитная модель: model-0-02-exc1.fem3677 байт
- Магнитное решение: model-0-02-exc2.ans3066685 байт
- Магнитная модель: model-0-02-exc2.fem3677 байт
- Магнитное решение: model-0-03-exc1.ans11851232 байт
- Магнитная модель: model-0-03-exc1.fem3679 байт
- Магнитное решение: model-0-03-exc2.ans11851261 байт
- Магнитная модель: model-0-03-exc2.fem3679 байт
- Магнитное решение: model-1-01-exc1.ans1193639 байт
- Магнитная модель: model-1-01-exc1.fem3728 байт
- Магнитное решение: model-1-01-exc2.ans1193620 байт
- Магнитная модель: model-1-01-exc2.fem3728 байт
- Магнитное решение: model-1-02-exc1.ans3605232 байт
- Магнитная модель: model-1-02-exc1.fem3719 байт
- Магнитное решение: model-1-02-exc2.ans3605247 байт
- Магнитная модель: model-1-02-exc2.fem3719 байт
- Магнитное решение: model-1-03-exc1.ans13907551 байт
- Магнитная модель: model-1-03-exc1.fem3721 байт
- Магнитное решение: model-1-03-exc2.ans13907679 байт
- Магнитная модель: model-1-03-exc2.fem3721 байт
- Магнитное решение: model-2-01-exc1.ans1190818 байт
- Магнитная модель: model-2-01-exc1.fem3728 байт
- Магнитное решение: model-2-01-exc2.ans1190810 байт
- Магнитная модель: model-2-01-exc2.fem3728 байт
- Магнитное решение: model-2-02-exc1.ans3598203 байт
- Магнитная модель: model-2-02-exc1.fem3719 байт
- Магнитное решение: model-2-02-exc2.ans3598153 байт
- Магнитная модель: model-2-02-exc2.fem3719 байт
- Магнитное решение: model-2-03-exc1.ans13880578 байт
- Магнитная модель: model-2-03-exc1.fem3721 байт
- Магнитное решение: model-2-03-exc2.ans13880511 байт
- Магнитная модель: model-2-03-exc2.fem3721 байт
- Магнитное решение: model-3-01-exc1.ans1191640 байт
- Магнитная модель: model-3-01-exc1.fem3728 байт
- Магнитное решение: model-3-01-exc2.ans1191726 байт
- Магнитная модель: model-3-01-exc2.fem3728 байт
- Магнитное решение: model-3-02-exc1.ans3600808 байт
- Магнитная модель: model-3-02-exc1.fem3719 байт
- Магнитное решение: model-3-02-exc2.ans3600684 байт
- Магнитная модель: model-3-02-exc2.fem3719 байт
- Магнитное решение: model-3-03-exc1.ans13889263 байт
- Магнитная модель: model-3-03-exc1.fem3721 байт
- Магнитное решение: model-3-03-exc2.ans13890783 байт
- Магнитная модель: model-3-03-exc2.fem3721 байт
- Магнитное решение: model-4-01-exc1.ans1192570 байт
- Магнитная модель: model-4-01-exc1.fem3728 байт
- Магнитное решение: model-4-01-exc2.ans1192173 байт
- Магнитная модель: model-4-01-exc2.fem3728 байт
- Магнитное решение: model-4-02-exc1.ans3602705 байт
- Магнитная модель: model-4-02-exc1.fem3719 байт
- Магнитное решение: model-4-02-exc2.ans3601510 байт
- Магнитная модель: model-4-02-exc2.fem3719 байт
- Магнитное решение: model-4-03-exc1.ans13896782 байт
- Магнитная модель: model-4-03-exc1.fem3721 байт
- Магнитное решение: model-4-03-exc2.ans13892293 байт
- Магнитная модель: model-4-03-exc2.fem3721 байт
- Программа встроенного Python: reproduce.py16464 байт
Границы применимости
- Решается прямая осесимметричная магнитоквазистатическая задача. Обратная задача, геологическая классификация, анизотропия, диэлектрическое распространение волн и измерительная аппаратура не моделируются.
- Сохранение, повторное открытие и решения проверяются на точных учебных файлах. Снимки интерфейса FEMM и физические измерения относятся к отдельным проходам.