Разделяне на области¶
Когато голяма мрежа се анализира паралелно чрез множество процеси, еднообластната мрежа трябва предварително да се раздели на подобласти и да се генерира информацията, необходима за разпределяне към всеки процес и за комуникация между областите. Тази стъпка на предварителна обработка се нарича разделяне на области.
При паралелни изчисления във 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 или по-голяма е необходима и когато селективната формулировка за изглаждане по ръбове/възли (FORM341=SELECTIVE_ESNS) се използва с тетраедричен елемент от първи ред 341 при MPI паралелни изчисления. Изглаждането по ръбове и по възли осреднява величини върху елементи, съседни на целевия елемент, затова асемблирането на коравината в подобласт изисква информация от елементи на два слоя съседство; при DEPTH=1 по подразбиране изглаждането близо до границите на областите е недостатъчно. За подробности относно формулировката на елемента вижте Библиотека от елементи.
Увеличаването на дълбочината на припокриване увеличава броя възли и елементи, запазвани от съседните подобласти, и съответно увеличава както използваната памет, така и обема на комуникацията. Задавайте я чрез баланс между подобрената сходимост и увеличената изчислителна цена. За избора на предобуславящ оператор вижте Решатели и предобуславящи оператори.
Обработка на контактни точки¶
При разделяне на мрежа, съдържаща контактни двойки, !PARTITION позволява чрез параметъра CONTACT да се зададе политиката за разполагане на контактните точки по области. Разполагането на контактните точки влияе върху стабилността и обема на комуникацията при паралелни анализи, включващи търсене на контакт и контактни ограничения.
| Стойност | Роля |
|---|---|
DEFAULT | Използва стандартната политика за разполагане. |
SIMPLE | Използва разполагане, близко до обикновено разделяне, без специални тегла за контактните точки. |
AGGREGATE | Разделя по начин, който има тенденция да групира възлите, свързани с контактни двойки. |
DISTRIBUTE | Разделя така, че контактните възли от главната страна да са по-малко концентрирани в определени подобласти. |
За мрежи без контакт параметърът CONTACT обикновено не изисква внимание. Ако сходимостта или балансирането на натоварването са проблемни при паралелен анализ с контакт, прегледайте политиката за разполагане на контактните точки. За подробности относно входния синтаксис вижте !PARTITION.
Независимо от това параметърът CONTACT_OWNER може да се използва за избор на схема на собственост при паралелен контакт. Докато CONTACT задава „как да се разделя“, CONTACT_OWNER задава „коя страна носи отговорност след разделянето“.
| Стойност | Роля |
|---|---|
MASTER | Схема със собственик главната страна (по подразбиране). Главната повърхнина се разделя по областите, притежаващи елементите, а подчинените възли се репликират във всяка област, притежаваща главната страна. |
SLAVE | Схема със собственик подчинената страна. Всеки подчинен възел се запазва само в собствената му област, а цялата главна повърхнина се поставя в тази област. |
При крайно плъзгане (INTERACTION=FSLID в !CONTACT), когато подчинен възел пресече граница на разделяне върху главната повърхнина, схемата MASTER може да прекъсне търсенето по съседство на границата, което води до загуба на контактното състояние и историята на триенето и прави решението зависимо от броя области. Схемата SLAVE избягва този проблем. Тя може да се задава само при TYPE=NODE-BASED; използването на памет се увеличава в областите, притежаващи подчинени възли.
Извеждане на изображение на разделянето на области¶
При !PARTITION задаването на параметъра UCD извежда UCD файл за проверка на резултата от разделянето. UCD файлът може да се използва с инструменти за визуализация като MicroAVS, за да се проверят номерата на областите и границите между тях.
След промяна на броя области, метода на разделяне или дълбочината на припокриване е важно да се провери за дисбаланс между разделените области или неестествено фрагментиране. UCD изходът е спомагателна функция за проверка на валидността на разделянето преди изпълнение на паралелния анализ.
Свързани теми¶
- Паралелен анализ — Процедура за изпълнение на
hecmw_part1, входни файлове и проверка на изхода с данни за разпределена мрежа. - Решатели и предобуславящи оператори — Паралелни решатели, предобуславящи оператори и връзката между SAINV и дълбочината на припокриване.
- Списък със съобщения за грешки — Представителни съобщения за грешки от
hecmw_part1иfistr1. - Паралелен метод на крайните елементи — Теоретична основа на декомпозицията на области и паралелния метод на крайните елементи.
- !PARTITION — Входен синтаксис за управляващите данни на инструмента за разделяне на области.