BoundaryValueDiffEqMIRKN

Monotonic Implicit Runge Kutta Nyström(MIRKN) Methods. To only use the MIRKN methods form BoundaryValueDiffEq.jl, you need to install them use the Julia package manager:

using Pkg
Pkg.add("BoundaryValueDiffEqMIRKN")
solve(prob::SecondOrderBVProblem, alg, dt; kwargs...)
solve(prob::TwoPointSecondOrderBVProblem, alg, dt; kwargs...)
Defect control adaptivity

MIRKN don't have defect control adaptivity

Full List of Methods

  • MIRKN4: 4 stage Monotonic Implicit Runge-Kutta-Nyström method, with no error control adaptivity.
  • MIRKN6: 4 stage Monotonic Implicit Runge-Kutta-Nyström method, with no error control adaptivity.

Detailed Solvers Explanation

BoundaryValueDiffEqMIRKN.MIRKN4Type
MIRKN4(; nlsolve = nothing, optimize = nothing, jac_alg = BVPJacobianAlgorithm(),
        defect_threshold = 0.1, max_num_subintervals = 3000)

4th order Monotonic Implicit Runge Kutta Nyström method.

Fields

  • nlsolve: Optional nonlinear solver algorithm. nothing selects the package default.
  • optimize: Optional optimization solver algorithm. nothing disables optimization-based initialization.
  • jac_alg: Jacobian construction configuration used by the nonlinear solver.
  • defect_threshold: Defect-control threshold used to refine the mesh.
  • max_num_subintervals: Maximum number of mesh subintervals permitted during refinement.

Keyword Arguments

  • nlsolve = nothing: Internal nonlinear solver. Any solver that conforms to the SciML NonlinearProblem interface can be used. Its autodiff setting is ignored because MIRKN uses jac_alg to construct the Jacobian.
  • optimize = nothing: Internal optimization solver. Any solver that conforms to the SciML OptimizationProblem interface can be used for initialization. Load the solver package before constructing the algorithm.
  • jac_alg = BVPJacobianAlgorithm(): Jacobian algorithm used for the nonlinear solver. It automatically selects an algorithm from the problem and input types.
    • For TwoPointBVProblem, only diffmode is used (defaults to AutoSparse(AutoForwardDiff()) if possible else AutoSparse(AutoFiniteDiff())).
    • For BVProblem, bc_diffmode and nonbc_diffmode are used. For nonbc_diffmode defaults to AutoSparse(AutoForwardDiff()) if possible else AutoSparse(AutoFiniteDiff()). For bc_diffmode, defaults to AutoForwardDiff if possible else AutoFiniteDiff.
  • defect_threshold = 0.1: Threshold for defect control.
  • max_num_subintervals = 3000: Maximum number of mesh subintervals.
Note

For type-stability, the chunksizes for ForwardDiff ADTypes in BVPJacobianAlgorithm must be provided.

Examples

julia> using BoundaryValueDiffEqMIRKN: MIRKN4

julia> MIRKN4().max_num_subintervals
3000

References

@article{Muir2001MonoImplicitRM,
    title={Mono-Implicit Runge-Kutta-Nystr{"o}m Methods with Application to Boundary Value Ordinary Differential Equations},
    author={Paul H. Muir and Mark F. Adams},
    journal={BIT Numerical Mathematics},
    year={2001},
    volume={41},
    pages={776-799}
}
source
BoundaryValueDiffEqMIRKN.MIRKN6Type
MIRKN6(; nlsolve = nothing, optimize = nothing, jac_alg = BVPJacobianAlgorithm(),
        defect_threshold = 0.1, max_num_subintervals = 3000)

6th order Monotonic Implicit Runge Kutta Nyström method.

Fields

  • nlsolve: Optional nonlinear solver algorithm. nothing selects the package default.
  • optimize: Optional optimization solver algorithm. nothing disables optimization-based initialization.
  • jac_alg: Jacobian construction configuration used by the nonlinear solver.
  • defect_threshold: Defect-control threshold used to refine the mesh.
  • max_num_subintervals: Maximum number of mesh subintervals permitted during refinement.

Keyword Arguments

  • nlsolve = nothing: Internal nonlinear solver. Any solver that conforms to the SciML NonlinearProblem interface can be used. Its autodiff setting is ignored because MIRKN uses jac_alg to construct the Jacobian.
  • optimize = nothing: Internal optimization solver. Any solver that conforms to the SciML OptimizationProblem interface can be used for initialization. Load the solver package before constructing the algorithm.
  • jac_alg = BVPJacobianAlgorithm(): Jacobian algorithm used for the nonlinear solver. It automatically selects an algorithm from the problem and input types.
    • For TwoPointBVProblem, only diffmode is used (defaults to AutoSparse(AutoForwardDiff()) if possible else AutoSparse(AutoFiniteDiff())).
    • For BVProblem, bc_diffmode and nonbc_diffmode are used. For nonbc_diffmode defaults to AutoSparse(AutoForwardDiff()) if possible else AutoSparse(AutoFiniteDiff()). For bc_diffmode, defaults to AutoForwardDiff if possible else AutoFiniteDiff.
  • defect_threshold = 0.1: Threshold for defect control.
  • max_num_subintervals = 3000: Maximum number of mesh subintervals.
Note

For type-stability, the chunksizes for ForwardDiff ADTypes in BVPJacobianAlgorithm must be provided.

Examples

julia> using BoundaryValueDiffEqMIRKN: MIRKN6

julia> MIRKN6().max_num_subintervals
3000

References

@article{Muir2001MonoImplicitRM,
    title={Mono-Implicit Runge-Kutta-Nystr{"o}m Methods with Application to Boundary Value Ordinary Differential Equations},
    author={Paul H. Muir and Mark F. Adams},
    journal={BIT Numerical Mathematics},
    year={2001},
    volume={41},
    pages={776-799}
}
source