Skip to content

ODAE problem does not acknowledge retcodes when solving #1633

@H-Sax

Description

@H-Sax

I am looking to calculate the local sensitivities of a model at different points in the parameter space. Naturally, the model will not be valid at all points in the parameter space for which I want to record that as a matrix of zeros. Following the docs on RETCODES here the code I tried was as follows

function circ_local(x)
    tmp_prob = remake(prob,u0=x[1:3],p=x[4:end])
    tmp_sol = solve(tmp_prob, Tsit5(), saveat=savetime)
    if tmp_sol.retcode == :Success
        return [(maximum(tmp_sol[LV.V])-minimum(tmp_sol[LV.V])),mean(tmp_sol[LV.V]),(maximum(tmp_sol[LV.p])-minimum(tmp_sol[LV.p])),(maximum(tmp_sol[C1.in.p])-minimum(tmp_sol[C1.in.p])),mean(tmp_sol[C1.in.p]), maximum(tmp_sol[C1.q]), maximum(tmp_sol[LV.p])/mean(tmp_sol[LV.p]),maximum(tmp_sol[C1.in.p])/mean(tmp_sol[C1.in.p]), mean(tmp_sol[LV.p])]
    else
        return [0,0,0,0,0,0,0,0,0]
    end
end

S = zeros(9,12,100)
for i in 1:100
    S[:,:,i] = ForwardDiff.jacobian(circ_local,[su[:,i];sp[:,i]])
end

where su and sp are 3x100 and 9x100 matrices respectively containing 100 different samples of the parameter space.

The error generated by this code is the following

ERROR: The nonlinear solver failed with the return code MAXITERS_EXCEED.
Stacktrace:
  [1] error(s::String)
    @ Base ./error.jl:33
  [2] nlsolve_failure(rc::Symbol)
    @ ModelingToolkit.StructuralTransformations ~/.julia/packages/ModelingToolkit/vZUs5/src/structural_transformation/utils.jl:331
  [3] numerical_nlsolve(f::Function, u0::Float64, p::Tuple{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, Float64, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}})
    @ ModelingToolkit.StructuralTransformations ~/.julia/packages/ModelingToolkit/vZUs5/src/structural_transformation/utils.jl:338
  [4] macro expansion
    @ ~/.julia/packages/ModelingToolkit/vZUs5/src/structural_transformation/codegen.jl:202 [inlined]
  [5] macro expansion
    @ ~/.julia/packages/SymbolicUtils/v2ZkM/src/code.jl:351 [inlined]
  [6] macro expansion
    @ ~/.julia/packages/RuntimeGeneratedFunctions/KrkGo/src/RuntimeGeneratedFunctions.jl:129 [inlined]
  [7] macro expansion
    @ ./none:0 [inlined]
  [8] generated_callfunc
    @ ./none:0 [inlined]
  [9] (::RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)})(::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ::Float64)
    @ RuntimeGeneratedFunctions ~/.julia/packages/RuntimeGeneratedFunctions/KrkGo/src/RuntimeGeneratedFunctions.jl:117
 [10] ODEFunction
    @ ~/.julia/packages/SciMLBase/chsnh/src/scimlfunctions.jl:1593 [inlined]
 [11] perform_step!(integrator::OrdinaryDiffEq.ODEIntegrator{Tsit5{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, true, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Nothing, Float64, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Float64, Float64, Float64, Float64, Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, ODESolution{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, 2, Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}}, ODEProblem{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Tuple{Float64, Float64}, true, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Tsit5{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, Vector{Float64}, Vector{Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}}, OrdinaryDiffEq.Tsit5Cache{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, OrdinaryDiffEq.Tsit5ConstantCache{Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}}, DiffEqBase.DEStats}, ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, OrdinaryDiffEq.Tsit5Cache{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, OrdinaryDiffEq.Tsit5ConstantCache{Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, OrdinaryDiffEq.DEOptions{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, Float64, Float64, PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, LinRange{Float64, Int64}, Tuple{}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, Nothing, OrdinaryDiffEq.DefaultInit}, cache::OrdinaryDiffEq.Tsit5Cache{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, OrdinaryDiffEq.Tsit5ConstantCache{Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, repeat_step::Bool)
    @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/irVAX/src/perform_step/low_order_rk_perform_step.jl:689
 [12] perform_step!
    @ ~/.julia/packages/OrdinaryDiffEq/irVAX/src/perform_step/low_order_rk_perform_step.jl:675 [inlined]
 [13] solve!(integrator::OrdinaryDiffEq.ODEIntegrator{Tsit5{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, true, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Nothing, Float64, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Float64, Float64, Float64, Float64, Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, ODESolution{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, 2, Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, Nothing, Nothing, Vector{Float64}, Vector{Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}}, ODEProblem{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Tuple{Float64, Float64}, true, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, Tsit5{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, OrdinaryDiffEq.InterpolationData{ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, Vector{Float64}, Vector{Vector{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}}, OrdinaryDiffEq.Tsit5Cache{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, OrdinaryDiffEq.Tsit5ConstantCache{Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}}, DiffEqBase.DEStats}, ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, OrdinaryDiffEq.Tsit5Cache{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, OrdinaryDiffEq.Tsit5ConstantCache{Float64, Float64}, typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}, OrdinaryDiffEq.DEOptions{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, Float64, Float64, PIController{Rational{Int64}}, typeof(DiffEqBase.ODE_DEFAULT_NORM), typeof(opnorm), Nothing, CallbackSet{Tuple{}, Tuple{}}, typeof(DiffEqBase.ODE_DEFAULT_ISOUTOFDOMAIN), typeof(DiffEqBase.ODE_DEFAULT_PROG_MESSAGE), typeof(DiffEqBase.ODE_DEFAULT_UNSTABLE_CHECK), DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, DataStructures.BinaryHeap{Float64, DataStructures.FasterForward}, Nothing, Nothing, Int64, Tuple{}, LinRange{Float64, Int64}, Tuple{}}, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}, Nothing, OrdinaryDiffEq.DefaultInit})
    @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/irVAX/src/solve.jl:477
 [14] __solve(::ODEProblem{Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, Tuple{Float64, Float64}, true, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}, ODEFunction{true, RuntimeGeneratedFunctions.RuntimeGeneratedFunction{(Symbol("##out#623"), Symbol("##arg#11434496959051576183"), Symbol("##arg#10207861574440612533"), :t), ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", ModelingToolkit.StructuralTransformations.var"#_RGF_ModTag", (0x21a10f99, 0xa5ac6f87, 0xd3994102, 0x3f768d41, 0x75df6f19)}, UniformScaling{Bool}, Nothing, Nothing, Nothing, Nothing, Nothing, Nothing, SparseArrays.SparseMatrixCSC{Bool, Int64}, Nothing, Nothing, Nothing, Vector{Symbol}, Nothing, ModelingToolkit.StructuralTransformations.var"#generated_observed#226"{Bool, ModelingToolkit.BipartiteGraphs.Matching{ModelingToolkit.BipartiteGraphs.Unassigned, Vector{Union{ModelingToolkit.BipartiteGraphs.Unassigned, Int64}}}, TearingState{ODESystem}, Dict{Any, Any}, BitVector, Vector{SymbolicUtils.Code.Assignment}, Tuple{Vector{Vector{Int64}}, Vector{BitSet}}, SymbolicUtils.Code.NameState, Dict{Any, Int64}}, Nothing}, Base.Pairs{Symbol, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}, SciMLBase.StandardODEProblem}, ::Tsit5{typeof(OrdinaryDiffEq.trivial_limiter!), typeof(OrdinaryDiffEq.trivial_limiter!), Static.False}; kwargs::Base.Pairs{Symbol, LinRange{Float64, Int64}, Tuple{Symbol}, NamedTuple{(:saveat,), Tuple{LinRange{Float64, Int64}}}})
    @ OrdinaryDiffEq ~/.julia/packages/OrdinaryDiffEq/irVAX/src/solve.jl:5
 [15] #solve_call#28
    @ ~/.julia/packages/DiffEqBase/LsFow/src/solve.jl:388 [inlined]
 [16] #solve_up#30
    @ ~/.julia/packages/DiffEqBase/LsFow/src/solve.jl:686 [inlined]
 [17] #solve#29
    @ ~/.julia/packages/DiffEqBase/LsFow/src/solve.jl:670 [inlined]
 [18] circ_local(x::Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}})
    @ Main ~/Desktop/PhD/Year 1/Sem 1/Valve and Ventricle analysis/AcausalModel_refactored.jl:1205
 [19] vector_mode_dual_eval!
    @ ~/.julia/packages/ForwardDiff/wAaVJ/src/apiutils.jl:37 [inlined]
 [20] vector_mode_jacobian(f::typeof(circ_local), x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}})
    @ ForwardDiff ~/.julia/packages/ForwardDiff/wAaVJ/src/jacobian.jl:148
 [21] jacobian(f::Function, x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}, ::Val{true})
    @ ForwardDiff ~/.julia/packages/ForwardDiff/wAaVJ/src/jacobian.jl:21
 [22] jacobian(f::Function, x::Vector{Float64}, cfg::ForwardDiff.JacobianConfig{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12, Vector{ForwardDiff.Dual{ForwardDiff.Tag{typeof(circ_local), Float64}, Float64, 12}}}) (repeats 2 times)
    @ ForwardDiff ~/.julia/packages/ForwardDiff/wAaVJ/src/jacobian.jl:19

I generate prob using

prob = ODAEProblem(circ_sys, [10, 0, 10-80], (0.0, 20.0))

However generating prob using ODEProblem the above code works and my divergent points in parameter space are recorded as a matrix of zeros.

Following a discussion on discourse @ChrisRackauckas identified the reasons as to why which I will document below

  1. When generating an ODAE problem function, it embeds nonl-inear solvers inside of the RHS.
  2. I have a case where one of these non-linear solvers diverges and throws an error instead of a warning
  3. However, in a ODE solver ODE solver though, a nonlinear solver divergence would trigger a step decrease, but this cannot do it because it’s baked into the RHS.
  4. One thing Identified was memory for the inital conditions along with other things.

For the discourse discussion it can be found here.

If any more deatils are needed feel free to reach out :)

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions