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
[13.0] - 2023-05-25
- 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
--target option to select execution platform in
- User manual: Cite carphelp and give an example of usage
- CI job building openCARP using the provided Makefile
- Elec matrix integration: Optimized choice of integration order.
- CMake process in
physics/limpet refactored for readability
- GPU models can now access data correctly with
DOCKER_DRIVER in CI pipelines
- Fixed a number of compiler warnings. Now builds clean with clang15.
- Build process based on plain Makefile.
- Some regression tests are failing when using Ginkgo as the numerical backend (#151)
[12.0] - 2022-12-19
- 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
- Added the printout of all parameters with
- Optimized CPU and GPU code generation for ionic models using MLIR compiler infrastructure (use CMake option
- 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)
- cleaned up stim.crct.type and stimulus.stimtype to only contain available stimulus types.
--initial flag in example 01/02B
- Some regression tests are failing when using Ginkgo as the numerical backend (#151)
[11.0] - 2022-07-18
- Control over output domain for (phie, phie_i, and vm) via
- Dedicated, asynchronous IO processes via
- 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).
- 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
- 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
- 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
- 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
- Implementation for
--stim-ratios parameters in
- Option for OpenMP support in CMake (
- 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
- Add missing link to
/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
[8.2] - 2021-12-18
- 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
- Added autotester pipeline
- Added AppImage building and release
[8.1] - 2021-10-01
- Fixed bench not starting when tracing is used.
- Fixed trace output granularity.
[8.0] - 2021-09-23
- 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.
- Many fixes and improvements.
[7.0] - 2021-06-29
- Pathmanathan & Gray cell model for test cases with analytical solution
- Loewe-Lutz-Fabbri-Severi cell model (human sinus node)
- Extended documentation on
- A filename given as parameter can now be given with its extension
- Warning in header to not change auto-generated files in
- Numerical schemes as chapter 29 of the user manual
- Default PETSc linear solver options set more sensibly.
- limpet/common.py module renamed to limpet/limpetcommon.py for better compatibility with other
- 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
- carp.prm was renamed to openCARP.prm as well as the auto-generated files in
- Adjustments per node were only applied to the first node of the mesh.
[6.0] - 2021-05-17
- illumination ionics interface and IchR2 model supporting it
- Bench parameter
--start-out to control first output time step
- dump_vtx option for stimuli
- 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
- Added EasyML function rand01(): random number in range [0,1]
- Header to restitution*.dat files generated by bench (starting with '# ')
stim.ptcl.stimlist to specify list of stimulation times.
- Documentation on units for currents on the single cell level.
[4.0] - 2020-09-29
- Several fixes to FEM integration.
- 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.
- Restructured docker files, merged user-version and developer-version docker images.
[3.2] - 2020-07-13
- mMS ionic model.
- Increased robustness of
im_param option by applying whitespace removal to option string.
- CI improvements.
write_statef option not working.
- Fixed dynamic model building workflow.
[3.1] - 2020-06-18
[3.0] - 2020-06-17
- Support for heterogenous electrode strength scaling via
stimulus.vtx_fcn (legacy stim)
stim.elec.vtx_fcn (new stim format).
- Fixes to igbapd. It is now more consistent in its output handling.
- Exposed more state vars in COURTEMANCHE model.
- CI updates.
- Reworked index and indexed data reading.
[2.0] - 2020-05-09
- Python3 support complete.
- Added support for different (i.e. non-PETSc) matrix and solver implementations.
- KDtree partitioner is faster and requires less memory.
- Laplace solver only requires extracellular mesh.
- Many fixes and optimizations to the cmake building and packaging workflow.
CONTRIBUTORS.md is now
CONTRIBUTORS.yml, which will also be used to generate the metadata for archives of the releases.
TT2.Gto limpet variable.
- Build-time code generation now uses python3.
[1.2] - 2020-03-17
adjust_MIIF_variable now tells the user what adjustment went wrong.
gridout_p for partitioning output.
- Removed some unsupported simulator parameters.
- Further improved python3 compatibility.
- Improved message output for
[1.1] - 2020-03-05
- Dynamic ionic model loading was fixed.
- Many python scripts are now python3 compatible. The transition is not complete yet.
[1.0] - 2020-03-03