Особая ошибка при решении уравнения Пуассона на методе конечных объемов неоднородной сетки (только 1D)

9

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

Я решаю уравнение Пуассона для ступенчатого распределения заряда (общая проблема в физике электростатики / полупроводников) на неоднородной сетке конечного объема, где неизвестные определены на центрах ячеек и потоки на гранях ячеек.

0знак равно(φИкс)Икс+ρ(Икс)

профиль заряда (исходный термин) определяется как:

ρ(x)={1,if 1x01,if 0x10,otherwise

и граничные условия,

ϕ(xL)=0ϕx|xR=0

и домен [10,10],

Я использую код, разработанный для решения уравнения адвекции-диффузии-реакции (я сам написал свои заметки здесь, http://danieljfarrell.github.io/FVM ). Уравнение адвекции-диффузии-реакции является более общим случаем уравнения Пуассона. Действительно, уравнение Пуассона можно восстановить, установив скорость адвекции на ноль и удалив переходный член.

Код был протестирован в ряде ситуаций для однородных, неоднородных и случайных сеток и всегда дает разумные решения ( http://danieljfarrell.github.io/FVM/examples.html ) для уравнения адвекции-диффузии-реакции.

Чтобы показать, где код ломается, я сделал следующий пример. Я установил равномерную сетку из 20 ячеек, а затем сделал ее неоднородной , удалив одну ячейку. На левом рисунке я убрал клеткуΩ8 и в правом Ω9был удален. Девятая ячейка покрывает область, где термин источника (т.е. заряд) меняет знак. Ошибка появляется, когда сетка неоднородна в области, где термин реакции меняет знак . Как вы можете видеть ниже.

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

Своеобразная ошибка при решении уравнения Пуассона

boyfarrell
источник
Можете ли вы указать, как вы навязываете условие Дирихле в Иксзнак равно0и что вы подразумеваете под ρзнак равно-1в качестве начального условия (не является ли уравнение, которое вы задали устойчивое состояние)?
Джесси Чан
Как выглядит термин реакции?
января
Какую схему вы используете для аппроксимации интегралов исходного термина? Такое поведение также может быть вызвано недостаточной выборкой источника. (Что, вероятно, является тем же механизмом, упомянутым в ответе @JLC.)
января
Я обновил вопрос, чтобы использовать стандартную терминологию. У меня есть исходный термин (ρ) не термин реакции, потому что, как вы указали, нам просто нужно установившееся значение. Правильная пространственная зависимостьρтеперь задано (начальное значение было неверным).
Бойфаррелл
@JLC BC Дирихле наложены с использованием подхода «призрачных ячеек» (мои заметки онлайн устарели относительно этой детали реализации), см. Здесь, как я это делаю, scicomp.stackexchange.com/questions/8538/…
boyfarrell

Ответы:

9

Кроме того, ваша документация на github просто фантастическая.

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

Я попытаюсь смоделировать пример для FV, который показывает, как это входит в игру.

Изменить: так вот небольшой пример того, что происходит. Рассмотрим ячейки 1-9 и 11-20, в которыхρ(Икс)знак равно0, С правой стороны (11-20) имееме(Икс20)знак равно0 из-за условия Неймана, который говорит нам от сохранения для этой клетки, что е(Икс19)знак равно...знак равное(Икс11)знак равно0, Поскольку поток является средним значением ячеек, это говорит нам о том, чтоφ(Икс) постоянен над всеми этими клетками.

С левой стороны (1-9) имеем е(Икся+1)-е(Икся)знак равно0, Еслие(-10)знак равно0 и мы используем призрачные клетки, то е(-10)знак равноφ9,5-φгчасоsTзнак равноφ9,5, Сохранение в течение следующих нескольких ячеек дает этое(Икся)знак равное(-10)знак равноφ9,5(т.е. постоянный наклон). Однако учтите, что это может быть любой уклон, только постоянный.

Проблема возникает в средней ячейке. Как упоминал Ян, вы отбираете форсировку во второй сетке. Это сбрасывает уравнения баланса в этой точке, дает вам ошибку ве(10)который затем распространяется назад и портит как наклон в левой половине домена, так и значение φ(9,5),

Эта чувствительность к ошибкам в форсировании - вот что проблематично - в отличие от методов FEM или FD, которые явно применяют условие Дирхлета в Иксзнак равно-10, FV слабо применяет его, используя призрачные узлы. Интуитивно понятно, что слабое наложение узла-призрака аналогично установке условия Неймана на левой границе. Если у вас есть два условия Неймана для задачи диффузии, ваша задача некорректна и имеет неуникальное решение (вы можете добавить любую константу к этой проблеме и все же найти решение). Вы не совсем понимаете это на дискретном уровне, но вы получаете очень чувствительное и зависимое от сетки поведение, как вы видите в своих экспериментах.

Джесси Чан
источник
Из экспериментов я могу продемонстрировать, что метод FVM стабилен только тогда, когда ячейки по обе стороны от разрыва (изменения знака) функции источника имеют равные объемы. Ваш анализ согласится с этим? Это означает, что я должен уделять больше внимания созданию разумной сетки моих проблем, которые я делал раньше. Может быть, я должен рассмотреть изучение метода FEM дальше?
Бойфаррелл
Соответствующая статья, хотя я не совсем слежу за всеми деталями, jstor.org/discover/10.2307/2157873
boyfarrell,
Метод FVM стабилен только в этом случае, когда сетка каким-либо образом выровнена с исходной функцией. Если ваша функция источника изменится, вам придется снова настраивать вашу сетку. Я не думаю, что создание разумной сетки - правильный подход к этой проблеме - у вас нестабильный метод.
Джесси Чан,
Это хорошая находка. Сули твердый аналитик. Я бы сказал, что изучение FEM может быть забавным, но FD также должно работать для любых эллиптических 1D задач. Вы также можете увидеть, что делают FV-люди (возможно, увеличивают их потоки штрафными терминами), чтобы получить сходимость для эллиптических задач 2-го порядка на общих сетках. Математическая народная мудрость обычно гласит, что FV / улучшенный FD отлично подходит для гиперболических задач, в то время как FEM / central diff FD отлично подходит для эллиптических.
Джесси Чан
Я пересматриваю эту проблему. Перечитывая ваш ответ, я должен сказать, что это фантастика! Я понимаю вашу точку зрения, что метод должен измениться, потому что это корень проблемы (а не сетки). Есть ли у вас какие-либо предложения или вещи, которым я мог бы следовать (которые приемлемы для неэкспертов) о том, как лучше приблизить поток в этом случае. То есть таким образом, чтобы сделать его более стабильным. Если возможно, я хотел бы найти лучший FVM для этого уравнения.
boyfarrell
0

Первое, на что стоит обратить внимание, это ваши граничные условия. Поскольку вы можете изменить наклон и значение, у вас нет ни условий Дирихле, ни Неймана.

Тогда каждая прямая - это решение, в котором правая часть равна нулю. Вы получили эту часть.

Ваши потоки, вероятно, зависят от час, Вы используете правильныйчас где вы ликвидируете клетку?

Гвидо Каншат
источник
1
Нет, это не правильно. Проблема хорошо поставлена. Для случаяρ0 только φ0является решением, нет другой линейной функции, которая равна нулю в одной точке и имеет нулевой наклон во второй точке.
января