interpolateElectricFlux

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

    Описание

    пример

    Dintrp = interpolateElectricFlux(electrostaticresults,xq,yq) возвращает интерполированную плотность электрического потока в точках, заданных в xq и yq.

    пример

    Dintrp = interpolateElectricFlux(electrostaticresults,querypoints) возвращает интерполированную плотность электрического потока в точках, заданных в querypoints.

    Примеры

    свернуть все

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

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

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

    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. The axes contains 5 objects of type line, text.

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

    emagmodel.VacuumPermittivity = 8.8541878128E-12;

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

    electromagneticProperties(emagmodel,'RelativePermittivity',1);

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

    electromagneticBC(emagmodel,'Voltage',0,'Edge',[1 3]);
    electromagneticBC(emagmodel,'Voltage',1000,'Edge',[2 4]);

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

    electromagneticSource(emagmodel,'ChargeDensity',5E-9);

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

    generateMesh(emagmodel);

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

    R = solve(emagmodel);
    pdeplot(emagmodel,'FlowData',[R.ElectricFluxDensity.Dx ...
                                  R.ElectricFluxDensity.Dy])
    axis equal

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

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

    v = linspace(-0.5,0.5,51);
    [X,Y] = meshgrid(v);
    
    Dintrp = interpolateElectricFlux(R,X,Y)
    Dintrp = 
      FEStruct with properties:
    
        Dx: [2601x1 double]
        Dy: [2601x1 double]
    
    

    Изменение формы Dintrp.Dx и Dintrp.Dy и постройте график полученной плотности электрического потока.

    DintrpX = reshape(Dintrp.Dx,size(X));
    DintrpY = reshape(Dintrp.Dy,size(Y));
    
    figure
    quiver(X,Y,DintrpX,DintrpY,'Color','red')

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

    Кроме того, сетку можно задать с помощью матрицы точек запроса.

    querypoints = [X(:),Y(:)]';
    Dintrp = interpolateElectricFlux(R,querypoints);

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

    свернуть все

    Решение тепловой задачи, заданное как ElectrostaticResults объект. Создание electrostaticresults использование solve функция.

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

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

    interpolateElectricFlux преобразует точки запроса в векторы-столбцы xq(:) и yq(:). Он возвращает плотность электрического потока как вектор-столбец того же размера. Чтобы убедиться, что размерности возвращенного решения соответствуют размерностям исходных точек запроса, используйте reshape. Для примера используйте DintrpX = reshape(Dintrp.Dx,size(xq)).

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

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

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

    interpolateElectricFlux преобразует точки запроса в векторы-столбцы xq(:) и yq(:). Он возвращает плотность электрического потока как вектор-столбец того же размера. Чтобы убедиться, что размерности возвращенного решения соответствуют размерностям исходных точек запроса, используйте reshape. Для примера используйте DintrpY = reshape(Dintrp.Dy,size(yq)).

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

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

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

    Пример: querypoints = [0.5 0.5 0.75 0.75; 1 2 0 0.5]

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

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

    свернуть все

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

    Введенный в R2021a