Chaste is an open-source C++ library for computational biology that has well-developed cardiac electrophysiology tissue simulation support. In this paper, we introduce the features available for performing cardiac electrophysiology action potential simulations using a wide range of models from the Physiome repository. The mathematics of the models are described in CellML, with units for all quantities. The primary idea is that the model is defined in one place (the CellML file), and all model code is auto-generated at compile or run time; it never has to be manually edited. We use ontological annotation to identify model variables describing certain biological quantities (membrane voltage, capacitance, etc.) to allow us to import any relevant CellML models into the Chaste framework in consistent units and to interact with them via consistent interfaces. This approach provides a great deal of flexibility for analysing different models of the same system. Chaste provides a wide choice of numerical methods for solving the ordinary differential equations that describe the models. Fixed-timestep explicit and implicit solvers are provided, as discussed in previous work. Here we introduce the Rush-Larsen and Generalized Rush-Larsen integration techniques, made available via symbolic manipulation of the model equations, which are automatically rearranged into the forms required by these approaches. We have also integrated the CVODE solvers, a 'gold standard' for stiff systems, and we have developed support for symbolic computation of the Jacobian matrix, yielding further increases in the performance and accuracy of CVODE. We discuss some of the technical details of this work and compare the performance of the available numerical methods. Finally, we discuss how this is generalized in our functional curation framework, which uses a domain-specific language for defining complex experiments as a basis for comparison of model behavior.
Keywords: C++; CellML; ODE; cardiac; electrophysiology; simulation; software.