- Jan 20, 2020
-
-
Benjamin Cumming authored
* Add logo to read the docs as HTML header. * Lighten nav bar background so as to not clash with logo.
-
- Jan 09, 2020
-
-
Builds on PR #918 Prepare public API on `cable_cell` for substitution of discretization implementation in `fvm_layout`. * Add `mcable_map` for representing cable-wise constant data on a morphology. * Paint cell ion initial values and physical properties by specific setter types, replacing use of `cable_cell_local_parameter_set`. * Allow cell default ion/physical properties to be set via same setter types, which set corresponding fields in cell's `default_parameters` field. * Store placed/painted items each in a `static_typed_map` object in the cable cell implementation class; provide public access method to typed maps.
-
- Jan 07, 2020
-
-
Nora Abi Akar authored
* Choose the pivot on the diagonal if possible when performing symbolic Gaussian elimination in modcc-generated mechanisms.
-
* Consolidate embedding-dependent morphology data in new class `embed_pwlin`, which provides sample location lookup, handles branch and radius queries, and performs piecewise-constant integration over a branch by length, branch surface area, or inverse cross-sectional area. * Extend region and locset expressions to represent named regions/locsets. * Rearrange morphology-related functionality so that morphology-independent functions are provided via `morph/primitives.hpp` and topological functionality via `morph/morphology.hpp` and `morphology` methods. * Provide new class `mprovider` which gathers a morphology, its embedding, and a concrete label dictionary. * Populate mprovider concrete region/locset maps at initialization time, throwing exceptions if there are unresolved references or circular dependencies. * Gather and unify morphology-related exceptions in `morphexcept.hpp/cpp`, unifying error text and providing programmatically readable associated data, akin to `arbexcept.hpp/cpp`. * Simplify cable_cell painting/placing interfaces. * Add generic representation of piecewise-specified data with `pw_elements` classes. * Add representation of rational-polynomial interpolatated elements over the unit interval; sufficient for embedding integration services, but the implemented algorithm is subject to singularities if data can be represented by a lower-order denominator than requested. * Move `sum` from `algorithms` to `util`. * Make `util::either` public. * Add unit tests for existing morphology primitive operations. * Add unit tests for new functionality/APIs.
-
- Dec 20, 2019
-
-
Sam Yates authored
* Add unit tests for function lowering/inlining.
-
Nora Abi Akar authored
* Rewrite the function expander which lowers function calls and function arguments, such that both steps are done in the same visitor, and both visitors are applied to the entire procedure. * Rewrite the function inliner such that it is also applied to an entire procedure, after all functions have been expanded. The function inliner iterates over the body of the procedure, inlining one function call at a time, until all function calls have been inlined. * Conductivity and current accumulations are also modified to be done in one step at the end of `nrn_current`
-
Sam Yates authored
Fixes #811.
-
- Dec 16, 2019
-
-
Nora Abi Akar authored
* Rename `sample_event::cell_index` to `intdom_index`. * Sort `sample_events` by integration domain. Fixes #921
-
Nora Abi Akar authored
* Remove nested profiler call — revpot mechanisms already have profiler calls inserted in the generated code.
-
- Dec 11, 2019
-
-
* Use alternative hashing of cell_member_type values for 32-bit target. * Correctly match i686 as a "-march=" style target for gcc and clang. * Correct a signed/unsigned comparison warning in test_algorithms.cpp with -Wall. * Avoid spurious SIMD unit test failure for exprelr by using expm1 instead of exp - 1 in denominator when computing expected results.
-
- Dec 10, 2019
-
-
Avoid use of empty ranges determined by expressions `&vector[i]` where i equals vector.size(). Replace with expressions using `vector.data()` or subrange views. Fixes #917.
-
- Dec 09, 2019
-
-
If ion concentrations are read and written in the INITIAL blocks of mechanisms, this ensures that the reading mechanisms will receive the correct values. Fixes #896
-
- Dec 07, 2019
-
-
- Dec 05, 2019
-
-
Nora Abi Akar authored
* Group common linear system solver code across `SparseSolverVisitor`, `SparseNonlinearSolverVisitor`, and `LinearSolverVisitor`. * Normalize intermediate values in Gaussian elimination when the matrix has more than 5 rows. Fixes #890
-
- Dec 02, 2019
-
-
Benjamin Cumming authored
Fix linear scaling of model initialization w.r.t. number of MPI ranks. Fixes #909.
-
- Nov 28, 2019
-
-
Also change the way we handle unitson/unitsoff. UNITSON, UNITSOFF, COMMENT, ENDCOMMENT are now all handled in Lexer::parse Fixes #14 Fixes #885
-
Also renumber operator precedence. Fixes #25
-
-
- Nov 27, 2019
-
-
Also emit "abs" in cexpr_emit.cpp because the simd backend implements abs Fixes #887
-
Calling vector::reserve to increase the size of the synapse vector by 1 causes significant performance degradation.
-
Fixes #892
-
- Nov 26, 2019
-
-
Completely remove managed memory from the gpu backend. `managed_vector<level>` is split into: - A device vector of structs containing meta data about each level - A device vector containing concatenated lengths of each branch in a level for all levels - A device vector containing concatenated parents of each branch in a level for all levels All other instances of managed memory in `matrix_fine` are easily replaced by device vectors Managed memory is also removed from the unit tests. Fixes #841
-
- Oct 30, 2019
-
-
Benjamin Cumming authored
* Make access to `segment`s in a `cable_cell` read only * Change cell constructor to require morphology and label dictionary; `make_cable_cell` no longer required. * Consolidate paint/place functionality on `cable_cell`. * Add simple cell builder wrapping new API for use in unit tests. * Remove validation test code: appropriate validation tests will need to be implemented in nsuite. Fixes #871
-
Nora Abi Akar authored
* Remove improper std::move of mechanism description with for loop in cell::paint().
-
- Oct 23, 2019
-
-
Nora Abi Akar authored
* Fix modcc segmentation fault caused by improper check for the presence of a symbol, triggered when a symbol defined in a RANGE is absent from the ASSIGNED and PARAMETER blocks.
-
Nora Abi Akar authored
* Accept `tok::ne` for conditional expressions in modcc, and emit correctly as '!=' in `cexpr_emit`.
-
- Oct 22, 2019
-
-
Nora Abi Akar authored
* Add support for non-linear kinetic schemes in modcc, using a non-linear backwards Euler method with a fixed number of iterations of Newton's method.
-
- Oct 04, 2019
-
-
Sam Yates authored
* Provide correct assignment operator.
-
- Oct 02, 2019
-
-
Ensure that errors in Python callbacks that are called from multithreaded C++ code propogate the correct Python error back to the parent Python callback site, and that no callbacks are called from other threads if an error has already ocurred. - protects each recipe callback with a mutex, stores python exception, catches and throws python exception if occured - methods calling recipe (in simulation and partition_load_balance) are protected as well by try catch, resets and rethrows python exception (if occured) or else throws C++ exception fixes #792
-
Sets the diameter of a CV as the diameter at the middle of a CV Exposes the diameter in `shared_state` and `mechanism` Adds support in modcc to treat `diam` as a special parameter Implements unit tests Fixes #850
-
* Add new `cv_policy` class that wraps classes derived from `cv_policy_base`, which in turn provide a facility for producing CV boundaries on morphology trees from a `cable_cell`. * Implement fixed-CVs-per-branch and maximum-CV-length policies, with flags that allow for single-CV oots and for CVs that terminate at fork points or which are centred on fork points. * Expose locset `join` expressions. * Add `empty()` test method on `morphology`. * Expose branch length on `em_morphology` via member function. * Account for the length of a spherical root branch in `em_morphology`. * Test for validity but do not canonicalize locations when thingifying. * Rename `root_sample_has_same_tag_as_child` to `root_sample_tag_differs_from_children` to better reflect sense of test. * Add unit tests for CV policies, branch_length method.
-
- Oct 01, 2019
-
-
Nora Abi Akar authored
* Modify `SparseSolverVisitor` to allow solving kinetic equations at steady state. Addresses #837
-
- Sep 30, 2019
-
-
- Implement inlining functions with multiple statements - Implement inlining nested function calls - Implement inlining if/else statements. Compilation fails if a function fails to set the return value. Fixes #741, #742, #862
-
- Sep 25, 2019
-
-
akuesters authored
Adds * to `recipe.cpp`: `num_probes` and `get_probe` with helper function `cable_probe(kind, id, location)` * `sample.cpp`: `sample` type with attributes `time` and `value`; a `sampler` with `samples()` and `clear()` and helper functions `attach_sampler(sim, dt)` for adding all probes as well as `attach_sampler(sim, dt, probe_id)` for adding one probe * `morphology.cpp`: `location` as `arb::mlocation` with `branch` and `position` * corresponding docs and example * update to new cable cell semantics in c++ validation test fixes #762
-
- Sep 23, 2019
-
-
Benjamin Cumming authored
WIP on implementation of new cable cell API. * Hide implementation and state using PIMPL * Add consistent `place` methods for adding synapse, stimuls, gap junction site and spike detectors to `cable_cell`. * Add default constructor for `region` and `locset` that create empty `nil` instances.
-
- Sep 16, 2019
-
-
* Remove or implement move ctor/assign operations for ostream-derived classes. * Add explicit test for a zero row in modcc's sparse and linear solver finalize routines. * Forward declare `morphology_impl` as a struct. * Remove redundant capture in a lambda expression in fvm_layout.cpp. * Add extra parens in an assign-and-test condition in mechcat.cpp.
-
- Sep 10, 2019
-
-
Benjamin Cumming authored
* Add `minset` method for location lists that computes the minimal set by the partial order imposed by the morphology tree.
-
- Sep 09, 2019
-
-
Benjamin Cumming authored
* Add new "embedded morphology" `em_morphology`, constructed from a `morphology`, that: caches derived information such as terminal points, locations of sample points, branch lengths; provides services for canonicalizing locations and interpolation; and is used for the realisation of regions and locsets (see below). * Add simple DSL for describing locsets and regions, which are abstract descriptions of sets of locations and regions on morphologies, together with a set of operations. * Add a new class `label_dict` that associates names with regions and locsets. * Extend `cable_cell` to hold a `label_dict` argument, which is used by a new method `paint` for associating mechanisms with regions. Fixes #845.
-
- Sep 02, 2019
-
-
Nora Abi Akar authored
* Adds modcc support for COMPARTMENT statements of the form: `COMPARTMENT v {state_0, state_1, ..., state_n}`. * Use `COMPARTMENT` values `v` to multiply the derivative of state variables `state_0, state_1, ..., state_n` in associated kinetic scheme blocks. Fixes #838.
-
- Aug 29, 2019
-
-
* Change VERSION to 0.2.3-dev.
-