Custom SciML Operators

Abstract Operators

NonlinearSolve.AbstractNonlinearSolveOperatorType
AbstractNonlinearSolveOperator <: SciMLBase.AbstractSciMLOperator

NonlinearSolve.jl houses a few custom operators. These will eventually be moved out but till then this serves as the abstract type for them.

Jacobian Operators

NonlinearSolve.JacobianOperatorType
JacobianOperator{vjp, iip, T} <: AbstractNonlinearSolveOperator{T}

A Jacobian Operator Provides both JVP and VJP without materializing either (if possible).

This is an internal operator, and is not guaranteed to have a stable API. It might even be moved out of NonlinearSolve.jl in the future, without a deprecation cycle. Usage of this outside NonlinearSolve.jl (by everyone except Avik) is strictly prohibited.

T denotes if the Jacobian is transposed or not. T = true means that the Jacobian is transposed, and T = false means that the Jacobian is not transposed.

Constructor

JacobianOperator(prob::AbstractNonlinearProblem, fu, u; jvp_autodiff = nothing,
    vjp_autodiff = nothing, skip_vjp::Val{NoVJP} = False,
    skip_jvp::Val{NoJVP} = False) where {NoVJP, NoJVP}

See also NonlinearSolve.VecJacOperator and NonlinearSolve.JacVecOperator.

Stateful Jacobian Operators

NonlinearSolve.StatefulJacobianNormalFormOperatorType
StatefulJacobianNormalFormOperator(vjp_operator, jvp_operator, cache)

This constructs a Normal Form Jacobian Operator, i.e. it constructs the operator corresponding to JᵀJ where J is the Jacobian Operator. This is not meant to be directly constructed, rather it is constructed with * on two StatefulJacobianOperators.

Low-Rank Jacobian Operators