patrick-kidger / diffrax

Numerical differential equation solvers in JAX. Autodifferentiable and GPU-capable. https://docs.kidger.site/diffrax/
Apache License 2.0
1.4k stars 123 forks source link

New solvers #8

Open patrick-kidger opened 3 years ago

patrick-kidger commented 3 years ago

SDE:

Implict:

DAE:

Symplectic:

Other:

trevormccrt commented 1 year ago

@patrick-kidger are we still interested in Verlet methods (or other methods specifically taylored to Hamiltonian systems)?

patrick-kidger commented 1 year ago

Absolutely! I just haven't gotten around to implementing them. I'd be happy to take a PR on these.

edoardoramalli commented 1 year ago

@patrick-kidger I'm not able to properly initialise a KenCarp solver? Can you help me? Is something like ?

KenCarp4(MultiTerm([Bosh3, Kvaerno3]))

But when I use it to solve an ODE I got:

ValueError: terms must be a PyTree of AbstractTerms (such as ODETerm), with structure diffrax.term.MultiTerm[typing.Tuple[diffrax.term.AbstractTerm, diffrax.term.AbstractTerm]]

Can you please provide an entire example on how use the IMEX solvers?

patrick-kidger commented 1 year ago

For example:

explicit_term = ODETerm(lambda t, y, args: -y)
impliict_term = ODETerm(lambda t, y, args: -y)
terms = MultiTerm(explicit_term, implicit_term)
solver = KenCarp4()
diffeqsolve(terms, solver, ...)