diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000000000000000000000000000000000000..8f0154aa4250dbb97bea8ef7440f7c533ed8f6e9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,17 @@ +# ignore generated .vtu and .pvd files, +*.vtu +*.pvd +*.pvtu + +# ignore ARH files +*.arh +*.parh +*.tarh + +*.kate-swp +*.tmp + +# ignore build directories +build*/ +install*/ +output*/ \ No newline at end of file diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml new file mode 100644 index 0000000000000000000000000000000000000000..69db3489dae34cace52ea0cacacf759b002f7a9b --- /dev/null +++ b/.gitlab-ci.yml @@ -0,0 +1,41 @@ +--- +cache: + paths: + - install/boost + - install/petsc + +before_script: + - tools/install_boost.sh + - tools/install_petsc.sh + +build:9-debug-gcc: + stage: build + image: duneci/base:9 + script: + - tools/build_amdis.sh Debug + only: + - master + +build:9-release-gcc: + stage: build + image: duneci/base:9 + script: + - tools/build_amdis.sh Release + only: + - master + +build:9-parallel-debug-gcc: + stage: build + image: duneci/base:9 + script: + - tools/build_parallel_amdis.sh Debug + only: + - master + +build:9-parallel-release-gcc: + stage: build + image: duneci/base:9 + script: + - tools/build_parallel_amdis.sh Release + only: + - master diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e1ab10dff7f81c2aaca392a1b117532cbae68e63 --- /dev/null +++ b/README.md @@ -0,0 +1,7 @@ +AMDiS (Adaptive MultiDimensional Simulations) is a C++ library to solve a broad class of partial differential equations (PDE) using adaptive finite elements. + +Install AMDiS by using cmake: +``` +cmake AMDiS +make && make install +``` diff --git a/tools/build_amdis.sh b/tools/build_amdis.sh new file mode 100755 index 0000000000000000000000000000000000000000..efdea80b3317a5bf2041651b34fda48cbbfeb10d --- /dev/null +++ b/tools/build_amdis.sh @@ -0,0 +1,44 @@ +#! /bin/bash + +ROOT=${PWD} +POSTFIX="rel" +CONFIURATION="Release" + +if [ "$1" == "Debug" ]; then + POSTFIX="dbg" + CONFIURATION="Debug" +fi + +# at first build AMDiS +cmake -E make_directory ${ROOT}/build_${POSTFIX} +cmake -E chdir ${ROOT}/build_${POSTFIX} cmake \ + -DUSE_NEW_CMAKE:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX=${ROOT}/install_${POSTFIX} \ + -DCMAKE_BUILD_TYPE=${CONFIURATION} \ + -DENABLE_CXX11:BOOL=ON \ + -DENABLE_COMPRESSION:BOOL=OFF \ + -DENABLE_UMFPACK:BOOL=OFF \ + -DBOOST_ROOT:PATH=${ROOT}/install/boost \ + ${ROOT}/AMDiS +cmake --build ${ROOT}/build_${POSTFIX} --target install + +# now build the demos +BASEDIR=${ROOT}/demo +cmake -E make_directory ${BASEDIR}/build_${POSTFIX} +cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \ + -DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \ + -DCMAKE_BUILD_TYPE=${CONFIURATION} \ + -DBOOST_ROOT:PATH=${ROOT}/install/boost \ + ${BASEDIR} +cmake --build ${BASEDIR}/build_${POSTFIX} + +# now build and run the test_suite +BASEDIR=${ROOT}/tools/test_suite +cmake -E make_directory ${BASEDIR}/build_${POSTFIX} +cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \ + -DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \ + -DCMAKE_BUILD_TYPE=${CONFIURATION} \ + -DBOOST_ROOT:PATH=${ROOT}/install/boost \ + ${BASEDIR} +cmake --build ${BASEDIR}/build_${POSTFIX} +cmake --build ${BASEDIR}/build_${POSTFIX} --target test diff --git a/tools/build_parallel_amdis.sh b/tools/build_parallel_amdis.sh new file mode 100755 index 0000000000000000000000000000000000000000..c7fa5f56716fd54e46f082a56e9c2050de4bc1bc --- /dev/null +++ b/tools/build_parallel_amdis.sh @@ -0,0 +1,51 @@ +#! /bin/bash + +set -e +set -x + +ROOT=${PWD} +POSTFIX="par_rel" +CONFIURATION="Release" + +if [ "$1" == "Debug" ]; then + POSTFIX="par_dbg" + CONFIURATION="Debug" +fi + +# at first build AMDiS +cmake -E make_directory ${ROOT}/build_${POSTFIX} +cmake -E chdir ${ROOT}/build_${POSTFIX} cmake \ + -DUSE_NEW_CMAKE:BOOL=ON \ + -DCMAKE_INSTALL_PREFIX=${ROOT}/install_${POSTFIX} \ + -DCMAKE_BUILD_TYPE=${CONFIURATION} \ + -DENABLE_CXX11:BOOL=ON \ + -DENABLE_COMPRESSION:BOOL=OFF \ + -DENABLE_UMFPACK:BOOL=OFF \ + -DENABLE_PARALLEL_DOMAIN:BOOL=ON \ + -DBOOST_ROOT:PATH=${ROOT}/install/boost \ + -DPETSC_DIR:PATH=${ROOT}/install/petsc \ + ${ROOT}/AMDiS +cmake --build ${ROOT}/build_${POSTFIX} --target install + +# now build the demos +BASEDIR=${ROOT}/demo +cmake -E make_directory ${BASEDIR}/build_${POSTFIX} +cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \ + -DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \ + -DCMAKE_BUILD_TYPE=${CONFIURATION} \ + -DBOOST_ROOT:PATH=${ROOT}/install/boost \ + -DPETSC_DIR:PATH=${ROOT}/install/petsc \ + ${BASEDIR} +cmake --build ${BASEDIR}/build_${POSTFIX} + +# now build and run the test_suite +BASEDIR=${ROOT}/tools/test_suite +cmake -E make_directory ${BASEDIR}/build_${POSTFIX} +cmake -E chdir ${BASEDIR}/build_${POSTFIX} cmake \ + -DAMDIS_DIR=${ROOT}/install_${POSTFIX}/share/amdis \ + -DCMAKE_BUILD_TYPE=${CONFIURATION} \ + -DBOOST_ROOT:PATH=${ROOT}/install/boost \ + -DPETSC_DIR:PATH=${ROOT}/install/petsc \ + ${BASEDIR} +cmake --build ${BASEDIR}/build_${POSTFIX} +cmake --build ${BASEDIR}/build_${POSTFIX} --target test diff --git a/tools/install_boost.sh b/tools/install_boost.sh new file mode 100755 index 0000000000000000000000000000000000000000..6bcfb1611458b5ac26389bf0e07f10153f2c128d --- /dev/null +++ b/tools/install_boost.sh @@ -0,0 +1,24 @@ +#! /bin/bash + +set -e +set -x + +ROOT=${PWD} + +if [ ! -d install/ ]; then + mkdir -p install +fi +cd install + +#install current boost version +if [ ! -d boost ]; then + curl -o boost.tar.gz "http://netcologne.dl.sourceforge.net/project/boost/boost/1.60.0/boost_1_60_0.tar.gz" + mkdir boost_tmp + tar --strip-components=1 -xf boost.tar.gz -C boost_tmp + rm boost.tar.gz + cd boost_tmp + ./bootstrap.sh --prefix=${ROOT}/install/boost --with-libraries=system,iostreams,filesystem,program_options,date_time + ./b2 -s NO_BZIP2=1 cxxflags="-std=c++11" --build-type=minimal install + cd ${ROOT}/install + rm -rf boost_tmp +fi \ No newline at end of file diff --git a/tools/install_petsc.sh b/tools/install_petsc.sh new file mode 100755 index 0000000000000000000000000000000000000000..bca6bde8d8c99b439497b561ccb01d3e8ed1f587 --- /dev/null +++ b/tools/install_petsc.sh @@ -0,0 +1,29 @@ +#! /bin/bash + +set -e +set -x + +ROOT=${PWD} + +if [ ! -d install/ ]; then + mkdir -p install +fi +cd install + +# install petsc +if [ ! -d petsc ]; then + curl -o petsc.tar.gz "http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/petsc-lite-3.5.4.tar.gz" + mkdir petsc_tmp + tar --strip-components=1 -xf petsc.tar.gz -C petsc_tmp + rm petsc.tar.gz + cd petsc_tmp + # minimal petsc configuration, just for test purposes + ./configure --prefix=${ROOT}/install/petsc --with-pic=1 --with-debugging=0 \ + --with-clanguage=c++ --with-cxx-dialect=c++11 \ + --with-metis=1 --download-metis=yes \ + --with-parmetis=1 --download-parmetis=yes \ + --with-fblaslapack=1 --download-fblaslapack=yes + make && make install + cd ${ROOT}/install + rm -rf petsc_tmp +fi