Документация Engee

Решатели уравнений ODE разбиения

Решатели, доступные для SplitODEProblem, зависят от входной линейности и количества компонентов. Каждый решатель имеет допустимую функциональную форму (или множество форм).

Неявно-явное (IMEX) уравнение ODE

Неявно-явное (IMEX) уравнение ODE представляет собой задачу SplitODEProblem с двумя функциями:

где первая функция является жесткой частью, а вторая — нежесткой частью (неявная интеграция по f1, явная интеграция по f2).

Рекомендуемые методы

В большинстве случаев рекомендуется использовать метод KenCarp4. В случаях экстремальной жесткости или при высоких допусках хорошим вариантом может быть KenCarp3. Методы ARKODE, как правило, неэффективны и разнятся, если не настраивать параметры для задачи, хотя для достаточно больших уравнений PDE оптимально подходит метод ARKODE с linear_solver=:GMRES.

OrdinaryDiffEq.jl

  • SplitEuler: полностью явный метод первого порядка. Используется для проверки точности разбиений.

  • IMEXEuler: явный метод Эйлера первого порядка в сочетании с неявным методом Эйлера. Только фиксированный временной шаг.

  • CNAB2: метод Кранка — Николсон / Адамса — Бэшфорта второго порядка. Только фиксированный временной шаг.

  • CNLF: метод Кранка — Николсон с перешагиванием второго порядка. Только фиксированный временной шаг.

  • SBDF2: IMEX метод BDF второго порядка. Только фиксированный временной шаг.

  • SBDF3: IMEX метод BDF третьего порядка. Только фиксированный временной шаг. В разработке.

  • SBDF4: IMEX метод BDF четвертого порядка. Только фиксированный временной шаг. В разработке.

  • KenCarp3: A-L-устойчивый очень точный метод ESDIRK третьего порядка.

  • KenCarp4: A-L-устойчивый очень точный метод ESDIRK четвертого порядка.

  • KenCarp47: A-L-устойчивый очень точный метод ESDIRK четвертого порядка с разбиением.

  • KenCarp5: A-L-устойчивый очень точный метод ESDIRK пятого порядка.

  • KenCarp58: A-L-устойчивый очень точный восьмиступенчатый метод ESDIRK пятого порядка с разбиением.

Sundials.jl

  • ARKODE: аддитивный метод Рунге — Кутты. Порядок между третьим и пятым. Список доступных вариантов приведен на странице решателя ODE.

Полулинейное уравнение ODE

Полулинейное уравнение ODE — это задача SplitODEProblem с одним линейным оператором и одной нелинейной функцией:

Подробнее о том, как определить линейные операторы из матрицы или конечно-разностной дискретизации операторов производных, см. на странице документации по DiffEqOperators.

Для этой формы подходят следующие алгоритмы.

OrdinaryDiffEq.jl

  • LawsonEuler — экспоненциальная схема Эйлера первого порядка. Только фиксированный временной шаг.

  • NorsettEuler — экспоненциальная схема Рунге-Кутты первого порядка. Только фиксированный временной шаг. Псевдоним: ETD1.

  • ETD2 — метод экспоненциального временного дифференцирования второго порядка (в разработке). Только фиксированный временной шаг. Не поддерживает аппроксимацию Крылова.

  • ETDRK2 — экспоненциальная схема Рунге-Кутты второго порядка. Только фиксированный временной шаг.

  • ETDRK3 — экспоненциальная схема Рунге-Кутты третьего порядка. Только фиксированный временной шаг.

  • ETDRK4 — экспоненциальная схема Рунге-Кутты четвертого порядка. Только фиксированный временной шаг.

  • HochOst4 — экспоненциальная схема Рунге-Кутты четвертого порядка с жестким четвертым порядком. Только фиксированный временной шаг.

Отметим, что общие алгоритмы GenericIIF1 и GenericIIF2 допускают выбор nlsolve.

По умолчанию экспоненциальные методы кэшируют матричные функции, такие как exp(dt*A), для ускорения временных шагов для небольших систем. Для больших систем использование методов на основе версий Крылова позволяет «лениво» вычислять exp(dt*A)*v и подобные сущности и тем самым повышать производительность.

Чтобы указать решателю использовать методы Крылова, передайте krylov=true его конструктору. Также можно вручную установить размер подпространства Крылова, задав параметр m, который по умолчанию имеет значение 30. Например,

LawsonEuler(krylov = true, m = 50)

строит метод Лоусона-Эйлера, в котором используется подпространство Крылова размером, равным 50. Обратите внимание, что m задает только верхнюю границу размера подпространства Крылова. При выполнении условия сходимости (определяемого параметром reltol интегратора) произойдет «счастливый разрыв» и подпространство Крылова будет построено лишь частично.

Для более глубокого контроля алгоритмов Крылова можно изменить длину процедуры неполной ортогонализации (IOP) [1]], задав в конструкторе параметр iop. По умолчанию процедура IOP отключена, и используется полная итерация Арнольди. Заметим, что если линейный оператор является эрмитовым, всегда будет использоваться алгоритм Ланцоша, а параметр IOP игнорируется.


1. Koskela, A. (2015). Approximating the matrix exponential of an advection-diffusion operator using the incomplete orthogonalization method. In Numerical Mathematics and Advanced Applications-ENUMATH 2013 (pp. 345-353). Springer, Cham.