Consider the following at time t
Equation i
Name = "whatever"
Active Solvers(n) = 1 2 3 4 5 .....n-2 n-1 n
End
I presume 1 .... n is the sequential order of solver routines being processed and that once we are done with solver n, the time is updated to t+dt. And my understanding is that solver m reads values of variables updated by solvers 1 ...m-1. Perhaps, it can also read non-updated values if it wishes.
In some algorithms, (plasma-fluid simulations for example) sub-cycling is used. That is, dt is saved by, say solver m, and this solver then decide on a different dt' value. The original dt value is restored at the end of the execution of that solver. I suppose that is very easy to implement in any solver routine.
Sometimes, super-time stepping schemes based on Runge-Kutta-Legendre methods are also employed, but this is probably not part of Elmer.
Feel free to correct me on any of my statements.
Time step sub-cycling
-
- Site Admin
- Posts: 4812
- Joined: 22 Aug 2009, 11:57
- Antispam: Yes
- Location: Espoo, Finland
- Contact:
Re: Time step sub-cycling
H
"Active Solvers" is unfortunately not as elegant as you imagine. It just lists all active solvers and they are performed in the order or their index (if not "exec solver" defined otherwise).
There is a keyword "Timestep Scale" that may be used to cheat on the timestep of individual solvers.
There are also Runge-Kutta schemes available.
However, I don't think there is the kind of multiphysics fractional step schemes that you suggest. The time-accuracy is usually improved by iterations within the timestep level. It would probably often be more economical to use the type of scheme you propose and not iterate within the timestep.
I guess without loss of generality one can assume that the sequence is always mirror symmetric. Maybe there could be single keyword on simulation section that would request such timestepping. If the keyword would be active the solvers would be performed first in normal order and then in reverse order having dt replaced by dt/2. We could consider implementing this.
-Peter
"Active Solvers" is unfortunately not as elegant as you imagine. It just lists all active solvers and they are performed in the order or their index (if not "exec solver" defined otherwise).
There is a keyword "Timestep Scale" that may be used to cheat on the timestep of individual solvers.
There are also Runge-Kutta schemes available.
However, I don't think there is the kind of multiphysics fractional step schemes that you suggest. The time-accuracy is usually improved by iterations within the timestep level. It would probably often be more economical to use the type of scheme you propose and not iterate within the timestep.
I guess without loss of generality one can assume that the sequence is always mirror symmetric. Maybe there could be single keyword on simulation section that would request such timestepping. If the keyword would be active the solvers would be performed first in normal order and then in reverse order having dt replaced by dt/2. We could consider implementing this.
-Peter
Re: Time step sub-cycling
I had read an article on time splitting for finite volume implementations of plasma-fluid simulations using openfoam. Hopefully I wont need the concept when coding using finite elements. Regards