geometryFromMesh

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

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

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

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

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

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

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

Создайте геометрический блок из выпуклой оболочки сетки 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)

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

Создайте 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)

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

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

generateMesh(model);

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

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

load MultidomainMesh2D

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

model = createpde;

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

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

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

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

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

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

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

load MultidomainMesh3D

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

model = createpde;

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

geometryFromMesh(model,nodes,elements,ElementIdToRegionId);

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

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

Figure contains an axes object. The axes object 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 Nnodes для 2D случая и 3 Nnodes для 3-D случая. Nnodes количество узлов в mesh.

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

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

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

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

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

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

  • Квадратичные элементы имеют размер 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