OrdinaryDiffEq.jl
OrdinaryDiffEq.jl copied to clipboard
LinSolveCG not working due to mismatched kwarg in DiffEqBase/linear_nonlinear.jl
MWE:
using OrdinaryDiffEq, Test, Random
Random.seed!(123)
using OrdinaryDiffEq, DiffEqOperators, LinearAlgebra
#=============================================#
"""
OrdinaryDiffEq/test/interface/linear_nonlinear_tests.jl
"""
A = 0.01*rand(3, 3)
rn = (du, u, p, t) -> begin
mul!(du, A, u)
end
u0 = rand(3)
prob = ODEProblem(ODEFunction(rn, jac_prototype=JacVecOperator{Float64}(rn, u0; autodiff=false)), u0, (0, 10.))
#---------------------------------------------
""" GMRES """
sol = solve(prob, QNDF(autodiff=false, linsolve=LinSolveGMRES())); # works
@show sol.retcode
#---------------------------------------------
""" CG """
sol = solve(prob, QNDF(autodiff=false, linsolve=LinSolveCG())); # fails
@show sol.retcode
error message:
julia> include("cg_test.jl")
sol.retcode = :Success
ERROR: LoadError: MethodError: no method matching cg_iterator!(::Vector{Float64},
::OrdinaryDiffEq.WOperator{true, Any, UniformScaling{Bool}, Float64, JacVecOpera
tor{Float64, var"#49#50", Vector{Float64}, Vector{Float64}, Vector{Float64}, Any,
Any, Bool}, Vector{Float64}, Nothing}, ::Vector{Float64}, ::IterativeSolvers.Ide
ntity; initially_zero=true, restart=5, maxiter=5, abstol=1.0e-16, reltol=0.001, P
l=DiffEqBase.ComposePreconditioner{IterativeSolvers.Identity, DiffEqBase.ScaleVec
tor{Vector{Float64}}}(IterativeSolvers.Identity(), DiffEqBase.ScaleVector{Vector{
Float64}}([1309.222511389508, 1349.3133262702092, 4407.7316529527125], true), tru
e), Pr=DiffEqBase.ComposePreconditioner{IterativeSolvers.Identity, DiffEqBase.Sca
leVector{Vector{Float64}}}(IterativeSolvers.Identity(), DiffEqBase.ScaleVector{Ve
ctor{Float64}}([1309.222511389508, 1349.3133262702092, 4407.7316529527125], false
), false))
Closest candidates are:
cg_iterator!(::Any, ::Any, ::Any, ::Any; abstol, reltol, maxiter, statevars, in
itially_zero) at /Users/vp/.julia/packages/IterativeSolvers/rhYBz/src/cg.jl:120 g
ot unsupported keyword arguments "restart", "Pl", "Pr"
cg_iterator!(::Any, ::Any, ::Any) at /Users/vp/.julia/packages/IterativeSolvers
/rhYBz/src/cg.jl:120 got unsupported keyword arguments "initially_zero", "restart
", "maxiter", "abstol", "reltol", "Pl", "Pr"
https://github.com/SciML/DiffEqBase.jl/pull/716