FreeFEM Documentation on GitHub

stars - forks

# Installation guide

To use FreeFEM, two installation methods are available: user access (binarie package) and access developers (from the source code). Follow the section corresponding to your type of installation.

## Using binaries package

First, open the following web page download page and choose your platform: Linux, MacOS or Windows.

Note

Binary packages are available for Microsoft Windows, MacOS and some Linux distributions.

Install FreeFEM by double-clicking on the appropriate file. Under Linux and MacOS the install directory is one of the following /usr/local/bin, /usr/local/share/freefem++, /usr/local/lib/ff++

### Windows installation

First download the windows installation executable, then double click to install FreeFEM.

In most cases just answer yes (or type return) to all questions.

Otherwise in the Additional Task windows, check the box “Add application directory to your system path.” This is required otherwise the program ffglut.exe will not be found.

By now you should have two new icons on your desktop:

• FreeFem++ (VERSION).exe, the freefem++ application.
• FreeFem++ (VERSION) Examples, a link to the freefem++ examples folder.

where (VERSION) is the version of the files (for example 3.59).

By default, the installed files are in C:\Programs Files\FreeFem++. In this directory, you have all the .dll files and other applications: FreeFem++-nw.exe, ffglut.exe, … The syntax for the command-line tools are the same as those of FreeFem.exe.

### macOS X installation

Download the MacOS X binary version file, extract all the files by double clicking on the icon of the file, go the the directory and put the FreeFem++.app application in the /Applications directory.

If you want terminal access to FreeFEM just copy the file FreeFem++ in a directory of your $PATH shell environment variable. ### Ubuntu binary installation Note The Debian package is build for Ubuntu 18.04 Beforehand, install the following dependances libraries using the apt tool:  1 sudo apt-get install libhdf5-dev libsuitesparse-dev libarpack2-dev  Download the package FreeFEM .deb, install it by double clicking on the icon of the file. FreeFEM is directly available in your terminal by the command “FreeFem++”. ### Arch AUR package An up-to-date package of FreeFEM for Arch is available on the Archlinux user repository. To install it:  1 2 3 git clone https://aur.archlinux.org/freefem++-git.git cd freefem++-git makepkg -si  Note Thanks to Stephan Husmann ## Compiling source code 2 worked versions of FreeFEM are possible: minimal and full - 1/ sequential and without plugins (contains in 3rdparty) 2/ full: parallel with plugins. .. note:: We advise you to use the package manager for macOS Homebrew to get the different packages required avalaible here ### Compilation on OSX (>=10.13) 1. Install Xcode, Xcode Command Line tools and Xcode Additional Tools from the Apple website 2. Install gcc and gfortran from Homebrew  1  brew install gcc  3. To use FreeFEM parallel version, install the openmpi source code  1 2 3  curl -L https://download.open-mpi.org/release/open-mpi/v4.0/openmpi-4.0.1.tar.gz --output openmpi-4.0.1.tar.gz tar xf openmpi-4.0.1 cd openmpi-4.0.1/  • with brew gcc gfortran compilers  4  ./configure CC=clang CXX=clang++ FC=gfortran-9 F77=gfortran-9 --prefix=/usr/local  • with LLVM gcc and brew gfortran compilers  4 ./configure CC=gcc-9 CXX=g++-9 FC=gfortran-9 F77=gfortran-9 --prefix=/usr/local   5 6  make sudo make install  4. Install the required libraries for FreeFEM  1 brew install m4 git flex bison  5. If you want build your own configure according your system, install autoconf and automake from Homebrew (optional, see note in step 10)  1 2 brew install autoconf brew install automake  6. To use FreeFEM with its plugins, install rom Homebrew suitesparse, hdf5, cmake, wget  1 brew install suitesparse hdf5 cmake wget  7. Install gsl  1 2 3 4 5 6 curl -O http://mirror.cyberbits.eu/gnu/gsl/gsl-2.5.tar.gz tar zxvf gsl-2.5.tar.gz cd gsl-2.5 ./configure make sudo make install  8. Download the latest Git for Mac installer git and the FreeFEM source from the repository  1 git clone https://github.com/FreeFem/FreeFem-sources.git  9. Configure your source code  1 2  cd FreeFem-sources autoreconf -i  Note if your autoreconf version is too old, do tar zxvf AutoGeneratedFile.tar.gz • with LLVM gcc and brew gfortran compilers  3 ./configure --enable-download CC=clang CXX=clang++ F77=gfortran-9 FC=gfortran-9  • with brew gcc and brew gfortran compilers  3 ./configure --enable-download CC=gcc-9 CXX=g++-9 F77=gfortran-9 FC=gfortran-9  10. Download the 3rd party packages to use FreeFEM plugins  1 ./3rdparty/getall -a  Note All the third party packages have their own licence 1. If you want use HPDDM (High Performance Domain Decomposition Methods) for massively parallel computing, install PETSc/SLEPc  1 2 3 4 cd 3rdparty/ff-petsc make petsc-slepc SUDO=sudo cd - ./reconfigure  1. Build your FreeFEM library and executable  1 2 3 4 make -j make check .. note:: make check is optionnally, but advise to check the validity of your **FreeFEM** building  1. Install the FreeFEM apllication sudo make install Note To install FreeFEM, it is recommanded to change the user ID of your installation directory instead of using SUDO. ### Compilation on Ubuntu 1. Install the following packages on you system   1 2 3 4 5 6 7 8 9 10 sudo apt-get update && sudo apt-get upgrade sudo apt-get install cpp freeglut3-dev g++ gcc gfortran \ m4 make patch pkg-config wget python unzip \ libopenblas-dev liblapack-dev libhdf5-dev libgsl-dev \ libscotch-dev libfftw3-dev libarpack2-dev libsuitesparse-dev \ libmumps-seq-dev libnlopt-dev coinor-libipopt-dev libgmm++-dev libtet1.5-dev \ gnuplot-qt autoconf automake autotools-dev bison flex gdb valgrind git cmake # mpich is required for the FreeFem parallel computing version sudo apt-get install mpich  Warning In the oldest distribution of Ubuntu, libgsl-dev does not exists, use libgsl2-dev instead 2. Download FreeFEM source from the repository  1 git clone https://github.com/FreeFem/FreeFem-sources.git  3. Autoconf  1 2 cd FreeFem-sources autoreconf -i  Note if your autoreconf version is too old, do tar zxvf AutoGeneratedFile.tar.gz 4. Configure  1 ./configure --enable-download --enable-optim  Note To see all the options, type ./configure --help 5. Download the 3rd party packages  1 ./3rdparty/getall -a  Note All the third party packages have their own licence 6. If you want use HPDDM (High Performance Domain Decomposition Methods) for massively parallel computing, install PETSc/SLEPc  1 2 3 4 cd 3rdparty/ff-petsc make petsc-slepc SUDO=sudo cd - ./reconfigure  7. Build your FreeFEM library and executable  1 2 make -j make check  Note make check is optionnally, but advise to check the validity of your FreeFEM building 1. Install the executable  1 sudo make install  ### Compilation on Arch Linux Warning As Arch is in rolling release, the following information can be quickly outdated ! Warning FreeFEM fails to compile using the newest version of gcc 8.1.0, use an older one instead. 1. Install the following dependencies:  1 2 3 4 5 6 pacman -Syu pacman -S git openmpi gcc-fortran wget python freeglut m4 make patch gmm blas lapack hdf5 gsl fftw arpack suitesparse gnuplot autoconf automake bison flex gdb valgrind cmake texlive-most  2. Download the FreeFEM source from the repository  1 git clone https://github.com/FreeFem/FreeFem-sources.git  3. Autoconf  1 2 cd FreeFem-sources autoreconf -i  4. Configure  1 ./configure --enable-download --enable-optim  Note To see all the options, type ./configure --help 5. Download the packages  1 ./3rdparty/getall -a  Note All the third party packages have their own licence 6. Compile petsc & slepc  1 2 3 cd 3rdparty/ff-petsc make petsc-slepc SUDO=sudo cd -  7. If you want use HPDDM (High Performance Domain Decomposition Methods) for massively parallel computing, install PETSc/SLEPc  1 ./reconfigure  8. Compile the FreeFEM source  1 make  Note If your computer has many threads, you can run make in parallel using make -j16 for 16 threads, for example. Note Optionnally, check the compilation with make check 9. Install the FreeFEM application  1 sudo make install  ### Compilation on Linux with Intel software tools Follow the guide ### Compilation on Windows Warning The support ended for all releases under Windows 32 bits since the V4. We assume your development machine is 64-bit, and you want your compiler to target 64-bit windows by default. 1. Install the Microsoft MPI v7.0 (archived) (msmpisdk.msi and MSMpiSetup.exe) Note 2019/07/07 • Microsoft MPI v10.0 isn’t usable in MSYS/mingw64 with gfortran more information here • Microsoft MPI v9: mpiexec.exe doesn’t run 1. Download msys2-x86_64-latest.exe (x86_64 version) and run it. 2. Install the version control system Git for Windows 4. In the MSYS2 shell, execute the following. Hint: if you right click the title bar, go to Options -> Keys and tick “Ctrl+Shift+letter shortcuts” you can use Ctrl+Shift+V to paste in the MSYS shell.  1  pacman -Syuu  Close the MSYS2 shell once you’re asked to. There are now 3 MSYS subsystems installed: MSYS2, MinGW32 and MinGW64. They can respectively be launched from C:devmsys64msys2.exe, C:devmsys64mingw32.exe and C:devmsys64mingw64.exe Reopen MSYS2 (doesn’t matter which version, since we’re merely installing packages). Repeatedly run the following command until it says there are no further updates. You might have to restart your shell again.  1  pacman -Syuu  1. Now that MSYS2 is fully up-to-date, install the following dependancies • for 64bits system (all FreeFEM release version):   1 2 3 4 5 6 7 8 9 10 pacman -S autoconf automake-wrapper bash bash-completion \ bison bsdcpio bsdtar bzip2 coreutils curl dash file filesystem \ findutils flex gawk gcc gcc-fortran gcc-libs grep gzip inetutils \ info less lndir make man-db git mingw-w64-x86_64-freeglut \ mingw-w64-x86_64-toolchain mingw-w64-x86_64-gsl mingw-w64-x86_64-hdf5 \ mingw-w64-x86_64-openblas mintty msys2-keyring msys2-launcher-git \ msys2-runtime ncurses pacman pacman-mirrors pactoys-git patch \ pax-git python perl pkg-config pkgfile rebase sed tar tftp-hpa time \ tzcode unzip util-linux which mingw-w64-x86_64-libmicroutils \ mingw-w64-x86_64-arpack cmake python2  • for 32bits system (less FreeFEM release V4 is not currently supported):  1 2 3 4 5 6 7 8 9 pacman -S autoconf automake-wrapper bash bash-completion \ bison bsdcpio bsdtar bzip2 coreutils curl dash file filesystem \ findutils flex gawk gcc gcc-fortran gcc-libs grep gzip inetutils \ info less lndir make man-db git mingw-w64-i686-freeglut \ mingw-w64-i686-toolchain mingw-w64-i686-gsl mingw-w64-i686-hdf5 \ mingw-w64-i686-openblas mintty msys2-keyring msys2-launcher-git \ msys2-runtime ncurses pacman pacman-mirrors pactoys-git patch pax-git \ perl pkg-config pkgfile rebase sed tar tftp-hpa time tzcode unzip \ util-linux which  2. Open a MingW64 terminal (or MingW32 for old 32 bits FreeFEM version) and compile the FreeFEM source   1 2 3 4 5 6 7 8 9 10 11 git clone https://github.com/FreeFem/FreeFem-sources cd FreeFem-sources autoreconf -i ./configure ./configure --enable-generic --enable-optim \ --enable-download --enable-maintainer-mode \ CXXFLAGS=-mtune=generic CFLAGS=-mtune=generic \ FFLAGS=-mtune=generic--enable-download --disable-hips ./3rdparty/getall -a make -j4 make check make install  The FreeFEM executable (and some other like ffmedit, …) are in C:\msys64\mingw64\bin (or C:\msys32\mingw32\bin). ## FreeFEM continuous integration The Inria Jenkins platform is used for the CI/CD integration of the source code. Compilation results of the develop branch by OS type and configuration of FreeFEM are here Branch Linux 16.04 Linux 18.04 MacOS 10.10.5 MacOS 10.13.5 Windows 7 Develop Develop compiles in DEBUG runs MPI & PETSc/SLEPS ## Environment variables and init file FreeFEM reads a user’s init file named freefem++.pref to initialize global variables: verbosity, includepath, loadpath. Note The variable verbosity changes the level of internal printing (0: nothing unless there are syntax errors, 1: few, 10: lots, etc. …), the default value is 2. The included files are found in the includepath list and the load files are found in the loadpath list. The syntax of the file is:  1 2 3 4 5 6 7 8 9 verbosity = 5 loadpath += "/Library/FreeFem++/lib" loadpath += "/Users/hecht/Library/FreeFem++/lib" includepath += "/Library/FreeFem++/edp" includepath += "/Users/hecht/Library/FreeFem++/edp" # This is a comment load += "funcTemplate" load += "myfunction" load += "MUMPS_seq"  The possible paths for this file are • under Unix and MacOs  1 2 3 /etc/freefem++.pref$(HOME)/.freefem++.pref freefem++.pref 
• under windows
 1 freefem++.pref 

We can also use shell environment variables to change verbosity and the search rule before the init files.

 1 2 3 export FF_VERBOSITY=50 export FF_INCLUDEPATH="dir;;dir2" export FF_LOADPATH="dir;;dir3" 

Note

The separator between directories must be “;” and not “:” because “:” is used under Windows.

Note

To show the list of init of FreeFEM , do

 1 2 export FF_VERBOSITY=100; ./FreeFem++-nw 

## Coloring Syntax FreeFem++

### Atom

In order to get the syntax highlighting in Atom, you have to install the FreeFEM language support.

You can do it directly in Atom: Edit -> Preferences -> Install, and search for language-freefem-offical.

To launch scripts directly from Atom, you have to install the atom-runner package. Once installed, modify the Atom configuration file (Edit -> Config…) to have something like that:

 1 2 3 4 5 6 7 8 "*": ... runner: extensions: edp: "FreeFem++" scopes: "Freefem++": "FreeFem++" 

Reboot Atom, and use Alt+R to run a FreeFem++ script.

### Gedit

In order to get the syntax highlighting in Gedit, you have to downlaod the Gedit parser and copy it in /usr/share/gtksourceview-3.0/language-specs/.

### Textmate 2, an editor under macOS

To use the coloring FreeFEM syntax with the Textmate 2 editor on Mac 10.7 or better, download from macromates.com and download the textmate freefem++ syntax here (version june 2107). To install this parser, unzip Textmate2-ff++.zip and follow the explanation given in file How_To.rtf.

rom www.freefem.org/ff++/Textmate2-ff++.zip (version june 2107) unzip Textmate2-

### Notepad++,an editor under windows

Read and follow the instruction, FREEFEM++ COLOR SYNTAX OF WINDOWS .

### Emacs editor

For emacs editor you can download ff++-mode.el .