.. _shared_state: Shared State ============ The ``shared_state`` classes are collections to store backend-specific simulator state and can be found in the ``backend/{multicore, gpu}`` directories. Functionality manipulating such items gets delegated to the implementations of the ``shared_state`` interface. Ions ---- Ion state is stored as a series of arrays corresponding to NMODL variables. These arrays have entries per CV and mechanisms need to go through the ``node_index_`` array to map the mechanism's internal CV index to the cell group's CV index. ======= ======= =============================== Field NMODL Ion Property ======= ======= =============================== ``iX_`` ``ica`` Current density ``eX_`` ``eca`` Reversal potential ``Xi_`` ``cai`` Internal concentration ``Xo_`` ``cao`` External concentration ======= ======= =============================== This table shows the mapping between NMODL -- for the ``ca`` ion species -- and the ``ion_state`` members. The class is responsible for resetting currents and concentrations. Mechanisms ---------- All mechanisms' private data is stored in ``shared_state``, which is also responsible for managing the lifetime and initialisation of said data. This is done to allow mechanisms to be implemented as essentially stateless bits of C-code interacting with Arbor only through ``shared_state``. See the ABI documentation for a discussion of the details. Further Functionality --------------------- In addition the configuration and effect of stimuli, gap junctions, and sampling, as well as the computation of per-CV time steps is handled here.