Skip to content

Commit e673afe

Browse files
support non-array wrapper types
1 parent 946a5e5 commit e673afe

File tree

2 files changed

+7
-0
lines changed

2 files changed

+7
-0
lines changed

src/common_interface/integrator_utils.jl

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,6 +79,11 @@ function save_value!(save_array,val,::Type{T},sizeu,
7979
bool ? save = copy(val) : save = val
8080
push!(save_array,reshape(save,sizeu))
8181
end
82+
function save_value!(save_array,val,::Type{T},sizeu,
83+
make_copy::Type{Val{bool}}=Val{true}) where {T <: AbstractArray,bool}
84+
bool ? save = copy(val) : save = val
85+
push!(save_array,convert(T,reshape(save,sizeu)))
86+
end
8287

8388
function handle_callback_modifiers!(integrator::CVODEIntegrator)
8489
CVodeReInit(integrator.mem,integrator.t,integrator.u)

src/nvector_wrapper.jl

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ struct NVector <: DenseVector{realtype}
2525
end
2626
end
2727

28+
NVector(v::AbstractArray) = convert(Vector,v)
2829
N_Vector(x::NVector) = convert(N_Vector,x)
2930

3031
release_handle(ref_nv::Ref{N_Vector}) = N_VDestroy_Serial(ref_nv[])
@@ -50,6 +51,7 @@ Base.pointer(nv::NVector) = Sundials.N_VGetArrayPointer_Serial(nv.ref_nv[])
5051

5152
Base.convert(::Type{NVector}, v::Vector{realtype}) = NVector(v)
5253
Base.convert(::Type{NVector}, v::Vector{T}) where {T<:Real} = NVector(copy!(similar(v, realtype), v))
54+
Base.convert(::Type{NVector}, v::AbstractVector) = NVector(convert(Array,v))
5355
Base.convert(::Type{NVector}, nv::NVector) = nv
5456
Base.convert(::Type{NVector}, nv::N_Vector) = NVector(nv)
5557
Base.convert(::Type{N_Vector}, nv::NVector) = nv.ref_nv[]

0 commit comments

Comments
 (0)