Skip to content

Commit

Permalink
Merge f25f8a6 into d9252a7
Browse files Browse the repository at this point in the history
  • Loading branch information
YingboMa committed Oct 27, 2018
2 parents d9252a7 + f25f8a6 commit c04823d
Showing 1 changed file with 25 additions and 21 deletions.
46 changes: 25 additions & 21 deletions src/common_interface/integrator_utils.jl
Expand Up @@ -30,31 +30,35 @@ function handle_callbacks!(integrator)
integrator.u_modified = false
end

function DiffEqBase.savevalues!(integrator::AbstractSundialsIntegrator,force_save=false)
if integrator.opts.save_on
uType = eltype(integrator.sol.u)
while !isempty(integrator.opts.saveat) &&
integrator.tdir*top(integrator.opts.saveat) < integrator.tdir*first(integrator.tout)

curt = pop!(integrator.opts.saveat)
tmp = integrator(curt)
save_value!(integrator.sol.u,tmp,uType,integrator.sizeu,Val{false})
push!(integrator.sol.t,curt)
if integrator.opts.dense
tmp = integrator(curt,Val{1})
save_value!(integrator.sol.interp.du,tmp,uType,integrator.sizeu,Val{false})
end
function DiffEqBase.savevalues!(integrator::AbstractSundialsIntegrator,force_save=false)::Tuple{Bool,Bool}
saved, savedexactly = false, false
!integrator.opts.save_on && return saved, savedexactly
uType = eltype(integrator.sol.u)
while !isempty(integrator.opts.saveat) &&
integrator.tdir*top(integrator.opts.saveat) < integrator.tdir*first(integrator.tout)

saved = true
curt = pop!(integrator.opts.saveat)
tmp = integrator(curt)
save_value!(integrator.sol.u,tmp,uType,integrator.sizeu,Val{false})
push!(integrator.sol.t,curt)
if integrator.opts.dense
tmp = integrator(curt,Val{1})
save_value!(integrator.sol.interp.du,tmp,uType,integrator.sizeu,Val{false})
end
end

if integrator.opts.save_everystep || force_save
save_value!(integrator.sol.u,integrator.u,uType,integrator.sizeu)
push!(integrator.sol.t, integrator.t)
if integrator.opts.dense
tmp = integrator(integrator.t,Val{1})
save_value!(integrator.sol.interp.du,tmp,uType,integrator.sizeu)
end
if integrator.opts.save_everystep || force_save
saved = true
save_value!(integrator.sol.u,integrator.u,uType,integrator.sizeu)
push!(integrator.sol.t, integrator.t)
if integrator.opts.dense
tmp = integrator(integrator.t,Val{1})
save_value!(integrator.sol.interp.du,tmp,uType,integrator.sizeu)
end
end
savedexactly = last(integrator.sol.t) == integrator.t
return saved, savedexactly
end

function save_value!(save_array,val,::Type{T},sizeu,
Expand Down

0 comments on commit c04823d

Please sign in to comment.