SciML / SciML/RecursiveArrayTools.jl
`Matrix(sol)` can return other types than `Matrix`
Nobody has claimed this yet.
- Dominant language
- Julia
- Stars
- 233
- Forks
- 76
- Avg merge
- 2h 17m
- Merged PRs (30d)
- 9
Description
Calling Matrix(sol) on an *DE solution returns a CuMatrix when the states are CuVectors.
This is because Matrix(sol) is implemented using a generic hcat (see snippet below). This is a very obvious and useful thing to do, but would it make more sense as an implementation of convert(AbstractMatrix, sol) rather than Matrix(sol)?
I know constructors are not guaranteed to return the invoked type, but it's confusing that you have to call Matrix(Matrix(sol)) to actually get a Matrix.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start with src/vector_of_array.jl around lines 90-95 and reproduce Matrix(sol) for a DE solution whose states are CuVectors. Compare the resulting type with Matrix(Matrix(sol)), then inspect nearby array-construction behavior. Done means the intended Matrix conversion behavior is settled and covered by a regression test.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- julia
- Domain
- data
- Issue type
- Bug
- Difficulty
- 3/5
- Estimated time
- 1-2 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 30/100