exponenta event banner

geometryFromMesh

Создайте геометрию из mesh

Синтаксис

geometryFromMesh(model,nodes,elements)
geometryFromMesh(model,nodes,elements,ElementIDToRegionID)
[G,mesh] = geometryFromMesh(model,nodes,elements)

Описание

пример

geometryFromMesh(model,nodes,elements) создает геометрию в model. Поскольку плоский и объем триангулировали сетки, эта функция также включает nodes в свойство model.Mesh.Nodes и elements в свойстве model.Mesh.Elements. Чтобы заменить импортированную mesh на mesh, имеющую различный целевой размер элемента, используйте generateMesh.

Если elements представляет поверхностную треугольную mesh, которая ограничивает закрытый объем, то geometryFromMesh создает геометрию, но не включает mesh в соответствующие свойства модели. Чтобы сгенерировать mesh в этом случае, используйте generateMesh.

пример

geometryFromMesh(model,nodes,elements,ElementIDToRegionID) создает многодоменную геометрию. Здесь, ElementIDToRegionID задает идентификаторы субдомена для каждого элемента mesh.

[G,mesh] = geometryFromMesh(model,nodes,elements) возвращает указатель G в геометрию в model.Geometry и указатель mesh к mesh в model.Mesh.

Примеры

свернуть все

Импортируйте четырехгранную mesh в модель PDE.

Загрузите четырехгранную mesh в свою рабочую область. Файл tetmesh поставляется с вашим программным обеспечением. Поместите данные в правильную форму для geometryFromMesh.

load tetmesh
nodes = X';
elements = tet';

Создайте модель PDE и импортируйте mesh в модель.

model = createpde();
geometryFromMesh(model,nodes,elements);

Просмотрите геометрию и столкнитесь с числами.

pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)

Создайте геометрический блок от выпуклой оболочки сетки mesh точек.

Создайте 3-D сетку mesh.

[x,y,z] = meshgrid(-2:4:2);

Создайте выпуклую оболочку.

x = x(:);
y = y(:);
z = z(:);
K = convhull(x,y,z);

Поместите данные в правильную форму для geometryFromMesh.

nodes = [x';y';z'];
elements = K';

Создайте модель PDE и импортируйте mesh.

model = createpde();
geometryFromMesh(model,nodes,elements);

Просмотрите геометрию и столкнитесь с числами.

pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)

Создайте 3-D геометрию с помощью функции alphaShape MATLAB. Во-первых, создайте alphaShape объект блока с цилиндрической дырой. Затем импортируйте геометрию в модель PDE от контура alphaShape.

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

[xg, yg] = meshgrid(-3:0.25:3);
xg = xg(:);
yg = yg(:);

Создайте единичный диск. Удалите все узлы решетки mesh, которые падают в единичном диске и включают точки единичного диска.

t = (pi/24:pi/24:2*pi)';
x = cos(t);
y = sin(t);
circShp = alphaShape(x,y,2);
in = inShape(circShp,xg,yg);
xg = [xg(~in); cos(t)];
yg = [yg(~in); sin(t)];

Создайте 3-D копии остающихся узлов решетки mesh, с z - координирует в пределах от 0 до 1. Объедините точки в объект alphaShape.

zg = ones(numel(xg),1);
xg = repmat(xg,5,1);
yg = repmat(yg,5,1);
zg = zg*(0:.25:1);
zg = zg(:);
shp = alphaShape(xg,yg,zg);

Получите поверхностную сетку объекта alphaShape.

[elements,nodes] = boundaryFacets(shp);

Поместите данные в правильную форму для geometryFromMesh.

nodes = nodes';
elements = elements';

Создайте модель PDE и импортируйте поверхностную mesh.

model = createpde();
geometryFromMesh(model,nodes,elements);

Просмотрите геометрию и столкнитесь с числами.

pdegplot(model,'FaceLabels','on','FaceAlpha',0.5)

Чтобы использовать геометрию в анализе, создайте mesh объема.

generateMesh(model);

Создайте 2D многодоменную геометрию из mesh.

Загрузите информацию об узлах, элементах и соответствии элемента к области в вашу рабочую область. Файл MultidomainMesh2D поставляется с вашим программным обеспечением.

load MultidomainMesh2D

Создайте модель PDE.

model = createpde;

Импортируйте mesh в модель.

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

Просмотрите геометрию и столкнитесь с числами.

pdegplot(model,'FaceLabels','on')

Создайте 3-D многодоменную геометрию из mesh.

Загрузите информацию об узлах, элементах и соответствии элемента к области в вашу рабочую область. Файл MultidomainMesh3D поставляется с вашим программным обеспечением.

load MultidomainMesh3D

Создайте модель PDE.

model = createpde;

Импортируйте mesh в модель.

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

Просмотрите числа ячейки и геометрия.

pdegplot(model,'CellLabels','on')

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

свернуть все

Объект модели, заданный как объект PDEModel, объект ThermalModel или объект StructuralModel.

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

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

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

Поймайте в сети узлы, заданные как матрица вещественных чисел. Матричный размер 2 Nnodes для 2D случая и 3 Nnodes для 3-D случая. Nnodes является количеством узлов в mesh.

Узел j имеет x, y, и координаты z в столбце j nodes.

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

Поймайте в сети элементы, указанные как целочисленная матрица с 3, 4, или 10 строк и столбцы Nelements, где Nelements является числом элементов в mesh.

  • Mesh на поверхности геометрии имеет размер 3 Nelements. Каждый столбец elements содержит индексы треугольных угловых узлов для поверхностного элемента. В этом случае получившаяся геометрия не содержит полную mesh. Создайте mesh с помощью функции generateMesh.

  • Линейные элементы имеют размер 4 Nelements. Каждый столбец elements содержит индексы четырехгранных угловых узлов для элемента.

  • Квадратичные элементы имеют размер 10 Nelements. Каждый столбец elements содержит индексы четырехгранных угловых узлов и четырехгранных узлов средней точки ребра для элемента.

Для получения дополнительной информации на нумерации узла для линейных и квадратичных элементов, смотрите Данные о Mesh.

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

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

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

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

свернуть все

Геометрия, возвращенная как указатель на model.Geometry. Эта геометрия имеет класс DiscreteGeometry Properties.

Mesh конечного элемента, возвращенная как указатель на model.Mesh.

  • Если elements является 3 Nelements матрицей, представляющей поверхностную mesh, то mesh является []. В этом случае создайте mesh для геометрии с помощью функции generateMesh.

  • Если elements является матрицей больше чем с тремя строками, представляющими mesh объема, то mesh имеет те же узлы и элементы как входные параметры. Можно получить различную mesh для геометрии при помощи функции generateMesh.

Введенный в R2015b