Possible extensions
Repeatable components
In a sense, the Dimension and Unit elements operate as model-independent global quantities since they may be restated in different files without problems as long as the definitions are identical.
There is probably a case for a user-definable type with similar properties. The canonical application would be in defining the ionic or molecular species present in a simulation. For example, in specifying that a channel is permeable to Na+ ions, or blocked by TTX, it is necessary to match up the occurrences of these quantities in the channel definition with those in the environment of the cell model in which the channel is used.
This can be done with the ExternalQuantity element as in example 5, but that currently requires all references to a global component to point to the same component since a component cannot be repeated. This prevents there being fully independent self contained channel definitions as they would need to share the same species file. It should be easily resolved by allowing a flag on type definitions to say that duplicate components are allowed for particular types as long as the definitions are identical.
Scalar fields
Conceptually, you need a number of things:
- Something like a FieldVariable declaration in a Dynamics analogous to a StateVaraible but spatially extended.
- Some notion of geometry
- A mechanism for extracting a value for a FieldVariable at a point for use in a point process model. this could involve sampling, interpolation or integration over some kind of kernel
- A mechanism for associating point models with positions in a scalar field
Of these, the geometry and positioning is the hard part. Whether an implementation could actually do something useful with such a model is another question entirely.