Morpheus has always provided solvers for reaction-diffusion systems. However, for many biological problems, it is crucial to model the transport of some substance using advection equations. These, however, require specific solvers.
A simple approach to solving advection equations is now implemented and available in a special branch of our repository.
In its simplest form, this enables you to model the transport of this Gaussian distributed substance:
If advection is combined with diffusion, it can be used to model convection:
Of course, it can also be simulated in higher spatial dimensions. Here, we combine the classical Meinhardt-Gierer model with advection (and no-flux boundary combination for +x and -x boundaries):
In line with the Morpheus spirit of integrative multi-scale modeling, you can also combine this with cell-based models. For instance, by having a cell (the discretized circle) secreting a convective inhibitor species (left = activator, right = inhibitor):
Although not shown here, the same also works for motile cells.
However, there are several constraints to prevent numerical instabilities. The straight-forward implementation is based on the Lax-Friedrich numerical method for hyperbolic PDEs and all the limitations of this method apply. That is, one requires:
- smooth initial conditions such that large spatial derivates are avoided
- satisfaction of the following stability criterion: abs(a*dt*dx) <= 1 where a is the advection constant.
In addition, when combining it with CPM cells that “secrete” a substance into an advective Field, you will need to be sure the spatial derivates does not get too large (or rather, remains small), similar to the requirement for a smooth initial condition.
Due to these limitations, the user must take great care in ensuring numerical stability.
Therefore, it is unlikely that these features will make it to the main production version of Morpheus anytime soon.
If you think you can handle this and are interested in modeling advection/convection with Morpheus, check out this branch of our repository. We may also be able to provide binaries on request. Moreover, testing models with the examples above are also available: Just drop us a line.