interpolateMagneticFlux

Интерполируйте плотность магнитного потока в магнитостатическом результате в произвольных пространственных местоположениях

    Описание

    пример

    Bintrp = interpolateMagneticFlux(magnetostaticresults,xq,yq) возвращает интерполированную плотность магнитного потока в 2D точках, заданных в xq и yq.

    пример

    Bintrp = interpolateMagneticFlux(magnetostaticresults,xq,yq,zq) использует 3-D точки, заданные в xqyq , и zq.

    пример

    Bintrp = interpolateMagneticFlux(magnetostaticresults,querypoints) возвращает интерполированную плотность магнитного потока в точках, заданных в querypoints.

    Примеры

    свернуть все

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

    emagmodel = createpde('electromagnetic','magnetostatic');

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

    R1 = [3,4,-1,1,1,-1,1,1,-1,-1]';
    g = decsg(R1,'R1',('R1')');
    geometryFromEdges(emagmodel,g);
    pdegplot(emagmodel,'EdgeLabels','on')
    xlim([-1.5 1.5])
    axis equal

    Figure contains an axes object. The axes object contains 5 objects of type line, text.

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

    emagmodel.VacuumPermeability = 1.2566370614E-6;

    Задайте относительную проницаемость материала.

    electromagneticProperties(emagmodel,'RelativePermeability',5000);

    Примените магнитные потенциальные граничные условия на контуры квадрата.

    electromagneticBC(emagmodel,'MagneticPotential',0,'Edge',[1 3]); 
    electromagneticBC(emagmodel,'MagneticPotential',0.01,'Edge',[2 4]);

    Задайте плотность тока для целой геометрии.

    electromagneticSource(emagmodel,'CurrentDensity',0.5);

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

    generateMesh(emagmodel);

    Решите модель и постройте плотность магнитного потока.

    R = solve(emagmodel);
    pdeplot(emagmodel,'FlowData',[R.MagneticFluxDensity.Bx ...
                                  R.MagneticFluxDensity.By])
    axis equal

    Figure contains an axes object. The axes object contains an object of type quiver.

    Интерполируйте получившуюся электрическую плотность потока к сетке, покрывающей центральный фрагмент геометрии для x и y от -0.5 к 0.5.

    v = linspace(-0.5,0.5,51);
    [X,Y] = meshgrid(v);
    Bintrp = interpolateMagneticFlux(R,X,Y)
    Bintrp = 
      FEStruct with properties:
    
        Bx: [2601x1 double]
        By: [2601x1 double]
    
    

    Измените Bintrp.Bx и Bintrp.By и постройте получившуюся плотность магнитного потока.

    BintrpX = reshape(Bintrp.Bx,size(X));
    BintrpY = reshape(Bintrp.By,size(Y));
    figure
    quiver(X,Y,BintrpX,BintrpY,'Color','red')

    Figure contains an axes object. The axes object contains an object of type quiver.

    В качестве альтернативы можно задать сетку при помощи матрицы точек запроса.

    querypoints = [X(:),Y(:)]';
    Bintrp = interpolateMagneticFlux(R,querypoints);

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

    emagmodel = createpde('electromagnetic','magnetostatic');

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

    importGeometry(emagmodel,'PlateHoleSolid.stl');
    pdegplot(emagmodel,'FaceLabels','on','FaceAlpha',0.3)

    Figure contains an axes object. The axes object contains 3 objects of type quiver, patch, line.

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

    emagmodel.VacuumPermeability = 1.2566370614E-6;

    Задайте относительную проницаемость материала.

    electromagneticProperties(emagmodel,'RelativePermeability',5000);

    Задайте плотность тока для целой геометрии.

    electromagneticSource(emagmodel,'CurrentDensity',[0;0;0.5]);

    Примените магнитные потенциальные граничные условия на поверхности стороны и поверхность, ограничивающую отверстие.

    electromagneticBC(emagmodel,'MagneticPotential',[0;0;0],'Face',3:6); 
    electromagneticBC(emagmodel,'MagneticPotential',[0;0;0.01],'Face',7);

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

    generateMesh(emagmodel);

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

    R = solve(emagmodel)
    R = 
      MagnetostaticResults with properties:
    
          MagneticPotential: [1x1 FEStruct]
              MagneticField: [1x1 FEStruct]
        MagneticFluxDensity: [1x1 FEStruct]
                       Mesh: [1x1 FEMesh]
    
    

    Постройте плотность магнитного потока.

    pdeplot3D(emagmodel,'FlowData',[R.MagneticFluxDensity.Bx ...
                                    R.MagneticFluxDensity.By ...
                                    R.MagneticFluxDensity.Bz])

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

    x = linspace(3,7,5);
    y = linspace(0,1,5);
    z = linspace(8,12,5);
    [X,Y,Z] = meshgrid(x,y,z);
    Bintrp = interpolateMagneticFlux(R,X,Y,Z)
    Bintrp = 
      FEStruct with properties:
    
        Bx: [125x1 double]
        By: [125x1 double]
        Bz: [125x1 double]
    
    

    Измените Bintrp.Bx, Bintrp.By, и Bintrp.Bz.

    BintrpX = reshape(Bintrp.Bx,size(X));
    BintrpY = reshape(Bintrp.By,size(Y));
    BintrpZ = reshape(Bintrp.Bz,size(Z));

    Постройте получившуюся плотность магнитного потока.

    figure
    quiver3(X,Y,Z,BintrpX,BintrpY,BintrpZ,'Color','red')
    view([30 10])
    
    view([10 15])

    Figure contains an axes object. The axes object contains an object of type quiver.

    Входные параметры

    свернуть все

    Решение магнитостатической проблемы в виде MagnetostaticResults объект. Создайте magnetostaticresults использование solve функция.

    Пример: magnetostaticresults = solve(emagmodel)

    x- точки запроса в виде действительного массива. interpolateMagneticFlux оценивает плотность магнитного потока в 2D точках координаты [xq(i) yq(i)] или в 3-D координате указывает [xq(i) yq(i) zq(i)] для каждого i. Из-за этого, xqyq , и (если есть) zq должен иметь то же количество записей.

    interpolateMagneticFlux преобразует точки запроса в вектор-столбцы xq(:) и yq(:). Это возвращает плотность магнитного потока как вектор-столбец, одного размера. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, использовать reshape. Например, используйте BintrpX = reshape(Bintrp.Bx,size(xq)).

    Пример: xq = [0.5 0.5 0.75 0.75]

    Типы данных: double

    y- точки запроса в виде действительного массива. interpolateMagneticFlux оценивает плотность магнитного потока в 2D точках координаты [xq(i) yq(i)] или в 3-D координате указывает [xq(i) yq(i) zq(i)] для каждого i. Из-за этого, xqyq , и (если есть) zq должен иметь то же количество записей.

    interpolateMagneticFlux преобразует точки запроса в вектор-столбцы xq(:)yq , и (если есть) zq(:). Это возвращает плотность магнитного потока как вектор-столбец, одного размера. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, использовать reshape. Например, используйте BintrpY = reshape(Bintrp.By,size(yq)).

    Пример: yq = [1 2 0 0.5]

    Типы данных: double

    z- точки запроса в виде действительного массива. interpolateMagneticFlux оценивает плотность магнитного потока в 3-D точках координаты [xq(i) yq(i) zq(i)]. Поэтому xqyq , и zq должен иметь то же количество записей.

    interpolateMagneticFlux преобразует точки запроса в вектор-столбцы xq(:)yq , и zq(:). Это возвращает значения плотности магнитного потока как вектор-столбец, одного размера. Чтобы гарантировать, что размерности возвращенного решения сопоставимы с размерностями точек исходного запроса, использовать reshape. Например, используйте BintrpZ = reshape(Bintrp.Bz,size(zq)).

    Пример: zq = [1 1 0 1.5]

    Типы данных: double

    Точки запроса в виде действительной матрицы с двумя строками для 2D геометрии или тремя строками для 3-D геометрии. interpolateMagneticFlux оценивает плотность магнитного потока в точках координаты querypoints(:,i) для каждого i, так каждый столбец querypoints содержит точно одну 2D или 3-D точку запроса.

    Пример: Для 2D геометрии, querypoints = [0.5 0.5 0.75 0.75; 1 2 0 0.5]

    Типы данных: double

    Выходные аргументы

    свернуть все

    Плотность магнитного потока в точках запроса, возвращенных как FEStruct объект со свойствами, представляющими пространственные компоненты плотности магнитного потока в точках запроса. Для точек запроса, которые находятся вне геометрии, Bintrp.Bx(i), Bintrp.By(i), и Bintrp.Bz(i) NaN. Свойства FEStruct объект только для чтения.

    Введенный в R2021a