This reorganises the prescribed transport to allow more complicated methods for defining the transporting velocity.
The transporting velocity is now set up after the stepper, and can be done through three methods:
either not at all, in which case the velocity is assumed to be constant in time
through a time-varying expression as a python function (as we already done)
through a user-defined apply method -- this is the main new capability
The main motivation is that sometimes we want more complicated methods for defining the transporting velocity, e.g.:
specifying the time-varying velocity through a stream function, by interpolating into the H1 space then projecting gradperp(psi)
the velocity is discontinuous in time. These cases cannot be handled with a single expression and so need something more complicated
It also has the nice benefit that time-varying winds are now set up after the timestepper, allowing the wind to be defined with the initial conditions.
This reorganises the prescribed transport to allow more complicated methods for defining the transporting velocity.
The transporting velocity is now set up after the stepper, and can be done through three methods:
The main motivation is that sometimes we want more complicated methods for defining the transporting velocity, e.g.:
gradperp(psi)
It also has the nice benefit that time-varying winds are now set up after the timestepper, allowing the wind to be defined with the initial conditions.