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

9

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

ta=2x2aab

tb=ab

tc=a

Начальное значение является константой ( ), и меня интересует только интеграл по от до ( ). Цель и уравнение состоит в том, чтобы просто оценить этот интеграл.bb(0,x)=b0a0101a(t,x)dtctc=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 Я изменил вопрос, чтобы уточнить роль . Таким образом, просто средство для вычисления . Пожалуйста, дайте мне знать, если у вас есть какие-либо предложения о том, как вычислить этот интеграл более точно (чем то, что я получаю из комбинации расщепления Странга и Кранка Николсона, описанной выше), возможно, используя шаг постобработки. cc01a(t,x)dt
Томас Климпел
Сейчас прошло много времени, но осознали ли вы, что эта система уравнений может быть записана как параболическое PDE в с показателем экспоненциальной реакции? Я думаю, мне интересно, если вы действительно хотите решить эту систему с 3 переменными вместо упрощенной. c
Билл Барт
@BillBarth Мне было бы интересно узнать, как эта система может быть написана как параболический PDE с экспоненциальным термином реакции. Скорость решения этой модели является ограничивающим фактором при калибровке модели (которая может занять несколько часов), даже несмотря на то, что используемая точность в отношении временной интеграции довольно далека от полной сходимости.
Томас Климпел

Ответы:

6

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

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

2ct2=2x2ct+btbt=(ct)b
t(ct2cx2b)=01b(bt)=ct
t
ct2cx2=b+A(x)
Используя третье уравнение, мы можем выразить "постоянную" интегрирования как . Второе уравнение немного сложнее. Немного переписав, мы имеем: Это приводит к решению или Вычисление дает: И, наконец, добавление этого в PDE для дает A(x)=a02c0x2b0
0t1b(x,t)(b(x,t)t)dt=0tc(x,t)tdt
lnb(x,t)lnb0(x)=c(x)+c0(x)
lnbb0=c+c0
b=b0ec0c
c
ct2cx2=b0ec0c+A(x)

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

ct=2cx2+a0(1ec)b0
c>c0

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

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

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