Changelog
All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog,
openCARP uses a vMAJOR.PATCH versioning scheme. We increase the
- MAJOR version when we add functionality, and the
- PATCH version when we make backwards compatible bug fixes
Unreleased
Added
- Sinus node cell models of Fabbri (2017) and Severi (2012) et al. + AC-cAMP-PKA signalling cascade based on Behar et al. (2016) (thanks @moritz.linder)
- Update to new stimulus definition (experiments, regression tests and carputils functions) (thanks @moritz.linder)
- openCARP Docker image is now built for architectures
arm64
and amd64
- New operations for igbops (
intX_t
and t_maxX
)
- Bipole mode for igbapd
- igbtools can be piped together (reading/writing stdin and stdout)
- Documentation about running openCARP simulations on HPC systems in user manual
- Three onboarding tutorials for single cell using openCARP JupyterLab included
Changed
- Simplified the petsc interface (#352)
- Reduced Docker image size by 50% (!242)
- Remove declaration-only header files from CMakeLists
- Use current meshtool version
- Time integration for tension models (#357)
- Moved MLIR test jobs to CI
test
stage
- Use regression test references specified in git submodule also for Ginkgo and MLIR (!263)
Fixed
- The deps Docker image was never updated (!242)
- Support for EasyML
heav()
and sign()
with MLIR (!260)
Known issues
- Some regression tests are failing when using Ginkgo as the numerical backend (#151)
[16.0] - 2024-08-19
Added
- Pig model based on Gaur & Vigmond et al. (2021) (thanks @moritz.linder)
- Support for
max
function in MLIR builds
- Support for SUNDIALS v6 and v7
- Update C++ standard to 17
- Update LLVM to 18
- MLIR noground_bidom benchmarks (thanks @huppe) to xbat (formerly Continuous Benchmarking)
- Add
FindSUNDIALS.cmake
to support cases where SUNDIALS doesn't provide CMake configuration file
- A link to
make_dynamic_model.sh
is created in the bin
folder during CMake builds
- More verbose error message when statefile does not match IMP
- Flag to enable OHara model modifications as suggested by Michael Clerx (thanks @jorge.sanchez)
Fixed
sv_dump
in MLIR+DLO build where extra "0" lines were output
- Conversion of transmembrane charge into concentration (#356)
- Reference to stimulus file format for
bench
- Fixed gvec output for plugins.
Changed
- Docker image archives are not stored on the web server anymore, only in the Docker registry.
- CI artifacts are kept for 12 hours instead of 2
- Removed duplicate Steward model (Stewart still exists)
- Changed the initial value of APD90 for restitution curve calculation to work with less depolarized ionic models (thanks @jorge.sanchez)
- Change in OpenMP activation: the option USE_OPENMP can now take three different values:
UTILS
(default): OpenMP is activated for igbutils and meshtool
OFF
: OpenMP is deactivated
ON
: OpenMP is activated globally
- Note: this changes the default behavior (before, OpenMP was deactivated by default).
- Compiler optimization level set to zero for
param
(issues with Ubuntu 24.04, gcc 13.2.0, glibc 2.39)
[15.0] - 2024-03-18
Added
- More detailed information on how stimulus currents are treated in chapter 3 of the manual
- Regression test for stress models
- Option to calculate cell surface to cell volume ratio (convert stimulus current to concentration change) (thanks @ml0401)
- Regression test for the feature above (thanks @ml0401)
- Generic build target defines below for ionic models introduced. By default all targets for a given model are built,
define model specific macros to only generate code for specific targets, e.g. ALIEVPANFILOV_MLIR_CPU_GENERATED.
Cleaner build logs (#243, !184, thanks @huppe)
- CPU_GENERATED
- MLIR_CPU_GENERATED
- MLIR_ROCM_GENERATED
- MLIR_CUDA_GENERATED
- CI job to keep generated IMP sources (
physics/limpet/src/imps_src
) in sync with .model files (on master
)
- CI job to warn if IMP sources (
physics/limpet/src/imps_src
) are out of sync with .model files (on non-master branches)
- Support for non-activating nodes when using prepacing
- Regression test for non-existing imp regions (#332, thanks @tomas.stary)
- Documentation for MLIR tests (thanks @huppe)
- Modifications to OHara model suggested by Michael Clerx (flag
CLERX
)
Fixed
- Stress model variables
Ca_i
renamed to Cai
(thanks @jorge.sanchez)
- Calling of python and shell scripts for dynamic model building now supported with AppImage after extraction
- Bugs related to IMP data layout optimisation (DLO) (thanks @huppe)
- The
deps
Docker image is now built on branches when Dockerfile-deps is modified
- Correctly convert math function
pow
to corresponding vector math library function call for MLIR code (thanks @huppe)
- Fixed buildinfo output
- Fixed Vm_clamp and GND_ex pulse forms
- Fixed HodgkinHuxley.model
- Bug when dumping state variables in DLO builds (thanks @huppe)
- Enable build in source folders which are not a repository (#351)
Changed
- State vector extension in
bench
when validation flag is set true (e.g. OHara.Cai
-> OHara.Cai.bin
) (thanks @ml0401)
[14.0] - 2023-12-07
Added
latest
tag pointing to the most current release (#334)
Changed
- The documentation of bench commands in the PDF manual is now autogenerated from
bench --help
- Improved documentation for MLIR builds (thanks @vincent.loechner)
- Major rewrite of LIMPET moving from C to C++ (thanks @Raphael)
- Deprecated
-buildinfo
argument, now the build info is printed by default
igbapd
: linear interpolation of AP start
- State structure data layout optimization of ionic models (thanks @Raphael)
- Do
--stim-assign
preprocessing in bench only once and not per timestep
Fixed
ISAC_Hu
model was missing some parentheses
- Missing initialization of pointers to parameter structures in
ION_IF.h
- Include units in PDF and online parameter help
- make_dynamic_model.sh works with CMake based compilation for CVODE and DEBUG (#330)
- Compatibility with SUNDIALS v6
- Checkpointing when data layout optimization (DLO) was enabled (thanks @Raphael)
- Dynamic models (#310)
- Incorrect memory copies and memory initialization on GPU when using multiple regions
--stim-assign
in bench
didn't work (#338, thanks @sophiaohnms)
- Stim species assignment for multiple species with non-equal ratios
- Linear solver name changed from const char* to std::string to prevent name corruption.
[13.0] - 2023-05-25
Added
- Elec matrix integration: Added output of element and region info in case of NaN
matrix entries. This help with spotting errors in the tissue parametrization
(e.g zero fibers or conductivities, deteriorated elements).
- Ionic models: Added support for AMD code generation with MLIR. Ionic models can now be compiled and ran on AMD GPUs.
- Compilation of multiple versions of a given ionic model in the same build (see
docs/BUILD_WITH_MLIR.md
)
--target
option to select execution platform in bench
(see docs/BUILD_WITH_MLIR.md
)
- User manual: Cite carphelp and give an example of usage
- CI job building openCARP using the provided Makefile
Changed
- Elec matrix integration: Optimized choice of integration order.
- CMake process in
physics/limpet
refactored for readability
- GPU models can now access data correctly with
-DENABLE_MLIR_CODEGEN=DATA_LAYOUT_OPTIMIZATION
- Use
overlay2
as DOCKER_DRIVER
in CI pipelines
Fixed
- Fixed a number of compiler warnings. Now builds clean with clang15.
- Build process based on plain Makefile.
Known issues
- Some regression tests are failing when using Ginkgo as the numerical backend (#151)
[12.0] - 2022-12-19
Added
- New macOS package, compatible with Apple Silicon Macs.
- Tomek ionic model.
- Pre-commit hook to generate CITATION.cff from codemeta.json
- Added Ginkgo numerical backend (use CMake option
ENABLE_GINKGO
)
- Added the printout of all parameters with
--output-setup
option
- Optimized CPU and GPU code generation for ionic models using MLIR compiler infrastructure (use CMake option
ENABLE_MLIR_CODEGEN
, see docs/BUILD_WITH_MLIR
).
Changed
- macOS precompiled packages now contain MPICH, shipped with PETSc, like the Linux packages.
- Continuous Benchmarking can now be run on any branch (commit hash passed to Continuous Benchmarking trigger)
- Abstraction of interface to numerical backend (vectors etc.)
- Release step consists of two steps (manual tag pre-vX.Y and automatic tag vX.Y) now to include specific DOI in metadata in repo
Steward
model renamed to Stewart
(fixing a typo in the name)
Fixed
- cleaned up stim.crct.type and stimulus.stimtype to only contain available stimulus types.
--initial
flag in example 01/02B
Known issues
- Some regression tests are failing when using Ginkgo as the numerical backend (#151)
[11.0] - 2022-07-18
Added
- Control over output domain for (phie, phie_i, and vm) via
-dataout_i
and -dataout_e
.
- Dedicated, asynchronous IO processes via
-num_io_nodes
.
- Support for arctan, atan, sin, floor functions in .model and CellML files
- CI pipeline extended by Continuous Benchmarking via Megware's framework
- Modify package generation and include paths in
make_dynamic_model.sh
to make it usable in precompiled packages (rpm, deb, pkg and AppImage).
Fixed
- When using cmake to build openCARP with external tools, openMP is disabled in meshtool if it is disabled for openCARP
- Right-handed coordinate system also for 2D elements in
SF::get_transformed_pts()
(thanks @jk)
- Maintenance on tutorials (thanks @joshuasteyer, @jk)
- CMake aborted when libgfortran wasn't found (thanks @teo.puig)
- Fix include path hints in
make_dynamic_model.sh
for the case where openCARP is compiled from sources
[10.0] - 2022-05-30
Added
- EasyML2mmt.py to faciliatate conversion from .model to .cellml via .mmt, see example 01/11 for detailed instructions
- Documentation on monodmain and bidomain boundary conditions (sections 3.2 and 3.3 of the manual)
- Performance stats output for ionics (ODE_stats.dat) and IO (IO_stats.dat) in sim output dir
Changed
- The AppImage package now contains some helper scripts: one to extract openCARP binaries from the AppImage, the other one to install carputils.
- In the postinstall phase of cmake, symbolic links created for MPI executables in /usr/local/bin could potentially interfer with an existing installation. These symbolic links were removed and the path to the MPI executable is now configured in carputils settings.
- openCARP Docker image is now based on Ubuntu 20.04
bench --imp-info
now also shows plugin metadata
- Metadata lines in .model files do not need to end with a semicolon anymore
- Added _build/physics/limpet to make_dynamic_model.sh include directories to be compatible with CMake-based installations
Fixed
- square(X) and cube(X) in .model files were causing error during code generation when using the Rosenbrock method
- make_dynamic_model.sh: Skip tests on contents of
my_switches.def
if it does not exist in install directory
- Fix the inclusion of MPI executables in Linux precompiled packages
- Fix documentation pipeline to include Stim structure.
- Fix error when trying to recompile openCARP after adding a new ionic model
- Ionic model metadata fields were cut if they contained a colon
- Made ionic model metadata fields consistent
- Compilation on macOS with M1 processor
- Changed xmltree.etree.getchildren() to list(xmltree.etree) for Python3.9 compatibility
- Better support for exponential notation in CellML files
[9.0] - 2022-02-22
Added
- Implementation for
--stim-species
and --stim-ratios
parameters in bench
- Option for OpenMP support in CMake (
-DUSE_OPENMP=ON
)
Changed
- Names of ionic models and plugins. See physics/limpet/models/README.md for details of the naming scheme and a mapping from old to new names. Additionally, variables were named consistenly across all available ionic models and plugins.
- bench: consistently no output of progress to terminal if using
--fout
irrespective of wheter --validate
is being used or not.
- model files: changed pow(x,2) and pow(x,3) to square(X) and cube(X), respectively.
- Ensure fibre vectors have unit length (https://git.opencarp.org/openCARP/openCARP/-/merge_requests/73)
- Courtemanche.model now considers dynamically changing intracellular potassium concentration as in the original publication
Fixed
- Add missing link to
hydra_pmi_proxy
in /usr/local/bin
in postinstall phase for MPICH
- Kurata et al. ionic model
mesher
fiber generation for off-center meshes (https://git.opencarp.org/openCARP/openCARP/-/issues/132)
- Loading of external IMPs when openCARP is built with
-DNDEBUG
flag
[8.2] - 2021-12-18
Added
- Add CI jobs for testing (on schedule) and releasing openCARP Spack package when a new version is released.
- Added libjpeg as a dependency in CPack for being able to install pillow python package
- Documentation for the installation of openCARP via Spack.
- Optional building
igbdft
, required FFTW3 library
--buildinfo
flag for bench
- Added autotester pipeline
- Added AppImage building and release
[8.1] - 2021-10-01
Fixed
- Fixed bench not starting when tracing is used.
- Fixed trace output granularity.
[8.0] - 2021-09-23
Added
- Added trace functionality.
- Added human readable interpretations of PETSc solver divergence errors.
- Automatically add dropdown entries on webpage (parameters, doxygen, test reports) for release versions.
Fixed
- Many fixes and improvements.
[7.0] - 2021-06-29
Added
- Pathmanathan & Gray cell model for test cases with analytical solution
- Loewe-Lutz-Fabbri-Severi cell model (human sinus node)
- Extended documentation on
gvec[]
parameters
- A filename given as parameter can now be given with its extension
- Warning in header to not change auto-generated files in
simulator
- Numerical schemes as chapter 29 of the user manual
Changed
- Default PETSc linear solver options set more sensibly.
- limpet/common.py module renamed to limpet/limpetcommon.py for better compatibility with other
common
modules
- Ionic model code is only re-generated in the CMake compilation when changes are present (determined per model)
- Types of some parameters of type string but corresponding to file names to
RFile
/WFile
- carp.prm was renamed to openCARP.prm as well as the auto-generated files in
simulator
Fixed
- Adjustments per node were only applied to the first node of the mesh.
[6.0] - 2021-05-17
Added
- illumination ionics interface and IchR2 model supporting it
- Bench parameter
--start-out
to control first output time step
- dump_vtx option for stimuli
Fixed
- Archiving of releases in the RADAR repository
- mesher fix for 2D mesh lon files.
- many fixes throughout the codebase.
- CI fixes.
[5.0] - 2021-01-20
Fixed
Added
- Added EasyML function rand01(): random number in range [0,1]
- Header to restitution*.dat files generated by bench (starting with '# ')
- Added
stim[].ptcl.stimlist
to specify list of stimulation times.
- Documentation on units for currents on the single cell level.
[4.0] - 2020-09-29
Fixed
- Several fixes to FEM integration.
Added
- External projects (carputils, examples, and meshtool) in the packages.
- Added support for Prism and Pyramid element types.
- Added support for per-element conductivity scaling.
- Added support for element renumbering and element-based input data.
Changed
- Restructured docker files, merged user-version and developer-version docker images.
[3.2] - 2020-07-13
Added
- mMS ionic model.
- Increased robustness of
im_param
option by applying whitespace removal to option string.
- CI improvements.
Fixed
- Fixed
write_statef
option not working.
- Fixed dynamic model building workflow.
[3.1] - 2020-06-18
Added
[3.0] - 2020-06-17
Added
- Support for heterogenous electrode strength scaling via
stimulus[].vtx_fcn
(legacy stim)
and stim[].elec.vtx_fcn
(new stim format).
Fixed
- Fixes to igbapd. It is now more consistent in its output handling.
Changed
- Exposed more state vars in COURTEMANCHE model.
- CI updates.
- Reworked index and indexed data reading.
[2.0] - 2020-05-09
Added
- Python3 support complete.
- Added support for different (i.e. non-PETSc) matrix and solver implementations.
- KDtree partitioner is faster and requires less memory.
Fixed
- Fixed
MacCannell_Fb_plug
and I_KATP
models.
- Laplace solver only requires extracellular mesh.
- Many fixes and optimizations to the cmake building and packaging workflow.
Changed
CONTRIBUTORS.md
is now CONTRIBUTORS.yml
, which will also be used to generate the metadata for archives of the releases.
- Exposed
TT2.Gto
limpet variable.
- Build-time code generation now uses python3.
[1.2] - 2020-03-17
Fixed
adjust_MIIF_variable
now tells the user what adjustment went wrong.
Added
- Added
gridout_p
for partitioning output.
Removed
- Removed some unsupported simulator parameters.
Changed
- Further improved python3 compatibility.
- Improved message output for
gridout
.
[1.1] - 2020-03-05
Fixed
- Dynamic ionic model loading was fixed.
Changed
- Many python scripts are now python3 compatible. The transition is not complete yet.
[1.0] - 2020-03-03