pdeplot3D

Постройте решение или поверхностную mesh для 3-D проблемы

Описание

пример

pdeplot3D(model,'ColorMapData',results.NodalSolution) строит решение в узловых местоположениях как цвета на поверхности 3-D геометрии, заданной в model.

пример

pdeplot3D(model,'ColorMapData',results.Temperature) строит температуру в узловых местоположениях для 3-D тепловой аналитической модели.

пример

pdeplot3D(model,'ColorMapData',results.VonMisesStress,'Deformation',results.Displacement) строит напряжение фон Мизеса и показывает деформированную форму для 3-D модели структурного анализа.

пример

pdeplot3D(model,'ColorMapData',results.ElectricPotential) строит электрический потенциал в узловых местоположениях для 3-D электростатической аналитической модели.

пример

pdeplot3D(model) строит поверхностную mesh, заданную в model.

pdeplot3D(mesh) строит mesh, заданную как Mesh свойство 3-D model объект типа PDEModel.

pdeplot3D(nodes,elements) строит mesh, заданную nodes и elements.

пример

pdeplot3D(___,Name,Value) строит поверхностную mesh, данные в узловых местоположениях, или и mesh и данные, в зависимости от Name,Value парные аргументы. Используйте любые аргументы от предыдущих синтаксисов.

h = pdeplot3D(___) возвращает указатель на график, с помощью любого из предыдущих синтаксисов.

Примеры

свернуть все

Постройте решение для УЧП на поверхности геометрии. Во-первых, создайте модель PDE и импортируйте 3-D файл геометрии. Задайте граничные условия и коэффициенты. Поймайте в сети геометрию и решите задачу.

model = createpde;
importGeometry(model,'Block.stl');
applyBoundaryCondition(model,'dirichlet','Face',[1:4],'u',0);
specifyCoefficients(model,'m',0,'d',0,'c',1,'a',0,'f',2);
generateMesh(model);
results = solvepde(model)
results = 
  StationaryResults with properties:

    NodalSolution: [12691x1 double]
       XGradients: [12691x1 double]
       YGradients: [12691x1 double]
       ZGradients: [12691x1 double]
             Mesh: [1x1 FEMesh]

Доступ к решению в узловых местоположениях.

u = results.NodalSolution;

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

pdeplot3D(model,'ColorMapData',u)

Решите 3-D установившуюся тепловую задачу.

Создайте тепловую модель для этой проблемы.

thermalmodel = createpde('thermal');

Импортируйте и постройте геометрию блока.

importGeometry(thermalmodel,'Block.stl'); 
pdegplot(thermalmodel,'FaceLabel','on','FaceAlpha',0.5)
axis equal

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

Присвойте свойства материала.

thermalProperties(thermalmodel,'ThermalConductivity',80);

Применяйтесь постоянная температура 100 °C к левой стороне блока (столкнитесь 1), и постоянная температура 300 °C к правой стороне блока (столкнитесь 3). Все другие поверхности изолируются по умолчанию.

thermalBC(thermalmodel,'Face',1,'Temperature',100);
thermalBC(thermalmodel,'Face',3,'Temperature',300);

Поймайте в сети геометрию и решите задачу.

generateMesh(thermalmodel);
thermalresults = solve(thermalmodel)
thermalresults = 
  SteadyStateThermalResults with properties:

    Temperature: [12691x1 double]
     XGradients: [12691x1 double]
     YGradients: [12691x1 double]
     ZGradients: [12691x1 double]
           Mesh: [1x1 FEMesh]

Решатель находит температуры и градиенты температуры в узловых местоположениях. Чтобы получить доступ к этим значениям, используйте thermalresults.Temperature, thermalresults.XGradients, и так далее. Например, постройте температуры в узловых местоположениях.

pdeplot3D(thermalmodel,'ColorMapData',thermalresults.Temperature)

Для 3-D установившейся тепловой модели оцените поток тепла в узловых местоположениях и в точках, заданных xY, и z координаты.

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

thermalmodel = createpde('thermal');

Создайте следующую 3-D геометрию и включайте ее в модель.

importGeometry(thermalmodel,'Block.stl'); 
pdegplot(thermalmodel,'FaceLabels','on','FaceAlpha',0.5)
title('Copper block, cm')
axis equal

Figure contains an axes object. The axes object with title Copper block, cm contains 3 objects of type quiver, patch, line.

Предположение, что это - медный блок, теплопроводность блока приблизительно 4W/(cmK).

thermalProperties(thermalmodel,'ThermalConductivity',4);

Применяйтесь постоянная температура 373 K к левой стороне блока (столкнитесь 1), и постоянная температура 573 K к правой стороне блока (столкнитесь 3).

thermalBC(thermalmodel,'Face',1,'Temperature',373);
thermalBC(thermalmodel,'Face',3,'Temperature',573);

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

thermalBC(thermalmodel,'Face',4,'HeatFlux',-20);

Поймайте в сети геометрию и решите задачу.

generateMesh(thermalmodel);
thermalresults = solve(thermalmodel)
thermalresults = 
  SteadyStateThermalResults with properties:

    Temperature: [12691x1 double]
     XGradients: [12691x1 double]
     YGradients: [12691x1 double]
     ZGradients: [12691x1 double]
           Mesh: [1x1 FEMesh]

Оцените поток тепла в узловых местоположениях.

[qx,qy,qz] = evaluateHeatFlux(thermalresults);

figure
pdeplot3D(thermalmodel,'FlowData',[qx qy qz])

Создайте сетку, заданную xY, и z координаты, и оценивают поток тепла к сетке.

[X,Y,Z] = meshgrid(1:26:100,1:6:20,1:11:50);

[qx,qy,qz] = evaluateHeatFlux(thermalresults,X,Y,Z);

Измените qxqy , и qz векторы и график получившийся поток тепла.

qx = reshape(qx,size(X));
qy = reshape(qy,size(Y));
qz = reshape(qz,size(Z));
figure
quiver3(X,Y,Z,qx,qy,qz)

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

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

querypoints = [X(:) Y(:) Z(:)]';
[qx,qy,qz] = evaluateHeatFlux(thermalresults,querypoints);

qx = reshape(qx,size(X));
qy = reshape(qy,size(Y));
qz = reshape(qz,size(Z));
figure
quiver3(X,Y,Z,qx,qy,qz)

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

Создайте модель структурного анализа для 3-D проблемы.

structuralmodel = createpde('structural','static-solid');

Импортируйте геометрию и постройте ее.

importGeometry(structuralmodel,'SquareBeam.stl');
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)

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

Задайте модуль Молодежи и отношение Пуассона.

structuralProperties(structuralmodel,'PoissonsRatio',0.3, ...
                                     'YoungsModulus',210E3);

Укажите, что стоят 6, фиксированный контур.

structuralBC(structuralmodel,'Face',6,'Constraint','fixed');

Задайте поверхностную тягу для поверхности 5.

structuralBoundaryLoad(structuralmodel,'Face',5, ...
                                       'SurfaceTraction', ...
                                       [0;0;-2]);

Сгенерируйте mesh и решите задачу.

generateMesh(structuralmodel);
structuralresults = solve(structuralmodel);

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

figure    
pdeplot3D(structuralmodel, ...
          'ColorMapData',structuralresults.VonMisesStress, ...
          'Deformation',structuralresults.Displacement)

Постройте те же результаты с масштабным коэффициентом 500.

figure
pdeplot3D(structuralmodel, ...
          'ColorMapData',structuralresults.VonMisesStress, ...
          'Deformation',structuralresults.Displacement, ...
          'DeformationScaleFactor',500)

Постройте те же результаты без масштабирования.

figure
pdeplot3D(structuralmodel, ...
          'ColorMapData',structuralresults.VonMisesStress)

Оцените напряжение фон Мизеса в луче при гармоническом возбуждении.

Создайте переходную динамическую модель для 3-D проблемы.

structuralmodel = createpde('structural','transient-solid');

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

gm = multicuboid(0.06,0.005,0.01);
structuralmodel.Geometry = gm;
pdegplot(structuralmodel,'FaceLabels','on','FaceAlpha',0.5)
view(50,20)

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

Задайте модуль Молодежи, отношение Пуассона и массовую плотность материала.

structuralProperties(structuralmodel,'YoungsModulus',210E9, ...
                                     'PoissonsRatio',0.3, ...
                                     'MassDensity',7800);

Зафиксируйте один конец луча.

structuralBC(structuralmodel,'Face',5,'Constraint','fixed');

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

structuralBC(structuralmodel,'Face',3, ...
                             'YDisplacement',1E-4, ...
                             'Frequency',50);

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

generateMesh(structuralmodel,'Hmax',0.01);

Определите нулевое начальное перемещение и скорость.

structuralIC(structuralmodel,'Displacement',[0;0;0],'Velocity',[0;0;0]);

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

tlist = 0:0.002:0.2;
structuralresults = solve(structuralmodel,tlist);

Оцените напряжение фон Мизеса в луче.

vmStress = evaluateVonMisesStress(structuralresults);

Постройте напряжение фон Мизеса в течение прошлого такта.

figure
pdeplot3D(structuralmodel,'ColorMapData',vmStress(:,end))
title('von Mises Stress in the Beam for the Last Time-Step')

Решите электромагнитную задачу и найдите электрический потенциал и полевое распределение для 3-D геометрии, представляющей пластину отверстием.

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

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

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

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

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

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

emagmodel.VacuumPermittivity = 8.8541878128E-12;

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

electromagneticProperties(emagmodel,'RelativePermittivity',1);

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

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

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

electromagneticBC(emagmodel,'Voltage',0,'Face',3:6);
electromagneticBC(emagmodel,'Voltage',1000,'Face',7);

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

generateMesh(emagmodel);

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

R = solve(emagmodel)
R = 
  ElectrostaticResults with properties:

      ElectricPotential: [4359x1 double]
          ElectricField: [1x1 FEStruct]
    ElectricFluxDensity: [1x1 FEStruct]
                   Mesh: [1x1 FEMesh]

Постройте электрический потенциал.

figure
pdeplot3D(emagmodel,'ColorMapData',R.ElectricPotential)

Постройте электрическое поле.

pdeplot3D(emagmodel,'FlowData',[R.ElectricField.Ex ...
                                R.ElectricField.Ey ...
                                R.ElectricField.Ez])

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

model = createpde;
importGeometry(model,'Tetrahedron.stl');
mesh = generateMesh(model,'Hmax',20,'GeometricOrder','linear');

Постройте поверхностную mesh.

pdeplot3D(model)

В качестве альтернативы можно построить mesh при помощи mesh как входной параметр.

pdeplot3D(mesh)

Другой подход должен использовать узлы и элементы mesh как входные параметры для pdeplot3D.

pdeplot3D(mesh.Nodes,mesh.Elements)

Отобразите метки узла на поверхности простой mesh.

pdeplot3D(model,'NodeLabels','on')
view(101,12)

Отобразите метки элемента.

pdeplot3D(model,'ElementLabels','on')
view(101,12)

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

свернуть все

Объект модели в виде PDEModel объект, ThermalModel объект, StructuralModel объект или ElectromagneticModel объект.

Пример: model = createpde(3)

Пример: thermalmodel = createpde('thermal','steadystate')

Пример: structuralmodel = createpde('structural','static-solid')

Пример: emagmodel = createpde('electromagnetic','electrostatic')

Объект ячейки в виде Mesh свойство PDEModel возразите или как выход generateMesh.

Пример: model.Mesh

Узловые координаты в виде 3 NumNodes матрицей. NumNodes является количеством узлов.

Матрица смежности элемента в терминах идентификаторов узла в виде 4 NumElements или 10 NumElements матрицей. Линейные сетки содержат только угловые узлы. Для линейных сеток матрица смежности имеет четыре узла на 3-D элемент. Квадратичные сетки содержат угловые узлы и узлы посреди каждого ребра элемента. Для квадратичных сеток матрица смежности имеет 10 узлов на 3-D элемент.

A linear tetrahedral element with a node in each corner and a quadratic tetrahedral element with an additional node in the middle of each edge

Аргументы name-value

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: pdeplot3D(model,'NodeLabels','on')

Данные, чтобы построить как цветная поверхность в виде разделенной запятой пары, состоящей из 'ColorMapData' и вектор-столбец с числом элементов, которое равняется числу точек в mesh. Как правило, эти данные являются решением, возвращенным solvepde для скалярной проблемы УЧП и компонента решения для многокомпонентной системы УЧП.

Пример: 'ColorMapData',results.NodalSolution

Пример: 'ColorMapData',results.NodalSolution(:,1)

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

Данные для графика полей градиента в виде разделенной запятой пары, состоящей из 'FlowData' и M- 3 матрица, где M количество узлов mesh. FlowData содержит x, y и значения z поля в точках mesh. Установите FlowData можно следующим образом:

results = solvepde(model);
[cgradx,cgrady,cgradz] = evaluateCGradient(results);
pdeplot3D(model,'FlowData',[cgradx cgrady cgradz])

pdeplot3D строит действительную часть комплексных данных.

Пример: 'FlowData',[cgradx cgrady cgradz]

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

Индикатор, чтобы показать mesh в виде разделенной запятой пары, состоящей из 'Mesh' и 'on' или 'off'. Задайте 'on' показать mesh в графике.

Пример: 'Mesh','on'

Типы данных: char | string

Узел помечает в виде разделенной запятой пары, состоящей из 'NodeLabels' и 'off' или 'on'.

Пример: 'NodeLabels','on'

Типы данных: char | string

Элемент помечает в виде разделенной запятой пары, состоящей из 'ElementLabels' и 'off' или 'on'.

Пример: 'ElementLabels','on'

Типы данных: char | string

Поверхностная прозрачность для 3-D геометрии в виде разделенной запятой пары, состоящей из 'FaceAlpha' и вещественное число от 0 через 1. Значение по умолчанию 1 не указывает ни на какую прозрачность. Значение 0 указывает на полную прозрачность.

Пример: 'FaceAlpha',0.5

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

Деформированная форма для моделей структурного анализа в виде разделенной запятой пары, состоящей из 'Deformation' и FEStruct объект, представляющий значения смещения в узлах. Смещение FEStruct объект является свойством StaticStructuralResults, TransientStructuralResults, и FrequencyStructuralResults.

В недеформированной форме центральные узлы в квадратичных сетках всегда добавляются на полурасстоянии между углами. Когда вы строите деформированную форму, центральные узлы могут переехать от центров ребра.

Пример: 'Deformation',results.Displacement

Масштабный коэффициент для графического вывода деформированной формы в виде разделенной запятой пары, состоящей из 'DeformationScaleFactor' и положительное число. Используйте этот аргумент вместе с Deformation аргумент пары "имя-значение". pdeplot3D функция выбирает значение по умолчанию на основе самой геометрии и на величине деформации.

Пример: 'DeformationScaleFactor',1000

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

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

свернуть все

Указатели на графические объекты, возвращенные как вектор.

Представленный в R2015a