documentation:tech_specs
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
documentation:tech_specs [00:29 24.07.2013] – [Diffusion] Walter | documentation:tech_specs [22:02 02.08.2013] (current) – [Random numbers] Walter | ||
---|---|---|---|
Line 1: | Line 1: | ||
- | ~~NOTOC~~ | + | |
====== Technical specification ====== | ====== Technical specification ====== | ||
- | |||
- | ==== Overview ==== | ||
- | |||
- | Morpheus is built out of the following building blocks: | ||
- | |||
- | * **[[documentation: | ||
- | * **[[documentation: | ||
- | * **[[documentation: | ||
- | * **[[documentation: | ||
- | |||
- | These components can be combined into complex models using | ||
- | |||
- | * **[[documentation: | ||
- | |||
- | New features can be added through implementation of | ||
- | |||
- | * **[[documentation: | ||
- | |||
- | [{{ : | ||
===== Solvers ===== | ===== Solvers ===== | ||
- | === Ordinary differential equations === | + | ==== Ordinary differential equations |
- | Morpheus implements | + | Morpheus implements explicit finite different solvers of numerical integration of ODEs: |
* [[http:// | * [[http:// | ||
Line 31: | Line 12: | ||
* [[http:// | * [[http:// | ||
- | === Stochastic | + | and stochastic |
- | In addition, Morpheus implements a method to scale the noise amplitude in stochastic ODEs (**SDEs**): | + | |
- | * [[http:// | + | * [[http:// |
- | The latter is used automatically when using Euler or Heun method with a noise term. **Note**: Maruyama' | + | |
- | === Limitations === | + | The latter is automatically used when a stochastic white noise term '' |
- | Solvers with **adaptive | + | <code xml> |
+ | < | ||
+ | < | ||
+ | </DiffEqn> | ||
+ | < | ||
+ | </code> | ||
- | Although these implemented explicit solvers are general and flexible, they are not applicable to **stiff systems**. [[http:// | + | === Fixed time stepping === |
- | === Planned: ODEint integration === | + | Solvers with adaptive time stepping, such as the [[http://en.wikipedia.org/wiki/ |
- | + | ||
- | Currently, Morpheus implements its own solvers. This was chosen because of the requirements of | + | |
- | * parsing of text-entered math expressions using [[http://muparser.beltoforion.de/|muparser]], and | + | |
- | * control over precise scheduling of updates. | + | |
- | + | ||
- | However, we are planning to convert to the use of the extremely flexible numerical solver package [[http:// | + | |
- | + | ||
- | This will extend the available methods for numerical integration of ODE solvers. For instance, adaptive | + | |
+ | === Stiff systems === | ||
+ | Although the implemented explicit solvers are general and flexible, they are not applicable to stiff systems. [[http:// | ||
===== Lattice ===== | ===== Lattice ===== | ||
- | + | ==== Lattice structure | |
- | == Lattice structure == | + | |
Morpheus is a lattice-based simulation platform. This means that the spatial models are discretized on a lattice. | Morpheus is a lattice-based simulation platform. This means that the spatial models are discretized on a lattice. | ||
Line 67: | Line 44: | ||
* **cubic** 3D (orthogonal) lattice | * **cubic** 3D (orthogonal) lattice | ||
- | == Membrane Properties == | + | ==== Boundary conditions ==== |
+ | |||
+ | See description in [[documentation: | ||
+ | |||
+ | ==== Membrane Properties | ||
For '' | For '' | ||
Line 74: | Line 55: | ||
- | == Boundary conditions == | ||
- | |||
- | See description in [[documentation: | ||
===== Diffusion ===== | ===== Diffusion ===== | ||
- | == Method of lines == | + | === Method of lines === |
Partial differential equations (PDEs) are numerically approximated by separating the reaction and diffusion steps using the [[http:// | Partial differential equations (PDEs) are numerically approximated by separating the reaction and diffusion steps using the [[http:// | ||
- | == Diffusion equation == | + | === Diffusion equation |
- | For diffusion, Morpheus uses the simple and general forward Euler scheme. The time step $\delta t$ is automatically adjusted according to the [[http:// | + | For diffusion, Morpheus uses the simple and general forward Euler scheme. The time step $\delta t$ is automatically adjusted according to the [[http:// |
- | + | ||
- | Alignment of multidimensional lattices to 1D memory (due to use of [[http:// | + | |
The unconditionally stable method of [[http:// | The unconditionally stable method of [[http:// | ||
- | |||
- | == Transport equation == | ||
- | |||
- | Higher order derivatives to model transport equations in PDEs are currently being developed and are planned for a future release. | ||
===== Motility ===== | ===== Motility ===== | ||
Line 129: | Line 101: | ||
where $T$ (for ' | where $T$ (for ' | ||
- | === Random number generators (RNG) === | + | ===== Random |
- | + | ||
- | By default, Morpheus uses the [[http:// | + | |
- | + | ||
- | **Note**: In multithreaded simulations, | + | |
- | + | ||
- | ===== Model integration ===== | + | |
- | + | ||
- | To be documented. | + | |
- | + | ||
- | ==== Symbolic references and spatial mapping ==== | + | |
- | + | ||
- | - intermodel variable referencing | + | |
- | + | ||
- | - symbols for variables have metadata with their spatiotemporal context (cell property, pde layer etc.) | + | |
- | + | ||
- | - when used in expressions, | + | |
- | + | ||
- | - in cases of ambiguity, '' | + | |
- | + | ||
- | + | ||
- | - Example: autocrine chemotaxis | + | |
- | + | ||
- | ==== Time scheduling | + | |
- | + | ||
- | The time scheduler takes care (i) to evolve numerical schemes in time, (ii) to schedule and execute spatial data mappings, and (iii) to run event-based schemes, i.e. schemes which are run in certain time intervals. In order to combine different schemes in a single scheduler we exploit the method of fractional time steps. The basis is for our automatic scheduling is extensive knowledge of the data dependencies of the schemes and what kind of updated data they provide. This information is represented as a symbolic dependency tree based on the expressions, | + | |
- | + | ||
- | We envisage the following criteria for the design of our scheduler implementation. | + | |
- | + | ||
- | * Time stepping for all schemes shall be automatically adjusted, as far as possible, to the maximum permitted time step. | + | |
- | * In addition, time stepping can be overridden from in the MDL, allowing for user guided step sizes. | + | |
- | * The order of the specification of the schemes in the MDL shall not matter. | + | |
- | * The sequential order of updates within a temporal step shall be determined by the symbolic interdependency tree extracted from the schemes. | + | |
- | * Tightly coupled systems, often bearing circular dependencies, | + | |
- | + | ||
- | A robust automatic scheduling methods necessarily needs reliable information about the internal limits of numerical schemes and its external dependencies. External dependencies are extracted as a dependency tree. Internal time step limits are reported by the schemes and can be adoptive in time. | + | |
- | Solving Reaction-Diffusion Systems, for example, using a finite difference scheme and operator splitting allows us to schedule the diffusion solver depending on the CFL condition and running the reaction part independently. | + | |
- | === Schematic Representation of the Time Scheduler === | + | By default, Morpheus uses the [[http:// |
- | == Initialisation: | + | **Note**: In multithreaded simulations, each thread gets its own RNG (the random seeds for which are based on the specified seed of the master thread RNG). Therefore, to reproduce simulation results, not only the random seed needs to be specified |
- | - Adjusting time steps: | + | |
- | | + | |
- | | + | |
- | | + | |
- | | + | |
- | == Main Loop: 3 Phase Time Stepper: == | ||
- | - '' | ||
- | - Time Step Progression | ||
- | - '' | ||
- | - '' | ||
- | - Checkpointing of simulation state. | ||
documentation/tech_specs.1374618565.txt.gz · Last modified: 00:29 24.07.2013 by Walter