firedrakeproject / gusto

Three dimensional atmospheric dynamical core using the Gung Ho numerics.
http://firedrakeproject.org/gusto/
MIT License
10 stars 10 forks source link

Split timestepper #537

Closed ta440 closed 1 week ago

ta440 commented 1 month ago

Adds a general SplitTimestepper class that allows different terms to be timestepped separately using a defined time discretisation. A 'term_splitting' list specifies the order that the terms are solved, e.g ['transport', 'physics', 'diffusion']. A timestepping scheme for each non-physics term is specified in the 'dynamics_schemes' dictionary. Furthermore, substepping can be used for a term by defining weights. For example, we can Strang-split the transport between diffusion with term_splitting=['transport','diffusion','transport'], weights=[0.5,1,0.5].

A test is added to integration_tests/model/test_split_timestepper.py. This tests three different splittings of the advection-diffusion equation with source physics.