Operators

# Operators

## Types

``abstract type AbstractDiffEqOperator``
``abstract type AbstractDiffEqLinearOperator <: DiffEqBase.AbstractDiffEqOperator{T}``
``FactorizedDiffEqArrayOperator(F)``

Like DiffEqArrayOperator, but stores a Factorization instead.

Supports left division and `ldiv!` when applied to an array.

``DiffEqArrayOperator(A[; update_func])``

Represents a time-dependent linear operator given by an AbstractMatrix. The update function is called by `update_coefficients!` and is assumed to have the following signature:

``update_func(A::AbstractMatrix,u,p,t) -> [modifies A]``

You can also use `setval!(α,A)` to bypass the `update_coefficients!` interface and directly mutate the array's value.

AffineDiffEqOperator{T} <: AbstractDiffEqOperator{T}

`Ex: (A₁(t) + ... + Aₙ(t))*u + B₁(t) + ... + Bₙ(t)`

AffineDiffEqOperator{T}(As,Bs,du_cache=nothing)

Takes in two tuples for split Affine DiffEqs

1. update_coefficients! works by updating the coefficients of the component operators.
2. Function calls L(u, p, t) and L(du, u, p, t) are fallbacks interpretted in this form. This will allow them to work directly in the nonlinear ODE solvers without modification.
3. f(du, u, p, t) is only allowed if a du_cache is given
4. B(t) can be Union{Number,AbstractArray}, in which case they are constants. Otherwise they are interpreted they are functions v=B(t) and B(v,t)

Solvers will see this operator from integrator.f and can interpret it by checking the internals of As and Bs. For example, it can check isconstant(As[1]) etc.

``DiffEqScalar(val[; update_func])``

Represents a time-dependent scalar/scaling operator. The update function is called by `update_coefficients!` and is assumed to have the following signature:

``update_func(oldval,u,p,t) -> newval``

You can also use `setval!(α,val)` to bypass the `update_coefficients!` interface and directly mutate the scalar's value.

``struct DiffEqIdentity{T, N} <: DiffEqBase.AbstractDiffEqLinearOperator{T}``

## Functions

Missing docstring.

Missing docstring for `update_coefficients!`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `DiffEqBase.setval!`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `isconstant`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `DiffEqBase.islinear`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `DiffEqBase.has_expmv`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `DiffEqBase.has_exp`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `DiffEqBase.has_mul`. Check Documenter's build log for details.

Missing docstring.

Missing docstring for `DiffEqBase.has_ldiv`. Check Documenter's build log for details.