Розбиття на області¶
Під час паралельного аналізу великомасштабної сітки з використанням кількох процесів сітку однієї області спочатку потрібно розділити на підобласті та заздалегідь сформувати інформацію, необхідну для призначення кожному процесу й міжобласного обміну. Цей етап попередньої обробки називається розбиттям на області.
У паралельних обчисленнях 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. Однак у контактній задачі або задачі з обмеженнями MPC, де використовується передобумовлювач сімейства SAI, наприклад SAINV, збільшення глибини перекриття до 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 — синтаксис вхідних керувальних даних утиліти розбиття на області.