diff --git a/cmake/SetupTPLs.cmake b/cmake/SetupTPLs.cmake index d69fcf1..931412b 100644 --- a/cmake/SetupTPLs.cmake +++ b/cmake/SetupTPLs.cmake @@ -42,7 +42,7 @@ endif() #### deal.II ################################################################# if(ENABLE_DEAL_II) - find_package(deal.II 8.4 REQUIRED PATHS ${DEAL_II_DIR}) + find_package(deal.II 9.0.0 REQUIRED PATHS ${DEAL_II_DIR}) add_definitions(-DWITH_DEAL_II) # If deal.II was configured in DebugRelease mode, then if Cap was configured # in Debug mode, we link against the Debug version of deal.II. IF Cap was diff --git a/cpp/source/utils.cc b/cpp/source/utils.cc index d0bb891..53f88f7 100644 --- a/cpp/source/utils.cc +++ b/cpp/source/utils.cc @@ -18,12 +18,6 @@ template std::map to_map(std::string const &s); template std::map to_map(std::string const &s); template std::map to_map(std::string const &s); -template std::vector to_vector(std::string const &s); -template std::vector to_vector(std::string const &s); -template std::vector to_vector(std::string const &s); -template std::vector to_vector(std::string const &s); -template std::vector to_vector(std::string const &s); -template std::vector to_vector(std::string const &s); #ifdef WITH_DEAL_II template <> std::vector to_vector(std::string const &s) @@ -41,6 +35,13 @@ std::vector to_vector(std::string const &s) } #endif +template std::vector to_vector(std::string const &s); +template std::vector to_vector(std::string const &s); +template std::vector to_vector(std::string const &s); +template std::vector to_vector(std::string const &s); +template std::vector to_vector(std::string const &s); +template std::vector to_vector(std::string const &s); + template std::string to_string(std::vector const &v); template std::string to_string(std::vector const &v); template std::string to_string(std::vector const &v); diff --git a/docker/Dockerfile_stack b/docker/Dockerfile_stack index 8011352..bd09020 100644 --- a/docker/Dockerfile_stack +++ b/docker/Dockerfile_stack @@ -8,7 +8,6 @@ RUN apt-get update && apt-get install -y \ gfortran \ wget \ git \ - cmake \ lcov \ valgrind \ cppcheck \ @@ -21,7 +20,6 @@ RUN apt-get update && apt-get install -y \ libbz2-dev \ libatlas-base-dev \ zlib1g-dev \ - libopenmpi-dev \ libhdf5-dev \ python3.5-dev \ python3-tk \ @@ -45,13 +43,51 @@ RUN mkdir -p ${PREFIX} && \ mkdir build && \ mkdir install +# Install CMake +RUN export CMAKE_VERSION=3.12.1 && \ + export CMAKE_VERSION_SHORT=3.12 && \ + export CMAKE_URL=https://cmake.org/files/v${CMAKE_VERSION_SHORT}/cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \ + export CMAKE_SCRIPT=cmake-${CMAKE_VERSION}-Linux-x86_64.sh && \ + export CMAKE_PREFIX=/opt/cmake/${CMAKE_VERSION_SHORT} && \ + wget --quiet ${CMAKE_URL} --output-document=${CMAKE_SCRIPT} && \ + mkdir -p ${CMAKE_PREFIX} && \ + sh ${CMAKE_SCRIPT} --skip-license --prefix=${CMAKE_PREFIX} && \ + rm ${CMAKE_SCRIPT} +ENV PATH=/opt/cmake/3.12/bin:$PATH + +# Install OpenMPI +RUN export OPENMPI_VERSION=2.1.3 && \ + export OPENMPI_VERSION_SHORT=2.1 && \ + export OPENMPI_SHA1=e24502c7075c8e8f6de028a6aedecf7a6d2d0bb7 && \ + export OPENMPI_URL=https://www.open-mpi.org/software/ompi/v${OPENMPI_VERSION_SHORT}/downloads/openmpi-${OPENMPI_VERSION}.tar.bz2 && \ + export OPENMPI_ARCHIVE=${PREFIX}/archive/openmpi-${OPENMPI_VERSION}.tar.bz2 && \ + export OPENMPI_SOURCE_DIR=${PREFIX}/source/openmpi/${OPENMPI_VERSION} && \ + export OPENMPI_BUILD_DIR=${PREFIX}/build/openmpi/${OPENMPI_VERSION} && \ + export OPENMPI_INSTALL_DIR=/opt/openmpi/${OPENMPI_VERSION_SHORT} && \ + wget --quiet ${OPENMPI_URL} --output-document=${OPENMPI_ARCHIVE} && \ + echo "${OPENMPI_SHA1} ${OPENMPI_ARCHIVE}" | sha1sum -c && \ + mkdir -p ${OPENMPI_SOURCE_DIR} && \ + tar -xf ${OPENMPI_ARCHIVE} -C ${OPENMPI_SOURCE_DIR} --strip-components=1 && \ + mkdir -p ${OPENMPI_BUILD_DIR} && \ + cd ${OPENMPI_BUILD_DIR} && \ + ${OPENMPI_SOURCE_DIR}/configure --prefix=${OPENMPI_INSTALL_DIR} && \ + make -j${NPROC} install && \ + rm -rf ${OPENMPI_ARCHIVE} && \ + rm -rf ${OPENMPI_BUILD_DIR} && \ + rm -rf ${OPENMPI_SOURCE_DIR} + +ENV MPI_DIR=/opt/openmpi/2.1 +# Put OPENMPI_DIR at the end of the path so that /ust/local/bin/mpiexec will +# overwrite it +ENV PATH=$PATH:${MPI_DIR}/bin + # install boost -RUN export BOOST_URL=http://sourceforge.net/projects/boost/files/boost/1.63.0/boost_1_63_0.tar.bz2 && \ - export BOOST_SHA256=beae2529f759f6b3bf3f4969a19c2e9d6f0c503edcb2de4a61d1428519fcb3b0 && \ - export BOOST_ARCHIVE=${PREFIX}/archive/boost_1_63_0.tar.bz2 && \ - export BOOST_SOURCE_DIR=${PREFIX}/source/boost/1.63.0 && \ - export BOOST_BUILD_DIR=${PREFIX}/build/boost/1.63.0 && \ - export BOOST_INSTALL_DIR=/opt/boost/1.63.0 && \ +RUN export BOOST_URL=http://sourceforge.net/projects/boost/files/boost/1.68.0/boost_1_68_0.tar.bz2 && \ + export BOOST_SHA256=7f6130bc3cf65f56a618888ce9d5ea704fa10b462be126ad053e80e553d6d8b7 && \ + export BOOST_ARCHIVE=${PREFIX}/archive/boost_1_68_0.tar.bz2 && \ + export BOOST_SOURCE_DIR=${PREFIX}/source/boost/1.68.0 && \ + export BOOST_BUILD_DIR=${PREFIX}/build/boost/1.68.0 && \ + export BOOST_INSTALL_DIR=/opt/boost/1.68.0 && \ wget --quiet ${BOOST_URL} --output-document=${BOOST_ARCHIVE} && \ echo "${BOOST_SHA256} ${BOOST_ARCHIVE}" | sha256sum -c && \ mkdir -p ${BOOST_SOURCE_DIR} && \ @@ -66,12 +102,13 @@ RUN export BOOST_URL=http://sourceforge.net/projects/boost/files/boost/1.63.0/bo link=shared \ variant=release \ --build-dir=${BOOST_BUILD_DIR} \ + hardcode-dll-paths=true dll-path=${BOOST_INSTALL_DIR}/lib \ && \ rm -rf ${BOOST_ARCHIVE} && \ rm -rf ${BOOST_BUILD_DIR} && \ rm -rf ${BOOST_SOURCE_DIR} -ENV BOOST_DIR=/opt/boost/1.63.0 +ENV BOOST_DIR=/opt/boost/1.68.0 #ENV LD_LIBRARY_PATH=${BOOST_DIR}/lib:${LD_LIBRARY_PATH} # install TRILINOS @@ -146,9 +183,9 @@ RUN export P4EST_VERSION=1.1 &&\ ENV P4EST_DIR=/opt/p4est/1.1 # install dealii -RUN export DEAL_II_VERSION=8.5.1 && \ +RUN export DEAL_II_VERSION=9.0.0 && \ export DEAL_II_URL=https://github.com/dealii/dealii/releases/download/v${DEAL_II_VERSION}/dealii-${DEAL_II_VERSION}.tar.gz && \ - export DEAL_II_SHA1=fe8e4748c1d9650487fb5145429a58e8509de276 && \ + export DEAL_II_SHA1=820bf3961a6d840ee27cf0456d38d6dbd05e1565 && \ export DEAL_II_ARCHIVE=${PREFIX}/archive/dealii-${DEAL_II_VERSION}.tar.gz && \ export DEAL_II_SOURCE_DIR=${PREFIX}/source/dealii/${DEAL_II_VERSION} && \ export DEAL_II_BUILD_DIR=${PREFIX}/build/dealii/${DEAL_II_VERSION} && \ @@ -164,9 +201,6 @@ RUN export DEAL_II_VERSION=8.5.1 && \ -D CMAKE_BUILD_TYPE=${BUILD_TYPE} \ -D DEAL_II_WITH_MPI=ON \ -D DEAL_II_WITH_CXX11=ON \ - -D CMAKE_Fortran_COMPILER=mpifort \ - -D CMAKE_CXX_COMPILER=mpicxx \ - -D CMAKE_C_COMPILER=mpicc \ -D BOOST_DIR=${BOOST_DIR} \ -D P4EST_DIR=${P4EST_DIR} \ -D TRILINOS_DIR=${TRILINOS_DIR} \ @@ -176,7 +210,7 @@ RUN export DEAL_II_VERSION=8.5.1 && \ rm -rf ${DEAL_II_BUILD_DIR} && \ rm -rf ${DEAL_II_SOURCE_DIR} -ENV DEAL_II_DIR=/opt/dealii/8.5.1 +ENV DEAL_II_DIR=/opt/dealii/9.0.0 ENV LD_LIBRARY_PATH=${LAPACK_DIR}/lib:${LD_LIBRARY_PATH}