# DifferentialEquations.jl's integrator interface for discrete problem

**URL:** <https://discourse.julialang.org/t/differentialequations-jls-integrator-interface-for-discrete-problem/70377>\
**Category:** New to Julia\
**Tags:** diffeq\
**Created:** [October 26, 2021, 6:44am UTC](https://discourse.julialang.org/t/differentialequations-jls-integrator-interface-for-discrete-problem/70377 "2021-10-26T06:44:44Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![iHany](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ihany/32/18151_2.png) [@iHany](https://discourse.julialang.org/u/iHany)\
**Post date:** [October 26, 2021, 6:44am UTC](https://discourse.julialang.org/t/differentialequations-jls-integrator-interface-for-discrete-problem/70377/1 "2021-10-26T06:44:44Z")

</div>

Hi,  
I’m trying to use [integrator interface](https://diffeq.sciml.ai/stable/basics/integrator/#integrator) of DiffEq.jl for [discrete problem](https://diffeq.sciml.ai/stable/solvers/discrete_solve/#DiscreteProblems).

Is it possible?  
Also, I wonder if “`FunctionMap`” in [this page](https://diffeq.sciml.ai/stable/solvers/discrete_solve/#DiscreteProblems) means the default solver of discrete problem.

For example, trying to make an integrator seems fail to me ☹

```julia
julia> function dynamics!(du, u, p, t)
           du .= 0.99*u
       end
dynamics! (generic function with 2 methods)

julia> prob = DiscreteProblem(dynamics!, [1, 2.0], (0, 10))
DiscreteProblem with uType Vector{Float64} and tType Int64. In-place: true
timespan: (0, 10)
u0: 2-element Vector{Float64}:
 1.0
 2.0

julia> init(prob, FunctionMap)
ERROR: MethodError: no method matching __init(::DiscreteProblem{Vector{Float64}, Tuple{Int64, Int64}, true, SciMLBase.NullParameters, DiscreteFunction{true, typeof(dynamics!), Nothing, Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, ::Type{FunctionMap})
Closest candidates are:
  __init(::Union{SciMLBase.AbstractDAEProblem, SciMLBase.AbstractODEProblem}, ::Union{OrdinaryDiffEqAlgorithm, OrdinaryDiffEq.DAEAlgorithm}) at /Users/jinrae/.julia/packages/OrdinaryDiffEq/Zi9Zh/src/solve.jl:9
  __init(::Union{SciMLBase.AbstractDAEProblem, SciMLBase.AbstractODEProblem}, ::Union{OrdinaryDiffEqAlgorithm, OrdinaryDiffEq.DAEAlgorithm}, ::Any) at /Users/jinrae/.julia/packages/OrdinaryDiffEq/Zi9Zh/src/solve.jl:9
  __init(::Union{SciMLBase.AbstractDAEProblem, SciMLBase.AbstractODEProblem}, ::Union{OrdinaryDiffEqAlgorithm, OrdinaryDiffEq.DAEAlgorithm}, ::Any, ::Any) at /Users/jinrae/.julia/packages/OrdinaryDiffEq/Zi9Zh/src/solve.jl:9
  ...
Stacktrace:
 [1] init_call(_prob::DiscreteProblem{Vector{Float64}, Tuple{Int64, Int64}, true, SciMLBase.NullParameters, DiscreteFunction{true, typeof(dynamics!), Nothing, Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, args::Type; merge_callbacks::Bool, kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ DiffEqBase ~/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:28
 [2] init_call(_prob::DiscreteProblem{Vector{Float64}, Tuple{Int64, Int64}, true, SciMLBase.NullParameters, DiscreteFunction{true, typeof(dynamics!), Nothing, Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, args::Type)
   @ DiffEqBase ~/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:15
 [3] init(prob::DiscreteProblem{Vector{Float64}, Tuple{Int64, Int64}, true, SciMLBase.NullParameters, DiscreteFunction{true, typeof(dynamics!), Nothing, Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, args::Type; kwargs::Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}})
   @ DiffEqBase ~/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:43
 [4] init(prob::DiscreteProblem{Vector{Float64}, Tuple{Int64, Int64}, true, SciMLBase.NullParameters, DiscreteFunction{true, typeof(dynamics!), Nothing, Nothing}, Base.Iterators.Pairs{Union{}, Union{}, Tuple{}, NamedTuple{(), Tuple{}}}}, args::Type)
   @ DiffEqBase ~/.julia/packages/DiffEqBase/OPDgm/src/solve.jl:33
 [5] top-level scope
   @ REPL[21]:1

```

---

<div class="post-metadata">

**Author:** ![iHany](https://sea2.discourse-cdn.com/julialang/user_avatar/discourse.julialang.org/ihany/32/18151_2.png) [@iHany](https://discourse.julialang.org/u/iHany)\
**Post date:** [October 26, 2021, 6:52am UTC](https://discourse.julialang.org/t/differentialequations-jls-integrator-interface-for-discrete-problem/70377/2 "2021-10-26T06:52:06Z")

</div>

Got it. I have to make it a proper object as `FunctionMap()`.  
See [this](https://github.com/SciML/DifferentialEquations.jl/blob/master/src/discrete_default_alg.jl#L3).
