exponenta event banner

geometryFromMesh

Создание 2-D или 3-D геометрии из сетки

Описание

пример

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

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

пример

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

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

Примеры

свернуть все

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

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

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

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

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

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

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 геометрии с помощью MATLAB alphaShape функция. Сначала создайте 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);

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

[elements,nodes] = boundaryFacets(shp);

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

nodes = nodes';
elements = elements';

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

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.

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

generateMesh(model);

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

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

load MultidomainMesh2D

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

model = createpde;

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

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

Просмотр геометрических объектов и номеров граней.

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

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

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

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

load MultidomainMesh3D

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

model = createpde;

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

свернуть все

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

Сетка конечных элементов, возвращенная в качестве дескриптора model.Mesh.

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

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

Представлен в R2015b