Next: Hsolve as a Virtual Up: Compilation Previous: Compilation Contents

## Data Model

As already explained in the chapter on the numerical background, `hsolve` solves the equations in the model on a staggered time grid (see section 1.2.1, page ). The decoupling of the equations of intracellular mechanisms and conductances from the cable equation propagates to the design of the implementation for the emulation of the byte-code. Basically `hsolve` can be split into two almost separate parts: one part for the intracellular mechanisms and one part for the cable equations. These two parts have their own byte-code engine. Since `hsolve` stores the byte-code separately from the result values, each byte-code engine maintains two arrays (see figure 6.1). So for conductance equations and cable equations, `hsolve` maintains four arrays in total as follows:

1. For cable equations:
   1. The array that contains the byte-code is called the `funcs` array. It uses the conductance values to compute membrane potentials on a future time point.
   2. The array that contains the computed values is partitioned into three distinct subparts: `ravals`, `results` and `vm`.
2. For conductance equations:
   1. The array that contains the byte-code is called the `ops` array. It uses the membrane potentials for membrane potential dependent conductances.
   2. The array that contains the computed values is called the `chip` array.

Figure 6.1: Byte code compilation phases

The advantages of this design are:

1. Optimizations can be implemented that are not possible at the modeling level.
2. Because of a high cache use, you get extra performance (cache misses are identified as a bottleneck in some application areas).
3. Easy to emulate a single byte code.

NOTE: We did not consider diffusion or concentration elements till now. If these elements would be incorporated into the discussion we would have to say that `hsolve` can be split into three separate parts: also the diffusion and concentration elements have their own byte code engine.

Next: Hsolve as a Virtual Up: Compilation Previous: Compilation Contents