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
[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