geometryFromMesh

Создайте 2-D или 3-D геометрию из mesh

Описание

пример

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 в рабочую область. The tetmesh файл поставляется с помощью вашего программного обеспечения. Поместите данные в правильную форму для geometryFromMesh.

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

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

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

Просмотрите геометрию и номера граней.

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

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

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

[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';

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

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

Просмотрите геометрию и номера граней.

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

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

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

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

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

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 копии остальных точек сетки с 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);

Получите поверхностный mesh alphaShape объект.

[elements,nodes] = boundaryFacets(shp);

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

nodes = nodes';
elements = elements';

Создайте модель УЧП и импортируйте поверхностный mesh.

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

Просмотрите геометрию и номера граней.

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

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

generateMesh(model);

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

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

load MultidomainMesh2D

Создайте модель УЧП.

model = createpde;

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

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

Просмотрите геометрию и номера граней.

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

Figure contains an axes. The axes contains an object of type line.

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

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

load MultidomainMesh3D

Создайте модель УЧП.

model = createpde;

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

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

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

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

Figure contains an axes. The axes contains 3 objects of type quiver, patch, line.

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

свернуть все

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

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

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

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

Пример: emagmodel = createpde('electromagnetic','electrostatic')

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Конечный элемент mesh, возвращенный как указатель на model.Mesh.

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

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

Введенный в R2015b