SciML / OrdinaryDiffEq.jl

High performance ordinary differential equation (ODE) and differential-algebraic equation (DAE) solvers, including neural ordinary differential equations (neural ODEs) and scientific machine learning (SciML)
https://diffeq.sciml.ai/latest/
Other
536 stars 205 forks source link

Added PDIRK and PRK solvers #2303

Closed ParamThakkar123 closed 2 months ago

ParamThakkar123 commented 2 months ago

Checklist

Additional context

Add any other context about the problem here. solves a part of #2177

ChrisRackauckas commented 2 months ago

Where are the tests for these ones?

ParamThakkar123 commented 2 months ago

Where are the tests for these ones?

I didn't see a separate file of tests for these ones but the tests are there in ode_convergence_tests.jl. The convergence test function for PDIRK44 is present inside Implicit Solver Convergence Tests and tests for KuttaPRK2p5 are present in Explicit Solver Convergence Tests

ParamThakkar123 commented 2 months ago

@ChrisRackauckas any changes to be made in the tests for these solvers ??

ChrisRackauckas commented 2 months ago

There is a test failure https://github.com/SciML/OrdinaryDiffEq.jl/actions/runs/10133887447/job/28019521857?pr=2303#step:6:953

ChrisRackauckas commented 2 months ago

@oscardssmith https://github.com/SciML/OrdinaryDiffEq.jl/actions/runs/10157523456/job/28087785439?pr=2303#step:6:658 if we don't find a fix soon we'll need to revert the StaticArray change

oscardssmith commented 2 months ago

investigating now.

oscardssmith commented 2 months ago

From initial inspection, this doesn't seem related to my changes since it is happening in addsteps! which is pretty far away in the code from anything with the jacobians...

ChrisRackauckas commented 2 months ago

It's the ArrayInterface.jl changes.

oscardssmith commented 2 months ago

the ArrayInterface change shouldn't have changed anything here... RecursiveArrayTools depends on StaticArrays unconditionally, and StaticArrays has been loaded, so the extension should still be running...

oscardssmith commented 2 months ago

Ah, the problem is that ArrayInterface.ismutable is a generated function that illegally depends on world age I think.

>121  @generated function ArrayInterface.ismutable(::Type{<:ArrayPartition{T, S}}) where {T, S
 122  }
 123      res = all(ArrayInterface.ismutable, S.parameters)
 124      return :($res)
 125  end
oscardssmith commented 2 months ago

problem found. Partial revert incoming.