Оптимальное использование расщепления Штранга (для уравнения диффузии реакции)


9

Я сделал странное наблюдение, вычисляя решение простого одномерного уравнения диффузии реакции:

∂∂ta=∂2∂x2a−ab

∂∂tb=−ab

∂∂tc=a

Начальное значение является константой ( ), и меня интересует только интеграл по от до ( ). Цель и уравнение состоит в том, чтобы просто оценить этот интеграл.bb(0,x)=b0a01∫01a(t,x)dtc∂∂tc=a

Я использовал схему расщепления Штранга для связи между диффузией и реакцией (полуэтапная реакция, затем полноэтапная диффузия, а затем снова полуэтапная реакция), схема Кранка Николсона для диффузии и аналитическое решение для реакции ( включая уравнение ).∂∂tc=a

Поскольку один шаг аналитического решения был более чем в 3 раза медленнее, чем один шаг по схеме Крэнка Николсона, я попытался сделать более одного шага Кранка Николсона для каждого этапа реакции. Я надеялся пройти с меньшим шагом схемы раскола Strang, так что я буду быстрее в целом.

Однако можно наблюдать противоположный эффект, а именно, что для схемы расщепления Штранга требуется гораздо больше шагов, если используется более одного шага Крэнка Николсона. (Я озабочен только с точностью до интеграла по , который , кажется, сходятся быстрее , чем сама.) После того, как интересно , на какое - то время, я заметил , что тот же эффект также происходит для , и это я даже понимаю, почему для этого случая. Дело в том, что если я сделаю ровно один шаг Крэнка Николсона, то общая схема превратится в правило трапеции (если ).aab(t,x)=b0=0b(t)=0

Поэтому, если бы я рассматривал как часть шага диффузии, увеличение числа шагов Крэнка Николсона (вероятно) не приведет к снижению общей точности (как наблюдалось). Но это, кажется, лишает смысла использование аналитического решения для (нелинейной и потенциально очень жесткой) реакционной части системы.∂∂tc=a

Итак, вот мой вопрос: есть ли лучший способ обработать в контексте расщепления Странга, чем рассматривать его как часть этапа реакции или обрабатывать это как часть этапа диффузии. Я хочу избежать того, чтобы меня «заставляли» использовать для диффузии ровно один шаг Крэнка Николсона. (Например, в 3D я предпочел бы решать диффузию аналитически с помощью БПФ, а не с помощью Крэнка Николсона. Конечно, я также могу комбинировать БПФ с Крэнком Николсоном, так что это не такая уж большая проблема.)∂∂tc=a


В people.maths.ox.ac.uk/dellar/OperatorLB.html аналогичный эффект, по-видимому, описан. Вывод заключается в том, что крайне важно использовать Crank Nicholson вместо точного решения. Так что, возможно, ответ на мой вопрос прост: нет.
— Томас Климпел

Что-то не так с вашими уравнениями. не появляется в первых двух, делая соединение односторонним, а это означает, что вы можете вычислить при любом как шаг постобработки. cct
— Билл Барт

@BillBarth Я изменил вопрос, чтобы уточнить роль . Таким образом, просто средство для вычисления . Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения о том, как вычислить этот интеграл более точно (чем то, что я получаю из комбинации расщепления Странга и Кранка Николсона, описанной выше), возможно, используя шаг постобработки. cc∫01a(t,x)dt
— Томас Климпел

Сейчас прошло много времени, но осознали ли вы, что эта система уравнений может быть записана как параболическое PDE в с показателем экспоненциальной реакции? Я думаю, мне интересно, если вы действительно хотите решить эту систему с 3 переменными вместо упрощенной. c
— Билл Барт

@BillBarth Мне было бы интересно узнать, как эта система может быть написана как параболический PDE с экспоненциальным термином реакции. Скорость решения этой модели является ограничивающим фактором при калибровке модели (которая может занять несколько часов), даже несмотря на то, что используемая точность в отношении временной интеграции довольно далека от полной сходимости.
— Томас Климпел

Ответы:


6

Я собираюсь написать это как ответ, хотя он не дает прямого ответа на вопрос.

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

∂2c∂t2=∂2∂x2∂c∂t+∂b∂t∂b∂t=−(∂c∂t)b
∂∂t(∂c∂t−∂2c∂x2−b)=01b(∂b∂t)=−∂c∂t
t
∂c∂t−∂2c∂x2=b+A(x)
Используя третье уравнение, мы можем выразить "постоянную" интегрирования как . Второе уравнение немного сложнее. Немного переписав, мы имеем: Это приводит к решению или Вычисление дает: И, наконец, добавление этого в PDE для дает A(x)=a0−∂2c0∂x2−b0
∫0t1b(x,t′)(∂b(x,t′)∂t′)dt′=−∫0t∂c(x,t′)∂t′dt′
ln⁡b(x,t)−ln⁡b0(x)=−c(x)+c0(x)
ln⁡bb0=−c+c0
b=b0ec0−c
c
∂c∂t−∂2c∂x2=b0ec0−c+A(x)

Заменив на или эквивалентно используя начальные условия , это уравнение упрощается до Теперь вы сможете найти значительную литературу о том, как лучше всего решить это уравнение. Я не знаю, является ли Кранк-Николсон хорошим выбором для экспоненциального термина, но это кажется правдоподобным. Вероятно, следует позаботиться о том, чтобы везде, иначе решение может быстро взорваться.cc−c0c0(x)=0

∂c∂t=∂2c∂x2+a0−(1−e−c)b0
c>c0

Я только дважды прошел этот отрывок, так что в нем может быть одна или две ошибки, но мне это кажется правильным. Если везде, то это, безусловно, правильное решение, и в противном случае оно имеет правдоподобие.b0=0

Решение этого до и оценка должны дать вам ответ, который вы ищете.t=1c(x,1)


Большое спасибо за этот ответ. Я нахожу это достаточно ярким, по крайней мере, мне легче понять / предсказать поведение решения. Еще одним преимуществом является то, что время эволюцииc медленнее, чем эволюция времени a, поэтому я довольно оптимистичен, что конвергенция будет лучше, чем раньше.
— Томас Климпел

Нет проблем. Я ворчал на меня после нашего первоначального обмена комментариями. Я надеюсь, что это полезно.
— Билл Барт
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.