|
| 1 | +# Nonlinear Problems |
| 2 | + |
| 3 | +## Mathematical Specification of a Nonlinear Problem |
| 4 | + |
| 5 | +To define a Nonlinear Problem, you simply need to give the function ``f`` |
| 6 | +which defines the nonlinear system: |
| 7 | + |
| 8 | +```math |
| 9 | +f(u,p) = 0 |
| 10 | +``` |
| 11 | + |
| 12 | +and an initial guess ``u₀`` of where `f(u,p)=0`. `f` should be specified as `f(u,p)` |
| 13 | +(or in-place as `f(du,u,p)`), and `u₀` should be an AbstractArray (or number) |
| 14 | +whose geometry matches the desired geometry of `u`. Note that we are not limited |
| 15 | +to numbers or vectors for `u₀`; one is allowed to provide `u₀` as arbitrary |
| 16 | +matrices / higher-dimension tensors as well. |
| 17 | + |
| 18 | +## Problem Type |
| 19 | + |
| 20 | +### Constructors |
| 21 | + |
| 22 | +```julia |
| 23 | +NonlinearProblem(f::NonlinearFunction,u0,p=NullParameters();kwargs...) |
| 24 | +NonlinearProblem{isinplace}(f,u0,p=NullParameters();kwargs...) |
| 25 | +``` |
| 26 | + |
| 27 | +`isinplace` optionally sets whether the function is in-place or not. This is |
| 28 | +determined automatically, but not inferred. |
| 29 | + |
| 30 | +Parameters are optional, and if not given, then a `NullParameters()` singleton |
| 31 | +will be used, which will throw nice errors if you try to index non-existent |
| 32 | +parameters. Any extra keyword arguments are passed on to the solvers. For example, |
| 33 | +if you set a `callback` in the problem, then that `callback` will be added in |
| 34 | +every solve call. |
| 35 | + |
| 36 | +For specifying Jacobians and mass matrices, see the [NonlinearFunctions](@ref nonlinearfunctions) |
| 37 | +page. |
| 38 | + |
| 39 | +### Fields |
| 40 | + |
| 41 | +* `f`: The function in the ODE. |
| 42 | +* `u0`: The initial guess for the steady state. |
| 43 | +* `p`: The parameters for the problem. Defaults to `NullParameters`. |
| 44 | +* `kwargs`: The keyword arguments passed on to the solvers. |
0 commit comments