The generateMesh
функция создает треугольный mesh для 2-D геометрии и четырехгранный mesh для 3-D геометрии. По умолчанию генератор сетки использует внутренние алгоритмы, чтобы выбрать подходящие параметры калибровки для конкретной геометрии. Можно также использовать дополнительные аргументы, чтобы явным образом задать следующие параметры:
Целевая максимальная длина ребра mesh, которая является приблизительной верхней границей на длинах ребер сетки. Обратите внимание, что иногда некоторые элементы могут иметь ребра длиннее, чем этот параметр.
Целевая минимальная длина ребра mesh, которая является приблизительной нижней границей на длинах ребер сетки. Обратите внимание, что иногда некоторые элементы могут иметь ребра короче, чем этот параметр.
Скорость роста сетки, с которой размер сетки увеличивается от небольших частей геометрии. Значение должно быть от 1 до 2. Это отношение соответствует длине ребра двух последовательных элементов. Значение по умолчанию является 1,5, то есть размер сетки увеличивается на 50%.
Квадратичный или линейный геометрический порядок. Квадратичный элемент имеет узлы по углам и центрам ребер, линейный элемент имеет узлы только по углам.
Создайте модель УЧП.
model = createpde;
Включите и постройте график следующей геометрии.
importGeometry(model,'PlateSquareHolePlanar.stl');
pdegplot(model)
Сгенерируйте mesh по умолчанию. Для этой геометрии целевые максимальные и минимальные длины ребер mesh по умолчанию равны 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'
Просмотрите mesh.
figure pdemesh(mesh_default)
Для сравнения создайте mesh с целевым максимальным элементом ребра длиной 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)
Теперь создайте mesh с минимальной длиной ребра целевого элемента 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, задав как максимальную, так и минимальную длину ребра элемента вместо использования значений по умолчанию.
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'
Просмотрите mesh.
figure pdemesh(mesh_HminHmax)
Создайте mesh с такими же максимальными и минимальными длинами ребер элемента, но со скоростью роста 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. Тулбокс может генерировать сетки, состоящие из квадратичных или линейных элементов. По умолчанию он использует квадратичные сетки, которые имеют узлы как в центрах ребер, так и в угловых узлах.
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 задачу с помощью устаревшего решателя, переопределите квадратичный геометрический порядок по умолчанию. Для устаревших решателей УЧП требуются линейные треугольные сетки для 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')