# GetDP

# A General Environment for the Treatment of Discrete Problems

#### Patrick Dular and Christophe Geuzaine

GetDP is a free finite element solver using mixed elements to discretize de Rham-type complexes in one, two and three dimensions. The main feature of GetDP is the closeness between the input data defining discrete problems (written by the user in ASCII data files) and the symbolic mathematical expressions of these problems.

For example, to solve the Poisson equation `div(a grad(v)) = f` on a domain `D`, an input file ("`.pro`" file) would contain something like this:

      FunctionSpace {
        { Name H1; Type Form0;
          BasisFunction {
            { Name sn; NameOfCoef vn; Function BF_Node; Support D; Entity NodesOf[All]; }
          }
        }
      }
      Formulation{
        { Name Poisson; Type FemEquation;
          Quantity {
            { Name v; Type Local; NameOfSpace H1; }
          }
          Equation {
            Integral { [ a[] * Dof{d v}, {d v} ] ; In D; Jacobian V; Integration I; }
            Integral { [ f[], {v} ] ; In D; Jacobian V; Integration I; }
          }
        }
      }

i.e., a direct transcription of the discrete function space and weak formulation of the problem.

See GetDP's reference manual for a more thorough overview of GetDP's capabilities.

## Download

GetDP is distributed under the terms of the GNU General Public License (GPL):

- Current stable release (version 3.4.0, 23 September 2021):
  - Download GetDP for Windows, Linux or macOS *
  - Download the source code
- Development version:
  - Download the latest automatic GetDP snapshot for Windows, Linux or macOS *
  - Download the latest automatic source code snapshot
  - Access the Git repository: '`git clone https://gitlab.onelab.info/getdp/getdp.git`'

- All versions: binaries and sources

If you use GetDP please cite one of the references in your work (books, articles, reports, etc.).

To help fund GetDP development, you can make a donation.

* Binary releases are compiled with PETSc, with support for the multi-threaded direct sparse linear solver MUMPS, and require Windows 10, Linux with glibc ≥ 2.24, or macOS ≥ 10.15. Distributed memory versions for computer clusters (using MPI) should be compiled from source.

## Documentation

- GetDP reference manual (stable release) (also available in pdf and in plain text)
- GetDP reference manual (development version) (also available in pdf and in plain text)
- Step-by-step tutorials and various examples highlighting physical models and numerical techniques
- Gitlab development site with a wiki, time line of changes and the bug tracking database
- Changelog

Please report all issues on `https://gitlab.onelab.info/getdp/getdp/issues`.

## Licensing

GetDP is copyright (C) 1997-2021 by P. Dular and C. Geuzaine, University of Liège (see the CREDITS file for more information), and is distributed under the terms of the GNU General Public License (GPL) (version 2 or later).

In short, this means that everyone is free to use GetDP and to redistribute it on a free basis. GetDP is not in the public domain; it is copyrighted and there are restrictions on its distribution (see the license and the related FAQ). For example, you cannot integrate this version of GetDP (in full or in parts) in any closed-source software you plan to distribute (commercially or not). If you want to integrate parts of GetDP into a closed-source software, or want to sell a modified closed-source version of GetDP, you will need to obtain a different license. Please contact us directly for more information.

## Links

- GetDP uses either PETSc or SPARSKIT to solve linear systems, and ARPACK or SLEPc to solve eigenvalue problems.
- Gmsh can be used as a graphical front-end for GetDP, through the ONELAB interface.
- GetDP and Gmsh are bundled in the ONELAB mobile app for Android and iOS.