Перейти до змісту

Розбиття на області

Під час паралельного аналізу великомасштабної сітки з використанням кількох процесів сітку однієї області спочатку потрібно розділити на підобласті та заздалегідь сформувати інформацію, необхідну для призначення кожному процесу й міжобласного обміну. Цей етап попередньої обробки називається розбиттям на області.

У паралельних обчисленнях 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.

Схема розбиття за вузлами

Рисунок 10.1 Схема розбиття за вузлами

Кожна підобласть зберігає свої внутрішні вузли, елементи, що містять ці внутрішні вузли, та вузли, з яких складаються ці елементи.

Вузли та елементи, що зберігаються кожною підобластю за розбиття за вузлами

Рисунок 10.2 Вузли та елементи, що зберігаються кожною підобластю за розбиття за вузлами

Таблиці обміну для розбиття за вузлами містять таку інформацію.

  • Імпортовані вузли: вузли, що використовуються в підобласті, але належать іншій підобласті.
  • Експортовані вузли: внутрішні вузли, які є імпортованими вузлами іншої підобласті.
  • Спільні елементи: елементи, спільні з іншими підобластями.

Імпортовані вузли за розбиття за вузлами

Рисунок 10.3 Імпортовані вузли за розбиття за вузлами

Експортовані вузли за розбиття за вузлами

Рисунок 10.4 Експортовані вузли за розбиття за вузлами

Спільні елементи за розбиття за вузлами

Рисунок 10.5 Спільні елементи за розбиття за вузлами

Розбиття за елементами

За розбиття за елементами кожен елемент належить рівно одній підобласті-власнику. Вузли зберігаються з перекриттям у сусідніх підобластях. У вхідних даних це задається як !PARTITION, TYPE=ELEMENT-BASED.

Схема розбиття за елементами

Рисунок 10.6 Схема розбиття за елементами

Кожна підобласть зберігає свої внутрішні елементи, вузли, з яких складаються ці внутрішні елементи, та елементи, що містять ці вузли.

Вузли та елементи, що зберігаються кожною підобластю за розбиття за елементами

Рисунок 10.7 Вузли та елементи, що зберігаються кожною підобластю за розбиття за елементами

Таблиці обміну для розбиття за елементами містять таку інформацію.

  • Імпортовані елементи: елементи, що використовуються в підобласті, але належать іншій підобласті.
  • Експортовані елементи: внутрішні елементи, які є імпортованими елементами іншої підобласті.
  • Спільні вузли: вузли, спільні з іншими підобластями.

Імпортовані елементи за розбиття за елементами

Рисунок 10.8 Імпортовані елементи за розбиття за елементами

Експортовані елементи за розбиття за елементами

Рисунок 10.9 Експортовані елементи за розбиття за елементами

Спільні вузли за розбиття за елементами

Рисунок 10.10 Спільні вузли за розбиття за елементами

Для обох типів розбиття 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 є допоміжною функцією для перевірки коректності розбиття перед запуском паралельного аналізу.

Пов’язані теми

AI-assisted translation May contain errors Official docs Status