exponenta event banner

pdeplot3D

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

Синтаксис

pdeplot3D(model,'ColorMapData',results.NodalSolution)
pdeplot3D(model,'ColorMapData',results.Temperature)
pdeplot3D(model,'ColorMapData',results.VonMisesStress,'Deformation',results.Displacement)
pdeplot3D(model)
pdeplot3D(mesh)
pdeplot3D(nodes,elements)
pdeplot3D(___,Name,Value)
h = pdeplot3D(___)

Описание

пример

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

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

thermalProperties(thermalmodel,'ThermalConductivity',80);

Примените постоянную температуру 100C к левой стороне блока (стоят 1), и постоянная температура 300C к правой стороне блока (стоят 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

Предположение, что это - медный блок, теплопроводность блока приблизительно 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])

Создайте сетку, заданную 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)

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

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)

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

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

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

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

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

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)

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

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.

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

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

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

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

Пример: model.Mesh

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

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

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

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

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

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

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

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

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

Данные для графика полей градиента, заданного как пара, разделенная запятой, состоящая из 'FlowData' и M-by-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

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

свернуть все

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

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