generateMesh функция создает треугольную сетку для 2-D геометрии и четырехгранную сетку для 3-D геометрии. По умолчанию генератор сетки использует внутренние алгоритмы для выбора подходящих параметров размера для конкретной геометрии. Можно также использовать дополнительные аргументы для явного указания следующих параметров:
Целевая максимальная длина кромки сети, которая является приблизительной верхней границей на длине кромки сети. Обратите внимание, что иногда некоторые элементы могут иметь кромки длиннее, чем этот параметр.
Целевая минимальная длина кромки сети, которая является приблизительной нижней границей на длине кромки сети. Обратите внимание, что иногда некоторые элементы могут иметь кромки короче этого параметра.
Скорость роста сетки, которая является скоростью, с которой размер сетки увеличивается в сторону от небольших частей геометрии. Значение должно быть в диапазоне от 1 до 2. Это отношение соответствует длине кромки двух последовательных элементов. Значение по умолчанию - 1,5, то есть размер сетки увеличивается на 50%.
Квадратичный или линейный геометрический порядок. Квадратичный элемент имеет узлы в своих углах и центрах кромок, в то время как линейный элемент имеет узлы только в своих углах.
Создайте модель PDE.
model = createpde;
Включить и вывести на печать следующую геометрию.
importGeometry(model,'PlateSquareHolePlanar.stl');
pdegplot(model)
Создайте сетку по умолчанию. Для этой геометрии целевыми максимальными и минимальными длинами кромок сетки по умолчанию являются 8,9443 и 4,4721 соответственно.
mesh_default = generateMesh(model)
mesh_default =
FEMesh with properties:
Nodes: [2x1218 double]
Elements: [6x574 double]
MaxElementSize: 8.9443
MinElementSize: 4.4721
MeshGradation: 1.5000
GeometricOrder: 'quadratic'
Просмотрите сетку.
figure pdemesh(mesh_default)

Для сравнения создайте сетку с максимальной длиной кромки целевого элемента, равной 20.
mesh_Hmax = generateMesh(model,'Hmax',20)mesh_Hmax =
FEMesh with properties:
Nodes: [2x286 double]
Elements: [6x126 double]
MaxElementSize: 20
MinElementSize: 10
MeshGradation: 1.5000
GeometricOrder: 'quadratic'
figure pdemesh(mesh_Hmax)

Теперь создайте сетку с минимальной длиной кромки целевого элемента 0,5.
mesh_Hmin = generateMesh(model,'Hmin',0.5)mesh_Hmin =
FEMesh with properties:
Nodes: [2x1378 double]
Elements: [6x654 double]
MaxElementSize: 8.9443
MinElementSize: 0.5000
MeshGradation: 1.5000
GeometricOrder: 'quadratic'
figure pdemesh(mesh_Hmin)

Создайте сетку, указав как максимальную, так и минимальную длину кромки элемента вместо использования значений по умолчанию.
mesh_HminHmax = generateMesh(model,'Hmax',20,'Hmin',0.5)
mesh_HminHmax =
FEMesh with properties:
Nodes: [2x458 double]
Elements: [6x212 double]
MaxElementSize: 20
MinElementSize: 0.5000
MeshGradation: 1.5000
GeometricOrder: 'quadratic'
Просмотрите сетку.
figure pdemesh(mesh_HminHmax)

Создайте сетку с теми же максимальными и минимальными длинами кромок элементов, но со скоростью роста 1,9 вместо значения по умолчанию 1,5.
mesh_Hgrad = generateMesh(model,'Hmax',20,'Hmin',0.5,'Hgrad',1.9)
mesh_Hgrad =
FEMesh with properties:
Nodes: [2x390 double]
Elements: [6x178 double]
MaxElementSize: 20
MinElementSize: 0.5000
MeshGradation: 1.9000
GeometricOrder: 'quadratic'
figure pdemesh(mesh_Hgrad)

Можно также выбрать геометрический порядок сетки. Панель инструментов может создавать сетки, состоящие из квадратичных или линейных элементов. По умолчанию используются квадратичные сетки, имеющие узлы как в центрах кромок, так и в узлах углов.
mesh_quadratic = generateMesh(model,'Hmax',50); figure pdemesh(mesh_quadratic,'NodeLabels','on') hold on plot(mesh_quadratic.Nodes(1,:),mesh_quadratic.Nodes(2,:),'ok','MarkerFaceColor','g')

Чтобы сохранить память или решить проблему 2-D с помощью прежнего решателя, переопределите квадратичный геометрический порядок по умолчанию. Унаследованные решатели PDE требуют линейных треугольных сеток для 2-D геометрий.
mesh_linear = generateMesh(model,'Hmax',50,'GeometricOrder','linear'); figure pdemesh(mesh_linear,'NodeLabels','on') hold on plot(mesh_linear.Nodes(1,:),mesh_linear.Nodes(2,:),'ok','MarkerFaceColor','g')
