Многосетка на «не совсем прямоугольной» сетке

9

Многосеточные введения обычно используют прямоугольную сетку. Тогда интерполяция значений выполняется прямо: просто линейно интерполируйте на ребре между двумя соседними узлами грубой сетки, чтобы найти значение узла точной сетки на этом ребре.

Для приложения FEM у меня есть сетка, которая является "топологически" прямоугольной, так что соединения узлов такие же, как на прямоугольной сетке. Однако узлы не идеально выровнены на сетке, но могут перемещаться на небольшие расстояния, чтобы лучше соответствовать геометрии, сохраняя при этом соединения, как в идеальной прямоугольной сетке.

Сетка выглядит примерно так: пример сетки . Вы видите: соединения "правильные прямоугольные", но положения узлов нет.

Я могу изобразить несколько «разумных» геометрических схем интерполяции для такой установки.

Общий вопрос: требует ли многосетка идеально выровненной прямоугольной решетки, или она также будет работать с ситуацией, описанной выше, если интерполяция "хороша"? Или в этом случае лучше использовать алгебраическую многосетку? (Который я не предпочитаю, так как он не настолько интуитивен, как геометрическая многосетка.)

Майкл
источник
Я не уверен, что понимаю, что вы подразумеваете под сеткой, являющейся топологически прямоугольной, но где узлы не выровнены, как в прямоугольной сетке. Является ли сетка структурированной прямоугольной сеткой? Не могли бы вы уточнить это, возможно, с рисунком? Проблема в том, что вы используете прямоугольные элементы, которые не выстраиваются в линию, как это было бы при использовании структурированной декартовой сетки?
Джеймс
@ Джеймс, я интерпретировал вопрос ОП так: «Что произойдет, если у меня внутри трапеции будет сетка« декартова »?».
Билл Барт

Ответы:

6

Multigrid не нуждается в декартовой (прямоугольной), равномерной сетке. Для этого нужно, чтобы вы могли определить точный и грубый уровни (возможно, рекурсивный, если вы хотите перейти от двухуровневой к многоуровневой схеме) и чтобы вы могли определять операторы интерполяции между этими уровнями. Самый простой способ объяснить это, если у вас действительно есть декартова сетка, но вы можете начать с любой грубой сетки, уточнить ее один раз, и вот так: у вас есть более мелкая сетка.

Другими словами, проще всего рассматривать сетку, подходящую для нескольких сеток, не как мелкую сетку и как находить более грубые сетки, а начинать с грубой сетки, из которой вы получаете более мелкие уровни с помощью равномерного уточнения (т. Е. Каждый четырехугольник подразделяются на четыре более мелкие). Поскольку единообразное уточнение всегда возможно, это легко дает вам иерархию. Это противоположно грубому сглаживанию, которое не всегда возможно, если вам только что дали конкретную сетку, и поэтому значительно усложняет определение иерархии сетки. (Именно поэтому люди придумали алгебраические многосеточные методы для определения грубых уровней, основанных только на матрице, не думая о базовой сетке, из которой она была создана.)

Вольфганг Бангерт
источник
Я отредактировал пример изображения в вопросе. Я бы предположил, что укрупнение чрезвычайно легко в моем случае, просто взяв только каждый 2-й узел (на измерение) и пересчитав FEM для этой сетки, чтобы получить грубую матрицу / оператор. Грубый вектор данных можно получить, просто взяв значение каждого второго узла.
Майкл
1
Это может или не может работать так, как вы хотите (я полагаю, что это будет, но не совсем уверен). Дело в том, что в вашем примере ячейки с грубой сеткой не покрывают ту же область, что и дочерние элементы, и поэтому отсутствует свойство вложенности пространств конечных элементов: функции, которые вы можете представить на грубой сетке, не являются подмножеством функции, которые вы можете представить на мелкой сетке. Джо Паскиак и Джим Брамбл написали документы по таким случаям, и я думаю, что я помню, что их можно заставить работать. Но это не сразу очевидно для меня.
Вольфганг Бангерт
4

Допустим, у вас есть следующая сетка, состоящая из прямоугольных элементов:

введите описание изображения здесь

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

Теперь, если ваша сетка "близка" к нормальной структурированной декартовой сетке, тогда это может сработать, по крайней мере, на первый взгляд, но я подозреваю, что одна из двух вещей произойдет в зависимости от того, насколько далеко ваша сетка от прямоугольной:

1) Вы можете обнаружить, что многосетка начинает сходиться сначала. В конце концов, изначально ваша ошибка в любом случае велика, и ваша «приблизительная» интерполяция на самом деле просто означает, что некоторые узлы немного перепредставлены, а некоторые немного недопредставлены. Однако вы можете обнаружить, что сходимость застаивается, когда решение становится более точным, а ошибки интерполяции становятся более важными.

2) Другая возможность состоит в том, что многосетка в конечном итоге сходится, но не так быстро, как следовало бы, если бы вы использовали правильную интерполяцию.

По сути, отключив интерполяцию, вы оцените важность определенных узлов неточно. Например, в 2D, если вы взвешиваете данный узел как:

[0,250,50,250,51,00,50,250,50,25]

когда на самом деле, потому что ваша сетка не совсем декартова, она должна быть:

[0,250,550,250,551,00,490,280,520,30]

тогда это приведет к некоторой ошибке. Будет ли эта ошибка предотвращать сходимость, вероятно, будет зависеть от того, насколько далеко ваша сетка от декартовой.

Хотя AMG труднее понять / реализовать, звучит так, будто это правильный метод для вашей сетки. Применение геометрической многосетки к «приблизительной» прямоугольной сетке может сработать, но я бы предположил, что в лучшем случае это решение для бинтов. Надеюсь это поможет.

Обновление : я думаю, что, возможно, была некоторая путаница в моем ответе. Я не говорю, что геометрическая многосетка будет работать только с декартовыми сетками, но скорее, что определить интерполяцию (и, следовательно, ограничение) для декартовых сеток легко, тогда как для неструктурированных сеток это может быть сложно. Например, рассмотрим случай даже простой двумерной области с треугольной сеткой. Уточнение этой сетки легко - по крайней мере, концептуально - но как бы вы определили оператор интерполяции между грубой и тонкой сеткой? Я предпочитаю AMG просто потому, что он больше похож на решатель «черного ящика», то есть не нуждается в информации о мешающей сетке, однако это всего лишь моя предвзятость. Геометрическая многосетка может работать до тех пор, пока вы можете обеспечить точные операторы интерполяции.

Джеймс
источник
Я могу прочитать это как "зависит, насколько хороша ваша интерполяция", правильно? Так что, если я могу придумать «идеальную» схему интерполяции, тогда я должен быть в порядке?
Майкл
1
Я думаю, что этот ответ верный, но вводит в заблуждение - он говорит, что если вы притворяетесь, что ваша сетка является обычной декартовой, а если нет, то вы получите неправильный ответ. Это правда, но вы можете сказать то же самое о любом численном методе. Дело в том, что геометрическая многосетка точна на более общих сетках, если реализована правильно .
Дэвид Кетчон
Я согласен, что геометрическая многосетка может использоваться с некартовыми сетками, если все сделано правильно. Я просто ответил на вопрос ОП, как вопрос о том, будет ли работать «приблизительно» декартова сетка при использовании интерполяции, предназначенной для реальной декартовой сетки.
Джеймс
@Michael В основном вам нужен какой-то способ определения операторов интерполяции между различными уровнями сетки. С декартовыми сетками это легко. С некартовыми сетками это может быстро усложниться в зависимости от того, насколько неструктурированы ваши сетки. Как говорит Вольфганг в своем ответе, вы всегда можете создать более изощренную сетку из грубой, но определить содержательные операторы интерполяции может быть сложно. Преимущество AMG состоит в том, что он ведет себя скорее как решатель «черного ящика» в том смысле, что вам не нужны данные сетки для определения операторов интерполяции. Все, что вам нужно, это матрица
Джеймс
@MIchael Итак, чтобы ответить на ваш вопрос. Да, если вы можете придумать точные операторы интерполяции, то геометрическая многосетка будет работать нормально. Надеюсь это поможет.
Джеймс