@@ -21,7 +21,7 @@ import SparseArrays: sparse, issparse
2121"""
2222$(TYPEDEF)
2323
24- ## Interface
24+ # Interface
2525
2626An `L::AbstractSciMLOperator` can be called like a function. This behaves
2727like multiplication by the linear operator represented by the
@@ -30,10 +30,19 @@ like multiplication by the linear operator represented by the
3030- `L(du, u, p, t)` for in-place operator evaluation
3131- `du = L(u, p, t)` for out-of-place operator evaluation
3232
33- If the operator is not a constant, update it with `(u, p, t)`.
34- A mutating form, i.e. `update_coefficients!(L, u, p, t)` that changes the
35- internal coefficients, and an out-of-place form
36- `L_new = update_coefficients(L, u, p, t)`.
33+ Operator evaluation methods update its coefficients with `(u, p, t)`
34+ information using the `update_coefficients(!)` method. The methods
35+ are exported and can be called as follows:
36+
37+ - `update_coefficients!(L, u, p, t)` for out-of-place operator update
38+ - `L = update_coefficients(L, u, p, t)` for in-place operator update
39+
40+ SciMLOperators also overloads `Base.*`, `LinearAlgebra.mul!`,
41+ `LinearAlgebra.ldiv!` for operator evaluation without updating operator state.
42+ An `AbstractSciMLOperator` behaves like a matrix in these methods.
43+ Allocation-free methods, suffixed with a `!` often need cache arrays.
44+ To precache an `AbstractSciMLOperator`, call the function
45+ `L = cache_operator(L, input_vector)`.
3746"""
3847abstract type AbstractSciMLOperator{T} end
3948
0 commit comments