Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add trivial adaptive DAE method #37

Open
AndreyAPopov opened this issue May 12, 2022 · 12 comments · May be fixed by #36
Open

Add trivial adaptive DAE method #37

AndreyAPopov opened this issue May 12, 2022 · 12 comments · May be fixed by #36
Assignees
Labels
enhancement New feature or request low priority

Comments

@AndreyAPopov
Copy link
Member

Adding an adaptive half-explicit method (one file, not over-engineered) for solving the pendulum with invariants would be very helpful.

@reid-g
Copy link
Member

reid-g commented May 12, 2022

What order method do we want? For both Differential and Algebraic?

@reid-g
Copy link
Member

reid-g commented May 12, 2022

Also HERK is good for problems which have a differential that can be treated explicitly. This may not be the case for all Index-2 DAEs and there may be a need for a Index-2 IRK method.

@AndreyAPopov
Copy link
Member Author

I was literally thinking trapezoidal with Euler embedded. Call it dae12. if you have ready-made coefficients of higher order we can use them, but up to you.

I theoretically implemented enough derivatives in the pendulum problem to support a fully implicit method.

@Steven-Roberts
Copy link
Member

I'm reluctant to implement integrators in OTP. To me it is slightly out of scope. Also it would need to be advanced enough to support the odeset options as that's what solve provides. I say for these DAEs of high-index, we should always aim to provide reductions to index-1 as the default RHS so built-in solvers can be used.

@Steven-Roberts
Copy link
Member

But if we do want to provide an integrator, I think it should be an SDIRK method instead of a HERK. HERK requires knowledge of which variables are diff and alg, and the default RHS does not provide that.

@AndreyAPopov
Copy link
Member Author

Ideally we would integrate with the new MATLODE, but this is a good stopgap

@reid-g
Copy link
Member

reid-g commented May 13, 2022

Do we want to couple OTP with MATLODE?

@reid-g
Copy link
Member

reid-g commented May 13, 2022

Also we would need to be carful with index reduced problems. Some index reductions are not stable.

@reid-g
Copy link
Member

reid-g commented May 13, 2022

If we do provide an integrator for index-2 problems I agree it should just be an SDIRK method.

How in depth does it need to be ie how many options should it have?

@Steven-Roberts
Copy link
Member

Do we want to couple OTP with MATLODE?

Couple: no. We can make them mutually compatible by having matlode use the same function signature as built in integrators. E.g. problem.solve('Solver', matlode.rk....)

@Steven-Roberts
Copy link
Member

How in depth does it need to be ie how many options should it have?

It needs to accept odeset options, although it may ignore many. At the minimum is needs to support Jacobian and Mass option. Ideally it should support time and state dependant mass matrices.

@AndreyAPopov AndreyAPopov changed the title Add trivial adaptive half-explicit method Add trivial adaptive DAE method May 15, 2022
@AndreyAPopov AndreyAPopov linked a pull request May 15, 2022 that will close this issue
@AndreyAPopov
Copy link
Member Author

I have added a method that seems to work for the pendulum problem. There is a lot of cleanup that needs to be done, but it actually seems to work, which I am excited about.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request low priority
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants