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

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

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

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

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

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 имя аргумента и 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

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

свернуть все

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

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