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) строит графики 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. The axes 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 установившейся тепловой модели оцените тепловой поток в узловых местах и в точках, заданных x, y, и 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. The axes with title Copper block, cm contains 3 objects of type quiver, patch, line.

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

thermalProperties(thermalmodel,'ThermalConductivity',4);

Нанесите постоянную температуру 373 К на левую сторону блока (поверхность 1) и постоянную температуру 573 К на правую сторону блока (поверхность 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])

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

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

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

Измените форму qx, qy, и 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. The axes 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. The axes 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. The axes 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. The axes 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')

Создайте модель 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, заданный как Mesh свойство PDEModel объект или как выход generateMesh.

Пример: model.Mesh

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

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

Аргументы в виде пар имя-значение

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

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

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

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

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

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

Данные для графика полей градиента, заданные как разделенная запятой пара, состоящая из 'FlowData' и M-by- 3 матрица, где M количество узлов сетки. 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 аргумент пары "имя-значение". The pdeplot3D функция выбирает значение по умолчанию на основе самой геометрии и величины деформации.

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

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

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

свернуть все

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

Введенный в R2015a