support ion species concentration updates (#398)
* Add querying methods to modcc ion species type to simplify code generation. * Add `WriteBack` type that records per-mechanism ion usage metadata. * Add `write_back` implementation for C and CUDA printers that adds weighted concentration contributions to global concentration fields. * Extend `uses_ion` interface to provide information about which concentration fields are modified by mechanisms. * Update `update_ion_symbols` lambda that is responsible for adding metadata about interactions between mechanism fields and external ion species fields, creating a write-back when the mechanism field is a state variable or an indexed variable if it is a current/reversal potential, or else an error. * Add `test_ca.mod` mechanism that writes calcium ion concentration for testing purposes. * Add back-end callbacks that initialize concentration values. * Update `mechanism::uses_ion()` to return information regarding mechanism ion concentration updates. * Add `mechanism::write_back()` method. * Update stimulus mechanism specialization to use new mechanism interface. * Update `ion` type to calculate default concentration contributions in CVs where the concentration is only partially determined by mechanisms. * Update `fvm_multicell` to calculate the default ion concentration weights. * Add unit test for ion concentration weight determination. Fixes #373
Showing
- mechanisms/CMakeLists.txt 1 addition, 1 deletionmechanisms/CMakeLists.txt
- mechanisms/mod/test_ca.mod 34 additions, 0 deletionsmechanisms/mod/test_ca.mod
- modcc/blocks.hpp 33 additions, 4 deletionsmodcc/blocks.hpp
- modcc/cprinter.cpp 67 additions, 88 deletionsmodcc/cprinter.cpp
- modcc/cudaprinter.cpp 97 additions, 90 deletionsmodcc/cudaprinter.cpp
- modcc/identifier.hpp 15 additions, 4 deletionsmodcc/identifier.hpp
- modcc/module.cpp 38 additions, 17 deletionsmodcc/module.cpp
- modcc/module.hpp 20 additions, 0 deletionsmodcc/module.hpp
- modcc/writeback.hpp 21 additions, 0 deletionsmodcc/writeback.hpp
- src/CMakeLists.txt 1 addition, 1 deletionsrc/CMakeLists.txt
- src/backends/gpu/fvm.cpp 3 additions, 1 deletionsrc/backends/gpu/fvm.cpp
- src/backends/gpu/fvm.hpp 9 additions, 1 deletionsrc/backends/gpu/fvm.hpp
- src/backends/gpu/ions.hpp 6 additions, 0 deletionssrc/backends/gpu/ions.hpp
- src/backends/gpu/kernels/ions.cu 63 additions, 0 deletionssrc/backends/gpu/kernels/ions.cu
- src/backends/gpu/stimulus.hpp 2 additions, 2 deletionssrc/backends/gpu/stimulus.hpp
- src/backends/multicore/fvm.cpp 3 additions, 1 deletionsrc/backends/multicore/fvm.cpp
- src/backends/multicore/fvm.hpp 11 additions, 0 deletionssrc/backends/multicore/fvm.hpp
- src/backends/multicore/stimulus.hpp 2 additions, 2 deletionssrc/backends/multicore/stimulus.hpp
- src/fvm_multicell.hpp 59 additions, 14 deletionssrc/fvm_multicell.hpp
- src/ion.hpp 40 additions, 17 deletionssrc/ion.hpp
Please register or sign in to comment