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

DASKR.jl

Это пакет-оболочка для импорта решателей из DASKR в интерфейс SciML. DASKR.jl не включен автоматически в DifferentialEquations.jl. Для использования этого алгоритма необходимо установить и использовать пакет:

using Pkg
Pkg.add("DASKR")
using DASKR

Эти методы могут использоваться независимо от остальной части DifferentialEquations.jl.

API решателей DAE

# DASKR.daskrType

function daskr(;linear_solver=:Dense,
                  jac_upper=0,jac_lower=0,max_order = 5,
                  non_negativity_enforcement = 0,
                  non_negativity_enforcement_array = nothing,
                  max_krylov_iters = nothing,
                  num_krylov_vectors = nothing,
                  max_number_krylov_restarts = 5,
                  krylov_convergence_test_constant = 0.05,
                  exclude_algebraic_errors = false)

Это оболочка для известного алгоритма DASKR.

DASKR представляет собой решатель систем дифференциально-алгебраических уравнений (DAE). В нем предусмотрены варианты как прямых, так и итерационных (крыловских) методов решения линейных систем, возникающих на каждом (неявном) временном шаге. DASKR является вариантом пакета DASPK [1]. В дополнение ко всем возможностям DASPK, DASKR позволяет находить корни заданного набора функций при интеграции системы DAE.

В отличие от более старого пакета DASSL, в DASKR доступна процедура вычисления согласованных начальных условий для большого класса задач (в который входят полуявные системы с индексом 1) [2]. Эта процедура содержит параметры для ограничений неравенства для выбранных компонентов. В пакет также включена возможность, позволяющая исключать алгебраические компоненты из локального управления погрешностями.

Выбор линейного решателя

В качестве линейного решателя можно выбрать следующие:

  • :Dense

  • :Banded

  • :SPIGMR, метод Крылова

Другие именованные аргументы

  • jac_upper=0,jac_lower=0: используется для установки верхней и нижней полос для ленточного якобиана. Значение по умолчанию — 0. Игнорируется, если только не используется линейный решатель :Banded.

  • max_order = 5: максимальный порядок метода BDF.

  • non_negativity_enforcement = 0, нужно ли применять неотрицательность в решении. По умолчанию используется 0 или false. Для включения может быть установлено значение 1.

  • non_negativity_enforcement_array = nothing, массив из нулей и единиц для задания применения неотрицательности к подмножеству состояний.

  • max_krylov_iters=nothing: максимальное количество итераций для линейного решателя в подпространстве Крылова до отклонения шага. По умолчанию имеет значение nothing или обнаруживается автоматически.

  • num_krylov_vectors=nothing: максимальное количество состояний истории в векторе GMRES. По умолчанию имеет значение nothing или выбирается автоматически.

  • max_number_krylov_restarts=5: если вы поймете, что это, откройте проблему или отправьте запрос на вытягивание.

  • krylov_convergence_test_constant = 0.05: некоторая константа в тесте сходимости DASKR.

  • exclude_algebraic_errors = false: учитываются ли алгебраические переменные при проверке погрешностей адаптивных временных шагов. Значение по умолчанию — false.