Deal with zero radius points in a morphology (#1719)
* Add test that is sensitive to small radius loss of precision in ixa computation. * Add test that checks for consistent behaviour when there is an (isolated) zero radius point in the morphology. * Special case p==1 q==1 case in ratelem so that it can interpolate ixa in the presence of non-finite interpolants. * Change naming in pw_element/pw_elements: 'element' refers to the extent+value pairs comprising a 'pw_elements' object; 'value' refers to the value associated with an element; 'extent' refers to the closed interval which is the support of the element. * Allow values (but not extents) in a pw_elements object to be mutable, using proxies for iterator access. * Write piecewise zip (pw_zip) in terms of a lazy pw_zip_view. Rename zip functions. * Document pw_elements more thoroughly. * Simplify and document embed_pwlin.cpp routines, expressing everything in terms of simple interpolate/integrate operations. * Represent integrated inverse cross-sectional area in the embedding by multiple piecewise-rational functions over a branch, each of which contribute separately to an ixa-based integration, so that precision loss associated with small (or zero) radii can be avoided. * Comment embed_pwlin.cpp more thoroughly. Fixes #1526
Showing
- arbor/fvm_layout.cpp 3 additions, 3 deletionsarbor/fvm_layout.cpp
- arbor/fvm_layout.hpp 4 additions, 4 deletionsarbor/fvm_layout.hpp
- arbor/morph/embed_pwlin.cpp 216 additions, 126 deletionsarbor/morph/embed_pwlin.cpp
- arbor/morph/place_pwlin.cpp 4 additions, 3 deletionsarbor/morph/place_pwlin.cpp
- arbor/util/iterutil.hpp 5 additions, 2 deletionsarbor/util/iterutil.hpp
- arbor/util/piecewise.hpp 587 additions, 232 deletionsarbor/util/piecewise.hpp
- arbor/util/ratelem.hpp 30 additions, 20 deletionsarbor/util/ratelem.hpp
- test/unit/test_morph_embedding.cpp 70 additions, 0 deletionstest/unit/test_morph_embedding.cpp
- test/unit/test_piecewise.cpp 139 additions, 81 deletionstest/unit/test_piecewise.cpp
- test/unit/test_ratelem.cpp 31 additions, 1 deletiontest/unit/test_ratelem.cpp
Please register or sign in to comment