|
DUBeat 1.0.1
High-order discontinuous Galerkin methods and applications to cardiac electrophysiology
|
DUBeat is a C++ library that exploits lifex and deal.II to provide discontinuous Galerkin methods on simplices and their applications to cardiac electrophysiology. This work originates from a project for the course of Advanced Programming for Scientific Computing at Politecnico di Milano and it is developed by Federica Botta and Matteo Calafà.
The library provides the following two methods:
They both work in either 2 or 3 dimensions depending on the lifex configuration (i.e., specifying lifex::dim).
The Dubiner method can be used with every order while the Lagrangian basis degree can be at most 2 due to the current deal.II restrictions.
If you use DUBeat for your research, please cite our paper:
The library can be used only on a linux machine with CMake ≥ 3.22.1 and GNU bash ≥ 5.1.16.
Then, DUBeat 1.0.1 relies almost exclusively on the lifex 1.5.0 installation and its dependencies. Check its download and install page to verify you satisfy all the requirements and install it.
More precisely, the library has been implemented using the libraries included in the lifex mk module, 2022.0 version. This module can be downloaded from here and we refer again to the lifex download and install page for more information. In particular, DUBeat uses from this package:
2.7.21.76.09.3.12.3.23.15.12021.3.013.0.1In addition to the core libraries, other packages need to be installed for supplementary reasons:
3.9.6 for the creation of convergence plot figures (see generate_convergence_plots.py).1.9.1 for the generation of the library documentation.2.43.0 for the automatic creation of figures included in the documentation.14.0.0 for the automatic indentation of the library codes4.0.4 for the generation of mesh files.5.9.1 for the analysis and view of numerical solutions.DUBeat 1.0.1 and use the following bash command. DUBeat is an only header library, so what you have just downloaded is already the library installation.LIFEX_PATH in the Makefile.inc file specifying your local lifex directory.In the models folder we have already provided three different models:
In addition, you find an example of main execution script in the build folder.
To run from this template, you have to follow the five next steps:
main_dubiner_dg.cpp script.make to compile the script.build folder and type main_dubiner_dg.prm parameter file.meshes folder.Results can be viewed and analysed in two ways:
ComputeErrorsDG class will write the errors on a .data file. Finally, you can use the extra/generate_convergence_plots.py script to create plots of the errors for different mesh refinements starting from a .data file.solution.xdmf with ParaView to see the contour plots of the numerical and exact solutions.The Make configuration permits to easily perform some operations that are suggested to keep a neat and working environment in DUBeat, especially for users that want to contribute to the library or personalize their problems. The following operations are to be executed on the linux command line from the library main folder:
documentation folder.It is very simple to add a new model/problem in DUBeat, just follow the next tips!
ModelDG if it is a stationary problem, while it should derive from ModelDG_t if it is a time-dependent problem.assemble_system that specifies how the linear system of the problem is defined. However, also all the other methods can be overridden based on the problem choices.assemble_DG.hpp methods.meshes and used in the default version. In case you need to use your own .msh files, you need to use the version of the create_mesh method in ModelDG that accepts a user-defined mesh path.make and indent configurations.