## Direct Operator Definitions

SciMLOperators.ScalarOperatorType
ScalarOperator(val[; update_func])

(α::ScalarOperator)(a::Number) = α * a

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
SciMLOperators.MatrixOperatorType
MatrixOperator(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]
SciMLOperators.DiagonalOperatorFunction
DiagonalOperator(diag, [; update_func])

Represents a time-dependent elementwise scaling (diagonal-scaling) operation. The update function is called by update_coefficients! and is assumed to have the following signature:

update_func(diag::AbstractVector,u,p,t) -> [modifies diag]

When diag is an AbstractVector of length N, L=DiagonalOpeator(diag, ...) can be applied to AbstractArrays with size(u, 1) == N. Each column of the u will be scaled by diag, as in LinearAlgebra.Diagonal(diag) * u.

When diag is a multidimensional array, L = DiagonalOperator(diag, ...) forms an operator of size (N, N) where N = size(diag, 1) is the leading length of diag. L then is the elementwise-scaling operation on arrays of length(u) = length(diag) with leading length size(u, 1) = N.

SciMLOperators.AffineOperatorType
L = AffineOperator(A, B, b[; update_func])
L(u) = A*u + B*b

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

update_func(b::AbstractArray,u,p,t) -> [modifies b]

## Lazy Operator Compositions

Missing docstring.

Missing docstring for SciMLOperators.AdjointedOperator. Check Documenter's build log for details.

Missing docstring.

Missing docstring for SciMLOperators.TransposedOperator. Check Documenter's build log for details.