exponenta event banner

Создать сетку

generateMesh функция создает треугольную сетку для 2-D геометрии и четырехгранную сетку для 3-D геометрии. По умолчанию генератор сетки использует внутренние алгоритмы для выбора подходящих параметров размера для конкретной геометрии. Можно также использовать дополнительные аргументы для явного указания следующих параметров:

  • Целевая максимальная длина кромки сети, которая является приблизительной верхней границей на длине кромки сети. Обратите внимание, что иногда некоторые элементы могут иметь кромки длиннее, чем этот параметр.

  • Целевая минимальная длина кромки сети, которая является приблизительной нижней границей на длине кромки сети. Обратите внимание, что иногда некоторые элементы могут иметь кромки короче этого параметра.

  • Скорость роста сетки, которая является скоростью, с которой размер сетки увеличивается в сторону от небольших частей геометрии. Значение должно быть в диапазоне от 1 до 2. Это отношение соответствует длине кромки двух последовательных элементов. Значение по умолчанию - 1,5, то есть размер сетки увеличивается на 50%.

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

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

model = createpde;

Включить и вывести на печать следующую геометрию.

importGeometry(model,'PlateSquareHolePlanar.stl');
pdegplot(model)

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

Создайте сетку по умолчанию. Для этой геометрии целевыми максимальными и минимальными длинами кромок сетки по умолчанию являются 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)

Figure contains an axes. The axes contains 2 objects of type line.

Для сравнения создайте сетку с максимальной длиной кромки целевого элемента, равной 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)

Figure contains an axes. The axes contains 2 objects of type line.

Теперь создайте сетку с минимальной длиной кромки целевого элемента 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)

Figure contains an axes. The axes contains 2 objects of type line.

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

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)

Figure contains an axes. The axes contains 2 objects of type line.

Создайте сетку с теми же максимальными и минимальными длинами кромок элементов, но со скоростью роста 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)

Figure contains an axes. The axes contains 2 objects of type line.

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

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

Figure contains an axes. The axes contains 3 objects of type line.

Чтобы сохранить память или решить проблему 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')  

Figure contains an axes. The axes contains 3 objects of type line.