Плотность магнитного потока в электромагните

В этом примере показано, как решить 3-D магнитостатическую задачу для соленоида с конечным ядром железа длины. Используя ферромагнитное ядро с высокой проницаемостью, такой как железное ядро, в соленоиде увеличивает магнитное поле и плотность потока. В этом примере вы находите плотность магнитного потока для геометрии, состоящей из обмотки с конечным ядром длины в цилиндрической воздушной области.

Первая часть примера решает магнитостатическую задачу с помощью 3-D модели. Вторая часть решает ту же задачу с помощью осесимметричной 2D модели, чтобы ускорить расчеты.

3-D модель обмотки с ядром

Создайте конфигурации, состоящие из трех цилиндров: тело круговые модели гидроцилиндра ядро, кольцевые круговые модели гидроцилиндра обмотка, и большие круговые модели гидроцилиндра воздух вокруг обмотки.

coreGm = multicylinder(0.03,0.1);
coilGm = multicylinder([0.05 0.07],0.2,'Void',[1 0]);
airGm = multicylinder(1,2);

Расположите ядро и обмотку так, чтобы конечное ядро длины было расположено около верхней части обмотки.

coreGm = translate(coreGm,[0 0 1.025]);
coilGm = translate(coilGm,[0 0 0.9]);

Объедините конфигурации и постройте результат.

gm = addCell(airGm,coreGm);
gm = addCell(gm,coilGm);
pdegplot(gm,'FaceAlpha',0.2,'CellLabels','on')

Увеличьте масштаб, чтобы видеть метки ячейки на ядре и обмотке.

figure
pdegplot(gm,'FaceAlpha',0.2,'CellLabels','on')
axis([-0.1 0.1 -0.1 0.1 0.8 1.2])

Создайте электромагнитную модель и присвойте воздушную геометрию модели.

model3D = createpde('electromagnetic','magnetostatic');
model3D.Geometry = gm;

Задайте вакуумное значение проницаемости в системе СИ модулей.

model3D.VacuumPermeability = 1.2566370614E-6;

Задайте относительную проницаемость 1 для всех областей.

electromagneticProperties(model3D,'RelativePermeability',1);

Теперь задайте большую относительную проницаемость ядра.

electromagneticProperties(model3D,'RelativePermeability',10000, ...
                                  'Cell',2);

Присвойте возбуждение текущее использование функции, которая задает против часовой стрелки плотность тока в обмотке.

electromagneticSource(model3D,'CurrentDensity',@windingCurrent3D, ...
                              'Cell',3);

Укажите, что магнитный потенциал на наружной поверхности воздушной области 0.

electromagneticBC(model3D,'MagneticPotential',[0;0;0],'Face',1:3);

Сгенерируйте mesh, где только базовые и обмоточные области хорошо усовершенствованы, и воздушная область относительно крупна, чтобы ограничить размер проблемы.

internalFaces = cellFaces(model3D.Geometry,2:3);
generateMesh(model3D,'Hface',{internalFaces,0.007});

Решите модель.

R = solve(model3D)
R = 
  MagnetostaticResults with properties:

      MagneticPotential: [1×1 FEStruct]
          MagneticField: [1×1 FEStruct]
    MagneticFluxDensity: [1×1 FEStruct]
                   Mesh: [1×1 FEMesh]

Найдите величину плотности потока.

Bmag = sqrt(R.MagneticFluxDensity.Bx.^2 + ...
            R.MagneticFluxDensity.By.^2 + ...
            R.MagneticFluxDensity.Bz.^2);

Найдите элементы mesh, принадлежащие ядру и обмотке.

coreAndCoilElem = findElements(model3D.Mesh,'region','Cell',[2 3]);

Постройте величину плотности потока на ядре и обмотке.

pdeplot3D(model3D.Mesh.Nodes, ...
          model3D.Mesh.Elements(:,coreAndCoilElem), ...
          'ColorMapData',Bmag)
axis([-0.1 0.1 -0.1 0.1 0.8 1.2])

Интерполируйте поток к сетке, покрывающей фрагмент геометрии около ядра.

x = -0.05:0.01:0.05;
z = 1.02:0.01:1.14;
y = x;
[X,Y,Z] = meshgrid(x,y,z);
intrpBcore = R.interpolateMagneticFlux(X,Y,Z); 

Измените intrpBcore.Bx, intrpBcore.By, и intrpBcore.Bz и постройте плотность магнитного потока как векторный график.

Bx = reshape(intrpBcore.Bx,size(X));
By = reshape(intrpBcore.By,size(Y));
Bz = reshape(intrpBcore.Bz,size(Z));

quiver3(X,Y,Z,Bx,By,Bz,'Color','r')
hold on
pdegplot(coreGm,'FaceAlpha',0.2);

2D осесимметричная модель обмотки с ядром

Теперь упростите эту 3-D проблему до 2D использования симметрии вокруг оси вращения.

Во-первых, создайте геометрию. Осесимметричный раздел состоит из двух небольших прямоугольных областей (ядро и обмотка) расположенный в большой прямоугольной области (воздух).

R1 = [3,4,0.0,1,1,0.0,0,0,2,2]';
R2 = [3,4,0,0.03,0.03,0,1.025,1.025,1.125,1.125]';
R3 = [3,4,0.05,0.07,0.07,0.05,0.90,0.90,1.10,1.10]';
ns = char('R1','R2','R3');
sf = 'R1+R2+R3';
gdm = [R1, R2, R3];
g = decsg(gdm,sf,ns');

Постройте геометрию с метками поверхности.

pdegplot(g,'FaceLabels','on')

Увеличьте масштаб, чтобы видеть метки поверхности на ядре и обмотке.

figure
pdegplot(g,'FaceLabels','on')
axis([0 0.1 0.8 1.2])

Создайте электромагнитную модель для осесимметричного магнитостатического анализа и присвойте геометрию.

model2D = createpde('electromagnetic','magnetostatic-axisymmetric');
geometryFromEdges(model2D,g);

Задайте вакуумное значение проницаемости в системе СИ модулей.

model2D.VacuumPermeability = 1.2566370614E-6;

Задайте относительную проницаемость 1 для всех областей.

electromagneticProperties(model2D,'RelativePermeability',1);

Теперь задайте большую относительную проницаемость ядра.

electromagneticProperties(model2D,'RelativePermeability',10000, ...
                                  'Face',3);

Задайте плотность тока в обмотке. Для осесимметричной модели используйте постоянное текущее значение.

electromagneticSource(model2D,'CurrentDensity',5E6,'Face',2);

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

electromagneticBC(model2D,'MagneticPotential',0,'Edge',[2 8]);

Сгенерируйте mesh.

generateMesh(model2D,'Hmin',0.0004,'Hgrad',2,'Hmax',0.008);

Решите модель.

R = solve(model2D);

Найдите величину плотности потока.

Bmag = sqrt(R.MagneticFluxDensity.Bx.^2 + ...
            R.MagneticFluxDensity.By.^2);

Постройте величину плотности потока на ядре и обмотке.

pdeplot(model2D,'XYData',Bmag)
xlim([0,0.05]);
ylim([1.0,1.14])

Интерполируйте поток к сетке, покрывающей фрагмент геометрии около ядра.

x = 0:0.01:0.05;
y = 1.02:0.01:1.14;
[X,Y] = meshgrid(x,y);
intrpBcore = R.interpolateMagneticFlux(X,Y);

Измените intrpBcore.Bx и intrpBcore.By и постройте плотность магнитного потока как векторный график.

Bx = reshape(intrpBcore.Bx,size(X));
By = reshape(intrpBcore.By,size(Y));

quiver(X,Y,Bx,By,'Color','r')
hold on
pdegplot(model2D);
xlim([0,0.07]);
ylim([1.0,1.14])

Функция, задающая плотность тока в обмотке для 3-D модели

function f3D = windingCurrent3D(region,~)
[TH,~,~] = cart2pol(region.x,region.y,region.z);
f3D = -5E6*[sin(TH); -cos(TH); zeros(size(TH))];
end

Ссылки

[1] Тьерри Лубин, Кевин Бергер, Abderrezak Rezzoug. "Индуктивность и Вычисление Силы для Осесимметричных Обмоточных Систем Включая Железное Ядро Конечной Длины". Прогресс Исследования Электромагнетизма B, EMW Publishing 41 (2012): 377-396. https://hal.archives-ouvertes.fr/hal-00711310.