Partial Differential Equation Toolbox™ использует метод конечных элементов, чтобы решить задачи УЧП. Этот метод дискретизирует геометрическую область в набор простых форм, которые составляют mesh. Качество mesh крайне важно для получения точного приближения решения.
Как правило, решатели УЧП работают лучше всего с сетками, составленными из элементов, которые имеют равностороннюю форму. Такие сетки идеальны. В действительности создание идеальной mesh для большинства 2D и 3-D конфигураций невозможно, потому что конфигурации имеют крошечные или узкие области и резкие углы. Для таких областей генератор mesh создает сетки с некоторыми элементами, которые намного меньше, чем остальная часть элементов mesh или имеют решительно различные длины стороны.
Когда элементы mesh становятся искаженными, числовыми приближениями решения, обычно становятся менее точными. Совершенствование mesh с помощью меньших элементов производит элементы лучшей формы и, поэтому, более точные результаты. Однако это также может быть в вычислительном отношении дорого.
Проверка, имеет ли mesh хорошее качество прежде, чем запустить анализ, является хорошей практикой, особенно для симуляций, которые занимают много времени. Тулбокс обеспечивает meshQuality
функция для этой задачи.
meshQuality
оценивает качество формы элементов mesh и возвращает числа от 0 до 1 для каждого элемента mesh. Значение 1 соответствует оптимальной форме элемента. По умолчанию, meshQuality
функционируйте комбинирует несколько критериев при оценке качества формы. В дополнение к метрике по умолчанию можно использовать aspect-ratio
метрика, которая базируется только на отношении минимальной размерности элемента к его максимальной размерности.
Создайте модель PDE.
model = createpde;
Включайте и постройте геометрию торуса.
importGeometry(model,'Torus.stl'); pdegplot(model) camlight right
Сгенерируйте крупную сетку.
mesh = generateMesh(model,'Hmax',10);
Оцените качество формы всех элементов mesh.
Q = meshQuality(mesh);
Найдите элементы с качественными значениями меньше чем 0,3.
elemIDs = find(Q < 0.3);
Подсветите эти элементы синего цвета на сетчатом графике.
figure pdemesh(mesh,'FaceAlpha',0.5) hold on pdemesh(mesh.Nodes,mesh.Elements(:,elemIDs),'FaceColor','blue','EdgeColor','blue')
Определите, сколько из общего объема mesh принадлежит элементам с качественными значениями меньше чем 0,3. Возвратите результат как процент.
mv03_percent = volume(mesh,elemIDs)/volume(mesh)*100
mv03_percent = 0.0198
Оцените качество формы элементов mesh при помощи отношения минимальных к максимальной размерности для каждого элемента.
Q = meshQuality(mesh,'aspect-ratio');
Найдите элементы с качественными значениями меньше чем 0,3.
elemIDs = find(Q < 0.3);
Подсветите эти элементы синего цвета на сетчатом графике.
figure pdemesh(mesh,'FaceAlpha',0.5) hold on pdemesh(mesh.Nodes,mesh.Elements(:,elemIDs),'FaceColor','blue','EdgeColor','blue')