Explicit Gap Junctions (#661)
Add support for gap junctions in mc_cells, modelled as a conductance between 2 cell CVs. Gap junctions act as additional current sources on the CVs, as opposed to participating in the implicit voltage integration step. Cells connected via gap junctions must be in the same cell group as determined by the provided domain decomposition. * Extend `mc_cell` to hold a list of gap junction locations. * Add `num_gap_junction_sites()` and `gap_junctions_on()` methods to the `recipe` interface. * Add `gather_gids()` collective operation to distributed context interface and implementations. * Extend `partition_load_balance()` functionality to ensure that cells connected by gap junctions are put in the same groups. * Permute cells within `mc_cell_group` so that cells connected by gap junctions are contiguous. * Add gap junction information to `multicore::shared_state` and `gpu::shared_state`, together with `add_gj_current()` method that computes GJ current contributions. * Add `time_dep` field to shared state structures that records which adjacent cells are GJ-connected for the purposes of determining integration time intervals. * Add `sync_time_to()` method to shared state structures to determine the common integration time step across GJ-connected cells. * Incorporate new shared state methods into the `fvm_lower_cell_impl::integrate()` integration loop. * Add new arbor exception `arb::gj_kind_mismatch`. * Add unit tests for new functionality. * Add new example code `gap_junctions` for GJ demonstration.
Showing
- arbor/arbexcept.cpp 7 additions, 0 deletionsarbor/arbexcept.cpp
- arbor/backends/gpu/gpu_store_types.hpp 1 addition, 0 deletionsarbor/backends/gpu/gpu_store_types.hpp
- arbor/backends/gpu/shared_state.cpp 18 additions, 0 deletionsarbor/backends/gpu/shared_state.cpp
- arbor/backends/gpu/shared_state.cu 49 additions, 0 deletionsarbor/backends/gpu/shared_state.cu
- arbor/backends/gpu/shared_state.hpp 11 additions, 0 deletionsarbor/backends/gpu/shared_state.hpp
- arbor/backends/multicore/multicore_common.hpp 1 addition, 0 deletionsarbor/backends/multicore/multicore_common.hpp
- arbor/backends/multicore/shared_state.cpp 37 additions, 2 deletionsarbor/backends/multicore/shared_state.cpp
- arbor/backends/multicore/shared_state.hpp 11 additions, 0 deletionsarbor/backends/multicore/shared_state.hpp
- arbor/communication/dry_run_context.cpp 28 additions, 1 deletionarbor/communication/dry_run_context.cpp
- arbor/communication/mpi_context.cpp 5 additions, 0 deletionsarbor/communication/mpi_context.cpp
- arbor/distributed_context.hpp 19 additions, 0 deletionsarbor/distributed_context.hpp
- arbor/fvm_layout.cpp 0 additions, 1 deletionarbor/fvm_layout.cpp
- arbor/fvm_layout.hpp 1 addition, 0 deletionsarbor/fvm_layout.hpp
- arbor/fvm_lowered_cell.hpp 1 addition, 0 deletionsarbor/fvm_lowered_cell.hpp
- arbor/fvm_lowered_cell_impl.hpp 64 additions, 1 deletionarbor/fvm_lowered_cell_impl.hpp
- arbor/include/arbor/arbexcept.hpp 5 additions, 0 deletionsarbor/include/arbor/arbexcept.hpp
- arbor/include/arbor/domain_decomposition.hpp 1 addition, 3 deletionsarbor/include/arbor/domain_decomposition.hpp
- arbor/include/arbor/fvm_types.hpp 12 additions, 0 deletionsarbor/include/arbor/fvm_types.hpp
- arbor/include/arbor/mc_cell.hpp 17 additions, 0 deletionsarbor/include/arbor/mc_cell.hpp
- arbor/include/arbor/recipe.hpp 15 additions, 1 deletionarbor/include/arbor/recipe.hpp
Please register or sign in to comment