# Solver hang when using certain combination of callbacks in DiffEq

**URL:** <https://discourse.julialang.org/t/solver-hang-when-using-certain-combination-of-callbacks-in-diffeq/38846>\
**Category:** Modelling & Simulations\
**Created:** [May 5, 2020, 11:28pm UTC](https://discourse.julialang.org/t/solver-hang-when-using-certain-combination-of-callbacks-in-diffeq/38846 "2020-05-05T23:28:35Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![klaff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/klaff/32/7637_2.png) [@klaff](https://discourse.julialang.org/u/klaff)\
**Post date:** [May 5, 2020, 11:28pm UTC](https://discourse.julialang.org/t/solver-hang-when-using-certain-combination-of-callbacks-in-diffeq/38846/1 "2020-05-05T23:28:35Z")

</div>

Hi,

I’m trying to use a PeriodicCallback and two ContinuousCallbacks and I’m running into an issue.

Here’s the MWE:

```julia
using DifferentialEquations

function usode!(du,u,p,t)
    C1 = 1.63e-9
    RS = 790.0
    C2 = 3.3e-9
    C0 = 0.3e-9
    L1 = 1e-3
    L2 = 82e-3
    CM = 4e-12
    LM = 8.0
    RM = 7500.0
    VC1, VC2, VC0, VCM, IL1, IL2, ILM, Vp = u
    fv, VAmag = p
    VA = VAmag*sinpi(2*Vp)
    du[1] = 1/C1*IL1
    du[2] = -1/C2*IL1
    du[3] = 1/C0*(IL1-IL2-ILM)
    du[4] = 1/CM*ILM
    du[5] = 1/L1*(VA-VC1-VC0-VC2-IL1*RS)
    du[6] = 1/L2*VC0
    du[7] = 1/LM*(VC0-VCM-ILM*RM)
    du[8] = fv
end

mutable struct Controller
    f::Float64
end
function(c::Controller)(integrator)
    integrator.p[1] = c.f
    if c.f < 30000.0
        c.f += 15.0
    end
    println(join([integrator.t, c.f, integrator.p[3], integrator.p[4]], ", "))
end

condVzero(u,t,integrator) = integrator.p[2]*sinpi(2*u[8])-u[1] # Vmod
function affectVzero!(integrator)
    integrator.p[3]=integrator.t
end
cbVz = ContinuousCallback(condVzero, affectVzero!, nothing)
condIzero(u,t,integrator) = u[5]
function affectIzero!(integrator)
    integrator.p[4]=integrator.t
end
cbIz = ContinuousCallback(condIzero, affectIzero!, nothing)

function sim()
    p = [0.0, 100.0, 0.0, 0.0]
    cb1 = PeriodicCallback(Controller(27000.0),0.005)
    cbs = CallbackSet(cb1,cbVz,cbIz)
    #cbs = CallbackSet(cb1,cbVz)
    #cbs = CallbackSet(cb1,cbIz)
    u0 = [0.0,0.0,0.0,0.0, 0.0,0.0,0.0, 0.0]
    tspan = [0.0, 0.5]
    prob = ODEProblem(usode!,u0,tspan,p)
    @time sol = solve(prob,Tsit5(), callback=cbs, reltol=1e-8, abstol=1e-8, dense=false, maxiters=10_000_000)
    sol
end

sol = sim()

```

Looking at `function sim`, there are three lines that begin with `cbs = CallbackSet`. If I run as is, it stalls after 0.2 s (simulation time in print statements) and eventually dies wanting larger maxiters… If I instead use either of the commented `cbs =` lines, each only having one of the two ContinuousCallbacks, then it succeeds. Any tips on how to diagnose this?

Thanks!

---

<div class="post-metadata">

**Author:** ![ChrisRackauckas](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/chrisrackauckas/32/77_2.png) [@ChrisRackauckas](https://discourse.julialang.org/u/ChrisRackauckas)\
**Post date:** [May 6, 2020, 12:01am UTC](https://discourse.julialang.org/t/solver-hang-when-using-certain-combination-of-callbacks-in-diffeq/38846/2 "2020-05-06T00:01:00Z")

</div>

@kanav99 we should look into this. We should `@show` the time points where the callback is being called.

@klaff would you mind converting this to an issue?

---

<div class="post-metadata">

**Author:** ![klaff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/klaff/32/7637_2.png) [@klaff](https://discourse.julialang.org/u/klaff)\
**Post date:** [May 6, 2020, 12:08am UTC](https://discourse.julialang.org/t/solver-hang-when-using-certain-combination-of-callbacks-in-diffeq/38846/3 "2020-05-06T00:08:35Z")

</div>

Thank you Chris,

[https://github.com/SciML/DifferentialEquations.jl/issues/600](https://github.com/SciML/DifferentialEquations.jl/issues/600)

---

<div class="post-metadata">

**Author:** ![klaff](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/klaff/32/7637_2.png) [@klaff](https://discourse.julialang.org/u/klaff)\
**Post date:** [May 6, 2020, 5:30am UTC](https://discourse.julialang.org/t/solver-hang-when-using-certain-combination-of-callbacks-in-diffeq/38846/4 "2020-05-06T05:30:07Z")

</div>

I found that using VectorContinuousCallback solves my issue here!
