Разбиение области¶
При параллельном анализе крупной сетки несколькими процессами исходную сетку одной области сначала необходимо разделить на подобласти и заранее сформировать информацию, необходимую для назначения процессов и обмена данными между областями. Этот этап предварительной обработки называется разбиением области.
При параллельных вычислениях FrontISTR программа hecmw_part1 делит сетку одной области на подобласти и создает распределенные данные сетки. Полученные распределенные данные сетки считываются параллельным fistr1 и используются параллельным решателем вместе с информацией, необходимой для обмена между областями.
На этой странице описываются тип разбиения, метод разбиения, глубина перекрытия и обработка контактных точек при разбиении области. Процедуру запуска hecmw_part1, конкретный синтаксис управляющего файла и сообщения об ошибках см. в связанных разделах.
Обзор¶
Разбиение области — это процесс разделения сетки одной области на несколько подобластей. FrontISTR создает распределенные данные сетки на основе сочетания типа разбиения, метода разбиения, числа областей и глубины перекрытия.
| Параметр выбора | Основные варианты | Назначение |
|---|---|---|
| Тип разбиения | Разбиение по узлам, разбиение по элементам | Определяет, назначается ли владение по узлам или по элементам. |
| Метод разбиения | RCB, METIS (pMETIS / kMETIS) | Определяет способ формирования границ областей. |
| Число областей | Любое положительное целое число (\(2^n\) для RCB) | Определяет число подобластей в распределенных данных сетки. Обычно соответствует числу процессов MPI. |
| Глубина перекрытия | Целое число не менее 1 | Определяет диапазон данных, избыточно сохраняемых соседними областями. Задается для разбиения по узлам. |
| Таблицы обмена | Информация импорта/экспорта, общая информация | Определяет обмен данными между соседними подобластями. Формируется автоматически при разбиении области. |
Поскольку таблицы обмена включаются в распределенные данные сетки, пользователю обычно не требуется редактировать их вручную. Параллельный fistr1 считывает распределенные данные сетки и решает линейные уравнения параллельным прямым методом, например MUMPS, или итерационным методом.
Выбор конфигурации разбиения области¶
Для обычного структурного анализа и анализа теплопроводности в первую очередь обычно следует рассматривать разбиение по узлам. При таком разбиении обмен узловыми величинами, необходимыми в параллельном конечно-элементном анализе, организуется просто, а также можно задавать глубину перекрытия. Разбиение по элементам является вариантом для задач, например связанных расчетов, где распределенная информация обрабатывается преимущественно по элементам.
Метод разбиения выбирайте с учетом геометрии и числа областей. Для простой геометрии, когда число областей может быть равно \(2^n\), RCB является простым и устойчивым вариантом. Для сложной геометрии или при необходимости произвольного числа областей можно использовать METIS, основанный на разбиении графа.
| Характеристика задачи | Рекомендуемый выбор |
|---|---|
| Стандартный параллельный структурный анализ или анализ теплопроводности | Разбиение по узлам |
| Задачи с распределенной информацией, ориентированной на элементы, например связанный анализ | Разбиение по элементам |
| Простая геометрия, близкая к прямоугольному параллелепипеду, с \(2^n\) областями | RCB |
| Сложная геометрия или произвольное число областей | METIS |
| Контактные задачи или задачи с ограничениями MPC при использовании предобусловливателя SAINV | Используйте разбиение по узлам с глубиной перекрытия 2 или более |
Число областей обычно выбирается равным числу процессов MPI. Процедуру параллельного запуска и задание числа процессов см. в разделе Параллельный анализ. Связь между предобусловливателем SAINV и глубиной перекрытия также описана в разделе Решатель и предобусловливание.
Типы разбиения¶
Тип разбиения определяет, какому объекту сетки назначается единственная владеющая подобласть. При разбиении по узлам владение назначается узлам, а при разбиении по элементам — элементам. В обоих случаях информация, необходимая для вычислений с соседними подобластями, сохраняется как данные перекрытия.
Разбиение по узлам¶
При разбиении по узлам каждому узлу назначается ровно одна владеющая подобласть. Элементы сохраняются с перекрытием в соседних подобластях. Во входных данных это задается как !PARTITION, TYPE=NODE-BASED.

Каждая подобласть сохраняет свои внутренние узлы, элементы, содержащие эти внутренние узлы, и узлы, образующие эти элементы.

Таблицы обмена при разбиении по узлам содержат следующую информацию.
- Импортируемые узлы: узлы, используемые в данной подобласти, но принадлежащие другой подобласти.
- Экспортируемые узлы: внутренние узлы, являющиеся импортируемыми узлами другой подобласти.
- Общие элементы: элементы, совместно используемые с другими подобластями.



Разбиение по элементам¶
При разбиении по элементам каждому элементу назначается ровно одна владеющая подобласть. Узлы сохраняются с перекрытием в соседних подобластях. Во входных данных это задается как !PARTITION, TYPE=ELEMENT-BASED.

Каждая подобласть сохраняет свои внутренние элементы, узлы, образующие эти внутренние элементы, и элементы, содержащие эти узлы.

Таблицы обмена при разбиении по элементам содержат следующую информацию.
- Импортируемые элементы: элементы, используемые в данной подобласти, но принадлежащие другой подобласти.
- Экспортируемые элементы: внутренние элементы, являющиеся импортируемыми элементами другой подобласти.
- Общие узлы: узлы, совместно используемые с другими подобластями.



Для обоих типов разбиения hecmw_part1 автоматически формирует таблицы обмена и записывает их в распределенные данные сетки. Поэтому пользователю обычно не требуется создавать информацию импорта/экспорта вручную.
Методы разбиения¶
Метод разбиения определяет способ формирования границ подобластей. FrontISTR поддерживает координатный метод RCB и метод METIS, основанный на разбиении графа.
| Метод разбиения | Характеристики | Основные ограничения и примечания |
|---|---|---|
| RCB | Рекурсивно делит сетку пополам по значениям координат. Обеспечивает быстрое разбиение для простой геометрии. | Число областей ограничено значениями \(2^n\). Необходимо задать оси разбиения. |
| pMETIS | Использует разбиение графа с учетом связности между областями. | Доступен в сборках с включенным METIS. |
| kMETIS | Использует многочастное разбиение графа и подходит для формирования границ областей в сложной геометрии. | Доступен в сборках с включенным METIS. |
RCB означает Recursive Coordinate Bisection (рекурсивное координатное деление) и многократно делит сетку пополам вдоль координатных осей. Метод подходит, когда число областей может быть равно \(2^n\), и удобен для простой геометрии, близкой к прямоугольному параллелепипеду.
METIS представляет связность сетки в виде графа и создает подобласти путем разбиения графа. Этот метод подходит для сложной геометрии или когда число областей не должно ограничиваться значениями \(2^n\). Для использования METIS библиотека METIS должна быть включена при сборке. Управление зависимостями описано в разделе Обязательные и необязательные зависимости.
Глубина перекрытия¶
Глубина перекрытия — это число слоев в диапазоне, который избыточно сохраняется соседними подобластями. При разбиении по узлам в !PARTITION параметром DEPTH можно задать целое число не менее 1. Глубина перекрытия по умолчанию равна 1.
Для обычного параллельного анализа достаточно DEPTH=1. Однако при использовании предобусловливателя семейства SAI, например SAINV, для контактной задачи или задачи с ограничениями MPC увеличение глубины перекрытия до 2 и более может повысить качество предобусловливателя.
Глубина перекрытия 2 или более также требуется, когда в параллельных вычислениях MPI для тетраэдрального элемента первого порядка 341 используется выборочная формулировка сглаживания по ребрам/узлам (FORM341=SELECTIVE_ESNS). Сглаживание по ребрам и узлам усредняет величины по элементам, соседним с целевым элементом, поэтому для сборки жесткости внутри подобласти необходима информация об элементах на расстоянии двух слоев смежности; при стандартном DEPTH=1 сглаживание вблизи границ областей недостаточно. Подробнее о формулировке элемента см. Библиотека элементов.
Увеличение глубины перекрытия повышает число узлов и элементов, сохраняемых соседними подобластями, а следовательно, увеличивает расход памяти и объем обмена. Выбирайте значение с учетом компромисса между улучшением сходимости и ростом вычислительных затрат. Выбор предобусловливателя описан в разделе Решатель и предобусловливание.
Обработка контактных точек¶
При разбиении сетки, содержащей контактные пары, в !PARTITION параметром CONTACT можно задать политику размещения контактных точек по областям. Размещение контактных точек влияет на устойчивость и объем обмена в параллельном анализе с поиском контакта и контактными ограничениями.
| Значение | Назначение |
|---|---|
DEFAULT |
Использует стандартную политику размещения. |
SIMPLE |
Использует размещение, близкое к обычному разбиению, без специальных весов для контактных точек. |
AGGREGATE |
Выполняет разбиение так, чтобы узлы, связанные с контактными парами, имели тенденцию группироваться. |
DISTRIBUTE |
Выполняет разбиение так, чтобы контактные узлы ведущей стороны меньше концентрировались в отдельных подобластях. |
Для сеток без контакта параметр CONTACT обычно не требует внимания. Если в параллельном анализе с контактом возникают проблемы со сходимостью или балансировкой нагрузки, проверьте политику размещения контактных точек. Синтаксис входных данных см. в !PARTITION.
Независимо от этого параметр CONTACT_OWNER позволяет выбрать схему владения для параллельного контакта. Если CONTACT задаёт «как выполнять разбиение», то CONTACT_OWNER задаёт «какая сторона отвечает после разбиения».
| Значение | Назначение |
|---|---|
MASTER |
Схема владения ведущей стороной (по умолчанию). Ведущая поверхность разбивается по областям-владельцам элементов, а ведомые узлы копируются в каждую область-владелец ведущей поверхности. |
SLAVE |
Схема владения ведомой стороной. Каждый ведомый узел сохраняется только в своей области-владельце, а вся ведущая поверхность размещается в этой области. |
При конечном скольжении (!CONTACT с INTERACTION=FSLID), если ведомый узел пересекает границу разбиения области на ведущей поверхности, в схеме MASTER поиск соседних элементов может прерываться на границе, из-за чего теряются состояние контакта и история трения, а решение начинает зависеть от числа областей. Схема SLAVE устраняет эту проблему. Её можно задавать только при TYPE=NODE-BASED; в областях, владеющих ведомыми узлами, увеличивается использование памяти.
Вывод изображения разбиения области¶
Если в !PARTITION задать параметр UCD, выводится файл UCD для проверки результата разбиения. Файл UCD можно использовать в средствах визуализации, например MicroAVS, чтобы просмотреть номера областей и границы разбиения.
После изменения числа областей, метода разбиения или глубины перекрытия важно проверить, нет ли дисбаланса между областями или неестественной фрагментации. Вывод UCD является вспомогательной функцией для проверки корректности разбиения до запуска параллельного анализа.
Связанные темы¶
- Параллельный анализ — процедура запуска
hecmw_part1, входные файлы и проверка вывода распределенных данных сетки. - Решатель и предобусловливание — параллельные решатели, предобусловливатели и связь между SAINV и глубиной перекрытия.
- Список сообщений об ошибках — типичные сообщения об ошибках
hecmw_part1иfistr1. - Параллельный метод конечных элементов — теоретические основы декомпозиции области и параллельного метода конечных элементов.
- !PARTITION — синтаксис управляющих данных утилиты разбиения области.