Building GLVis
A simple tutorial how to build and run GLVis together with MFEM. For more details, see the INSTALL file.
Dependencies
Starting with version 4.0, GLVis requires the following dependencies in order to build and run: SDL2, GLEW, GLM, Freetype, and Fontconfig. Optional dependencies include libpng and/or libtiff for taking screenshots.
Most of these dependencies can be installed through your system's package manager:
Ubuntu/Debian (apt-based)
apt-get install libfontconfig1-dev libfreetype-dev libsdl2-dev libglew-dev libglm-dev libpng-dev
Fedora/RHEL
dnf install fontconfig-devel freetype-devel SDL2-devel glew-devel glm-devel libpng-devel
Mac OS X (Homebrew)
brew install fontconfig freetype sdl2 glew glm libpng
Compilation
Download MFEM and GLVis (below we assume that we are working with version 4.0)
Put everything in the same directory:
~> ls
glvis-4.0.tgz mfem-4.2.tgz
Build the serial version of MFEM:
~> tar -zxvf mfem-4.2.tgz
~> cd mfem-4.2
~/mfem-4.2> make serial -j
Build GLVis:
~> tar -zxvf glvis-4.0.tgz
~> cd glvis-4.0
~/glvis-4.0> make MFEM_DIR=../mfem-4.2 -j
That's it! The glvis
executable can be found in the glvis-4.0
directory.
Testing and rebuilding
To test the build, visualize a mesh with
~/glvis-4.0> ./glvis -m ../mfem-4.2/data/escher.mesh
To start a GLVis server, open a new terminal and start glvis without arguments
~/glvis-4.0> ./glvis
To rebuild GLVis after changes in MFEM (e.g. if MFEM has rebuild in parallel), do:
~/glvis-4.0> make clean
~/glvis-4.0> make MFEM_DIR=../mfem-4.2 -j
Using secure sockets
As of version 3.2, GLVis can be built with support for secure sockets using the
GnuTLS library through MFEM's class socketstream
. This
option may be useful in multi-user environment to prevent users from
sending/receiving visualization data to/from other users. To enable this
support, first configure MFEM version 3.2 or later with
~/mfem-3.2> make config MFEM_USE_GNUTLS=YES
For more details consult MFEM's
INSTALL
file.
After configuration, build MFEM and GLVis as usual:
~/mfem-3.2> make -j
~/mfem-3.2> cd ../glvis-3.2
~/glvis-3.2> make clean && make MFEM_DIR=../mfem-3.2 -j
In order to use the secure sockets with the GLVis server and client applications
like MFEM's
Example 1,
one needs to generate GLVis server and client key pairs. The simplest way to do
that is to use the
glvis-keygen.sh
script in the main GLVis directory:
~/glvis-3.2> bash glvis-keygen.sh "User Name" "user@host.org"
The key generation requires the gpg2
tool from GnuPG.
The generated keys are saved in ~/.config/glvis/server
and
~/.config/glvis/client
.
With this option enabled, GLVis will use secure sockets by default, as indicated by the additional message after the logo:
~/glvis-3.2> ./glvis
_/_/_/ _/ _/ _/ _/
_/ _/ _/ _/ _/_/_/
_/ _/_/ _/ _/ _/ _/ _/_/
_/ _/ _/ _/ _/ _/ _/_/
_/_/_/ _/_/_/_/ _/ _/ _/_/_/
Generating DH params (1024 bits) ... done.
Waiting for data on port 19916 ...
The secure sockets can be disabled with the -no-sec
or --standard-sockets
command line options.