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

Discuss changing the time integrator #31

Open
schmoelder opened this issue Mar 10, 2020 · 3 comments
Open

Discuss changing the time integrator #31

schmoelder opened this issue Mar 10, 2020 · 3 comments
Labels

Comments

@schmoelder
Copy link
Contributor

Currently, IDAS from SUNDIALS is used, however, LIMEX (linear implicit extrapolation) is a very flexible and stable one step method (variable order and step size is easy). It can be parallelized to some extent (at the cost of memory). It only requires solution of linear systems (BDF requires solution of a nonlinear system, which is done by variants of Newton’s method). In addition, one step methods are better for input signals with lots of discontinuities (e.g. piecewise constant feeds generated by closed / open loop optimal control etc.) since we have to restart the multi-step BDF at each discontinuity (then it needs some small steps to reach its maximum order).

@sleweke
Copy link
Contributor

sleweke commented Mar 20, 2020

Also relevant: People from RWTH Aachen use a similar method called NIXE, see also Lotz et al. 2015 and Hannemann et al. 2012. It is based on the code SEULEX, which uses a modified step sequence for extrapolation. Forward sensitivity analysis is easily possible, see Schlegel et al. 2004, and maybe already supported by NIXE.

It is not clear to me, which license applies to NIXE. If it were free and compatible with the GPL, we could even use / try this integrator.

Other ideas include: Operator splitting (i.e., IMEX methods) or (S)DIRK methods.

@sleweke
Copy link
Contributor

sleweke commented Jun 18, 2021

Some more ideas:

  • Dynamic iteration / waveform relaxation / co-simulation: Each unit operation has its own time-stepping with its own step-size. This allows to use the method best suited to the respective unit operation (e.g., IMEX for a column, implicit method for a CSTR). The units are coupled in time in an iterative scheme (similar to operator splitting on the system level) to resolve strong interactions.
  • Multi-rate integration on the unit level: Use a smaller step-size for fast elements of the state vector (e.g., components involved in fast processes) in order to meet accuracy requirements.
  • Local time stepping: Use different step sizes depending on spatial position (i.e., region of slow time steps moves with the concentration front).

@jbreue16
Copy link
Contributor

We found that the DifferentialEquations.jl QNDF is oftentimes faster than the IDAS BDF implementation, seehttps://doi.org/10.1016/j.compchemeng.2024.108913

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
Status: Todo
Development

No branches or pull requests

4 participants