Які нові структури даних використовуються в адаптивній ФЕМ?


9

Багато адаптивних бібліотек ПЕХ використовують більш складні структури даних сітки для обробки додавання / видалення вузлів, ребер, трикутників, тетраедрів і т.п. Так , наприклад, p4est бібліотека використовує октодерева структури даних для адаптівнога сітки; ви не часто знайдете октриси, які використовуються для обчислень на статичній сітці.

Що змінюється на стороні лінійної алгебри для адаптивного FEM?

Найбільш тупим способом, який я можу уявити, було б повністю відновити всі системні матриці щоразу, коли сітка буде доопрацьована або огрубіла. Якщо адаптація до сітки є досить рідкісною операцією, то витрати на це в кінцевому рахунку амортизуються за іншою частиною обчислень. При такому підході можна було б легко використовувати існуюче програмне забезпечення для лінійної алгебри (PETSc, Trilinos тощо).

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

Відповіді:


6

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


3

Як вже сказав Джед, повторне використання лінійних компонентів алгебри, таких як матриці та вектори, не робиться зазвичай. Також не потрібно: налаштування цих компонентів порівняно дуже дешеве відносно вартості вирішення лінійних систем.

Якщо ви шукаєте речі, які змінюються при переході від статичних до адаптивно вдосконалених сіток, то найбільша перешкода - це боротьба з висячими вузлами. У deal.II цим керується клас ConstraintMatrix , який займає кілька 1000 рядків коду. Деякі описи того, що робить цей клас, ви можете знайти в роботі від мене особисто та Олівера Кайсера-Герольда (пов’язаний із моєю сторінкою публікацій ). Жоден інший компонент (крім обробки сітки, звичайно) не потребував такої адаптації при переході від нерухомих до адаптивних сіток.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.