Skip to content
Snippets Groups Projects
  1. Oct 15, 2018
    • Sam Yates's avatar
      Patch up Julia scripts for Julia 1.0 (#629) · c822f8b9
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      * Use `Unitful.uconvert` for scalar conversions (Float64 cast apparently does not work at the moment).
      * Use .+ for scalar/array addition.
      * Replace `immutable` with `struct`.
      * Qualify included modules with `Main.` for using statements.
      * Add informational note to FindJulia as component identification can take a long time as Julia may compile them from source.
      c822f8b9
  2. Jun 25, 2018
    • Sam Yates's avatar
      Feature/lib install target part i (#506) · ad1c78ab
      Sam Yates authored and Benjamin Cumming's avatar Benjamin Cumming committed
      CMake and build refactoring
      
      *   Use CUDA as first-class language (leading to CMake 3.9 minimum version requirement).
      
      *   Use 'modern CMake' interface libraries for compiler options, include file and library dependency tracking. Interface library targets:
          * `arbor-deps`: compiler options and library requirements for the `libarbor.a` static library, as governed by configure-time options and environment.
          * `arbor-private-headers`: include path for non-installed headers, as required by unit tests and arbor itself.
          * `arbor-aux`: helper classes and utilities used across tests and examples.
          * `ext-json`, `ext-tclap`, `ext-tbb`, `ext-benchmark`, `ext-sphinx_rtd_theme`: externally maintained software that we include (directly or via submodule) in the `ext/` subdirectory.
       
      *   Single static library `libarbor.a` includes all built-in modules and CUDA objects.
      
      *   Simply configuration options:
          *  `ARB_WITH_TRACE`, `ARB_AUTORUN_MODCC_ON_CHANGES` `ARB_SYSTEM_TYPE` removed.
          * External `modcc` is provided by `ARB_MODCC` configuration option; if provided `modcc` is still buildable, but is not included in the default target.
          * `ARB_PRIVATE_TBBLIB`, defaulting to `OFF`, instructs the build to make TBB from the included submodule.
      
      *   Extend `ErrorTarget` functionality to provide a dummy target or an error target based on a condition.
      *   Generate header version defines and library version variables based on git status and project version, via new script `include/git-source-id`.
      *   All generated binaries now placed in `bin/` subdirectory at build.
      *   Install targets installs: public headers (incomplete); static library; `modcc` tool; `lmorpho` executable; `html` documentation (examples, tests and validation data are currently not installed).
      *   Executable targets have had the `.exe` suffix removed; unit tests are labelled `unit` (arbor unit tests), `unit-modcc` (modcc unit tests), `unit-local` (distributed tests with local context), `unit-mpi` (distributed tests with MPI context).
      *   More graceful handling of configure-time detection of `nrniv`, Julia and required Julia modules for validation data generation.
      *   Add `cmake/FindJulia.cmake`, `cmake/FindTBB.cmake`  package finders, and adjust `cmake/FindUnwind.cmake` to use link library-style properties.
      *  Adjust travis script to test `unit-local` and `unit-mpi` if appropriate.
      *  Simply documentation `conf.py`.
      
      Source relocation and reorganization
      
      * All external project sources and files moved to `ext/`.
      * Source code refactoring to decouple library-using code from the configure-time definitions that govern arbor behaviour: removes conditional code in public headers that depends upon `ARB_WITH_X`-type definitions at compile time. Affected code is is in the public interfaces for MPI, the threading implementation, and the profiler.
      * Remove `util/debug.hpp`; split out functionality for pretty-printing from assertion handling.
      * Make FVM cell non-physical voltage check a run-time cell-group parameter.
      * Move spike double buffer implementation to `simulation.cpp`.
      * Make timer utility wrap POSIX `clock_gettime` independent of threading configuration.
      * Make `mpi_error` derive from `system_error` and follow C++11 `system_error` semantics.
      * `EXPECTS` macro replaced by `arb_assert` macro.
      * JSON dependency removed from `libarbor.a` and header files: moved to auxiliary library.
      * Publicly visible macros garner an `ARB_` prefix as required.
      * Move SWC test file to `test/unit` directory.
      * Work-in-progress splitting of public from private includes: as a convention not entirely adhered to as yet, private headers within arbor source are included with `""`, public headers with `<>`.
      
      Modcc interface changes
      
      * Expose via `--namespace` option the functionality that sets the namespace in generated code.
      * Use `--profile` option to add profiler hooks to generated code; uses public function interface directly rather than `PE/PL` macros in order to avoid public `PE` and `PL` defines.
      ad1c78ab
  3. Nov 14, 2017
    • Ben Cumming's avatar
      Use Nernst equation to calculate reversal potentials (#387) · 256c5421
      Ben Cumming authored and Sam Yates's avatar Sam Yates committed
      Replace constant values for ion species reversal potentials taken from HH model with values that are updated on each time step via the Nernst equation.
      
      * Implement Nernst equation in multicore and gpu back-ends.
      * Extend interface of `ion` type to proved a method `update_reversal_potential` which calls the back-end nernst routine.
      * Add `valency` and default concentration values to the ion species.
      * Add interface for resetting ion species state (for restarting simulations).
      
      Fixes #376 
      256c5421
  4. Oct 26, 2016
  5. Oct 25, 2016
    • Sam Yates's avatar
      Refactor convergence tests; add numeric soma ref. · fdbe4d8a
      Sam Yates authored
      * Amend data directory path in validation tests.
      * Enmodulate `hh_soma.jl`
      * Add HH channel reference data generations script.
      * Switch `validate_soma.cpp` to numeric reference data.
      * Consolidate common code in `validate_ball_and_stick.cpp`
      * Add (nearly) Rallpack1 validation test (see below).
      * Gentle failure on absence of reference data in
        `validate_ball_and_stick.cpp`
      
      Can't yet override mechanism default parameter values,
      so the cable cell model added to `test_common_cells.hpp`
      lets the default stand; validation script will have
      to use the default membrane conductance rather than that
      given by Rallpack1.
      fdbe4d8a