Chaste Release Notes
Release 1.1 (changes since Release 1.0)
General
- Parts of the Chaste developers wiki have now been opened to the general public. For a guest login, use the username "anonymous", and your email address as the password.
- Improved doxygen documentation.
- PyCml is now included in the main Chaste trunk (python/pycml). This means that you no longer need to download it separately. Note that the PyCml distributed with release 1 will not generate code compatible with Chaste release 1.1 (see also below).
Code changes
- Improved code portability.
- (Some of) Chaste can now be run under Cygwin; see the InstallGuides/Cygwin wiki page for details.
- Chaste now uses version 3.2.0 of XSD (although versions 2.3.1 and 3.1.1a3 are also supported for now). This should hopefully make Chaste easier to install on Macs
- Some behaviour corrections.
- For a dynamic assembler, if the matrix is constant you must now call this->SetMatrixIsConstant() in the constructor otherwise the matrix will now be assembled each timestep. If your matrix is not constant in time, you were getting wrong answers before!
- Bidomain problems with Neumann intracellular stimuli shouldn't have a solution, and there was an implementation error before which allowed them to be solved. This has been fixed, so any test with Neumann stimuli will not work. The stimulus has to be changed to a (standard) volume stimulus.
- For ELEMENT_DIM == 1 (in any SPACE_DIM) MeshalyzerMeshWriter will now output a .cnnx file rather than a .tri file for element connections.
- New functionality.
- MonodomainProblem is now templated on both ELEMENT_DIM and SPACE_DIM. It will default to using ELEMENT_DIM = SPACE_DIM if only one is supplied.
- Several helper macros have been written for debugging, see global/Debug.hpp.
- Added a CombinedOdeSystem class for simple coupling of ODE systems.
- Work in progress.
- Checkpointing of cardiac simulations is on the way. Most of the components of cardiac simulations now have their own archiving methods. Unfortunately full checkpoint and restart functionality did not make it into this release.
- There is functionality in the code and the XML for post-processing physiological quantities such as action potential duration and activation maps. This functionality may only be used at the developer level. If you are running the executable then requests in the XML file for post-processing will be ignored.
Interface changes that may require changes to user code
- General:
- Triangle and tetgen binaries are no longer included with the code and must be installed and set in the PATH. Most re-meshing still works since 2D re-mesh compiles Triangle code from source (which is included).
- The #include policy has changed. It might be the case that tests that used to compile are unable to find certain header files now. Please #include such headers explicitly as needed.
- It is now impossible to create vectors (either PETSc Vecs or DistributedVectors) directly from a DistributedVector. This must now be done via a DistributedVectorFactory. If you have a mesh, a factory can be obtained using the GetDistributedVectorFactory method. The cardiac PDEs also store a factory.
- Static iterators are not available anymore in DistributedVector. You can access the iterator from a DistributedVector object. If there isn't one in scope, use GetLow() and GetHigh() in DistributedVectorFactory (accessible via any mesh object).
- For a dynamic assembler, if the matrix is constant you must now call this->SetMatrixIsConstant() in the constructor otherwise the matrix will now be assembled each timestep. If your matrix is not constant in time, you were getting wrong answers before!
- Renamed PetscTools::NumProcs to PetscTools::GetNumProcs.
- Renamed AbstractMesh to AbstractTetrahedralMesh, there is a new AbstractMesh class, which will handle non-tetrahedral meshes.
- Heart:
- this->mpMesh is no longer directly available to cell factories, as it can be used accidentally while unset. Use the GetMesh() method instead.
- Cardiac cell models are now constructed using boost::shared_ptr<> instead of normal pointers for the 'stimulus' and 'ode solver' arguments. This will require changes to cell factories too. See files heart/test/ionicmodels/TestIonicModels.hpp and heart/src/problem/PlaneStimulusCellFactory.hpp for examples of the new usage.
- Cancer:
- WntConcentration is now templated over dimension. You will have to pass in the dimension when constructing any Wnt-dependent cell cycle model.
- SloughingCellKiller is also now templated over dimension.
- FixedCellCycleModel, StochasticCellCycleModel, and the two corresponding CellGenerators have been renamed (to FixedDurationGenerationBasedCellCycleModel and StochasticDurationGenerationBasedCellCycleModel respectively).
- The CancerParameters singleton class has been renamed TissueConfig (to match the heart code).
- cancer/src/tissue/MeshArchiveInfo has been replaced by global/src/ArchiveLocationInfo, which has slightly different usage.
Also, xsd should be defined in your hostconfig file (if it isn't on your PATH) in the form tools = {'xsd':'FILL_IN_PATH_TO_XSD_BINARY'} as it regenerates ChasteParameters.hpp/cpp during the build process.