-
Sam Yates authored
Replace branch/cable-based cell representation and discretization with free specification of control volumes over the cell morphology. Implements functionality required for issues #859 and #732, and the reworking of inter-CV conductance computation addresses issue #635, although there is possible room for improvement by treating CV voltages as averages rather than point estimates. * Remove arbor/segment.hpp and segment-based representation in `cable_cell`. * Add a new discretization policy `cv_policy_every_sample` that replaces the `compartments_from_discretization` flag in the `cable_cell` constructor. * Remove use of `cable_cell::num_compartments()` in example code (see issue #940). * Add command line argument to `single_cell` example to specify number of CVs per branch. * Replace fvm layout `fvm_discretization` with new representation `fvm_cv_discretization`, which in turn wraps a `cv_geometry` object representing CVs as cables within cells in a cell group. * Provide `cv_geometry_from_ends` that produces `cv_geometry` discretization for a cell given a locset comprising CV boundary points. * Provide interface and functionality for merging discretization structures `cv_geometry`, `fvm_cv_discretization`, `fvm_mechanism_data` from multiple cells, in order to support (in the future) parallelized discretization across a cell group. * Provide complete reimplementation of `fvm_discretize(...)`. * Remove now redundant `arbor/fvm_compartment.hpp`. * Add new locset expression `on_branches`, representing a point on every branch at a given relative position. * Fix implementation bug in `pw_elements` `zip` function. * Add `util::equal` range-based analogue of `std::equal`. * Remove the compartments_from_discretization argument from cable cell made in python module. (Does this need to begiven a discretization policy? It is not clear.)