exponenta event banner

pdeplot3D

Печать решения или сетки поверхности для 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) отображает сетку поверхности, указанную в model.

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

pdeplot3D(nodes,elements) выводит на график сетку, определяемую nodes и elements.

пример

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

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

Примеры

свернуть все

Постройте график решения PDE на поверхности геометрии. Сначала создайте модель 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]);

Создайте сетку и решите проблему.

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);

Создайте сетку.

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, включите геометрию и создайте сетку.

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

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

pdeplot3D(model)

Также можно распечатать сетку с помощью mesh в качестве входного аргумента.

pdeplot3D(mesh)

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

pdeplot3D(mesh.Nodes,mesh.Elements)

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

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-by-NumNodes. NumNodes - количество узлов.

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

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

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

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

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

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

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

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

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

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

pdeplot3D строит график реальной части сложных данных.

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

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

Индикатор для отображения сетки, указанной как разделенная запятыми пара, состоящая из 'Mesh' и 'on' или 'off'. Определить 'on' для отображения сетки на графике.

Пример: '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