*** Wartungsfenster jeden ersten Mittwoch vormittag im Monat ***

Skip to content
Snippets Groups Projects
Commit 98385107 authored by Carl-Martin Pfeiler's avatar Carl-Martin Pfeiler
Browse files

installer script added; install help updated

parent 34a28c89
No related branches found
No related tags found
No related merge requests found
# Installation instructions for ngsolve, bem++ and ngbem, created on 2018/06/12
# we consider a local installation to the ${HOME} directory
#------------------------------------------------------------------------------#
# 0) Dependencies:
# This list is probably neither complete nor strict.
# However, if you encounter problems during installation of ngsolve or bem++,
# try installing/updating these packages
# Install with package manager: (sudo apt-get install ...)
python3 python3-tk libpython3-dev libxmu-dev tk-dev tcl-dev cmake git g++ libglu1-mesa-dev liblapacke-dev cython cython3 mpich libboost-all-dev libtbb-dev python3-pip
# install with pip (pip3 install ...)
numpy scipy mpi4py pyamg
#------------------------------------------------------------------------------#
# A) NgSolve
# - We rely on a local installation, see https://ngsolve.org/docu/latest/install/installlinux.html
# add the following line to the ~/.bashrc
export NETGENDIR=${HOME}/ngs/ngsolve-install/bin
export PYTHONPATH=${HOME}/ngs/ngsolve-install/lib/python3/dist-packages/:$PYTHONPATH
export PATH=$NETGENDIR:$PATH
#------------------------------------------------------------------------------#
# B) BEM++
# again: local installation, for further information see http://www.bempp.org/installation.html
# summarizing our experience, you need the following: python3, cmake, git, cython, scipy, numpy - versions as new as possible
#------------------------------------------------------------------------------#
# B.1) Eigen
# first we need to download the "eigen" headers from http://eigen.tuxfamily.org/index.php?title=Main_Page
cd ~
mkdir eigen
cd eigen
# get newest release, i.e., numbers in the following 3 lines may vary
wget "http://bitbucket.org/eigen/eigen/get/3.3.4.tar.bz2"
tar -xjf 3.3.4.tar.bz2
mv eigen-eigen-5a0156e40feb/ eigen-headers
# that's it, nothing needs to be built here, only the Eigen headers are needed
#------------------------------------------------------------------------------#
# B.2) BEM++
# now we start the local bempp installation, further info athttp://www.bempp.org/installation.html
cd ~
mkdir bempp
cd bempp
git clone https://bitbucket.org/bemppsolutions/bempp.git bempp-src
mkdir bempp-install
mkdir bempp-build
cd bempp-build
export CXX=$(which g++-6)
cmake ../bempp-src -DEIGEN3_INCLUDE_DIR=${HOME}/eigen/eigen-headers -DPYTHON_EXECUTABLE=/usr/bin/python3 -DCMAKE_INSTALL_PREFIX=${HOME}/bempp/bempp-install
make -j8
make install
# add the following line to the ~/.bashrc
export PYTHONPATH=$PYTHONPATH:${HOME}/bempp/bempp-install/lib/python3.4/site-packages
#------------------------------------------------------------------------------#
# C) NGBEM
# good thing: it's on github now - https://github.com/arieder/ngbem
# since we use the purely Python based interface, cloning is sufficient.
cd ~
git clone https://github.com/arieder/ngbem.git ngbem
# add the following line to the ~/.bashrc
export PYTHONPATH=$PYTHONPATH:${HOME}/ngbem
#------------------------------------------------------------------------------#
# D) COMMICS
# clone this repository, e.g.,
cd ~
mkdir commics
cd commics
git clone git@gitlab.asc.tuwien.ac.at:cpfeiler/commics.git
# since commics is python3 based, nothing needs to be built
# add the following line to the ~/.bashrc
export PYTHONPATH=$PYTHONPATH:${HOME}/commics
#------------------------------------------------------------------------------#
# Commics is a Python3 module.
# It requires the installation of Netgen/NGSolve, BEM++, NGBEM, and some Python3 packages, namely scipy numpy mpi4py and pyamg.
#
# The required software packages have dependencies themselves.
# To increase accessibility, this repository contains a shell script (local_installer.sh) taking care of the installation of Commics together with all its dependencies (and the dependencies thereof).
# The script has been verified to work on a desktop PC with freshly installed Ubuntu 18.04 LTS.
# To execute the shell script, do the following:
chmod u+x local_installer.sh
./local_installer.sh
# At the beginning, you will be prompted to enter your password and confirm space requirements with Y(es) once or twice. These are the prompts of the "sudo apt" commands.
# The script will do the following:
# - Use the package manager (sudo apt install) to install required packages
# - Use Python3-pip (sudo pip3 install) to install required Python packages
# - Create a folder (default ~/Software) where Commics and its dependencies will be located
# - Use gcc-8 to build Netgen/NGSolve and BEM++
# - Clone NGBEM from GitHub
# - Clone Commics from the GitLab of TU Wien
# - Write path variables to the file WRITE_PATHS_TO (default ~/.bashrc)
# You can see the following variables and default-options in the first few lines of local_installer.sh:
# - SOFTWARE_DIR=~/Software # ... Path to installation folder
# - NR_MAKE_THREADS=2 # ... nr of jobs passed to "make -j",
# # may be increased if your hardware allows for it
# - PYTHON_INSTALLATION=/usr/bin/python3 # ... Your python3 installation
# - WRITE_PATHS_TO=~/.bashrc # ... The file to which the exports of required path-variables are appended
# # default=~/.bashrc (This file is sourced whenever you open a bash shell)
# The following are the GIT hashes used for installation.
# We recommend to use these versions, since this setup has been tested to work with Commics.
# You are free to use different versions of Netgen/NGSolve, BEM++, NGBEM,
# but as they are always under development, I cannot guarantee compatibility.
# - NGSOLVE_GIT_VERSION_HASH="0419c0285dae6589c32a5ddfaf0dea2e89a5e3b7"
# - BEMPP_GIT_VERSION_HASH="ce2ffc1ce52f07bf5890b19fb7c4389a7bb1031a"
# - NGBEM_GIT_VERSION_HASH="499138ca5dd17e812d3bdfdc0556afbff4ca340c"
# - COMMICS_GIT_VERSION_HASH=""
# If you did not alter WRITE_PATHS_TO, then the correct paths will be set whenever you open a new bash shell.
# That's it. Use "from commics import *" from within Pyhton3 to use Commics.
# Have a look at the Python scripts inside commics/tests for some example scripts.
# If you want to use Commics on a machine, where you do not have root privileges, consider these points for installation:
# - Root privileges are only required for the "sudo apt install" part of local_installer.sh
# - The sudo pip3 install [...] can be replaced by pip3 install [...] --user
# - See https://ngsolve.org/ for details on Netgen/NGSolve installation
# - See https://bempp.com/ for details on BEM++ installation
# - Apart from the official website, the instructions on http://roybijster.nl/2018/08/installing-bem-from-source are quite helpful.
#!/bin/sh
################################################################################
SOFTWARE_DIR=~/Software
NR_MAKE_THREADS=2
PYTHON_INSTALLATION=/usr/bin/python3
WRITE_PATHS_TO=~/.bashrc
################################################################################
NGSOLVE_GIT_VERSION_HASH="0419c0285dae6589c32a5ddfaf0dea2e89a5e3b7"
BEMPP_GIT_VERSION_HASH="ce2ffc1ce52f07bf5890b19fb7c4389a7bb1031a"
NGBEM_GIT_VERSION_HASH="499138ca5dd17e812d3bdfdc0556afbff4ca340c"
COMMICS_GIT_VERSION_HASH=""
################################################################################
# install requirements
sudo apt update
sudo apt upgrade
sudo apt install python3-tk libpython3-dev libxmu-dev tk-dev tcl-dev cmake git g++-8 gcc-8 libglu1-mesa-dev liblapacke-dev mpich libboost-all-dev libtbb-dev python3-pip cython3 patchelf
export CXX=$(which g++-8)
export CC=$(which gcc-8)
sudo pip3 install numpy scipy mpi4py pyamg cython
#ngsolve installation
mkdir -p ${SOFTWARE_DIR}/ngsolve
cd ${SOFTWARE_DIR}/ngsolve
git clone https://github.com/NGSolve/ngsolve.git ngsolve-src
mkdir ngsolve-install
mkdir ngsolve-build
cd ngsolve-src
git checkout ${NGSOLVE_GIT_VERSION_HASH}
git submodule update --init --recursive
cd ../ngsolve-build
cmake -DCMAKE_INSTALL_PREFIX=../ngsolve-install ../ngsolve-src
make -j${NR_MAKE_THREADS}
make install
echo "export NETGENDIR=${SOFTWARE_DIR}/ngsolve/ngsolve-install/bin" >> ${WRITE_PATHS_TO}
echo "export PYTHONPATH=\${PYTHONPATH}:${SOFTWARE_DIR}/ngsolve/ngsolve-install/lib/python3/dist-packages" >> ${WRITE_PATHS_TO}
echo "export PATH=\${PATH}:\${NETGENDIR}" >> ${WRITE_PATHS_TO}
#bem++ installation
mkdir -p ${SOFTWARE_DIR}/eigen
cd ${SOFTWARE_DIR}/eigen
wget "http://bitbucket.org/eigen/eigen/get/3.3.7.tar.bz2"
tar -xjf 3.3.7.tar.bz2
mv eigen-eigen-* eigen-headers
mkdir -p ${SOFTWARE_DIR}/bempp
cd ${SOFTWARE_DIR}/bempp
git clone https://bitbucket.org/bemppsolutions/bempp.git bempp-src
cd bempp-src
git checkout ${BEMPP_GIT_VERSION_HASH}
cd ..
mkdir bempp-install
mkdir bempp-build
cd bempp-build
cmake ../bempp-src -DEIGEN3_INCLUDE_DIR=${SOFTWARE_DIR}/eigen/eigen-headers -DPYTHON_EXECUTABLE=${PYTHON_INSTALLATION} -DCMAKE_INSTALL_PREFIX=${SOFTWARE_DIR}/bempp/bempp-install
make -j${NR_MAKE_THREADS}
make install
cd ${SOFTWARE_DIR}
PYTHON3_SUB_BEMPP_FOLDER=$(ls ${SOFTWARE_DIR}/bempp/bempp-install/lib | grep python)
echo "export PYTHONPATH=\${PYTHONPATH}:${SOFTWARE_DIR}/bempp/bempp-install/lib/${PYTHON3_SUB_BEMPP_FOLDER}/site-packages" >> ${WRITE_PATHS_TO}
#ngbem clone
cd ${SOFTWARE_DIR}
git clone https://github.com/arieder/ngbem.git ngbem
cd ngbem
git checkout ${NGBEM_GIT_VERSION_HASH}
echo "export PYTHONPATH=\${PYTHONPATH}:${SOFTWARE_DIR}/ngbem" >> ${WRITE_PATHS_TO}
#commics clone
mkdir -p ${SOFTWARE_DIR}/commics
cd ${SOFTWARE_DIR}/commics
git clone https://geras.asc.tuwien.ac.at/cpfeiler/commics.git
cd commics
git checkout ${COMMICS_GIT_VERSION_HASH}
echo "export PYTHONPATH=\${PYTHONPATH}:${SOFTWARE_DIR}/commics" >> ${WRITE_PATHS_TO}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment