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.4


Release 2017.1 (changes since Release 3.4)

Headline features

  • Chaste's build system has moved from scons to cmake (although scons will work with this release, it may not be supported in future).
  • Chaste now uses C++11 rather than C++98, and users and developers can begin to use the new features introduced in C++11.
  • We have updated support for dependencies and new compilers, up to gcc 7.2, intel 17 and clang 5.0. Chaste 2017.1 is compatible with all Ubuntus up to 17.10 that are still in support.
  • We have changed our version control system (from svn to git), which allows users more flexibility in choosing the stability of their Chaste version. Releases such as this are the most stable, but a host of other options now available, and listed at ChasteGuides/ExternalDeveloperGuide. The repository is mirrored at https://github.com/Chaste/Chaste.
  • Chaste no longer supports cmake < 2.8.12, scons, PETSc < 3.4, Boost < 1.54, HDF5 < 1.8.11, XSD < 3.3, Xerces < 3.1.1, Sundials < 2.5.0, and VTK < 5.8, as these were dropped with Ubuntu 12.04.

New functionality & code changes

Cell-based

  • Member variables have been added to NodeAttributes to store neighbouring nodes, speeding up node-based simulations by a factor of between 2 and 3.
  • Improvements to vertex robustness and speed:
    • The method GetShortAxisOfElement() has made more robust to cell size.
    • A member variable mDistanceForT3SwapChecking has been added to MutableVertexMesh, which can be used to speed up vertex model simulations with a free boundary.
    • The restriction on vertex displacements at each timestep of vertex model simulations has been made optional by the addition of a member variable mRestrictVertexMovement to VertexBasedCellPopulation.
  • Some cell-cycle models have been renamed (AbstractSimpleGenerationBasedCellCycleModel to AbstractSimpleGenerationalCellCycleModel, ExponentiallyDistributedStochasticDurationGenerationBasedCellCycleModel to ExponentialG1GenerationalCellCycleModel, FixedDurationGenerationBasedCellCycleModel to FixedG1GenerationalCellCycleModel, GammaDistributedStochasticDurationCellCycleModel to GammaG1CellCycleModel, StochasticDurationCellCycleModel to UniformCellCycleModel, StochasticDurationGenerationBasedCellCycleModel to UniformG1GenerationalCellCycleModel).
  • The cell-cycle model hierarchy has been refactored to allow models with no phase, with new classes AbstractOdeBasedPhaseBasedCellCycleModel, AbstractPhaseBasedCellCycleModel, BernoulliTrialCellCycleModel, FixedSequenceCellCycleModel, and NoCellCycleModel added.
  • DiagonalVertexBasedDivisionRule has been renamed to FixedVertexBasedDivisionRule, and new cell division rules AbstractCentreBasedDivisionRule, FixedCentreBasedDivisionRule, RandomDirectionCentreBasedDivisionRule, and ShovingCaBasedDivisionRule have been added.
  • Several methods for adding and removing update rules have changed location and name (e.g. AddUpdateRule(), RemoveAllUpdateRules() and GetUpdateRuleCollection()).
  • Off-lattice models now allow for numerical integration schemes other than Forward Euler to be specified (see AbstractNumericalMethod and subclass).
  • A bug relating to archiving of cell-based simulations has been fixed.
  • Node attributes are now correctly copied upon mesh creation and cell division events in centre-based models.
  • A new class CellDataWriter and method OffLatticeSimulation::rGetForceCollection() have been added.
  • Labelled cells now by default have the default damping constant, not the mutant damping constant.
  • To streamline the cell-based code, the methods GetDefaultTimeStep(), WriteCellPopulationDataToVisualizerSetupFile(), WriterForceDataToVisualizerSetupFile(), CopySrnModelVariables() and SimulationSetupHook() have been added.
  • Target area modifiers are now permitted on non-vertex-based models.
  • A profiling test has been added for 3D node-based simulations.

Cardiac

  • The CellProperties postprocessing class can now return the times at which peak voltages occurred during each action potential.
  • Mesh partitioning now defaults to parMETIS:
    • Use of METIS for mesh partitioning is deprecated - the code will drop through to parMETIS with a warning.
    • When the PETSc/partitioner is not available the code will also drop through to parMETIS with a warning (previously the drop-through in this case was to a dumb mesh partition).
  • HDF5 output changes:
    • Hdf5DataWriter can now cache writes (to whole chunks), improving performance with high-latency I/O systems (i.e. in HPC systems). It can be enabled in cardiac problems with SetUseHdf5DataWriterCache().
    • HDF5 writer chunk size & alignment parameters can now be set from cardiac problems using <whatever>Problem.SetHdf5DataWriterTargetChunkSizeAndAlignment(...). This is useful, for example, on a striped filesystem where setting this method with the stripe size (in bytes) will mean chunks fit into and align with the stripes, resulting in best performance.
  • A bug in the CellProperties APD calculation has been fixed, it was reporting spuriously large action potential durations in the event that a sub-threshold AP preceded a super-threshold AP.
  • Some extra NodeAttributes been added (see "Cell-based" above) which have increased the memory footprint of large tissue simulations by about 0.5%, unlikely to be a problem for anyone, but mentioned here in case!
  • We are unable to support and distribute a cardiac "standalone" executable. Users who rely on it should understand that this functionality is still available but that the executable must be compiled from source.

Core

  • The box collection classes have been refactored:
    • BoxCollection renamed to ObsoleteBoxCollection, which will be deprecated once functionality (including arbitrary periodicity) has been included in the default class (DistributedBoxCollection).
    • Methods GetLocalBoxes() have been renamed rGetLocalBoxes().
  • A Chaste docker file has been added.
  • The Identifiable->GetIdentifier() method has been made more robust to segmentation faults.

Future Plans

From now on we intend to follow the Ubuntu 6 monthly release schedule, tagging our master branch once it contains support for the latest Ubuntu.