Please mention any changes to the code which will break users' code here - to be put in the release notes for the next release. Also mention any significant improvements or new features.

The real definitive release notes will be written in source:trunk/docs/ReleaseNotes.html at the time of release. To make that process easier, please structure this page in the same manner, rather than simply copying from LatestNews.

OlderReleaseNotes -- release notes for releases 1.1 to 3.2


Release 3.3 (changes since Release 3.2)

This release is designed to coincide with several publications that have associated code projects, including PaperTutorials/Frontiers2014 and others under review; see PaperTutorials for the latest list. It also includes support for new library versions that have been released since Chaste 3.2, and for the latest version of Ubuntu.

Headline features

General

  • A new run time flag -citations [file] was implemented that generates a list of BibTeX-format citations for the libraries/algorithms used in a particular run. With no arguments the citations are printed to std::cout. With an optional argument they are printed to a file on disk (note: a relative or absolute path may be given but the directory must exist and be writeable).
  • Chaste works with most recent PETSc versions up to and including PETSc 3.5.
  • Recent releases of Boost (1.56 and newer) are now supported, and support for versions prior to 1.40 has been dropped.
  • CodeSynthesis XSD version 4.0 is now supported.
  • Ubuntu Utopic (14.10) is now supported.

Cardiac

  • Meshalyzer output is now off by default, as more people are using VTK. It can be turned back on with HeartConfig::Instance()->SetVisualizeWithMeshalyzer().
  • A human heart mesh has been added to our public data repository: https://chaste.cs.ox.ac.uk/trac/browser/data/public

Cell-based

  • The re-factoring of the way cell populations write data to file, begun in the last release, has been further refined. See below for more details.

Major new functionality & code changes

General

  • PETSc 3.5 support has been added. If you have been solving nonlinear systems with your own Jacobian matrices, then the method interface needs to change to work with PETSc 3.5. The commit r22721 gives lots of examples of how to do this.
  • In Boost 1.56 the algorithm for generating normal random numbers has changed, to fix a bug in earlier Boost versions. Chaste now uses that algorithm across all Boost versions, giving consistent results, but this means random numbers have changed from previous Chaste releases, and this may change simulation results.

Cardiac

  • The formulation for extended biodomain (tridomain) has been changed from solving for voltages (3 phi variables at each point in space) to transmembrane potentials (1 phi and 2 V_m variables at each point in space). The new matrix formulation is symmetric and hence faster linear solvers (conjugate gradient) are now used by default. Checkpointing is backward compatible.
  • The list of Oxford CellML metadata has been moved to a new file oxford-metadata.ttl, see CodeGenerationFromCellML for more details.
  • Lookup table settings can take advantage of automatic units conversion.
  • A new lightweight output class has been added as an addition (or replacement) to HDF5 output and post-processing. There are currently two concrete implementations: class:SingleTraceOutputModifier which outputs time and voltage(s) at a single node to a named file during the simulation and ​class:ActivationOutputModifier which computes a limited number of activation/recovery times at every node with results being written to file at the end of the simulation.

Cell-based

  • The method OutputSimulationModifierParameters() has been added to the simulation modifier class hierarchy. This is pure virtual in AbstractCellBasedSimulationModifier so must be provided by subclasses.
  • For clarity, CellLocationWriter and CellVariablesWriter have been renamed to CellLocationIndexWriter and CellCycleModelProteinConcentrationsWriter respectively; their associated output filenames and VTK cell data names have also been updated.
  • Writers which involve total counts of cells (CellMutationStatesCountWriter, CellProliferativeTypesCountWriter and CellProliferativePhasesCountWriter) form a new subclass which behaves differently to the CellPopulationWriter class. They should be added to the population with AddCellPopulationCountWriter<>().

Minor

New functionality and code changes, which may still require changes to user code.

General

  • Code timing should now be done with the class:Timer, rather than manual calls to std::clock or MPI_Wtime.
  • Updated random normal distribution sampling using RandomNumberGenerator - it has been altered to match the results from the latest boost (no matter what version of boost you are using): a small bug fix introduced in boost 1.56.
  • Fixed a bug in reseeding random normal numbers. If you had called a random normal distribution sample an odd number of times, the first number you got after reseeding was what the next one should have been before reseeding.
  • We have replaced all occurrences of PetscTruth with PetscBool. New code should be written to use the newer type (PetscBool).
  • Some new utility methods have been added: OutputFileHandler::GetRelativePath, PetscTools::IsInitialised, FileComparison::IgnoreBlankLines

Cardiac

  • If using many different cell models with lookup tables, the memory used could become excessive. A new FreeMemory() method has been added to the class:AbstractLookupTableCollection class for releasing memory when a particular cell model is no longer needed. Note that if you are just using multiple instances of the same cell model there is no need for this, as the lookup tables are shared between instances.
  • Running a parallel cardiac simulation on more processes than suitable for the size of the problem now produces an error which terminates the simulation (rather than a warning). This is to avoid potential deadlock later in the run.
  • There is a new method SetSolver() on class:AbstractCardiacCellInterface, and a method HasAnalyticJacobian on class:AbstractCvodeSystem.
  • The class:CellMLLoader now copies .out files if present, meaning it can generate analytic Jacobians for CVODE.
  • When using CVODE in tissue simulations we now perform a reset on the rare occasions that it fails to solve.
  • Added (somewhat slow) support for lookup tables in generalised Rush-Larsen models.

Cell-based

  • There's now a new AbstractCellBasedWithTimingsTestSuite which uses Timer, and then calls the normal AbstractCellBasedTestSuite setUp and tearDown methods.
  • There's now a ReturnSimulationModifiers method (on the simulation) to return the vector of simulation modifiers.
  • The redundant VertexElementMap input argument has been removed from the MutableVertexMesh methods CheckForSwapsFromShortEdges() and IdentifySwapType().

Future Plans

  • Tested support for various older versions of third party libraries will likely be dropped in the next release. See InstallGuides/DependencyVersions for up-to-date information as development progresses.