FreeFem / FreeFem-sources

FreeFEM source code
https://freefem.org/
Other
745 stars 187 forks source link
finite-element-analysis finite-element-methods finite-elements freefem freefem-sources partial-differential-equations simulation-framework
CI / CD tools | LGTM | Coverity | |:----:|:--------:| | [![Language grade: C/C++](https://img.shields.io/lgtm/grade/cpp/g/FreeFem/FreeFem-sources.svg?logo=lgtm&logoWidth=18)](https://lgtm.com/projects/g/FreeFem/FreeFem-sources/context:cpp) | Coverity Scan Build Status | Jenkins ([FreeFEM-dev](https://ci.inria.fr/freefem-dev/)): *Develop branch only* | | macOS | Ubuntu | Windows| |:-------:|:---------:|:---------:|:------:| | **Job** | **10.14** | **20.04** | **10** | | #1 | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job1)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job1/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job1)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job1/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-windows10-job1)](https://ci.inria.fr/freefem-dev/view/Windows%207/job/FreeFEM-sources-windows10-job1/) | | #2 | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job2)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job2/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job2)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job2/) | | | #3 |[![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job3)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job3/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job3)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job3/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-windows10-job3)](https://ci.inria.fr/freefem-dev/view/Windows%207/job/FreeFEM-sources-windows10-job3/) | | #4 (OpenMPI) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job4_openmpi)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job4_openmpi/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job4_openmpi)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job4_openmpi/) | | | #4 (MPICH) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job4_mpich)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job4_mpich/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job4_mpich)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job4_mpich/) | | | #4 (MSMPI) | | | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-windows10-job4)](https://ci.inria.fr/freefem-dev/view/Windows%207/job/FreeFEM-sources-windows10-job4/) | | #5 (OpenMPI) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job5_openmpi)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job5_openmpi/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job5_openmpi)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job5_openmpi/) | | | #5 (MPICH) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-macos1014-job5_mpich)](https://ci.inria.fr/freefem-dev/job/FreeFEM-sources-macos1014-job5_mpich/) | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-ubuntu2004-job5_mpich)](https://ci.inria.fr/freefem-dev/view/Ubuntu%2020.04/job/FreeFEM-sources-ubuntu2004-job5_mpich/) | | | #5 (MSMPI) | | | [![Build Status](https://ci.inria.fr/freefem-dev/buildStatus/icon?job=FreeFEM-sources-windows10-job5)](https://ci.inria.fr/freefem-dev/view/Windows%207/job/FreeFEM-sources-windows10-job5/) | Jenkins ([FreeFEM](https://ci.inria.fr/freefem/)): *Master branch* | Release | .pkg | AppImage | .deb | .exe | Docker | |:-------:|:----:|:--------:|:----:|:----:|:------:| | [![Build Status](https://ci.inria.fr/freefem/buildStatus/icon?job=FreeFEM-sources-createRelease)](https://ci.inria.fr/freefem/view/Master/job/FreeFEM-sources-createRelease/) | [![Build Status](https://ci.inria.fr/freefem/buildStatus/icon?job=FreeFEM-sources-deployPKG)](https://ci.inria.fr/freefem/view/Master/job/FreeFEM-sources-deployPKG/) | [![Build Status](https://ci.inria.fr/freefem/buildStatus/icon?job=FreeFEM-sources-deployAppImage)](https://ci.inria.fr/freefem/view/Master/job/FreeFEM-sources-deployAppImage/) | [![Build Status](https://ci.inria.fr/freefem/buildStatus/icon?job=FreeFEM-sources-deployDEB)](https://ci.inria.fr/freefem/view/Master/job/FreeFEM-sources-deployDEB/) | [![Build Status](https://ci.inria.fr/freefem/buildStatus/icon?job=deployEXE)](https://ci.inria.fr/freefem/view/Master/job/deployEXE/) | [![Build Status](https://ci.inria.fr/freefem/buildStatus/icon?job=FreeFEM-docker)](https://ci.inria.fr/freefem/view/Docker/job/FreeFEM-docker/) | See [CI/CD Tools](#cicd-tools)

FreeFEM sources

FreeFEM is a partial differential equation solver for non-linear multi-physics systems in 2D and 3D using the finite element method.

Problems involving partial differential equations from several branches of physics such as fluid-structure interactions require interpolations of data on several meshes and their manipulation within one program.

FreeFEM includes a fast interpolation algorithm and a language for the manipulation of data on multiple meshes. It is written in C++ and the FreeFEM language is a C++ idiom.

For users

The user documentation is available here.

If you use FreeFEM for academic research, please use the following:

BibTeX:

@article{MR3043640,
  AUTHOR = {Hecht, F.},
  TITLE = {New development in FreeFem++},
  JOURNAL = {J. Numer. Math.},
  FJOURNAL = {Journal of Numerical Mathematics},
  VOLUME = {20}, YEAR = {2012},
  NUMBER = {3-4}, PAGES = {251--265},
  ISSN = {1570-2820},
  MRCLASS = {65Y15},
  MRNUMBER = {3043640},
  URL = {https://freefem.org/}
}

APA:

Hecht, F. (2012). New development in FreeFem++. Journal of numerical mathematics, 20(3-4), 251-266.

ISO 690:

HECHT, Frédéric. New development in FreeFem++. Journal of numerical mathematics, 2012, vol. 20, no 3-4, p. 251-266.

MLA:

Hecht, Frédéric. "New development in FreeFem++." Journal of numerical mathematics 20.3-4 (2012): 251-266.

For developers

All development efforts take place in the develop branch (or in feature branches: feature-cmake, geneo4PETSc, ... for specific projects)

Do not commit on master branch!

Have a look on the Wiki!

CI/CD Tools

FreeFEM-dev

See Jenkins configuration files

FreeFEM

All: all dependency packages are installed (computer with root access).
No: dependency packages are not installed (computer without root access).

1: Ubuntu 18.04 x86

2: macOS 10.13

3: macOS 10.9

4: Windows 7 + MSYS2 + MS MPI 7

Executed commands:

Automatic configuration:

autoreconf -i

Configuration:

./configure --enable-download --enable-optim

If you do not have administrator rights or do not want FreeFEM files scattered around on your machine, please use the --prefix option, e.g.:

./configure --enable-download --enable-optim --prefix=${HOME}/FreeFem-install

Download:

./3rdparty/getall -a

PETSc:

cd 3rdparty/ff-petsc
make petsc-slepc
cd -
./reconfigure

Make:

make -j2
make check

Install:

(sudo) make install

See CI/CD Tools Wiki for more informations.