Hi, I’m trying to find the steady states of a ODE system by FindSteadyStates.jl.
using OrdinaryDiffEq, ODEInterfaceDiffEq, DifferentialEquations
using ModelingToolkit, NonlinearSolve, FindSteadyStates
@kwdef mutable struct Param1_dt
k = [0.0, 50.0, 0.0, 50.0, 0.0, 50.0]
n = [4.0,4.0,4.0]
K = [100.0,100.0,100.0]
kd = [0.2,0.2,0.2]
end
function motif1_dt!(dx,x,p,t)
#Parameters
k=p.k
K=p.K
kd=p.kd
n=p.n
#Reactions
V = zeros(9)
V[1] = k[1]
V[2] = (k[2]*K[1]^n[1])/(K[1]^n[1]+x[3]^n[1])
V[3] = k[3]
V[4] = (k[4]*K[2]^n[2])/(K[2]^n[2]+x[1]^n[2])
V[5] = k[5]
V[6] = (k[6]*K[3]^n[3])/(K[3]^n[3]+x[2]^n[3])
V[7] = kd[1]*x[1]
V[8] = kd[2]*x[2]
V[9] = kd[3]*x[3]
#ODE
dx[1] = V[1] + V[2] - V[7]
dx[2] = V[3] + V[4] - V[8]
dx[3] = V[5] + V[6] - V[9]
end
param=Param1_dt()
de = DEsteady(func = motif1_dt!, p = param, u0 = [0.0,1.0,2.0], method = SSRootfind())
param_grid=ParameterGrid([[0,100,5],[0,100,5],[0,100,5]])
sol = solve(de,param_grid)
And the error from solve function is:
ERROR: MethodError: no method matching Float64(::ForwardDiff.Dual{ForwardDiff.Tag{DifferentiationInterface.FixTail{…}, Float64}, Float64, 3})
The type `Float64` exists, but no method is defined for this combination of argument types when trying to construct it.
Closest candidates are:
(::Type{T})(::Real, ::RoundingMode) where T<:AbstractFloat
@ Base rounding.jl:265
(::Type{T})(::T) where T<:Number
@ Core boot.jl:900
Float64(::IrrationalConstants.Log4π)
@ IrrationalConstants C:\Users\emman\.julia\packages\IrrationalConstants\lWTip\src\macro.jl:131
...
Stacktrace:
[1] convert(::Type{Float64}, x::ForwardDiff.Dual{ForwardDiff.Tag{DifferentiationInterface.FixTail{…}, Float64}, Float64, 3})
@ Base .\number.jl:7
[2] setindex!(A::Vector{Float64}, x::ForwardDiff.Dual{ForwardDiff.Tag{…}, Float64, 3}, i::Int64)
@ Base .\array.jl:976
[3] motif1_dt!(dx::Vector{ForwardDiff.Dual{…}}, x::Vector{ForwardDiff.Dual{…}}, p::Param1_dt, t::Float64)
@ Main p:\Public Folder\Project_Osc_vs_Swi\Osc_vs_Swi\Test.jl:75
[4] #46
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\scimlfunctions.jl:2742 [inlined]
[5] NonlinearFunction
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\scimlfunctions.jl:2469 [inlined]
[6] FixTail
@ C:\Users\emman\.julia\packages\DifferentiationInterface\qrWdQ\src\utils\context.jl:7 [inlined]
[7] vector_mode_dual_eval!
@ C:\Users\emman\.julia\packages\ForwardDiff\UBbGT\src\apiutils.jl:31 [inlined]
[8] vector_mode_jacobian(f!::DifferentiationInterface.FixTail{…}, y::Vector{…}, x::Vector{…}, cfg::ForwardDiff.JacobianConfig{…})
@ ForwardDiff C:\Users\emman\.julia\packages\ForwardDiff\UBbGT\src\jacobian.jl:139
[9] jacobian
@ C:\Users\emman\.julia\packages\ForwardDiff\UBbGT\src\jacobian.jl:40 [inlined]
[10] jacobian(f!::NonlinearFunction{…}, y::Vector{…}, prep::DifferentiationInterfaceForwardDiffExt.ForwardDiffTwoArgJacobianPrep{…}, backend::AutoForwardDiff{…}, x::Vector{…}, contexts::DifferentiationInterface.Constant{…})
@ DifferentiationInterfaceForwardDiffExt C:\Users\emman\.julia\packages\DifferentiationInterface\qrWdQ\ext\DifferentiationInterfaceForwardDiffExt\twoarg.jl:433
[11] NonlinearSolve.JacobianCache(prob::NonlinearProblem{…}, alg::GeneralizedFirstOrderAlgorithm{…}, f::NonlinearFunction{…}, fu_::Vector{…}, u::Vector{…}, p::Param1_dt; stats::SciMLBase.NLStats, autodiff::Nothing, vjp_autodiff::Nothing, jvp_autodiff::Nothing, linsolve::Nothing)
@ NonlinearSolve C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\internal\jacobian.jl:89
[12] JacobianCache
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\internal\jacobian.jl:47 [inlined]
[13] __init(::NonlinearProblem{…}, ::GeneralizedFirstOrderAlgorithm{…}; stats::SciMLBase.NLStats, alias_u0::Bool, maxiters::Int64, abstol::Nothing, reltol::Nothing, maxtime::Nothing, termination_condition::Nothing, internalnorm::Function, linsolve_kwargs::@NamedTuple{}, kwargs::@Kwargs{…})
@ NonlinearSolve C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\core\generalized_first_order.jl:175
[14] __init
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\core\generalized_first_order.jl:156 [inlined]
[15] __solve(::NonlinearProblem{…}, ::GeneralizedFirstOrderAlgorithm{…}; stats::SciMLBase.NLStats, kwargs::@Kwargs{…})
@ NonlinearSolve C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\core\generic.jl:3
[16] __solve
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\core\generic.jl:1 [inlined]
[17] macro expansion
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\default.jl:282 [inlined]
[18] __solve(::NonlinearProblem{…}, ::NonlinearSolvePolyAlgorithm{…}; stats::SciMLBase.NLStats, alias_u0::Bool, verbose::Bool, kwargs::@Kwargs{})
@ NonlinearSolve C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\default.jl:255
[19] __solve
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\default.jl:255 [inlined]
[20] #__solve#251
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\default.jl:527 [inlined]
[21] __solve
@ C:\Users\emman\.julia\packages\NonlinearSolve\sBl1H\src\default.jl:524 [inlined]
[22] #__solve#2
@ C:\Users\emman\.julia\packages\SteadyStateDiffEq\jdIWC\src\solve.jl:4 [inlined]
[23] __solve
@ C:\Users\emman\.julia\packages\SteadyStateDiffEq\jdIWC\src\solve.jl:1 [inlined]
[24] #solve_call#35
@ C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:635 [inlined]
[25] solve_call
@ C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:592 [inlined]
[26] solve_up(prob::SteadyStateProblem{…}, sensealg::Nothing, u0::Vector{…}, p::Param1_dt, args::SSRootfind{…}; kwargs::@Kwargs{})
@ DiffEqBase C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:1128
[27] solve_up
@ C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:1106 [inlined]
[28] #solve#42
@ C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:1043 [inlined]
[29] solve(prob::SteadyStateProblem{Vector{…}, true, Param1_dt, ODEFunction{…}, @Kwargs{}}, args::SSRootfind{Nothing})
@ DiffEqBase C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:1033
[30] batch_func(i::Int64, prob::EnsembleProblem{…}, alg::SSRootfind{…}; kwargs::@Kwargs{})
@ SciMLBase C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:193
[31] batch_func
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:180 [inlined]
[32] #712
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:252 [inlined]
[33] responsible_map
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:245 [inlined]
[34] solve_batch(prob::EnsembleProblem{…}, alg::SSRootfind{…}, ::EnsembleSerial, II::UnitRange{…}, pmap_batch_size::Int64; kwargs::@Kwargs{})
@ SciMLBase C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:251
[35] solve_batch
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:250 [inlined]
[36] solve_batch(prob::EnsembleProblem{…}, alg::SSRootfind{…}, ensemblealg::EnsembleThreads, II::UnitRange{…}, pmap_batch_size::Int64; kwargs::@Kwargs{})
@ SciMLBase C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:261
[37] solve_batch
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:257 [inlined]
[38] macro expansion
@ .\timing.jl:421 [inlined]
[39] (::SciMLBase.var"#701#702"{Int64, Int64, Int64, @Kwargs{}, EnsembleProblem{…}, SSRootfind{…}, EnsembleThreads})()
@ SciMLBase C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:146
[40] with_logstate(f::SciMLBase.var"#701#702"{…}, logstate::Base.CoreLogging.LogState)
@ Base.CoreLogging .\logging\logging.jl:522
[41] with_logger
@ .\logging\logging.jl:632 [inlined]
[42] __solve(prob::EnsembleProblem{…}, alg::SSRootfind{…}, ensemblealg::EnsembleThreads; trajectories::Int64, batch_size::Int64, progress_aggregate::Bool, pmap_batch_size::Int64, kwargs::@Kwargs{})
@ SciMLBase C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:130
[43] __solve
@ C:\Users\emman\.julia\packages\SciMLBase\sYmAV\src\ensemble\basic_ensemble_solve.jl:122 [inlined]
[44] #solve#46
@ C:\Users\emman\.julia\packages\DiffEqBase\PbBEl\src\solve.jl:1144 [inlined]
[45] solve(ode_func::DEsteady, us::ParameterGrid; ensemble_method::EnsembleThreads)
@ FindSteadyStates C:\Users\emman\.julia\packages\FindSteadyStates\uFRqi\src\solve.jl:46
[46] solve(ode_func::DEsteady, us::ParameterGrid)
@ FindSteadyStates C:\Users\emman\.julia\packages\FindSteadyStates\uFRqi\src\solve.jl:34