# 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.0.4, 9 December 2018):
  - Download GetDP for Windows 64-bit, Windows 32-bit, Linux 64-bit, Linux 32-bit, or MacOS
  - Download the source code

  The binary versions are compiled with PETSc, with support for the multi-threaded direct sparse linear solver MUMPS. Distributed memory versions for computer clusters (using MPI) should be compiled from source.

- Development version:
  - Download the latest automatic GetDP snapshot for Windows 64-bit, Windows 32-bit, Linux 64-bit, Linux 32-bit or MacOS
  - Download the latest automatic source code snapshot
  - Read the latest automatic reference manual 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.

## Documentation

- Reference manual (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
- Mailing lists:
  - getdp (archived here) is the public mailing list for GetDP discussions, and is the best place to ask questions (and get answers!)
  - getdp-announce (archived here) is a moderated ("read-only") list for announcements about new releases and other GetDP news

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

## Licensing

GetDP is copyright (C) 1997-2018 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.