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.
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.