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 arXiv preprint:
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.2
1.76.0
9.3.1
2.3.2
3.15.1
2021.3.0
13.0.1
In 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.