diff --git a/.ci/docker/Dockerfile b/.ci/docker/Dockerfile new file mode 100644 index 0000000000000000000000000000000000000000..f01cb4620f0b9ef0e7f8b011bc301f7aa9a76082 --- /dev/null +++ b/.ci/docker/Dockerfile @@ -0,0 +1,7 @@ +ARG BASE +FROM dunecommunity/$BASE + +ADD . ${SUPERDIR}/${MY_MODULE}/ +RUN cd ${SUPERDIR} && \ + echo ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} all && \ + ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} all diff --git a/.codecov.yml b/.codecov.yml new file mode 100644 index 0000000000000000000000000000000000000000..b11d3bc2d592f637695e91a3bc39f36b0a376653 --- /dev/null +++ b/.codecov.yml @@ -0,0 +1,29 @@ +codecov: + notify: + require_ci_to_pass: yes + +coverage: + precision: 2 + round: down + range: "70...100" + + # https://docs.codecov.io/docs/commit-status + status: + project: no + patch: no + changes: no + +parsers: + gcov: + branch_detection: + conditional: yes + loop: yes + method: no + macro: no + +# https://docs.codecov.io/docs/pull-request-comments +# https://docs.codecov.io/docs/graphs +comment: + layout: "header, files " + behavior: once + require_changes: yes diff --git a/.gitsuper b/.gitsuper index d3b13adede08cc1bf515906cae8dd33ce5936820..b918b9785d5fb624556ecd5e5732d031c69ccea7 100644 --- a/.gitsuper +++ b/.gitsuper @@ -17,7 +17,7 @@ status = 1a3bcab04b011a5d6e44f9983cae6ff89fa695e8 bin (heads/master) +effefc7695eba0c0ca94fff0f93026b86501027e dune-xt-common (heads/master) +3e3f3bf06e21cbbf3c0a559891b44c6f5d987d0f dune-xt-data (heads/master) +f05aa7470ead4150ca7a91894cd2ad77dfcedc46 dune-xt-functions (heads/new-master) - +d4718940b4ab35f1630bca048e1a8ab040a3ff21 dune-xt-grid (heads/new-master) + +35afd2514bd4a6b4d0afff4381a54955c5226b0c dune-xt-grid (heads/new-master) +f6904b69f9a3ee5d45ee824d3b244e59cfed7ff4 dune-xt-la (heads/master) 09d0378f616b94d68bcdd9fc6114813181849ec0 scripts (heads/master) commit = 5f5841ee7a2dff290b98845c46262151752189c1 @@ -110,7 +110,7 @@ commit = f05aa7470ead4150ca7a91894cd2ad77dfcedc46 [submodule.dune-xt-grid] remote = git@github.com:dune-community/dune-xt-grid.git status = 2424627f0ad5de7e4aaa5e7f48bc2a02414d95a1 .vcsetup (heads/master) -commit = d4718940b4ab35f1630bca048e1a8ab040a3ff21 +commit = 35afd2514bd4a6b4d0afff4381a54955c5226b0c [submodule.dune-xt-la] remote = git@github.com:dune-community/dune-xt-la.git diff --git a/.travis.after_script.bash b/.travis.after_script.bash index a2470108795a71bdcbb9c9ba9252f3272b3abf08..8bdf19033aa3c54a50b9467bd12175b37d4683be 100755 --- a/.travis.after_script.bash +++ b/.travis.after_script.bash @@ -1,13 +1,4 @@ #!/bin/bash -# -# ~~~ -# This file is part of the dune-xt-grid project: -# https://github.com/dune-community/dune-xt-grid -# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved. -# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) -# Authors: -# Rene Milk (2017 - 2018) -# ~~~ # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT ********** # this file is treated as a jinja2 template diff --git a/.travis.make_env_file.py b/.travis.make_env_file.py index 65c6aa2dbe6da60e8b7c7eada003c88f2dfbfb88..e77c120910f8c5cb251fa582f8fd6e920c7a3128 100644 --- a/.travis.make_env_file.py +++ b/.travis.make_env_file.py @@ -1,20 +1,11 @@ #!/usr/bin/env python3 -# -# ~~~ -# This file is part of the dune-xt-grid project: -# https://github.com/dune-community/dune-xt-grid -# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved. -# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) -# Authors: -# Rene Milk (2017 - 2018) -# ~~~ import os from os.path import expanduser from shlex import quote home = expanduser("~") -prefixes = os.environ.get('ENV_PREFIXES', 'TRAVIS CI encrypt TOKEN TESTS').split(' ') +prefixes = os.environ.get('ENV_PREFIXES', 'TRAVIS DRONE GITLAB CODECOV CI encrypt TOKEN TESTS').split(' ') blacklist = ['TRAVIS_COMMIT_MESSAGE'] env_file = os.environ.get('ENV_FILE', os.path.join(home, 'env')) with open(env_file, 'wt') as env: diff --git a/.travis.script.bash b/.travis.script.bash index c535ae70612d4059b70a682835943d68a693af53..a9484b0d6e7c6c474922e98cf6f50dd7311a1cbc 100755 --- a/.travis.script.bash +++ b/.travis.script.bash @@ -1,14 +1,4 @@ #!/bin/bash -# -# ~~~ -# This file is part of the dune-xt-grid project: -# https://github.com/dune-community/dune-xt-grid -# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved. -# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) -# Authors: -# Felix Schindler (2017) -# Rene Milk (2017 - 2018) -# ~~~ # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT ********** # this file is treated as a jinja2 template @@ -41,4 +31,21 @@ fi ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} install | grep -v "Installing" ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} package_source +# clang coverage currently disabled for being to mem hungry +if [[ ${CC} == *"clang"* ]] ; then + exit 0 +fi + +pushd ${DUNE_BUILD_DIR}/${MY_MODULE} +COVERAGE_INFO=${PWD}/coverage.info +lcov --directory . --output-file ${COVERAGE_INFO} -c +for d in "dune-common" "dune-pybindxi" "dune-geometry" "dune-istl" "dune-grid" "dune-alugrid" "dune-uggrid" "dune-localfunctions" ; do + lcov --directory . --output-file ${COVERAGE_INFO} -r ${COVERAGE_INFO} "${SUPERDIR}/${d}/*" +done +lcov --directory . --output-file ${COVERAGE_INFO} -r ${COVERAGE_INFO} "${SUPERDIR}/${MY_MODULE}/dune/xt/*/test/*" +cd ${SUPERDIR}/${MY_MODULE} +${OLDPWD}/dune-env pip install codecov +${OLDPWD}/dune-env codecov -v -X gcov -X coveragepy -F ctest -f ${COVERAGE_INFO} -t ${CODECOV_TOKEN} +popd + # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT ********** \ No newline at end of file diff --git a/.travis.test_python.bash b/.travis.test_python.bash index 73e37a2d86d3c3c93eb6a851ae52507c68752de1..93c8e211dfd0315f7f7beda5fcfc1f2847593ffe 100755 --- a/.travis.test_python.bash +++ b/.travis.test_python.bash @@ -1,13 +1,4 @@ #!/bin/bash -# -# ~~~ -# This file is part of the dune-xt-grid project: -# https://github.com/dune-community/dune-xt-grid -# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved. -# License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) -# Authors: -# Rene Milk (2018) -# ~~~ # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT ********** # this file is treated as a jinja2 template @@ -20,7 +11,11 @@ source ${SUPERDIR}/scripts/bash/retry_command.bash ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} configure ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} -${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} bindings -${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} test_python +${WAIT} ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} bindings +${WAIT} ${SRC_DCTRL} ${BLD} --only=${MY_MODULE} bexec ${BUILD_CMD} test_python + +cd ${SUPERDIR}/${MY_MODULE} +${DUNE_BUILD_DIR}/${MY_MODULE}/dune-env pip install codecov +${DUNE_BUILD_DIR}/${MY_MODULE}/dune-env codecov -X gcov -F pytest -t ${CODECOV_TOKEN} # ****** THIS FILE IS AUTOGENERATED, DO NOT EDIT ********** \ No newline at end of file diff --git a/.travis.yml b/.travis.yml index 460cd122c106ca3d591cb6a2a8f5cbc5e94c7d56..76b76006939745f97f8dc147441c9b09ba10532a 100644 --- a/.travis.yml +++ b/.travis.yml @@ -1,54 +1,54 @@ -# ~~~ # This file is part of the dune-xt-grid project: # https://github.com/dune-community/dune-xt-grid -# Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved. +# Copyright 2009-2017 dune-xt-functions developers and contributors. All rights reserved. # License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) +# or GPL-2.0+ (http://opensource.org/licenses/gpl-license) +# with "runtime exception" (http://www.dune-project.org/license.html) # Authors: # Felix Schindler (2016 - 2017) -# Rene Milk (2016 - 2018) +# Rene Milk (2016 - 2017) # Tobias Leibner (2016) -# -# or GPL-2.0+ (http://opensource.org/licenses/gpl-license) -# with "runtime exception" (http://www.dune-project.org/license.html) -# ~~~ # THIS FILE IS AUTOGENERATED -- DO NOT EDIT # # Re-run .ci/templates/update.py --nd instead # -sudo: false +sudo: true dist: trusty language: generic services: docker before_script: - - export IMAGE="dunecommunity/dune-xt-grid-testing_${DOCKER_TAG}:${TRAVIS_BRANCH}" + - export MY_MODULE=dune-xt-grid + - export BASEIMAGE="${MY_MODULE}-testing_${DOCKER_TAG}:${TRAVIS_BRANCH/\//_}" + - export IMAGE="dunecommunity/ci_${MY_MODULE}-testing_${DOCKER_TAG}:${TRAVIS_COMMIT}" # get image with fallback to master branch of the super repo - - docker pull ${IMAGE} || export IMAGE="dunecommunity/dune-xt-grid-testing_${DOCKER_TAG}:master" ; docker pull ${IMAGE} + - docker pull dunecommunity/${BASEIMAGE} || export BASEIMAGE="${MY_MODULE}-testing_${DOCKER_TAG}:master" ; docker pull dunecommunity/${BASEIMAGE} + - docker build --build-arg BASE=${BASEIMAGE} -t ${IMAGE} -f .ci/docker/Dockerfile . + - export ENV_FILE=${HOME}/env - python3 ./.travis.make_env_file.py - - export MY_MODULE=dune-xt-grid - - export DOCKER_RUN="docker run --env-file ${ENV_FILE} -v ${TRAVIS_BUILD_DIR}:/root/src/dune-xt-grid ${IMAGE}" + - docker inspect ${IMAGE} + - export DOCKER_RUN="docker run --env-file ${ENV_FILE} ${IMAGE}" script: - - ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.script.bash + - ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.script.bash # runs independent of 'script' failure/success after_script: - - ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.after_script.bash + - ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.after_script.bash # output for simpler replicability - docker images ${IMAGE} - echo ${DOCKER_RUN} +after_failure: + - echo $DOCKER_PW | docker login --username="$DOCKER_USER" --password-stdin + - docker push ${IMAGE} + - echo "execute\n ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.script.bash\n to examine errors" notifications: email: on_success: change on_failure: change - webhooks: - - https://buildtimetrend.herokuapp.com/travis - -#after_success: -#- coveralls branches: except: @@ -60,26 +60,42 @@ stages: jobs: include: + - stage: test_cpp + env: DOCKER_TAG=debian-unstable_gcc_full TESTS=0 + - stage: test_cpp + env: DOCKER_TAG=debian-unstable_gcc_full TESTS=1 + - stage: test_cpp + env: DOCKER_TAG=debian-unstable_gcc_full TESTS=2 + - stage: test_cpp env: DOCKER_TAG=debian_gcc_full TESTS=0 - stage: test_cpp env: DOCKER_TAG=debian_gcc_full TESTS=1 + - stage: test_cpp + env: DOCKER_TAG=debian_gcc_full TESTS=2 - stage: test_cpp env: DOCKER_TAG=debian_clang_full TESTS=0 - stage: test_cpp env: DOCKER_TAG=debian_clang_full TESTS=1 + - stage: test_cpp + env: DOCKER_TAG=debian_clang_full TESTS=2 + - stage: test_python + env: DOCKER_TAG=debian-unstable_gcc_full + script: ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.test_python.bash + # overwrite other global/matrix settings + after_script: true - stage: test_python env: DOCKER_TAG=debian_gcc_full - script: ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.test_python.bash + script: ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.test_python.bash # overwrite other global/matrix settings after_script: true - stage: test_python env: DOCKER_TAG=debian_clang_full - script: ${DOCKER_RUN} /root/src/dune-xt-grid/.travis.test_python.bash + script: ${DOCKER_RUN} /home/dune-ci/src/dune-xt-grid/.travis.test_python.bash # overwrite other global/matrix settings after_script: true # THIS FILE IS AUTOGENERATED -- DO NOT EDIT # -# Re-run .ci/templates/update.py --nd instead # +# Re-run .ci/templates/update.py --nd instead # \ No newline at end of file diff --git a/dune/xt/grid/dd/subdomains/factory.hh b/dune/xt/grid/dd/subdomains/factory.hh index a3441c850836e527574e441bcd2fdb37431cd38a..53e9113d2f183a3a370cc21e668dc026aa355125 100644 --- a/dune/xt/grid/dd/subdomains/factory.hh +++ b/dune/xt/grid/dd/subdomains/factory.hh @@ -911,7 +911,7 @@ struct SubdomainGridFactory<GridType>::Add<c, c> // loop over all codim c subentities of this entity for (unsigned int i = 0; i < entity.subEntities(c); ++i) { const auto codimCentity = entity.template subEntity<c>(i); - const SubdomainGridFactory<GridType>::GeometryType& geometryType = codimCentity.type(); + const typename SubdomainGridFactory<GridType>::GeometryType& geometryType = codimCentity.type(); const typename SubdomainGridFactory<GridType>::IndexType globalIndex = factory.globalGridView_->indexSet().index(codimCentity); factory.addGeometryAndIndex(geometryMap, localCodimSizes, geometryType, globalIndex); diff --git a/dune/xt/grid/gridprovider/cube.hh b/dune/xt/grid/gridprovider/cube.hh index b31c84fdffdacd3a8912a24421d0677667942487..11d74001cf342a634460919227bc5d23f17aea47 100644 --- a/dune/xt/grid/gridprovider/cube.hh +++ b/dune/xt/grid/gridprovider/cube.hh @@ -139,7 +139,8 @@ public: const FieldVector<typename GridType::ctype, GridType::dimension>& upper_right, const std::array<unsigned int, GridType::dimension>& num_elements, const unsigned int num_refinements, - const std::array<unsigned int, GridType::dimension>& overlap_size) + const std::array<unsigned int, GridType::dimension>& overlap_size, + MPIHelper::MPICommunicator mpi_comm) { static const int variant = ElementVariant<GridType>::id; static_assert(variant == 1 || variant == 2, "variant has to be 1 or 2!"); @@ -153,11 +154,13 @@ public: std::shared_ptr<GridType> grd_ptr(nullptr); switch (variant) { case 1: - grd_ptr = StructuredGridFactory<GridType>::createCubeGrid(lower_left, upper_right, num_elements, overlap_size); + grd_ptr = XT::Grid::StructuredGridFactory<GridType>::createCubeGrid( + lower_left, upper_right, num_elements, overlap_size, mpi_comm); break; case 2: default: - grd_ptr = StructuredGridFactory<GridType>::createSimplexGrid(lower_left, upper_right, num_elements); + grd_ptr = XT::Grid::StructuredGridFactory<GridType>::createSimplexGrid( + lower_left, upper_right, num_elements, mpi_comm); break; } grd_ptr->loadBalance(); @@ -174,24 +177,22 @@ public: return GridProvider<GridType, none_t>(grd_ptr); } // ... create(...) - static GridProvider<GridType, none_t> - create(const typename GridType::ctype& lower_left, - const typename GridType::ctype& upper_right, - const unsigned int num_elements = - cube_gridprovider_default_config().template get<std::vector<unsigned int>>("num_elements").at(0), - const unsigned int num_refinements = - cube_gridprovider_default_config().template get<unsigned int>("num_refinements"), - const unsigned int overlap_size = - cube_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size").at(0)) + static GridProvider<GridType, none_t> create(const typename GridType::ctype& lower_left, + const typename GridType::ctype& upper_right, + const unsigned int num_elements, + const unsigned int num_refinements, + const unsigned int overlap_size, + MPIHelper::MPICommunicator mpi_comm) { return create(FieldVector<typename GridType::ctype, GridType::dimension>(lower_left), FieldVector<typename GridType::ctype, GridType::dimension>(upper_right), Common::make_array<unsigned int, GridType::dimension>(num_elements), num_refinements, - Common::make_array<unsigned int, GridType::dimension>(overlap_size)); + Common::make_array<unsigned int, GridType::dimension>(overlap_size), + mpi_comm); } // ... create(...) - static GridProvider<GridType, none_t> create(const Common::Configuration& cfg = cube_gridprovider_default_config()) + static GridProvider<GridType, none_t> create(const Common::Configuration& cfg, MPIHelper::MPICommunicator mpi_comm) { static const size_t d = GridType::dimension; auto overlap_size = @@ -232,7 +233,7 @@ public: } auto num_refinements = cfg.get("num_refinements", cube_gridprovider_default_config().template get<unsigned int>("num_refinements")); - return create(lower_left, upper_right, num_elements_array, num_refinements, overlap_size_array); + return create(lower_left, upper_right, num_elements_array, num_refinements, overlap_size_array, mpi_comm); } // ... create(...) }; // struct CubeGridProviderFactory @@ -246,10 +247,11 @@ typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t> const unsigned int num_refinements = cube_gridprovider_default_config().template get<unsigned int>("num_refinements"), const std::array<unsigned int, GridType::dimension> overlap_size = - cube_gridprovider_default_config().template get<std::array<unsigned int, GridType::dimension>>("overlap_size")) + cube_gridprovider_default_config().template get<std::array<unsigned int, GridType::dimension>>("overlap_size"), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { return CubeGridProviderFactory<GridType>::create( - lower_left, upper_right, num_elements, num_refinements, overlap_size); + lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm); } @@ -262,18 +264,20 @@ make_cube_grid(const typename GridType::ctype& lower_left, const unsigned int num_refinements = cube_gridprovider_default_config().template get<unsigned int>("num_refinements"), const unsigned int overlap_size = - cube_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size").at(0)) + cube_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size").at(0), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { return CubeGridProviderFactory<GridType>::create( - lower_left, upper_right, num_elements, num_refinements, overlap_size); + lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm); } template <class GridType> typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type -make_cube_grid(const Common::Configuration& cfg = cube_gridprovider_default_config()) +make_cube_grid(const Common::Configuration& cfg = cube_gridprovider_default_config(), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - return CubeGridProviderFactory<GridType>::create(cfg); + return CubeGridProviderFactory<GridType>::create(cfg, mpi_comm); } @@ -297,8 +301,8 @@ public: return cube_dd_subdomains_gridprovider_default_config(); } - static GridProvider<GridType, DdGridType> - create(const Common::Configuration& cfg = cube_dd_subdomains_gridprovider_default_config()) + static GridProvider<GridType, DdGridType> create(const Common::Configuration& cfg, + MPIHelper::MPICommunicator mpi_comm) { const auto default_cfg = cube_dd_subdomains_gridprovider_default_config(); return create( @@ -311,7 +315,8 @@ public: cfg.get("overlap_size", default_cfg.get<std::array<unsigned int, GridType::dimension>>("overlap_size")), cfg.get("num_partitions", default_cfg.get<std::array<unsigned int, GridType::dimension>>("num_partitions")), cfg.get("oversampling_layers", default_cfg.get<size_t>("oversampling_layers")), - cfg.get("inner_boundary_segment_index", default_cfg.get<size_t>("inner_boundary_segment_index"))); + cfg.get("inner_boundary_segment_index", default_cfg.get<size_t>("inner_boundary_segment_index")), + mpi_comm); } static GridProvider<GridType, DdGridType> @@ -322,10 +327,11 @@ public: const std::array<unsigned int, GridType::dimension>& overlap_size, const std::array<unsigned int, GridType::dimension>& num_partitions, const size_t num_oversampling_layers, - const size_t inner_boundary_segment_index) + const size_t inner_boundary_segment_index, + MPIHelper::MPICommunicator mpi_comm) { - auto grid = - make_cube_grid<GridType>(lower_left, upper_right, num_elements, num_refinements, overlap_size).grid_ptr(); + auto grid = make_cube_grid<GridType>(lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm) + .grid_ptr(); grid->loadBalance(); const auto dims = XT::Grid::dimensions(grid->leafGridView()); const auto bounding_box = dims.bounding_box(); @@ -392,7 +398,8 @@ make_cube_dd_subdomains_grid( const size_t num_oversampling_layers = cube_dd_subdomains_gridprovider_default_config().template get<size_t>("num_refinements"), const size_t inner_boundary_segment_index = - cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index")) + cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index"), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { return CubeDdSubdomainsGridProviderFactory<GridType>::create(lower_left, upper_right, @@ -401,14 +408,16 @@ make_cube_dd_subdomains_grid( overlap_size, num_partitions, num_oversampling_layers, - inner_boundary_segment_index); + inner_boundary_segment_index, + mpi_comm); } template <class GridType> typename std::enable_if<XT::Grid::is_grid<GridType>::value, GridProvider<GridType, DD::SubdomainGrid<GridType>>>::type -make_cube_dd_subdomains_grid(const Common::Configuration& cfg = cube_dd_subdomains_gridprovider_default_config()) +make_cube_dd_subdomains_grid(const Common::Configuration& cfg = cube_dd_subdomains_gridprovider_default_config(), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - return CubeDdSubdomainsGridProviderFactory<GridType>::create(cfg); + return CubeDdSubdomainsGridProviderFactory<GridType>::create(cfg, mpi_comm); } diff --git a/dune/xt/grid/gridprovider/dgf.hh b/dune/xt/grid/gridprovider/dgf.hh index ff9be69f40302794c99c2dcc8740e52e5102c936..012d907874d8bb68527721be04a5a7a3b658c229 100644 --- a/dune/xt/grid/gridprovider/dgf.hh +++ b/dune/xt/grid/gridprovider/dgf.hh @@ -68,31 +68,32 @@ public: return cfg; } - static GridProvider<GridType, none_t> create(const std::string& filename) + static GridProvider<GridType, none_t> create(const std::string& filename, MPIHelper::MPICommunicator mpi_comm) { - return GridProvider<GridType, none_t>(GridPtr<GridType>(filename).release()); + return GridProvider<GridType, none_t>(GridPtr<GridType>(filename, mpi_comm).release()); } - static GridProvider<GridType, none_t> create(const Common::Configuration& cfg = default_config()) + static GridProvider<GridType, none_t> create(const Common::Configuration& cfg, MPIHelper::MPICommunicator mpi_comm) { - return create(cfg.get("filename", default_config().template get<std::string>("filename"))); + return create(cfg.get("filename", default_config().template get<std::string>("filename")), mpi_comm); } }; // class DgfGridProviderFactory template <class GridType> typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type -make_dgf_grid(const std::string& filename) +make_dgf_grid(const std::string& filename, MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - return DgfGridProviderFactory<GridType>(filename); + return DgfGridProviderFactory<GridType>(filename, mpi_comm); } template <class GridType> typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type -make_dgf_grid(const Common::Configuration& cfg = DgfGridProviderFactory<GridType>::default_config()) +make_dgf_grid(const Common::Configuration& cfg = DgfGridProviderFactory<GridType>::default_config(), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - return DgfGridProviderFactory<GridType>::create(cfg); + return DgfGridProviderFactory<GridType>::create(cfg, mpi_comm); } diff --git a/dune/xt/grid/gridprovider/factory.hh b/dune/xt/grid/gridprovider/factory.hh index 8279bf5f4b8616849d68b5839bc1bf5532cb1e3b..bb42f0b51f881cc02e5bd90557542c269bcbf3d2 100644 --- a/dune/xt/grid/gridprovider/factory.hh +++ b/dune/xt/grid/gridprovider/factory.hh @@ -18,6 +18,7 @@ #include <dune/xt/common/configuration.hh> #include <dune/xt/common/type_traits.hh> +#include <dune/xt/common/print.hh> #include "cube.hh" #include "dgf.hh" @@ -31,94 +32,21 @@ namespace Grid { template <class GridType> class GridProviderFactory { - template <class G, bool available = false> - struct Helper - { - static std::vector<std::string> append(std::vector<std::string> in) - { - return in; - } - - static bool compare(const std::string& /*type*/) - { - return false; - } - - static Common::Configuration default_config() - { - DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!"); - return Common::Configuration(); - } - - static GridProvider<GridType, none_t> create(const Common::Configuration& /*cfg*/) - { - DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!"); - return GridProvider<GridType, none_t>(nullptr); - } - }; // struct Helper - - template <class G> - struct Helper<G, true> - { - static std::vector<std::string> append(std::vector<std::string> in) - { - in.push_back(G::static_id()); - return in; - } - - static bool compare(const std::string& type) - { - return type == G::static_id(); - } - - static Common::Configuration default_config() - { - return G::default_config(); - } - - static GridProvider<GridType, none_t> create(const Common::Configuration& cfg) - { - if (cfg.empty()) - return G::create(); - else - return G::create(cfg); - } - }; // struct Helper< ..., true > - - template <class G> - static std::vector<std::string> call_append(std::vector<std::string> in) - { - return Helper<G, G::available>::append(in); - } - template <class G> - static bool call_compare(const std::string& type) + static GridProvider<GridType, none_t> call_create(const Common::Configuration& cfg, + MPIHelper::MPICommunicator mpi_comm) { - return Helper<G, G::available>::compare(type); - } - - template <class G> - static Common::Configuration call_default_config(const std::string sub_name) - { - return Helper<G, G::available>::default_config(sub_name); - } - - template <class G> - static GridProvider<GridType, none_t> call_create(const Common::Configuration& cfg) - { - return Helper<G, G::available>::create(cfg); + if (cfg.empty()) + return G::create(G::default_config(), mpi_comm); + else + return G::create(cfg, mpi_comm); } static std::string available_as_str() { - std::string ret = ""; - const auto vals = available(); - if (vals.size() > 0) { - ret += vals[0]; - for (size_t ii = 1; ii < vals.size(); ++ii) - ret += "\n " + vals[ii]; - } - return ret; + std::stringstream ret; + std::copy(available().begin(), available().end(), Common::PrefixOutputIterator<std::string>(ret, "\n ")); + return ret.str(); } // ... available_as_str(...) typedef CubeGridProviderFactory<GridType> CubeType; @@ -128,21 +56,20 @@ class GridProviderFactory public: static std::vector<std::string> available() { - std::vector<std::string> ret; - call_append<CubeType>(ret); - call_append<DgfType>(ret); - call_append<GmshType>(ret); + std::vector<std::string> ret{CubeType::static_id(), DgfType::static_id()}; + if (GmshType::available) + ret.push_back(GmshType::static_id()); return ret; } static Common::Configuration default_config(const std::string type) { - if (call_compare<CubeType>(type)) - return call_default_config<CubeType>(); - else if (call_compare<DgfType>(type)) - return call_default_config<DgfType>(); - else if (call_compare<GmshType>(type)) - return call_default_config<GmshType>(); + if (CubeType::static_id() == type) + return CubeType::default_config(); + else if (DgfType::static_id() == type) + return DgfType::default_config(); + else if (GmshType::static_id() == type) + return GmshType::default_config(); else if (available().empty()) DUNE_THROW(Common::Exceptions::wrong_input_given, "There is no grid provider available for " << Common::Typename<GridType>::value() << "!"); @@ -154,20 +81,22 @@ public: << available_as_str()); } // ... default_config(...) - static GridProvider<GridType, none_t> create(const Common::Configuration& config) + static GridProvider<GridType, none_t> create(const Common::Configuration& config, + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - return create(config.get<std::string>("type"), config); + return create(config.get<std::string>("type"), config, mpi_comm); } static GridProvider<GridType, none_t> create(const std::string& type = available()[0], - const Common::Configuration config = Common::Configuration()) - { - if (call_compare<CubeType>(type)) - return call_create<CubeType>(config); - else if (call_compare<DgfType>(type)) - return call_create<DgfType>(config); - else if (call_compare<GmshType>(type)) - return call_create<GmshType>(config); + const Common::Configuration config = Common::Configuration(), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) + { + if (CubeType::static_id() == type) + return call_create<CubeType>(config, mpi_comm); + else if (DgfType::static_id() == type) + return call_create<DgfType>(config, mpi_comm); + else if (GmshType::static_id() == type) + return call_create<GmshType>(config, mpi_comm); else if (available().empty()) DUNE_THROW(Common::Exceptions::wrong_input_given, "There is no grid provider available for " << Common::Typename<GridType>::value() << "!"); @@ -184,94 +113,21 @@ public: template <class GridType> class DdSubdomainGridProviderFactory { - template <class G, bool available = false> - struct Helper - { - static std::vector<std::string> append(std::vector<std::string> in) - { - return in; - } - - static bool compare(const std::string& /*type*/) - { - return false; - } - - static Common::Configuration default_config() - { - DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!"); - return Common::Configuration(); - } - - static GridProvider<GridType, DD::SubdomainGrid<GridType>> create(const Common::Configuration& /*cfg*/) - { - DUNE_THROW(Common::Exceptions::internal_error, "This should not happen!"); - return GridProvider<GridType, DD::SubdomainGrid<GridType>>(nullptr); - } - }; // struct Helper - - template <class G> - struct Helper<G, true> - { - static std::vector<std::string> append(std::vector<std::string> in) - { - in.push_back(G::static_id()); - return in; - } - - static bool compare(const std::string& type) - { - return type == G::static_id(); - } - - static Common::Configuration default_config() - { - return G::default_config(); - } - - static GridProvider<GridType, DD::SubdomainGrid<GridType>> create(const Common::Configuration& cfg) - { - if (cfg.empty()) - return G::create(); - else - return G::create(cfg); - } - }; // struct Helper< ..., true > - - template <class G> - static std::vector<std::string> call_append(std::vector<std::string> in) - { - return Helper<G, G::available>::append(in); - } - template <class G> - static bool call_compare(const std::string& type) + static GridProvider<GridType, DD::SubdomainGrid<GridType>> call_create(const Common::Configuration& cfg, + MPIHelper::MPICommunicator mpi_comm) { - return Helper<G, G::available>::compare(type); - } - - template <class G> - static Common::Configuration call_default_config(const std::string sub_name) - { - return Helper<G, G::available>::default_config(sub_name); - } - - template <class G> - static GridProvider<GridType, DD::SubdomainGrid<GridType>> call_create(const Common::Configuration& cfg) - { - return Helper<G, G::available>::create(cfg); + if (cfg.empty()) + return G::create(G::default_config(), mpi_comm); + else + return G::create(cfg, mpi_comm); } static std::string available_as_str() { - std::string ret = ""; - const auto vals = available(); - if (vals.size() > 0) { - ret += vals[0]; - for (size_t ii = 1; ii < vals.size(); ++ii) - ret += "\n " + vals[ii]; - } - return ret; + std::stringstream ret; + std::copy(available().begin(), available().end(), Common::PrefixOutputIterator<std::string>(ret, "\n ")); + return ret.str(); } // ... available_as_str(...) typedef CubeDdSubdomainsGridProviderFactory<GridType> CubeType; @@ -279,14 +135,13 @@ class DdSubdomainGridProviderFactory public: static std::vector<std::string> available() { - std::vector<std::string> ret; - return call_append<CubeType>(ret); + return std::vector<std::string>{CubeType::static_id()}; } static Common::Configuration default_config(const std::string type) { - if (call_compare<CubeType>(type)) - return call_default_config<CubeType>(); + if (CubeType::static_id() == type) + return CubeType::default_config(); else if (available().empty()) DUNE_THROW(Common::Exceptions::wrong_input_given, "There is no grid provider available for " << Common::Typename<GridType>::value() << "!"); @@ -298,16 +153,19 @@ public: << available_as_str()); } // ... default_config(...) - static GridProvider<GridType, DD::SubdomainGrid<GridType>> create(const Common::Configuration& config) + static GridProvider<GridType, DD::SubdomainGrid<GridType>> + create(const Common::Configuration& config, MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - return create(config.get<std::string>("type"), config); + return create(config.get<std::string>("type"), config, mpi_comm); } static GridProvider<GridType, DD::SubdomainGrid<GridType>> - create(const std::string& type = available()[0], const Common::Configuration config = Common::Configuration()) + create(const std::string& type = available()[0], + const Common::Configuration config = Common::Configuration(), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) { - if (call_compare<CubeType>(type)) - return call_create<CubeType>(config); + if (CubeType::static_id() == type) + return call_create<CubeType>(config, mpi_comm); else if (available().empty()) DUNE_THROW(Common::Exceptions::wrong_input_given, "There is no grid provider available for " << Common::Typename<GridType>::value() << "!"); diff --git a/dune/xt/grid/gridprovider/gmsh.hh b/dune/xt/grid/gridprovider/gmsh.hh index c711564e9fb78b3c9f61dfc1d2c76bebcaeac63a..5ee7b7da0b0219dbb6570a268d99927af8cca147 100644 --- a/dune/xt/grid/gridprovider/gmsh.hh +++ b/dune/xt/grid/gridprovider/gmsh.hh @@ -50,12 +50,27 @@ static inline Common::Configuration gmsh_gridprovider_default_config() template <class GridType> class GmshGridProviderFactory; - +//! Gmsh grid creation relies on unstructured grid factory -> disable yasp template <int dim, class Coordinates> class GmshGridProviderFactory<Dune::YaspGrid<dim, Coordinates>> { public: static const bool available = false; + + static std::string static_id() + { + return "dune.xt.grid.none_t"; + } + + static Common::Configuration default_config() + { + DUNE_THROW(NotImplemented, "No default config for GmshGridProviderFactory Yaspgrid"); + } + template <class... Args> + static GridProvider<Dune::YaspGrid<dim, Coordinates>, none_t> create(Args&&...) + { + DUNE_THROW(NotImplemented, "No create impleneted for GmshGridProviderFactory Yaspgrid"); + } }; @@ -82,18 +97,37 @@ public: return cfg; } - static GridProvider<GridType, none_t> create(const std::string& filename) + static GridProvider<GridType, none_t> create(const std::string& filename, MPIHelper::MPICommunicator mpi_comm) { + DUNE_THROW_IF(CollectiveCommunication<MPIHelper::MPICommunicator>(mpi_comm).size() > 1, + InvalidStateException, + "Gmsh reading not implemented in parallel"); return GridProvider<GridType, none_t>(GmshReader<GridType>::read(filename)); } - static GridProvider<GridType, none_t> create(const Common::Configuration& cfg = default_config()) + static GridProvider<GridType, none_t> create(const Common::Configuration& cfg, MPIHelper::MPICommunicator mpi_comm) { - return create(cfg.get("filename", default_config().template get<std::string>("filename"))); + return create(cfg.get("filename", default_config().template get<std::string>("filename")), mpi_comm); } }; // class GmshGridProviderFactory +template <class GridType> +typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type +make_gmsh_grid(const std::string& filename, MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) +{ + return GmshGridProviderFactory<GridType>(filename, mpi_comm); +} + + +template <class GridType> +typename std::enable_if<is_grid<GridType>::value, GridProvider<GridType, none_t>>::type +make_gmsh_grid(const Common::Configuration& cfg = GmshGridProviderFactory<GridType>::default_config(), + MPIHelper::MPICommunicator mpi_comm = MPIHelper::getCommunicator()) +{ + return GmshGridProviderFactory<GridType>::create(cfg, mpi_comm); +} + } // namespace Grid } // namespace XT } // namespace Dune diff --git a/dune/xt/grid/structuredgridfactory.hh b/dune/xt/grid/structuredgridfactory.hh index a794b8c7e15a457dd94072a43771ca90a2cb945e..bc79e9d2c3aad66a3f919d7ab70d9dcebd541243 100644 --- a/dune/xt/grid/structuredgridfactory.hh +++ b/dune/xt/grid/structuredgridfactory.hh @@ -24,8 +24,21 @@ #include <dune/grid/spgrid.hh> #endif +#if HAVE_ALBERTA +#include <dune/grid/albertagrid.hh> +#endif + +#if HAVE_DUNE_ALUGRID +#include <dune/alugrid/common/structuredgridfactory.hh> +#endif + +#if HAVE_DUNE_UGGRID +#include <dune/grid/uggrid.hh> +#endif + #include <dune/xt/common/float_cmp.hh> #include <dune/xt/common/ranges.hh> +#include <dune/xt/common/logging.hh> namespace Dune { @@ -128,11 +141,129 @@ public: const Dune::FieldVector<ctype, GridType::dimension>& upperRight, const Dune::array<unsigned int, GridType::dimension>& elements, Dune::array<unsigned int, GridType::dimension> /*overlap*/ = default_overlap<GridType>(), - Dune::MPIHelper::MPICommunicator /*communicator*/ = Dune::MPIHelper::getCommunicator()) + Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator()) + { + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements, mpi_comm); + } +}; + +#if HAVE_DUNE_UGGRID +template <int dim> +class StructuredGridFactory<UGGrid<dim>> : public Dune::StructuredGridFactory<UGGrid<dim>> +{ + typedef UGGrid<dim> GridType; + typedef typename GridType::ctype ctype; + +public: + static std::shared_ptr<GridType> + createCubeGrid(const Dune::FieldVector<ctype, GridType::dimension>& lowerLeft, + const Dune::FieldVector<ctype, GridType::dimension>& upperRight, + const Dune::array<unsigned int, GridType::dimension>& elements, + Dune::array<unsigned int, GridType::dimension> = default_overlap<GridType>(), + Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator()) + { + if (Dune::MPIHelper::isFake) + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); +#if HAVE_MPI + if (mpi_comm == MPI_COMM_WORLD) + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); +#endif + DUNE_THROW(InvalidStateException, "Alberta construction cannot handle non-world communicators"); + } + + static std::shared_ptr<GridType> + createSimplexGrid(const Dune::FieldVector<ctype, dim>& lowerLeft, + const Dune::FieldVector<ctype, dim>& upperRight, + const Dune::array<unsigned int, dim>& elements, + Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator()) + { + if (Dune::MPIHelper::isFake) + return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements); +#if HAVE_MPI + if (mpi_comm == MPI_COMM_WORLD) + return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements); +#endif + DUNE_THROW(InvalidStateException, "UGGRid construction cannot handle non-world communicators"); + } +}; +#endif // HAVE_DUNE_UGGRID + +#if HAVE_ALBERTA +template <int dim> +class StructuredGridFactory<AlbertaGrid<dim, dim>> : public Dune::StructuredGridFactory<AlbertaGrid<dim, dim>> +{ + typedef AlbertaGrid<dim, dim> GridType; + typedef typename GridType::ctype ctype; + +public: + static std::shared_ptr<GridType> + createCubeGrid(const Dune::FieldVector<ctype, GridType::dimension>& lowerLeft, + const Dune::FieldVector<ctype, GridType::dimension>& upperRight, + const Dune::array<unsigned int, GridType::dimension>& elements, + Dune::array<unsigned int, GridType::dimension> overlap = default_overlap<GridType>(), + Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator()) + { + bool warn = false; + unsigned int sum = 0; + for (auto i : Common::value_range(1, dim)) { + warn = warn || (overlap[i] > 1); + sum += overlap[i]; + } + if (warn || sum >= dim) + DXTC_LOG_INFO << "Ignoring non-default overlap for alberta cube creation"; + if (Dune::MPIHelper::isFake) + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); +#if HAVE_MPI + if (mpi_comm == MPI_COMM_WORLD) + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); +#endif + DUNE_THROW(InvalidStateException, "Alberta construction cannot handle non-world communicators"); + } + + static std::shared_ptr<GridType> + createSimplexGrid(const Dune::FieldVector<ctype, dim>& lowerLeft, + const Dune::FieldVector<ctype, dim>& upperRight, + const Dune::array<unsigned int, dim>& elements, + Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator()) { - return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); + if (Dune::MPIHelper::isFake) + return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements); +#if HAVE_MPI + if (mpi_comm == MPI_COMM_WORLD) + return Dune::StructuredGridFactory<GridType>::createSimplexGrid(lowerLeft, upperRight, elements); +#endif + DUNE_THROW(InvalidStateException, "Alberta construction cannot handle non-world communicators"); } }; +#endif // HAVE_ALBERTA + + +#if HAVE_DUNE_ALUGRID +template <int dim_world, int dim, ALUGridRefinementType refineType, class Comm> +class StructuredGridFactory<ALUGrid<dim, dim_world, Dune::cube, refineType, Comm>> + : public Dune::StructuredGridFactory<ALUGrid<dim, dim_world, Dune::cube, refineType, Comm>> +{ + typedef ALUGrid<dim, dim_world, Dune::cube, refineType, Comm> GridType; + typedef typename GridType::ctype ctype; + +public: + static std::shared_ptr<GridType> + createCubeGrid(const Dune::FieldVector<ctype, GridType::dimension>& lowerLeft, + const Dune::FieldVector<ctype, GridType::dimension>& upperRight, + const Dune::array<unsigned int, GridType::dimension>& elements, + Dune::array<unsigned int, GridType::dimension> = default_overlap<GridType>(), + Dune::MPIHelper::MPICommunicator mpi_comm = Dune::MPIHelper::getCommunicator()) + { + if (Dune::MPIHelper::isFake) + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); +#if HAVE_MPI + if (mpi_comm == MPI_COMM_WORLD) + return Dune::StructuredGridFactory<GridType>::createCubeGrid(lowerLeft, upperRight, elements); +#endif + DUNE_THROW(InvalidStateException, "ALUgrid Cube construction cannot handle non-world communicators"); + } +}; +#endif // HAVE_ALBERTA #if HAVE_DUNE_SPGRID template <class ct, int dim, template <int> class Refinement, class Comm> @@ -155,7 +286,7 @@ public: } }; -#endif +#endif // HAVE_DUNE_SPGRID template <int dim, class Coords> class StructuredGridFactory<Dune::YaspGrid<dim, Coords>> @@ -183,6 +314,14 @@ public: DUNE_THROW(Dune::InvalidStateException, "YaspGrid only supports uniform overlap"); return std::make_shared<GridType>(lowerLeft, upperRight, elements, no_periodic_direction, overlap[0], communicator); } + static std::shared_ptr<GridType> + createSimplexGrid(const Dune::FieldVector<ctype, GridType::dimension>&, + const Dune::FieldVector<ctype, GridType::dimension>&, + const array<unsigned int, GridType::dimension>&, + Dune::MPIHelper::MPICommunicator = Dune::MPIHelper::getCommunicator()) + { + DUNE_THROW(NotImplemented, "YaspGrid does not provide Simplex Geometries"); + } }; } // namespace Grid diff --git a/dune/xt/grid/test/builder_definitions.cmake b/dune/xt/grid/test/builder_definitions.cmake index 1ac16a84c9053f5c286bf45ee15cd4a27e4bc45d..361a00a9ac4db3e7c97af373755fa70ce35e202e 100644 --- a/dune/xt/grid/test/builder_definitions.cmake +++ b/dune/xt/grid/test/builder_definitions.cmake @@ -1,99 +1,101 @@ -set(DXT_BIN_COUNT "2" CACHE STRING "number of bins for test targets" ) -add_custom_target(test_binaries_builder_0 DEPENDS headercheck__dune_xt_grid_boundaryinfo.hh headercheck__dune_xt_grid_boundaryinfo_boundarysegment.hh headercheck__dune_xt_grid_boundaryinfo_normalbased.hh headercheck__dune_xt_grid_boundaryinfo_types.hh headercheck__dune_xt_grid_capabilities.hh headercheck__dune_xt_grid_dd_glued.hh headercheck__dune_xt_grid_dd_subdomains_factory.hh headercheck__dune_xt_grid_dd_subdomains_grid.hh headercheck__dune_xt_grid_exceptions.hh headercheck__dune_xt_grid_gridprovider_cube.lib.hh headercheck__dune_xt_grid_gridprovider_dgf.hh headercheck__dune_xt_grid_gridprovider_eoc.hh headercheck__dune_xt_grid_gridprovider_factory.hh headercheck__dune_xt_grid_gridprovider_provider.lib.hh headercheck__dune_xt_grid_grids.hh headercheck__dune_xt_grid_intersection.hh headercheck__dune_xt_grid_layers.hh headercheck__dune_xt_grid_output_pgf.hh headercheck__dune_xt_grid_parallel_partitioning_ranged-internal.hh headercheck__dune_xt_grid_test_dd_glued.hh headercheck__dune_xt_grid_view_from-part.hh headercheck__dune_xt_grid_walk_functors.hh headercheck__dune_xt_grid_walker.hh headercheck__dune_xt_grid_walker_apply-on.hh headercheck__dune_xt_grid_walker_functors.hh headercheck__dune_xt_grid_walker_wrapper.hh headercheck__python_dune_xt_grid_gridprovider.hh headercheck__python_dune_xt_grid_walker.bindings.hh test_boundaryinfo_factory_alberta_1d test_boundaryinfo_factory_alberta_3d test_boundaryinfo_factory_alu_2d_0000 test_boundaryinfo_factory_alu_2d_0002 test_boundaryinfo_factory_alu_3d_0000 test_boundaryinfo_factory_alu_3d_0002 test_boundaryinfo_factory_yasp_2d test_cube_gridprovider_alberta_1d test_cube_gridprovider_alberta_2d test_cube_gridprovider_alberta_3d test_cube_gridprovider_alu_2d_0000 test_cube_gridprovider_alu_3d_0000 test_cube_gridprovider_alu_3d_0001 test_cube_gridprovider_ug_2d test_cube_gridprovider_yasp_1d test_cube_gridprovider_yasp_2d test_dd_glued_3d test_dd_subdomains_cube_1d_yasp_1d test_dd_subdomains_cube_2d_alu_2d_0000 test_dd_subdomains_cube_2d_alu_2d_0002 test_dd_subdomains_cube_2d_yasp_2d test_dd_subdomains_cube_3d_alberta_3d test_dd_subdomains_cube_3d_alu_3d_0001 test_dd_subdomains_cube_3d_alu_3d_0002 test_dgf_gridprovider_alu_2d_0000 test_dgf_gridprovider_alu_2d_0001 test_dgf_gridprovider_alu_3d_0000 test_dgf_gridprovider_alu_3d_0001 test_dgf_gridprovider_yasp_2d test_dgf_gridprovider_yasp_3d test_empty test_gmsh_gridprovider_alu_2d_0002 test_information_1d test_information_2d test_periodic_gridview_alberta_2d test_periodic_gridview_alu_2d_0000 test_periodic_gridview_alu_3d_0002 test_periodic_gridview_yasp_2d test_periodic_gridview_yasp_3d test_search_alberta_2d test_search_alu_2d_0000 test_search_alu_3d_0001 test_search_alu_3d_0002 test_search_ug_2d test_search_ug_3d test_search_yasp_1d test_search_yasp_2d) -set_tests_properties(test_boundaryinfo_factory_alberta_1d_0003 PROPERTIES LABELS "builder_0") +set(DXT_BIN_COUNT "3" CACHE STRING "number of bins for test targets" ) +add_custom_target(test_binaries_builder_0 DEPENDS headercheck__dune_xt_grid_boundaryinfo.hh headercheck__dune_xt_grid_boundaryinfo_factory.hh headercheck__dune_xt_grid_boundaryinfo_normalbased.hh headercheck__dune_xt_grid_entity.hh headercheck__dune_xt_grid_gridprovider.hh headercheck__dune_xt_grid_gridprovider_cube.hh headercheck__dune_xt_grid_gridprovider_factory.hh headercheck__dune_xt_grid_gridprovider_gmsh.hh headercheck__dune_xt_grid_intersection.hh headercheck__dune_xt_grid_parallel_partitioning_ranged-internal.hh headercheck__dune_xt_grid_test_provider.hh headercheck__dune_xt_grid_type_traits.hh headercheck__dune_xt_grid_view_subdomain_intersection-wrapper.hh headercheck__dune_xt_grid_view_subdomain_view.hh headercheck__dune_xt_grid_walk_functors.hh headercheck__dune_xt_grid_walker.lib.hh headercheck__dune_xt_grid_walker_functors.hh headercheck__python_dune_xt_grid_layers.bindings.hh headercheck__python_dune_xt_grid_walker.bindings.hh test_boundaryinfo_factory_alberta_2d test_boundaryinfo_factory_alberta_3d test_boundaryinfo_factory_alu_2d_0002 test_boundaryinfo_factory_alu_3d_0002 test_boundaryinfo_factory_yasp_2d test_cube_gridprovider_alu_2d_0000 test_cube_gridprovider_alu_3d_0001 test_cube_gridprovider_ug_2d test_dd_glued_3d test_dd_subdomains_cube_1d_yasp_1d test_dd_subdomains_cube_2d_alu_2d_0000 test_dd_subdomains_cube_2d_yasp_2d test_dd_subdomains_cube_3d_alu_3d_0001 test_dd_subdomains_cube_3d_yasp_3d test_dgf_gridprovider_alberta_1d test_dgf_gridprovider_alberta_2d test_dgf_gridprovider_alberta_3d test_dgf_gridprovider_yasp_1d test_empty test_eoc_gridprovider test_gmsh_gridprovider_alu_2d_0000 test_gmsh_gridprovider_alu_2d_0001 test_gmsh_gridprovider_alu_2d_0002 test_gmsh_gridprovider_alu_3d_0000 test_periodic_gridview_alu_2d_0000 test_periodic_gridview_ug_2d test_periodic_gridview_yasp_1d test_periodic_gridview_yasp_2d test_periodic_gridview_yasp_3d test_search_alberta_2d test_search_alu_2d_0002 test_search_alu_3d_0000) +set_tests_properties(test_boundaryinfo_factory_alberta_2d_0004 PROPERTIES LABELS "builder_0") set_tests_properties(test_boundaryinfo_factory_alberta_3d_0005 PROPERTIES LABELS "builder_0") -set_tests_properties(test_boundaryinfo_factory_alu_2d_0000_0006 PROPERTIES LABELS "builder_0") set_tests_properties(test_boundaryinfo_factory_alu_2d_0002_0008 PROPERTIES LABELS "builder_0") -set_tests_properties(test_boundaryinfo_factory_alu_3d_0000_0009 PROPERTIES LABELS "builder_0") set_tests_properties(test_boundaryinfo_factory_alu_3d_0002_0011 PROPERTIES LABELS "builder_0") set_tests_properties(test_boundaryinfo_factory_yasp_2d_0001 PROPERTIES LABELS "builder_0") -set_tests_properties(test_cube_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_0") -set_tests_properties(test_cube_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_0") -set_tests_properties(test_cube_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_0") set_tests_properties(test_cube_gridprovider_alu_2d_0000_0006 PROPERTIES LABELS "builder_0") -set_tests_properties(test_cube_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_0") set_tests_properties(test_cube_gridprovider_alu_3d_0001_0010 PROPERTIES LABELS "builder_0") set_tests_properties(test_cube_gridprovider_ug_2d_0012 PROPERTIES LABELS "builder_0") -set_tests_properties(test_cube_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_0") -set_tests_properties(test_cube_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_0") set_tests_properties(test_dd_glued_3d PROPERTIES LABELS "builder_0") -set_tests_properties(test_dd_subdomains_cube_1d_yasp_1d_0001 PROPERTIES LABELS "builder_0") +set_tests_properties(test_dd_subdomains_cube_1d_yasp_1d_0000 PROPERTIES LABELS "builder_0") set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0000_0002 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0002_0004 PROPERTIES LABELS "builder_0") set_tests_properties(test_dd_subdomains_cube_2d_yasp_2d_0000 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dd_subdomains_cube_3d_alberta_3d_0001 PROPERTIES LABELS "builder_0") set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0001_0003 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0002_0004 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dgf_gridprovider_alu_2d_0000_0006 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dgf_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dgf_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dgf_gridprovider_alu_3d_0001_0010 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dgf_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_0") -set_tests_properties(test_dgf_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_0") +set_tests_properties(test_dd_subdomains_cube_3d_yasp_3d_0000 PROPERTIES LABELS "builder_0") +set_tests_properties(test_dgf_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_0") +set_tests_properties(test_dgf_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_0") +set_tests_properties(test_dgf_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_0") +set_tests_properties(test_dgf_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_0") set_tests_properties(test_empty PROPERTIES LABELS "builder_0") +set_tests_properties(test_eoc_gridprovider PROPERTIES LABELS "builder_0") +set_tests_properties(test_gmsh_gridprovider_alu_2d_0000_0000 PROPERTIES LABELS "builder_0") +set_tests_properties(test_gmsh_gridprovider_alu_2d_0001_0001 PROPERTIES LABELS "builder_0") set_tests_properties(test_gmsh_gridprovider_alu_2d_0002_0002 PROPERTIES LABELS "builder_0") -set_tests_properties(test_information_1d_information_1d PROPERTIES LABELS "builder_0") -set_tests_properties(test_information_2d_information_2d PROPERTIES LABELS "builder_0") -set_tests_properties(test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001 PROPERTIES LABELS "builder_0") +set_tests_properties(test_gmsh_gridprovider_alu_3d_0000_0003 PROPERTIES LABELS "builder_0") set_tests_properties(test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003 test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003 test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003 test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003 test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003 test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003 PROPERTIES LABELS "builder_0") -set_tests_properties(test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006 PROPERTIES LABELS "builder_0") +set_tests_properties(test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007 PROPERTIES LABELS "builder_0") +set_tests_properties(test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000 PROPERTIES LABELS "builder_0") set_tests_properties(test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001 test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001 test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001 test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001 test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001 test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001 PROPERTIES LABELS "builder_0") set_tests_properties(test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002 test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002 test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002 test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002 test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002 test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002 PROPERTIES LABELS "builder_0") set_tests_properties(test_search_alberta_2d_0004 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_alu_2d_0000_0006 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_alu_3d_0001_0010 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_alu_3d_0002_0011 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_ug_2d_0012 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_ug_3d_0013 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_yasp_1d_0000 PROPERTIES LABELS "builder_0") -set_tests_properties(test_search_yasp_2d_0001 PROPERTIES LABELS "builder_0") -add_custom_target(test_binaries_builder_1 DEPENDS headercheck__dune_xt_grid_boundaryinfo_alldirichlet.hh headercheck__dune_xt_grid_boundaryinfo_allneumann.hh headercheck__dune_xt_grid_boundaryinfo_allreflecting.hh headercheck__dune_xt_grid_boundaryinfo_factory.hh headercheck__dune_xt_grid_boundaryinfo_interfaces.hh headercheck__dune_xt_grid_entity.hh headercheck__dune_xt_grid_gridprovider.hh headercheck__dune_xt_grid_gridprovider_cube.hh headercheck__dune_xt_grid_gridprovider_gmsh.hh headercheck__dune_xt_grid_gridprovider_provider.hh headercheck__dune_xt_grid_gridprovider_starcd.hh headercheck__dune_xt_grid_information.hh headercheck__dune_xt_grid_output_entity_visualization.hh headercheck__dune_xt_grid_parallel_partitioning_ranged.hh headercheck__dune_xt_grid_rangegenerators.hh headercheck__dune_xt_grid_search.hh headercheck__dune_xt_grid_structuredgridfactory.hh headercheck__dune_xt_grid_test_provider.hh headercheck__dune_xt_grid_type_traits.hh headercheck__dune_xt_grid_view_periodic.hh headercheck__dune_xt_grid_view_subdomain_entity-iterator.hh headercheck__dune_xt_grid_view_subdomain_indexset.hh headercheck__dune_xt_grid_view_subdomain_intersection-iterator.hh headercheck__dune_xt_grid_view_subdomain_intersection-wrapper.hh headercheck__dune_xt_grid_view_subdomain_view.hh headercheck__dune_xt_grid_walker.lib.hh headercheck__python_dune_xt_grid_boundaryinfo.bindings.hh headercheck__python_dune_xt_grid_grids.bindings.hh headercheck__python_dune_xt_grid_layers.bindings.hh test_boundaryinfo_factory_alberta_2d test_boundaryinfo_factory_alu_2d_0001 test_boundaryinfo_factory_alu_3d_0001 test_boundaryinfo_factory_ug_2d test_boundaryinfo_factory_ug_3d test_boundaryinfo_factory_yasp_1d test_boundaryinfo_factory_yasp_3d test_cube_gridprovider_alu_2d_0001 test_cube_gridprovider_alu_2d_0002 test_cube_gridprovider_alu_3d_0002 test_cube_gridprovider_ug_3d test_cube_gridprovider_yasp_3d test_dd_glued_2d test_dd_subdomains_cube_1d_alberta_1d test_dd_subdomains_cube_1d_oned_1d test_dd_subdomains_cube_2d_alberta_2d test_dd_subdomains_cube_2d_alu_2d_0001 test_dd_subdomains_cube_3d_alu_3d_0000 test_dd_subdomains_cube_3d_yasp_3d test_dgf_gridprovider_alberta_1d test_dgf_gridprovider_alberta_2d test_dgf_gridprovider_alberta_3d test_dgf_gridprovider_alu_2d_0002 test_dgf_gridprovider_alu_3d_0002 test_dgf_gridprovider_ug_2d test_dgf_gridprovider_ug_3d test_dgf_gridprovider_yasp_1d test_gmsh_gridprovider_alu_2d_0000 test_gmsh_gridprovider_alu_2d_0001 test_gmsh_gridprovider_alu_3d_0000 test_gmsh_gridprovider_alu_3d_0001 test_gmsh_gridprovider_alu_3d_0002 test_information_3d test_output_pgf test_periodic_gridview_alberta_1d test_periodic_gridview_alberta_3d test_periodic_gridview_alu_2d_0001 test_periodic_gridview_alu_2d_0002 test_periodic_gridview_alu_3d_0000 test_periodic_gridview_alu_3d_0001 test_periodic_gridview_ug_2d test_periodic_gridview_ug_3d test_periodic_gridview_yasp_1d test_search_alberta_1d test_search_alberta_3d test_search_alu_2d_0001 test_search_alu_2d_0002 test_search_alu_3d_0000 test_search_yasp_3d) -set_tests_properties(test_boundaryinfo_factory_alberta_2d_0004 PROPERTIES LABELS "builder_1") -set_tests_properties(test_boundaryinfo_factory_alu_2d_0001_0007 PROPERTIES LABELS "builder_1") +set_tests_properties(test_search_alu_2d_0002_0008 PROPERTIES LABELS "builder_0") +set_tests_properties(test_search_alu_3d_0000_0009 PROPERTIES LABELS "builder_0") +add_custom_target(test_binaries_builder_1 DEPENDS headercheck__dune_xt_grid_bound-object.hh headercheck__dune_xt_grid_boundaryinfo_alldirichlet.hh headercheck__dune_xt_grid_boundaryinfo_allneumann.hh headercheck__dune_xt_grid_boundaryinfo_boundarysegment.hh headercheck__dune_xt_grid_boundaryinfo_types.hh headercheck__dune_xt_grid_capabilities.hh headercheck__dune_xt_grid_dd_subdomains_grid.hh headercheck__dune_xt_grid_exceptions.hh headercheck__dune_xt_grid_gridprovider_eoc.hh headercheck__dune_xt_grid_gridprovider_provider.lib.hh headercheck__dune_xt_grid_gridprovider_starcd.hh headercheck__dune_xt_grid_output_entity_visualization.hh headercheck__dune_xt_grid_output_pgf.hh headercheck__dune_xt_grid_parallel_partitioning_ranged.hh headercheck__dune_xt_grid_structuredgridfactory.hh headercheck__dune_xt_grid_test_dd_glued.hh headercheck__dune_xt_grid_view_periodic.hh headercheck__dune_xt_grid_walker_wrapper.hh headercheck__python_dune_xt_grid_available_types.hh test_boundaryinfo_factory_alberta_1d test_boundaryinfo_factory_alu_2d_0000 test_boundaryinfo_factory_alu_3d_0001 test_boundaryinfo_factory_ug_3d test_boundaryinfo_factory_yasp_1d test_boundaryinfo_factory_yasp_3d test_cube_gridprovider_ug_3d test_cube_gridprovider_yasp_2d test_dd_glued_2d test_dd_subdomains_cube_2d_alberta_2d test_dd_subdomains_cube_2d_alu_2d_0001 test_dd_subdomains_cube_3d_alberta_3d test_dd_subdomains_cube_3d_alu_3d_0002 test_dgf_gridprovider_alu_2d_0000 test_dgf_gridprovider_alu_3d_0000 test_dgf_gridprovider_ug_3d test_dgf_gridprovider_yasp_3d test_gmsh_gridprovider_alu_3d_0001 test_gmsh_gridprovider_alu_3d_0002 test_information_3d test_periodic_gridview_alberta_1d test_periodic_gridview_alberta_3d test_periodic_gridview_alu_2d_0001 test_periodic_gridview_alu_3d_0000 test_search_alberta_1d test_search_alberta_3d test_search_alu_2d_0001 test_search_alu_3d_0001 test_search_alu_3d_0002 test_search_ug_3d test_search_yasp_1d test_search_yasp_2d test_walker) +set_tests_properties(test_boundaryinfo_factory_alberta_1d_0003 PROPERTIES LABELS "builder_1") +set_tests_properties(test_boundaryinfo_factory_alu_2d_0000_0006 PROPERTIES LABELS "builder_1") set_tests_properties(test_boundaryinfo_factory_alu_3d_0001_0010 PROPERTIES LABELS "builder_1") -set_tests_properties(test_boundaryinfo_factory_ug_2d_0012 PROPERTIES LABELS "builder_1") set_tests_properties(test_boundaryinfo_factory_ug_3d_0013 PROPERTIES LABELS "builder_1") set_tests_properties(test_boundaryinfo_factory_yasp_1d_0000 PROPERTIES LABELS "builder_1") set_tests_properties(test_boundaryinfo_factory_yasp_3d_0002 PROPERTIES LABELS "builder_1") -set_tests_properties(test_cube_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_1") -set_tests_properties(test_cube_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_1") -set_tests_properties(test_cube_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_1") set_tests_properties(test_cube_gridprovider_ug_3d_0013 PROPERTIES LABELS "builder_1") -set_tests_properties(test_cube_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_1") +set_tests_properties(test_cube_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_1") set_tests_properties(test_dd_glued_2d PROPERTIES LABELS "builder_1") -set_tests_properties(test_dd_subdomains_cube_1d_alberta_1d_0002 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dd_subdomains_cube_1d_oned_1d_0000 PROPERTIES LABELS "builder_1") set_tests_properties(test_dd_subdomains_cube_2d_alberta_2d_0001 PROPERTIES LABELS "builder_1") set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0001_0003 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0000_0002 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dd_subdomains_cube_3d_yasp_3d_0000 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_ug_2d_0012 PROPERTIES LABELS "builder_1") +set_tests_properties(test_dd_subdomains_cube_3d_alberta_3d_0001 PROPERTIES LABELS "builder_1") +set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0002_0004 PROPERTIES LABELS "builder_1") +set_tests_properties(test_dgf_gridprovider_alu_2d_0000_0006 PROPERTIES LABELS "builder_1") +set_tests_properties(test_dgf_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_1") set_tests_properties(test_dgf_gridprovider_ug_3d_0013 PROPERTIES LABELS "builder_1") -set_tests_properties(test_dgf_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_1") -set_tests_properties(test_gmsh_gridprovider_alu_2d_0000_0000 PROPERTIES LABELS "builder_1") -set_tests_properties(test_gmsh_gridprovider_alu_2d_0001_0001 PROPERTIES LABELS "builder_1") -set_tests_properties(test_gmsh_gridprovider_alu_3d_0000_0003 PROPERTIES LABELS "builder_1") +set_tests_properties(test_dgf_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_1") set_tests_properties(test_gmsh_gridprovider_alu_3d_0001_0004 PROPERTIES LABELS "builder_1") set_tests_properties(test_gmsh_gridprovider_alu_3d_0002_0005 PROPERTIES LABELS "builder_1") set_tests_properties(test_information_3d_information_3d PROPERTIES LABELS "builder_1") -set_tests_properties(test_output_pgf PROPERTIES LABELS "builder_1") set_tests_properties(test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000 test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000 test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000 test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000 test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000 test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000 PROPERTIES LABELS "builder_1") set_tests_properties(test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002 test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002 test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002 test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002 test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002 test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002 PROPERTIES LABELS "builder_1") set_tests_properties(test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003 test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003 test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003 test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003 test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003 test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003 PROPERTIES LABELS "builder_1") -set_tests_properties(test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004 PROPERTIES LABELS "builder_1") set_tests_properties(test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004 test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004 test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004 test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004 test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004 test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004 PROPERTIES LABELS "builder_1") -set_tests_properties(test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005 PROPERTIES LABELS "builder_1") -set_tests_properties(test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007 test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005 test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007 test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005 test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007 PROPERTIES LABELS "builder_1") -set_tests_properties(test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008 PROPERTIES LABELS "builder_1") -set_tests_properties(test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000 test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000 test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000 PROPERTIES LABELS "builder_1") set_tests_properties(test_search_alberta_1d_0003 PROPERTIES LABELS "builder_1") set_tests_properties(test_search_alberta_3d_0005 PROPERTIES LABELS "builder_1") set_tests_properties(test_search_alu_2d_0001_0007 PROPERTIES LABELS "builder_1") -set_tests_properties(test_search_alu_2d_0002_0008 PROPERTIES LABELS "builder_1") -set_tests_properties(test_search_alu_3d_0000_0009 PROPERTIES LABELS "builder_1") -set_tests_properties(test_search_yasp_3d_0002 PROPERTIES LABELS "builder_1") +set_tests_properties(test_search_alu_3d_0001_0010 PROPERTIES LABELS "builder_1") +set_tests_properties(test_search_alu_3d_0002_0011 PROPERTIES LABELS "builder_1") +set_tests_properties(test_search_ug_3d_0013 PROPERTIES LABELS "builder_1") +set_tests_properties(test_search_yasp_1d_0000 PROPERTIES LABELS "builder_1") +set_tests_properties(test_search_yasp_2d_0001 PROPERTIES LABELS "builder_1") +set_tests_properties(test_walker PROPERTIES LABELS "builder_1") +add_custom_target(test_binaries_builder_2 DEPENDS headercheck__dune_xt_grid_boundaryinfo_allreflecting.hh headercheck__dune_xt_grid_boundaryinfo_interfaces.hh headercheck__dune_xt_grid_dd_glued.hh headercheck__dune_xt_grid_dd_subdomains_factory.hh headercheck__dune_xt_grid_gridprovider_cube.lib.hh headercheck__dune_xt_grid_gridprovider_dgf.hh headercheck__dune_xt_grid_gridprovider_provider.hh headercheck__dune_xt_grid_grids.hh headercheck__dune_xt_grid_information.hh headercheck__dune_xt_grid_layers.hh headercheck__dune_xt_grid_rangegenerators.hh headercheck__dune_xt_grid_search.hh headercheck__dune_xt_grid_view_from-part.hh headercheck__dune_xt_grid_view_subdomain_entity-iterator.hh headercheck__dune_xt_grid_view_subdomain_indexset.hh headercheck__dune_xt_grid_view_subdomain_intersection-iterator.hh headercheck__dune_xt_grid_walker.hh headercheck__dune_xt_grid_walker_apply-on.hh headercheck__python_dune_xt_grid_boundaryinfo.bindings.hh headercheck__python_dune_xt_grid_gridprovider.hh headercheck__python_dune_xt_grid_grids.bindings.hh test_boundaryinfo_factory_alu_2d_0001 test_boundaryinfo_factory_alu_3d_0000 test_boundaryinfo_factory_ug_2d test_cube_gridprovider_alberta_1d test_cube_gridprovider_alberta_2d test_cube_gridprovider_alberta_3d test_cube_gridprovider_alu_2d_0001 test_cube_gridprovider_alu_2d_0002 test_cube_gridprovider_alu_3d_0000 test_cube_gridprovider_alu_3d_0002 test_cube_gridprovider_yasp_1d test_cube_gridprovider_yasp_3d test_dd_subdomains_cube_1d_alberta_1d test_dd_subdomains_cube_2d_alu_2d_0002 test_dd_subdomains_cube_3d_alu_3d_0000 test_dgf_gridprovider_alu_2d_0001 test_dgf_gridprovider_alu_2d_0002 test_dgf_gridprovider_alu_3d_0001 test_dgf_gridprovider_alu_3d_0002 test_dgf_gridprovider_ug_2d test_dgf_gridprovider_yasp_2d test_information_1d test_information_2d test_output_pgf test_periodic_gridview_alberta_2d test_periodic_gridview_alu_2d_0002 test_periodic_gridview_alu_3d_0001 test_periodic_gridview_alu_3d_0002 test_periodic_gridview_ug_3d test_search_alu_2d_0000 test_search_ug_2d test_search_yasp_3d) +set_tests_properties(test_boundaryinfo_factory_alu_2d_0001_0007 PROPERTIES LABELS "builder_2") +set_tests_properties(test_boundaryinfo_factory_alu_3d_0000_0009 PROPERTIES LABELS "builder_2") +set_tests_properties(test_boundaryinfo_factory_ug_2d_0012 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alberta_1d_0003 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alberta_2d_0004 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alberta_3d_0005 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alu_3d_0000_0009 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_yasp_1d_0000 PROPERTIES LABELS "builder_2") +set_tests_properties(test_cube_gridprovider_yasp_3d_0002 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dd_subdomains_cube_1d_alberta_1d_0001 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dd_subdomains_cube_2d_alu_2d_0002_0004 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dd_subdomains_cube_3d_alu_3d_0000_0002 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dgf_gridprovider_alu_2d_0001_0007 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dgf_gridprovider_alu_2d_0002_0008 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dgf_gridprovider_alu_3d_0001_0010 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dgf_gridprovider_alu_3d_0002_0011 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dgf_gridprovider_ug_2d_0012 PROPERTIES LABELS "builder_2") +set_tests_properties(test_dgf_gridprovider_yasp_2d_0001 PROPERTIES LABELS "builder_2") +set_tests_properties(test_information_1d_information_1d PROPERTIES LABELS "builder_2") +set_tests_properties(test_information_2d_information_2d PROPERTIES LABELS "builder_2") +set_tests_properties(test_output_pgf PROPERTIES LABELS "builder_2") +set_tests_properties(test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001 test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001 test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001 PROPERTIES LABELS "builder_2") +set_tests_properties(test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004 test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004 PROPERTIES LABELS "builder_2") +set_tests_properties(test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005 test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005 PROPERTIES LABELS "builder_2") +set_tests_properties(test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006 test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006 PROPERTIES LABELS "builder_2") +set_tests_properties(test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008 test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006 test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008 test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006 test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008 PROPERTIES LABELS "builder_2") +set_tests_properties(test_search_alu_2d_0000_0006 PROPERTIES LABELS "builder_2") +set_tests_properties(test_search_ug_2d_0012 PROPERTIES LABELS "builder_2") +set_tests_properties(test_search_yasp_3d_0002 PROPERTIES LABELS "builder_2") diff --git a/dune/xt/grid/test/dd_subdomains_cube_1d.mini b/dune/xt/grid/test/dd_subdomains_cube_1d.mini index deff71bacecd3d0a72d64671d4253ea7061ee0dc..cdb8cde477f528ae857409ad8a383ecd0cca7e0b 100644 --- a/dune/xt/grid/test/dd_subdomains_cube_1d.mini +++ b/dune/xt/grid/test/dd_subdomains_cube_1d.mini @@ -3,13 +3,12 @@ __exec_suffix = {gridname}_{dimDomain}d dimDomain = 1 __local.grid_yasp = Dune::YaspGrid<{dimDomain},Dune::EquidistantOffsetCoordinates<double,{dimDomain}>> -__local.grid_oned = OneDGrid __local.grid_alberta = Dune::AlbertaGrid<{dimDomain},{dimDomain}> -grid = {__local.grid_yasp}, {__local.grid_oned}, {__local.grid_alberta} | expand grid -1, 1, HAVE_ALBERTA | expand grid | cmake_guard +grid = {__local.grid_yasp}, {__local.grid_alberta} | expand grid +1, HAVE_ALBERTA | expand grid | cmake_guard -gridname = yasp, oned, alberta | expand grid +gridname = yasp, alberta | expand grid [__static] TESTGRIDTYPE = {grid} diff --git a/dune/xt/grid/test/mpi_grid.py b/dune/xt/grid/test/mpi_grid.py new file mode 100644 index 0000000000000000000000000000000000000000..a80f334658a4b6c4d2a9b1179579beefa0a61ef1 --- /dev/null +++ b/dune/xt/grid/test/mpi_grid.py @@ -0,0 +1,5 @@ +import dune.xt.grid.types as grid_types +from dune.xt.codegen import typeid_to_typedef_name as safe_name + +# alberta needs manual flag adding in cmake, so we skip it here +all_grids = ((safe_name(g), g) for g in grid_types.all_types(cache, list(range(1, 4))) if 'Alberta' not in g) diff --git a/dune/xt/grid/test/mpi_grid.tpl b/dune/xt/grid/test/mpi_grid.tpl new file mode 100644 index 0000000000000000000000000000000000000000..53980c31b1bac67f5ce4018774dfd8dbe7096b48 --- /dev/null +++ b/dune/xt/grid/test/mpi_grid.tpl @@ -0,0 +1,69 @@ +// This file is part of the dune-xt-grid project: +// https://github.com/dune-community/dune-xt-grid +// Copyright 2009-2018 dune-xt-grid developers and contributors. All rights reserved. +// License: Dual licensed as BSD 2-Clause License (http://opensource.org/licenses/BSD-2-Clause) +// or GPL-2.0+ (http://opensource.org/licenses/gpl-license) +// with "runtime exception" (http://www.dune-project.org/license.html) +// Authors: +// Rene Milk (2018) + +#include <dune/xt/common/test/main.hxx> + +#include <dune/xt/grid/gridprovider/eoc.hh> +#include <dune/xt/grid/grids.hh> +#include <dune/grid/uggrid.hh> + +{% for name, type in config.all_grids %} + +#if HAVE_MPI +GTEST_TEST(GridProvider_{{name}}, layers) +{ + using ProviderFactory = Dune::XT::Grid::GridProviderFactory<{{type}}>; + const auto type = ProviderFactory::available()[0]; + const auto config = ProviderFactory::default_config(type); + + int world_rank; + MPI_Comm_rank(MPI_COMM_WORLD, &world_rank); + MPI_Comm split_comm; + MPI_Comm_split(MPI_COMM_WORLD, world_rank, world_rank, &split_comm); + + {% if "cube" in type or "UGGrid" in type %} + // uggrid + alu cube grids cannot handle non-default comms + EXPECT_THROW(ProviderFactory::create(config, split_comm), Dune::InvalidStateException); + return; + {% endif %} + auto local_provider = ProviderFactory::create(config, split_comm); + auto global_provider = ProviderFactory::create(config, MPI_COMM_WORLD); + auto& local_grid = local_provider.grid(); + auto& global_grid = global_provider.grid(); + auto& local_colcom = local_grid.comm(); + auto& global_colcom = global_grid.comm(); + + const bool actually_parallel = global_grid.comm().size() > 1; + if(actually_parallel){ + EXPECT_NE(local_colcom.size(), global_colcom.size()); + EXPECT_GE(local_grid.size(0), global_grid.size(0)); + } + else { + EXPECT_EQ(local_colcom.size(), global_colcom.size()); + EXPECT_EQ(global_grid.size(0), local_grid.size(0)); + } +} +#else +GTEST_TEST(GridProvider_{{name}}, layers) +{ + using ProviderFactory = Dune::XT::Grid::GridProviderFactory<{{type}}>; + const auto type = ProviderFactory::available()[0]; + const auto config = ProviderFactory::default_config(type); + auto local_provider = ProviderFactory::create(config, Dune::MPIHelper::getLocalCommunicator()); + auto global_provider = ProviderFactory::create(config, Dune::MPIHelper::getCommunicator()); + auto& local_grid = local_provider.grid(); + auto& global_grid = global_provider.grid(); + auto& local_colcom = local_grid.comm(); + auto& global_colcom = global_grid.comm(); + + EXPECT_EQ(local_colcom.size(), global_colcom.size()); + EXPECT_EQ(global_grid.size(0), local_grid.size(0)); +} +#endif +{% endfor %} diff --git a/dune/xt/grid/test/periodic_gridview.cc b/dune/xt/grid/test/periodic_gridview.cc index 3d857e63a7ead759e48c6978f587d1dd3a85a74f..1de003dd3971250bda4a9f204638934cada3f500 100644 --- a/dune/xt/grid/test/periodic_gridview.cc +++ b/dune/xt/grid/test/periodic_gridview.cc @@ -85,10 +85,12 @@ struct PeriodicViewTest : public testing::Test const IndexSet& index_set = periodic_grid_view.indexSet(); const int codim0_size = periodic_grid_view.size(0); EXPECT_EQ(grid_view.size(0), codim0_size); - if (is_cube) + if (is_cube) { EXPECT_EQ(std::pow(elements_per_direction, dimDomain), codim0_size); - if (is_simplex) + } + if (is_simplex) { EXPECT_EQ(std::pow(elements_per_direction, dimDomain) * factorial(dimDomain), codim0_size); + } EXPECT_EQ(grid_view.overlapSize(0), periodic_grid_view.overlapSize(0)); EXPECT_EQ(grid_view.overlapSize(1), periodic_grid_view.overlapSize(1)); EXPECT_EQ(grid_view.ghostSize(0), periodic_grid_view.ghostSize(0)); diff --git a/dune/xt/grid/test/testruns_totals.pickle b/dune/xt/grid/test/testruns_totals.pickle index b75ddbed43502a12337c25600f0c2799dcc5854e..28bb41b3e26861c7132768fe6dbedec6c8128f0d 100644 --- a/dune/xt/grid/test/testruns_totals.pickle +++ b/dune/xt/grid/test/testruns_totals.pickle @@ -1 +1 @@ -[["test_boundaryinfo_factory_yasp_1d_0000", "test_boundaryinfo_factory_yasp_2d_0001", "test_boundaryinfo_factory_yasp_3d_0002", "test_boundaryinfo_factory_alberta_1d_0003", "test_boundaryinfo_factory_alberta_2d_0004", "test_boundaryinfo_factory_alberta_3d_0005", "test_boundaryinfo_factory_alu_2d_0000_0006", "test_boundaryinfo_factory_alu_2d_0001_0007", "test_boundaryinfo_factory_alu_2d_0002_0008", "test_boundaryinfo_factory_alu_3d_0000_0009", "test_boundaryinfo_factory_alu_3d_0001_0010", "test_boundaryinfo_factory_alu_3d_0002_0011", "test_boundaryinfo_factory_ug_2d_0012", "test_boundaryinfo_factory_ug_3d_0013", "test_cube_gridprovider_yasp_1d_0000", "test_cube_gridprovider_yasp_2d_0001", "test_cube_gridprovider_yasp_3d_0002", "test_cube_gridprovider_alberta_1d_0003", "test_cube_gridprovider_alberta_2d_0004", "test_cube_gridprovider_alberta_3d_0005", "test_cube_gridprovider_alu_2d_0000_0006", "test_cube_gridprovider_alu_2d_0001_0007", "test_cube_gridprovider_alu_2d_0002_0008", "test_cube_gridprovider_alu_3d_0000_0009", "test_cube_gridprovider_alu_3d_0001_0010", "test_cube_gridprovider_alu_3d_0002_0011", "test_cube_gridprovider_ug_2d_0012", "test_cube_gridprovider_ug_3d_0013", "test_dd_glued_2d", "test_dd_glued_3d", "test_dd_subdomains_cube_1d_oned_1d_0000", "test_dd_subdomains_cube_1d_yasp_1d_0001", "test_dd_subdomains_cube_1d_alberta_1d_0002", "test_dd_subdomains_cube_2d_yasp_2d_0000", "test_dd_subdomains_cube_2d_alberta_2d_0001", "test_dd_subdomains_cube_2d_alu_2d_0000_0002", "test_dd_subdomains_cube_2d_alu_2d_0001_0003", "test_dd_subdomains_cube_2d_alu_2d_0002_0004", "test_dd_subdomains_cube_3d_yasp_3d_0000", "test_dd_subdomains_cube_3d_alberta_3d_0001", "test_dd_subdomains_cube_3d_alu_3d_0000_0002", "test_dd_subdomains_cube_3d_alu_3d_0001_0003", "test_dd_subdomains_cube_3d_alu_3d_0002_0004", "test_dgf_gridprovider_yasp_1d_0000", "test_dgf_gridprovider_yasp_2d_0001", "test_dgf_gridprovider_yasp_3d_0002", "test_dgf_gridprovider_alberta_1d_0003", "test_dgf_gridprovider_alberta_2d_0004", "test_dgf_gridprovider_alberta_3d_0005", "test_dgf_gridprovider_alu_2d_0000_0006", "test_dgf_gridprovider_alu_2d_0001_0007", "test_dgf_gridprovider_alu_2d_0002_0008", "test_dgf_gridprovider_alu_3d_0000_0009", "test_dgf_gridprovider_alu_3d_0001_0010", "test_dgf_gridprovider_alu_3d_0002_0011", "test_dgf_gridprovider_ug_2d_0012", "test_dgf_gridprovider_ug_3d_0013", "test_empty", "test_gmsh_gridprovider_alu_2d_0000_0000", "test_gmsh_gridprovider_alu_2d_0001_0001", "test_gmsh_gridprovider_alu_2d_0002_0002", "test_gmsh_gridprovider_alu_3d_0000_0003", "test_gmsh_gridprovider_alu_3d_0001_0004", "test_gmsh_gridprovider_alu_3d_0002_0005", "test_information_1d_information_1d", "test_information_2d_information_2d", "test_information_3d_information_3d", "test_output_pgf", "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000", "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001", "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002", "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000", "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001", "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002", "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003", "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003", "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004", "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004", "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005", "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006", "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007", "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008", "test_search_yasp_1d_0000", "test_search_yasp_2d_0001", "test_search_yasp_3d_0002", "test_search_alberta_1d_0003", "test_search_alberta_2d_0004", "test_search_alberta_3d_0005", "test_search_alu_2d_0000_0006", "test_search_alu_2d_0001_0007", "test_search_alu_2d_0002_0008", "test_search_alu_3d_0000_0009", "test_search_alu_3d_0001_0010", "test_search_alu_3d_0002_0011", "test_search_ug_2d_0012", "test_search_ug_3d_0013"], {"test_boundaryinfo_factory_alberta_1d_0003": 0.01879096031188965, "test_boundaryinfo_factory_alberta_2d_0004": 0.017849206924438477, "test_boundaryinfo_factory_alberta_3d_0005": 0.016821622848510742, "test_boundaryinfo_factory_alu_2d_0000_0006": 0.020161151885986328, "test_boundaryinfo_factory_alu_2d_0001_0007": 0.021579265594482422, "test_boundaryinfo_factory_alu_2d_0002_0008": 0.018848896026611328, "test_boundaryinfo_factory_alu_3d_0000_0009": 0.021801233291625977, "test_boundaryinfo_factory_alu_3d_0001_0010": 0.013073921203613281, "test_boundaryinfo_factory_alu_3d_0002_0011": 0.01934957504272461, "test_boundaryinfo_factory_ug_2d_0012": 0.06149005889892578, "test_boundaryinfo_factory_ug_3d_0013": 0.012807607650756836, "test_boundaryinfo_factory_yasp_1d_0000": 0.04857516288757324, "test_boundaryinfo_factory_yasp_2d_0001": 0.02437448501586914, "test_boundaryinfo_factory_yasp_3d_0002": 0.020878076553344727, "test_cube_gridprovider_alberta_1d_0003": 0.016344308853149414, "test_cube_gridprovider_alberta_2d_0004": 0.01675248146057129, "test_cube_gridprovider_alberta_3d_0005": 0.01607537269592285, "test_cube_gridprovider_alu_2d_0000_0006": 0.020139217376708984, "test_cube_gridprovider_alu_2d_0001_0007": 0.022524356842041016, "test_cube_gridprovider_alu_2d_0002_0008": 0.020697832107543945, "test_cube_gridprovider_alu_3d_0000_0009": 0.01953434944152832, "test_cube_gridprovider_alu_3d_0001_0010": 0.020487308502197266, "test_cube_gridprovider_alu_3d_0002_0011": 0.014725923538208008, "test_cube_gridprovider_ug_2d_0012": 0.013370037078857422, "test_cube_gridprovider_ug_3d_0013": 0.013493537902832031, "test_cube_gridprovider_yasp_1d_0000": 0.02048468589782715, "test_cube_gridprovider_yasp_2d_0001": 0.01860785484313965, "test_cube_gridprovider_yasp_3d_0002": 0.01403498649597168, "test_dd_glued_2d": 0.020163774490356445, "test_dd_glued_3d": 0.018154144287109375, "test_dd_subdomains_cube_1d_alberta_1d_0002": 0.015096187591552734, "test_dd_subdomains_cube_1d_oned_1d_0000": 0.01475834846496582, "test_dd_subdomains_cube_1d_yasp_1d_0001": 0.021187305450439453, "test_dd_subdomains_cube_2d_alberta_2d_0001": 0.014922618865966797, "test_dd_subdomains_cube_2d_alu_2d_0000_0002": 0.014841079711914062, "test_dd_subdomains_cube_2d_alu_2d_0001_0003": 0.014711856842041016, "test_dd_subdomains_cube_2d_alu_2d_0002_0004": 0.019779205322265625, "test_dd_subdomains_cube_2d_yasp_2d_0000": 0.015044212341308594, "test_dd_subdomains_cube_3d_alberta_3d_0001": 0.015231132507324219, "test_dd_subdomains_cube_3d_alu_3d_0000_0002": 0.01627326011657715, "test_dd_subdomains_cube_3d_alu_3d_0001_0003": 0.01916646957397461, "test_dd_subdomains_cube_3d_alu_3d_0002_0004": 0.017833232879638672, "test_dd_subdomains_cube_3d_yasp_3d_0000": 0.021175384521484375, "test_dgf_gridprovider_alberta_1d_0003": 0.014127731323242188, "test_dgf_gridprovider_alberta_2d_0004": 0.01454472541809082, "test_dgf_gridprovider_alberta_3d_0005": 0.014353275299072266, "test_dgf_gridprovider_alu_2d_0000_0006": 0.02131032943725586, "test_dgf_gridprovider_alu_2d_0001_0007": 0.02017378807067871, "test_dgf_gridprovider_alu_2d_0002_0008": 0.027289152145385742, "test_dgf_gridprovider_alu_3d_0000_0009": 0.021492481231689453, "test_dgf_gridprovider_alu_3d_0001_0010": 0.018991708755493164, "test_dgf_gridprovider_alu_3d_0002_0011": 0.025875091552734375, "test_dgf_gridprovider_ug_2d_0012": 0.013030052185058594, "test_dgf_gridprovider_ug_3d_0013": 0.013205289840698242, "test_dgf_gridprovider_yasp_1d_0000": 0.018175125122070312, "test_dgf_gridprovider_yasp_2d_0001": 0.017711162567138672, "test_dgf_gridprovider_yasp_3d_0002": 0.01462244987487793, "test_empty": 0.043166160583496094, "test_gmsh_gridprovider_alu_2d_0000_0000": 0.02014899253845215, "test_gmsh_gridprovider_alu_2d_0001_0001": 0.022755861282348633, "test_gmsh_gridprovider_alu_2d_0002_0002": 0.021397113800048828, "test_gmsh_gridprovider_alu_3d_0000_0003": 0.022572994232177734, "test_gmsh_gridprovider_alu_3d_0001_0004": 0.021507740020751953, "test_gmsh_gridprovider_alu_3d_0002_0005": 0.016646385192871094, "test_information_1d_information_1d": 0.015696048736572266, "test_information_2d_information_2d": 0.014620542526245117, "test_information_3d_information_3d": 0.022844552993774414, "test_output_pgf": 0.02042245864868164, "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000": 0.01412653923034668, "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001": 0.014034032821655273, "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002": 0.01592850685119629, "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003": 0.10288047790527344, "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003": 0.10729146003723145, "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004": 0.10921049118041992, "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004": 0.11465072631835938, "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005": 0.11975669860839844, "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006": 0.10587620735168457, "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007": 0.013364315032958984, "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008": 0.013238668441772461, "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000": 0.12091302871704102, "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001": 0.12057709693908691, "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002": 0.12546849250793457, "test_search_alberta_1d_0003": 0.014313936233520508, "test_search_alberta_2d_0004": 0.014206886291503906, "test_search_alberta_3d_0005": 0.014241695404052734, "test_search_alu_2d_0000_0006": 0.015004634857177734, "test_search_alu_2d_0001_0007": 0.02175450325012207, "test_search_alu_2d_0002_0008": 0.019686460494995117, "test_search_alu_3d_0000_0009": 0.018866539001464844, "test_search_alu_3d_0001_0010": 0.021307945251464844, "test_search_alu_3d_0002_0011": 0.018821001052856445, "test_search_ug_2d_0012": 0.013257026672363281, "test_search_ug_3d_0013": 0.01296544075012207, "test_search_yasp_1d_0000": 0.02102828025817871, "test_search_yasp_2d_0001": 0.019915103912353516, "test_search_yasp_3d_0002": 0.019326210021972656}] \ No newline at end of file +[["test_boundaryinfo_factory_yasp_1d_0000", "test_boundaryinfo_factory_yasp_2d_0001", "test_boundaryinfo_factory_yasp_3d_0002", "test_boundaryinfo_factory_alberta_1d_0003", "test_boundaryinfo_factory_alberta_2d_0004", "test_boundaryinfo_factory_alberta_3d_0005", "test_boundaryinfo_factory_alu_2d_0000_0006", "test_boundaryinfo_factory_alu_2d_0001_0007", "test_boundaryinfo_factory_alu_2d_0002_0008", "test_boundaryinfo_factory_alu_3d_0000_0009", "test_boundaryinfo_factory_alu_3d_0001_0010", "test_boundaryinfo_factory_alu_3d_0002_0011", "test_boundaryinfo_factory_ug_2d_0012", "test_boundaryinfo_factory_ug_3d_0013", "test_cube_gridprovider_yasp_1d_0000", "test_cube_gridprovider_yasp_2d_0001", "test_cube_gridprovider_yasp_3d_0002", "test_cube_gridprovider_alberta_1d_0003", "test_cube_gridprovider_alberta_2d_0004", "test_cube_gridprovider_alberta_3d_0005", "test_cube_gridprovider_alu_2d_0000_0006", "test_cube_gridprovider_alu_2d_0001_0007", "test_cube_gridprovider_alu_2d_0002_0008", "test_cube_gridprovider_alu_3d_0000_0009", "test_cube_gridprovider_alu_3d_0001_0010", "test_cube_gridprovider_alu_3d_0002_0011", "test_cube_gridprovider_ug_2d_0012", "test_cube_gridprovider_ug_3d_0013", "test_dd_glued_2d", "test_dd_glued_3d", "test_dd_subdomains_cube_1d_yasp_1d_0000", "test_dd_subdomains_cube_1d_alberta_1d_0001", "test_dd_subdomains_cube_2d_yasp_2d_0000", "test_dd_subdomains_cube_2d_alberta_2d_0001", "test_dd_subdomains_cube_2d_alu_2d_0000_0002", "test_dd_subdomains_cube_2d_alu_2d_0001_0003", "test_dd_subdomains_cube_2d_alu_2d_0002_0004", "test_dd_subdomains_cube_3d_yasp_3d_0000", "test_dd_subdomains_cube_3d_alberta_3d_0001", "test_dd_subdomains_cube_3d_alu_3d_0000_0002", "test_dd_subdomains_cube_3d_alu_3d_0001_0003", "test_dd_subdomains_cube_3d_alu_3d_0002_0004", "test_dgf_gridprovider_yasp_1d_0000", "test_dgf_gridprovider_yasp_2d_0001", "test_dgf_gridprovider_yasp_3d_0002", "test_dgf_gridprovider_alberta_1d_0003", "test_dgf_gridprovider_alberta_2d_0004", "test_dgf_gridprovider_alberta_3d_0005", "test_dgf_gridprovider_alu_2d_0000_0006", "test_dgf_gridprovider_alu_2d_0001_0007", "test_dgf_gridprovider_alu_2d_0002_0008", "test_dgf_gridprovider_alu_3d_0000_0009", "test_dgf_gridprovider_alu_3d_0001_0010", "test_dgf_gridprovider_alu_3d_0002_0011", "test_dgf_gridprovider_ug_2d_0012", "test_dgf_gridprovider_ug_3d_0013", "test_empty", "test_gmsh_gridprovider_alu_2d_0000_0000", "test_gmsh_gridprovider_alu_2d_0001_0001", "test_gmsh_gridprovider_alu_2d_0002_0002", "test_gmsh_gridprovider_alu_3d_0000_0003", "test_gmsh_gridprovider_alu_3d_0001_0004", "test_gmsh_gridprovider_alu_3d_0002_0005", "test_information_1d_information_1d", "test_information_2d_information_2d", "test_information_3d_information_3d", "test_output_pgf", "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000", "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001", "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002", "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000", "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001", "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002", "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003", "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003", "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004", "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004", "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005", "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006", "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007", "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008", "test_search_yasp_1d_0000", "test_search_yasp_2d_0001", "test_search_yasp_3d_0002", "test_search_alberta_1d_0003", "test_search_alberta_2d_0004", "test_search_alberta_3d_0005", "test_search_alu_2d_0000_0006", "test_search_alu_2d_0001_0007", "test_search_alu_2d_0002_0008", "test_search_alu_3d_0000_0009", "test_search_alu_3d_0001_0010", "test_search_alu_3d_0002_0011", "test_search_ug_2d_0012", "test_search_ug_3d_0013", "test_walker", "test_eoc_gridprovider"], {"test_boundaryinfo_factory_alberta_1d_0003": 0.01879096031188965, "test_boundaryinfo_factory_alberta_2d_0004": 0.017849206924438477, "test_boundaryinfo_factory_alberta_3d_0005": 0.016821622848510742, "test_boundaryinfo_factory_alu_2d_0000_0006": 0.020161151885986328, "test_boundaryinfo_factory_alu_2d_0001_0007": 0.021579265594482422, "test_boundaryinfo_factory_alu_2d_0002_0008": 0.018848896026611328, "test_boundaryinfo_factory_alu_3d_0000_0009": 0.021801233291625977, "test_boundaryinfo_factory_alu_3d_0001_0010": 0.013073921203613281, "test_boundaryinfo_factory_alu_3d_0002_0011": 0.01934957504272461, "test_boundaryinfo_factory_ug_2d_0012": 0.06149005889892578, "test_boundaryinfo_factory_ug_3d_0013": 0.012807607650756836, "test_boundaryinfo_factory_yasp_1d_0000": 0.04857516288757324, "test_boundaryinfo_factory_yasp_2d_0001": 0.02437448501586914, "test_boundaryinfo_factory_yasp_3d_0002": 0.020878076553344727, "test_cube_gridprovider_alberta_1d_0003": 0.016344308853149414, "test_cube_gridprovider_alberta_2d_0004": 0.01675248146057129, "test_cube_gridprovider_alberta_3d_0005": 0.01607537269592285, "test_cube_gridprovider_alu_2d_0000_0006": 0.020139217376708984, "test_cube_gridprovider_alu_2d_0001_0007": 0.022524356842041016, "test_cube_gridprovider_alu_2d_0002_0008": 0.020697832107543945, "test_cube_gridprovider_alu_3d_0000_0009": 0.01953434944152832, "test_cube_gridprovider_alu_3d_0001_0010": 0.020487308502197266, "test_cube_gridprovider_alu_3d_0002_0011": 0.014725923538208008, "test_cube_gridprovider_ug_2d_0012": 0.013370037078857422, "test_cube_gridprovider_ug_3d_0013": 0.013493537902832031, "test_cube_gridprovider_yasp_1d_0000": 0.02048468589782715, "test_cube_gridprovider_yasp_2d_0001": 0.01860785484313965, "test_cube_gridprovider_yasp_3d_0002": 0.01403498649597168, "test_dd_glued_2d": 0.020163774490356445, "test_dd_glued_3d": 0.018154144287109375, "test_dd_subdomains_cube_1d_alberta_1d_0001": 0.02178025245666504, "test_dd_subdomains_cube_1d_yasp_1d_0000": 0.04023599624633789, "test_dd_subdomains_cube_2d_alberta_2d_0001": 0.014922618865966797, "test_dd_subdomains_cube_2d_alu_2d_0000_0002": 0.014841079711914062, "test_dd_subdomains_cube_2d_alu_2d_0001_0003": 0.014711856842041016, "test_dd_subdomains_cube_2d_alu_2d_0002_0004": 0.019779205322265625, "test_dd_subdomains_cube_2d_yasp_2d_0000": 0.015044212341308594, "test_dd_subdomains_cube_3d_alberta_3d_0001": 0.015231132507324219, "test_dd_subdomains_cube_3d_alu_3d_0000_0002": 0.01627326011657715, "test_dd_subdomains_cube_3d_alu_3d_0001_0003": 0.01916646957397461, "test_dd_subdomains_cube_3d_alu_3d_0002_0004": 0.017833232879638672, "test_dd_subdomains_cube_3d_yasp_3d_0000": 0.021175384521484375, "test_dgf_gridprovider_alberta_1d_0003": 0.014127731323242188, "test_dgf_gridprovider_alberta_2d_0004": 0.01454472541809082, "test_dgf_gridprovider_alberta_3d_0005": 0.014353275299072266, "test_dgf_gridprovider_alu_2d_0000_0006": 0.02131032943725586, "test_dgf_gridprovider_alu_2d_0001_0007": 0.02017378807067871, "test_dgf_gridprovider_alu_2d_0002_0008": 0.027289152145385742, "test_dgf_gridprovider_alu_3d_0000_0009": 0.021492481231689453, "test_dgf_gridprovider_alu_3d_0001_0010": 0.018991708755493164, "test_dgf_gridprovider_alu_3d_0002_0011": 0.025875091552734375, "test_dgf_gridprovider_ug_2d_0012": 0.013030052185058594, "test_dgf_gridprovider_ug_3d_0013": 0.013205289840698242, "test_dgf_gridprovider_yasp_1d_0000": 0.018175125122070312, "test_dgf_gridprovider_yasp_2d_0001": 0.017711162567138672, "test_dgf_gridprovider_yasp_3d_0002": 0.01462244987487793, "test_empty": 0.043166160583496094, "test_eoc_gridprovider": 0.021875381469726562, "test_gmsh_gridprovider_alu_2d_0000_0000": 0.02014899253845215, "test_gmsh_gridprovider_alu_2d_0001_0001": 0.022755861282348633, "test_gmsh_gridprovider_alu_2d_0002_0002": 0.021397113800048828, "test_gmsh_gridprovider_alu_3d_0000_0003": 0.022572994232177734, "test_gmsh_gridprovider_alu_3d_0001_0004": 0.021507740020751953, "test_gmsh_gridprovider_alu_3d_0002_0005": 0.016646385192871094, "test_information_1d_information_1d": 0.015696048736572266, "test_information_2d_information_2d": 0.014620542526245117, "test_information_3d_information_3d": 0.022844552993774414, "test_output_pgf": 0.02042245864868164, "test_periodic_gridview_alberta_1d_nonperiodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_nonperiodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_partially_periodic_unit_cube_simplex_0000;test_periodic_gridview_alberta_1d_periodic_rectangle_simplex_0000;test_periodic_gridview_alberta_1d_periodic_unit_cube_simplex_0000": 0.01412653923034668, "test_periodic_gridview_alberta_2d_nonperiodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_nonperiodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_partially_periodic_unit_cube_simplex_0001;test_periodic_gridview_alberta_2d_periodic_rectangle_simplex_0001;test_periodic_gridview_alberta_2d_periodic_unit_cube_simplex_0001": 0.014034032821655273, "test_periodic_gridview_alberta_3d_nonperiodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_nonperiodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_partially_periodic_unit_cube_simplex_0002;test_periodic_gridview_alberta_3d_periodic_rectangle_simplex_0002;test_periodic_gridview_alberta_3d_periodic_unit_cube_simplex_0002": 0.01592850685119629, "test_periodic_gridview_alu_2d_0000_nonperiodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_nonperiodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_partially_periodic_unit_cube_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_rectangle_cube_0003;test_periodic_gridview_alu_2d_0000_periodic_unit_cube_cube_0003": 0.10288047790527344, "test_periodic_gridview_alu_2d_0001_nonperiodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_nonperiodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_partially_periodic_unit_cube_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_rectangle_simplex_0003;test_periodic_gridview_alu_2d_0001_periodic_unit_cube_simplex_0003": 0.10729146003723145, "test_periodic_gridview_alu_2d_0002_nonperiodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_nonperiodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_partially_periodic_unit_cube_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_rectangle_simplex_0004;test_periodic_gridview_alu_2d_0002_periodic_unit_cube_simplex_0004": 0.10921049118041992, "test_periodic_gridview_alu_3d_0000_nonperiodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_nonperiodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_partially_periodic_unit_cube_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_rectangle_cube_0004;test_periodic_gridview_alu_3d_0000_periodic_unit_cube_cube_0004": 0.11465072631835938, "test_periodic_gridview_alu_3d_0001_nonperiodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_nonperiodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_partially_periodic_unit_cube_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_rectangle_simplex_0005;test_periodic_gridview_alu_3d_0001_periodic_unit_cube_simplex_0005": 0.11975669860839844, "test_periodic_gridview_alu_3d_0002_nonperiodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_nonperiodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_partially_periodic_unit_cube_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_rectangle_simplex_0006;test_periodic_gridview_alu_3d_0002_periodic_unit_cube_simplex_0006": 0.10587620735168457, "test_periodic_gridview_ug_2d_nonperiodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_nonperiodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_partially_periodic_unit_cube_simplex_0007;test_periodic_gridview_ug_2d_periodic_rectangle_cube_0005;test_periodic_gridview_ug_2d_periodic_rectangle_simplex_0007;test_periodic_gridview_ug_2d_periodic_unit_cube_cube_0005;test_periodic_gridview_ug_2d_periodic_unit_cube_simplex_0007": 0.013364315032958984, "test_periodic_gridview_ug_3d_nonperiodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_nonperiodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_partially_periodic_unit_cube_simplex_0008;test_periodic_gridview_ug_3d_periodic_rectangle_cube_0006;test_periodic_gridview_ug_3d_periodic_rectangle_simplex_0008;test_periodic_gridview_ug_3d_periodic_unit_cube_cube_0006;test_periodic_gridview_ug_3d_periodic_unit_cube_simplex_0008": 0.013238668441772461, "test_periodic_gridview_yasp_1d_nonperiodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_nonperiodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_partially_periodic_unit_cube_cube_0000;test_periodic_gridview_yasp_1d_periodic_rectangle_cube_0000;test_periodic_gridview_yasp_1d_periodic_unit_cube_cube_0000": 0.12091302871704102, "test_periodic_gridview_yasp_2d_nonperiodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_nonperiodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_partially_periodic_unit_cube_cube_0001;test_periodic_gridview_yasp_2d_periodic_rectangle_cube_0001;test_periodic_gridview_yasp_2d_periodic_unit_cube_cube_0001": 0.12057709693908691, "test_periodic_gridview_yasp_3d_nonperiodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_nonperiodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_partially_periodic_unit_cube_cube_0002;test_periodic_gridview_yasp_3d_periodic_rectangle_cube_0002;test_periodic_gridview_yasp_3d_periodic_unit_cube_cube_0002": 0.12546849250793457, "test_search_alberta_1d_0003": 0.014313936233520508, "test_search_alberta_2d_0004": 0.014206886291503906, "test_search_alberta_3d_0005": 0.014241695404052734, "test_search_alu_2d_0000_0006": 0.015004634857177734, "test_search_alu_2d_0001_0007": 0.02175450325012207, "test_search_alu_2d_0002_0008": 0.019686460494995117, "test_search_alu_3d_0000_0009": 0.018866539001464844, "test_search_alu_3d_0001_0010": 0.021307945251464844, "test_search_alu_3d_0002_0011": 0.018821001052856445, "test_search_ug_2d_0012": 0.013257026672363281, "test_search_ug_3d_0013": 0.01296544075012207, "test_search_yasp_1d_0000": 0.02102828025817871, "test_search_yasp_2d_0001": 0.019915103912353516, "test_search_yasp_3d_0002": 0.019326210021972656, "test_walker": 0.015680551528930664}] \ No newline at end of file diff --git a/dune/xt/grid/test/walker.cc b/dune/xt/grid/test/walker.cc index df647533bd0590acbde3ab2869bc196a90cb07e5..99bcf2eaa3cb0a4169cfcf79574665709ba7553d 100644 --- a/dune/xt/grid/test/walker.cc +++ b/dune/xt/grid/test/walker.cc @@ -49,8 +49,11 @@ struct GridWalkerTest : public ::testing::Test const auto gv = grid_prv.grid().leafGridView(); Walker<GridLayerType> walker(gv); const auto correct_size = gv.size(0); - std::atomic<size_t> count(0); + atomic<size_t> count(0); + atomic<size_t> intersection_count(0); auto counter = GenericElementFunctor<GridLayerType>([] {}, [&count](const EntityType&) { count++; }, [] {}); + auto intersection_counter = GenericIntersectionFunctor( + [] {}, [&](const IntersectionType&, const EntityType&, const EntityType&) { intersection_count++; }, [] {}); auto test1 = [&] { walker.append(counter); walker.walk(false); @@ -60,6 +63,8 @@ struct GridWalkerTest : public ::testing::Test walker.walk(true); }; auto test3 = [&] { walker.append(counter).walk(true); }; + auto test4 = [&] { walker.append(intersection_counter).walk(false); }; + auto test5 = [&] { walker.append(intersection_counter).walk(true); }; list<function<void()>> tests({test1, test2, test3}); #if DUNE_VERSION_NEWER(DUNE_COMMON, 3, 9) && HAVE_TBB // EXADUNE @@ -78,7 +83,7 @@ struct GridWalkerTest : public ::testing::Test for (const auto& test : tests) { count = 0; test(); - EXPECT_EQ(correct_size, count); + EXPECT_EQ(count, correct_size); } } diff --git a/dune/xt/grid/view/periodic.hh b/dune/xt/grid/view/periodic.hh index 56b50c118f968ee5a6ad2a377f657abb6827f49b..b3732c951ac7a7b69a98f0be8021b35ddc9e0429 100644 --- a/dune/xt/grid/view/periodic.hh +++ b/dune/xt/grid/view/periodic.hh @@ -781,6 +781,8 @@ public: , new_indices_(std::make_shared<std::array<std::vector<IndexType>, num_geometries>>()) , real_index_set_(BaseType::indexSet()) { + if (real_grid_layer.comm().size() > 1) + DUNE_THROW(Dune::NotImplemented, "PeriodicGridView does not work for MPI-distributed grids!"); this->update(); } // constructor PeriodicGridLayerWrapper(...) diff --git a/dune/xt/grid/walker.hh b/dune/xt/grid/walker.hh index 98c74eda10b4eb48bf2b3a58d4009d76ae6b8ae6..e09f4ac4499906a94e072b162ad7239a27ffbc2f 100644 --- a/dune/xt/grid/walker.hh +++ b/dune/xt/grid/walker.hh @@ -573,7 +573,7 @@ protected: template <class PartioningType, class WalkerType> struct Body { - Body(WalkerType& walker, PartioningType& partitioning) + Body(WalkerType& walker, const PartioningType& partitioning) : walker_(walker) , partitioning_(partitioning) { diff --git a/python/dune/xt/bindings.cc b/python/dune/xt/bindings.cc index e40eefb00f0621d37ca3c02b768c69ca6bae7afc..145ccca4b43bcb936c26a2f059d1d31c998cd5b9 100644 --- a/python/dune/xt/bindings.cc +++ b/python/dune/xt/bindings.cc @@ -27,8 +27,6 @@ PYBIND11_MODULE(_grid, m) namespace py = pybind11; using namespace pybind11::literals; - Dune::XT::Common::bindings::addbind_exceptions(m); - py::module::import("dune.xt.common"); Dune::XT::Common::bindings::add_initialization(m, "dune.xt.grid"); diff --git a/python/dune/xt/boundaryinfo.cc b/python/dune/xt/boundaryinfo.cc index 7ee0c77efe2105d6228ce3d861a1606c90e1b562..2c8b0f2d4bc7319119fa765e3d739fbe64def4d4 100644 --- a/python/dune/xt/boundaryinfo.cc +++ b/python/dune/xt/boundaryinfo.cc @@ -71,14 +71,16 @@ struct bind_grid_layer_info<Grid, l, null_template_tuple> template <class> -void bind_grid_layer(pybind11::module& m, std::integral_constant<size_t, 0>){}; +void bind_grid_layer(pybind11::module&, std::integral_constant<size_t, 0>) +{ +} template <class Grid, size_t counter> void bind_grid_layer(pybind11::module& m, std::integral_constant<size_t, counter>) { bind_grid_layer_info<Grid, layers[counter - 1]>::bind(m); bind_grid_layer<Grid>(m, std::integral_constant<size_t, counter - 1>()); -}; +} template <class GridTuple = Dune::XT::Grid::bindings::AvailableTypes> void bind_grid(pybind11::module& m) @@ -89,7 +91,7 @@ void bind_grid(pybind11::module& m) } template <> -void bind_grid<boost::tuples::null_type>(pybind11::module& m) +void bind_grid<boost::tuples::null_type>(pybind11::module&) { } diff --git a/python/dune/xt/grid/__init__.py b/python/dune/xt/grid/__init__.py index a07a91bfe59c1119d1f4d1c04b84a23984072dd9..30d3c6c94c529a00ba6686512726d172782ad910 100644 --- a/python/dune/xt/grid/__init__.py +++ b/python/dune/xt/grid/__init__.py @@ -12,26 +12,3 @@ # ~~~ import dune.xt - -try: - from dune.xt._boundaryinfo import * - from dune.xt._types import * - from dune.xt._walker import * - from dune.xt._provider import * -except ImportError as e: - import os - import logging - if os.environ.get('DXT_PYTHON_DEBUG', False): - raise e - logging.error('dune-xt-grid bindings not available') - -HAVE_DUNE_ALUGRID = 'GridProvider__2d_simplex_aluconform' in globals() - - -def make_walker(gridprovider, level = 0): - for factory in [globals()[s] for s in globals().keys() if s.startswith('make_walker_on_')]: - try: - return factory(gridprovider, level) - except: - continue - raise TypeError('no matching walker for gridview {}'.format(gridprovider.__class__)) \ No newline at end of file diff --git a/python/dune/xt/grid/boundaryinfo.py b/python/dune/xt/grid/boundaryinfo.py new file mode 100644 index 0000000000000000000000000000000000000000..e1d7fae79f2f093d7fa229a1cccef9b39428f559 --- /dev/null +++ b/python/dune/xt/grid/boundaryinfo.py @@ -0,0 +1,8 @@ +try: + from dune.xt._boundaryinfo import * +except ImportError as e: + import os + import logging + if os.environ.get('DXT_PYTHON_DEBUG', False): + raise e + logging.error('dune-xt-grid bindings not available') diff --git a/python/dune/xt/grid/gridprovider.hh b/python/dune/xt/grid/gridprovider.hh index e8af7e3da5071dd50b0e315b3508dfccd493358e..dda5d5f7aad8d2f5c21d7ea9cba0cb0aae39a94f 100644 --- a/python/dune/xt/grid/gridprovider.hh +++ b/python/dune/xt/grid/gridprovider.hh @@ -17,8 +17,9 @@ #include <dune/pybindxi/stl.h> #include <python/dune/xt/common/configuration.hh> -#include <dune/xt/common/exceptions.hh> #include <python/dune/xt/common/fvector.hh> +#include <dune/xt/common/parallel/mpi_comm_wrapper.hh> +#include <dune/xt/common/exceptions.hh> #include <dune/xt/common/numeric_cast.hh> #include <dune/xt/grid/dd/subdomains/grid.hh> #include <dune/xt/grid/entity.hh> @@ -31,11 +32,18 @@ namespace Grid { template <class G> -pybind11::class_<GridProvider<G, Grid::none_t>> bind_GridProvider(pybind11::module& m, const std::string& grid_id) +void bind_GridProvider(pybind11::module& m, const std::string& grid_id) { namespace py = pybind11; using namespace pybind11::literals; + typedef GridProviderFactory<G> F; + const std::string fac_id = std::string("GridProviderFactory__" + grid_id); + py::class_<F> fac(m, fac_id.c_str(), fac_id.c_str()); + fac.def_static("available", &F::available); + fac.def_static("default_config", &F::default_config); + + typedef GridProvider<G, Grid::none_t> C; py::class_<C> c(m, std::string("GridProvider__" + grid_id).c_str(), std::string("GridProvider__" + grid_id).c_str()); @@ -60,14 +68,11 @@ pybind11::class_<GridProvider<G, Grid::none_t>> bind_GridProvider(pybind11::modu }); c.def_property_readonly("grid_type", [grid_id](const C& /*self*/) { return grid_id; }); c.def_property_readonly("dim", [](const C& /*self*/) { return C::dimDomain; }); - - return c; } // ... bind_GridProvider(...) template <class G> -pybind11::class_<GridProvider<G, DD::SubdomainGrid<G>>> bind_DdSubdomainsGridProvider(pybind11::module& m, - const std::string& grid_id) +void bind_DdSubdomainsGridProvider(pybind11::module& m, const std::string& grid_id) { namespace py = pybind11; using namespace pybind11::literals; @@ -127,8 +132,6 @@ pybind11::class_<GridProvider<G, DD::SubdomainGrid<G>>> bind_DdSubdomainsGridPro return result; }, "subdomain"_a); - - return c; } // ... bind_DdSubdomainsGridProvider(...) @@ -139,16 +142,21 @@ void bind_make_cube_grid(pybind11::module& m, const std::string& grid_id) using namespace pybind11::literals; m.def(std::string("make_cube_grid__" + grid_id).c_str(), - [](const Common::Configuration& cfg) { return make_cube_grid<G>(cfg); }, - "cfg"_a = cube_gridprovider_default_config()); + [](const Common::Configuration& cfg, Common::MPI_Comm_Wrapper mpi_comm) { + return make_cube_grid<G>(cfg, mpi_comm.get()); + }, + "cfg"_a = cube_gridprovider_default_config(), + "mpi_comm"_a = Common::MPI_Comm_Wrapper()); m.def(std::string("make_cube_grid__" + grid_id).c_str(), [](const FieldVector<typename G::ctype, G::dimension>& lower_left, const FieldVector<typename G::ctype, G::dimension>& upper_right, const std::array<unsigned int, G::dimension>& num_elements, const unsigned int num_refinements, - const std::array<unsigned int, G::dimension>& overlap_size) { - return make_cube_grid<G>(lower_left, upper_right, num_elements, num_refinements, overlap_size); + const std::array<unsigned int, G::dimension>& overlap_size, + Common::MPI_Comm_Wrapper mpi_comm) { + return make_cube_grid<G>( + lower_left, upper_right, num_elements, num_refinements, overlap_size, mpi_comm.get()); }, "lower_left"_a, "upper_right"_a, @@ -156,7 +164,8 @@ void bind_make_cube_grid(pybind11::module& m, const std::string& grid_id) cube_dd_subdomains_gridprovider_default_config().template get<std::vector<unsigned int>>("num_elements")), "num_refinements"_a = cube_gridprovider_default_config().template get<unsigned int>("num_refinements"), "overlap_size"_a = XT::Common::make_array<unsigned int, G::dimension>( - cube_dd_subdomains_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size"))); + cube_dd_subdomains_gridprovider_default_config().template get<std::vector<unsigned int>>("overlap_size")), + "mpi_comm"_a = Common::MPI_Comm_Wrapper()); } // ... bind_make_cube_grid(...) @@ -166,6 +175,13 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g namespace py = pybind11; using namespace pybind11::literals; + m.def(std::string("make_cube_dd_subdomains_grid__" + grid_id).c_str(), + [](const Common::Configuration& cfg, Common::MPI_Comm_Wrapper mpi_comm) { + return make_cube_dd_subdomains_grid<G>(cfg, mpi_comm.get()); + }, + "cfg"_a = cube_gridprovider_default_config(), + "mpi_comm"_a = Common::MPI_Comm_Wrapper()); + m.def(std::string("make_cube_dd_subdomains_grid__" + grid_id).c_str(), [](const FieldVector<typename G::ctype, G::dimension>& lower_left, const FieldVector<typename G::ctype, G::dimension>& upper_right, @@ -174,7 +190,8 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g const std::array<unsigned int, G::dimension>& overlap_size, const std::array<unsigned int, G::dimension> num_partitions, const size_t num_oversampling_layers, - const size_t inner_boundary_segment_index) { + const size_t inner_boundary_segment_index, + Common::MPI_Comm_Wrapper mpi_comm) { return make_cube_dd_subdomains_grid<G>(lower_left, upper_right, num_elements, @@ -182,7 +199,8 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g overlap_size, num_partitions, num_oversampling_layers, - inner_boundary_segment_index); + inner_boundary_segment_index, + mpi_comm.get()); }, "lower_left"_a, "upper_right"_a, @@ -196,7 +214,8 @@ void bind_make_cube_dd_subdomains_grid(pybind11::module& m, const std::string& g "num_oversampling_layers"_a = cube_dd_subdomains_gridprovider_default_config().template get<size_t>("num_refinements"), "inner_boundary_segment_index"_a = - cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index")); + cube_dd_subdomains_gridprovider_default_config().template get<size_t>("inner_boundary_segment_index"), + "mpi_comm"_a = Common::MPI_Comm_Wrapper()); } // ... bind_make_cube_dd_subdomains_grid(...) diff --git a/python/dune/xt/grid/provider.py b/python/dune/xt/grid/provider.py new file mode 100644 index 0000000000000000000000000000000000000000..c0f12ac7f342aa032bf95fe2fd043b261095bfe6 --- /dev/null +++ b/python/dune/xt/grid/provider.py @@ -0,0 +1,17 @@ +try: + from dune.xt._provider import * +except ImportError as e: + import os + import logging + if os.environ.get('DXT_PYTHON_DEBUG', False): + raise e + logging.error('dune-xt-grid bindings not available') + + +def default_options_cube_grid(type_str): + factory = 'GridProviderFactory__{}'.format(type_str) + try: + fac = globals()[factory] + except KeyError: + raise TypeError('no GridProviderFactory available for Type {}'.format(type_str)) + return fac.default_config('xt.grid.gridprovider.cube') diff --git a/python/dune/xt/grid/types.py b/python/dune/xt/grid/types.py index 41b8a1de1dfcc62edd0036afa059d04a35535ef0..951b146bf587436b825567e3ec23a3fb1be2d355 100644 --- a/python/dune/xt/grid/types.py +++ b/python/dune/xt/grid/types.py @@ -1,3 +1,12 @@ +try: + from dune.xt._types import * +except ImportError as e: + import os + import logging + if os.environ.get('DXT_PYTHON_DEBUG', False): + raise e + logging.error('dune-xt-grid bindings not available') + from collections import namedtuple arguments = {'alu': namedtuple('alu_args', 'dim element_type refinement'), diff --git a/python/dune/xt/grid/walker/__init__.py b/python/dune/xt/grid/walker/__init__.py new file mode 100644 index 0000000000000000000000000000000000000000..f25bbdd76efc3d58dd8ce4c22a16da1f7a67b85d --- /dev/null +++ b/python/dune/xt/grid/walker/__init__.py @@ -0,0 +1,17 @@ +try: + from dune.xt._walker import * +except ImportError as e: + import os + import logging + if os.environ.get('DXT_PYTHON_DEBUG', False): + raise e + logging.error('dune-xt-grid bindings not available') + + +def make_walker(gridprovider, level = 0): + for factory in [globals()[s] for s in globals().keys() if s.startswith('make_walker_on_')]: + try: + return factory(gridprovider, level) + except: + continue + raise TypeError('no matching walker for gridview {}'.format(gridprovider.__class__)) \ No newline at end of file diff --git a/python/dune/xt/grid/walker/apply-on.bindings.hh b/python/dune/xt/grid/walker/apply-on.bindings.hh index 14eef19ff8b02f21e553eb87583302a9e4f6f512..dfa80d5f93d6ab920afa9dfb87d3912b6e26d110 100644 --- a/python/dune/xt/grid/walker/apply-on.bindings.hh +++ b/python/dune/xt/grid/walker/apply-on.bindings.hh @@ -117,7 +117,7 @@ public: _w>:: \ bind(_m, \ _class_name, \ - Dune::XT::Grid::bindings::layer_name<Dune::XT::Grid::Layers::_layer>::value() + "_" \ + Dune::XT::Grid::layer_names[Dune::XT::Grid::Layers::_layer] + "_" \ + Dune::XT::Grid::bindings::backend_name<Dune::XT::Grid::Backends::_backend>::value()) /*#if HAVE_ALBERTA diff --git a/python/dune/xt/provider.cc b/python/dune/xt/provider.cc index d819068e4def418d63b650d2b352f2326001ac07..c4e418744bd521a2ded50820d6004a9cdf3ef47c 100644 --- a/python/dune/xt/provider.cc +++ b/python/dune/xt/provider.cc @@ -45,7 +45,7 @@ void addbind_for_Grid(pybind11::module& m) } // ... addbind_for_Grid(...) template <> -void addbind_for_Grid<boost::tuples::null_type>(pybind11::module& m) +void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&) { } diff --git a/python/dune/xt/types.cc b/python/dune/xt/types.cc index a1e15b67e33da7c633da1ab7c4377114f54eb3c1..b7b65816673784d9d931bf134f05fec54a31d268 100644 --- a/python/dune/xt/types.cc +++ b/python/dune/xt/types.cc @@ -34,7 +34,7 @@ void addbind_for_Grid(pybind11::module& m, std::vector<std::string>& available_t template <> -void addbind_for_Grid<boost::tuples::null_type>(pybind11::module& m, std::vector<std::string>& available_types) +void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&, std::vector<std::string>&) { } diff --git a/python/dune/xt/walker.cc b/python/dune/xt/walker.cc index bf8a77d79bcc4dd7cc8f858399457a939c627671..2635a3a62d84cdef4e4151dfcdf0482e1e157e9d 100644 --- a/python/dune/xt/walker.cc +++ b/python/dune/xt/walker.cc @@ -58,7 +58,7 @@ void addbind_for_Grid(pybind11::module& m) } // ... addbind_for_Grid(...) template <> -void addbind_for_Grid<boost::tuples::null_type>(pybind11::module& m) +void addbind_for_Grid<boost::tuples::null_type>(pybind11::module&) { } diff --git a/python/test/base.py b/python/test/base.py index c1bea381de38611e55e43e358baab428b584676b..7b809445566dcd5e6d493567812a6f38e679b818 100644 --- a/python/test/base.py +++ b/python/test/base.py @@ -9,10 +9,15 @@ import pytest from dune.xt.common.test import load_all_submodule - +from dune.xt.grid import types def test_load_all(): import dune.xt.grid as xtc load_all_submodule(xtc) +def test_types(): + cache = {} + rt = types.all_types(cache=cache, dims=(2,3)) + assert len(rt) == 0 + diff --git a/python/test/walker.py b/python/test/walker.py index e2ead162d23cb86e7b5e16fdc19edbc6f17d3d1d..0e8d6a3d344358ef1e72625cac70f248bd913104 100644 --- a/python/test/walker.py +++ b/python/test/walker.py @@ -6,24 +6,78 @@ # Authors: # Rene Milk (2018) # ~~~ +import functools +import itertools import pytest import dune.xt.common as xtc import dune.xt.grid as xtg +from dune.xt.grid import provider, types, walker -@pytest.fixture(params=xtg.available_types) +def _grid_provider_factory(grid_type, mpi, maker_str='make_cube_grid__{}'): + if not mpi: + fn = maker_str.format(grid_type) + maker = getattr(xtg.provider, fn) + return maker() + + try: + from mpi4py import MPI + except ImportError: + pytest.skip('optional mpi4py is missing') + return + opts = provider.default_options_cube_grid(grid_type) + fn = maker_str.format(grid_type) + maker = getattr(xtg.provider, fn) + return maker(opts, MPI.COMM_WORLD) + + +_dd_subdomain_grid_provider_factory = functools.partial(_grid_provider_factory, maker_str='make_cube_dd_subdomain_grid__{}') + + +@pytest.fixture(params=xtg.types.available_types) +def mpi_grid_provider(request): + return _grid_provider_factory(request.param, mpi=True) + + +@pytest.fixture(params=xtg.types.available_types) def grid_provider(request): - fn = 'make_cube_grid__{}'.format(request.param) - maker = getattr(xtg, fn) - return maker() + return _grid_provider_factory(request.param, mpi=False) + + +@pytest.fixture(params=itertools.product(xtg.types.available_types, (True, False))) +def combined_grid_provider(request): + return _grid_provider_factory(*request.param) + + +@pytest.fixture(params=itertools.product(xtg.types.available_types, (True, False))) +def combined_dd_subdomain_grid_provider(request): + return _grid_provider_factory(*request.param) def test_available(): - assert len(xtg.available_types) > 0 + assert len(xtg.types.available_types) > 0 + + +def test_grid_provider(combined_grid_provider): + grid_provider = combined_grid_provider + assert grid_provider.max_level() >= 0 + num_el = grid_provider.num_elements + assert num_el > 1 + grid_provider.global_refine(1) + try: + grid_provider.visualize() + except xtc.DuneError as e: + if 'NotImplemented' not in str(e): + raise e + assert grid_provider.num_elements > num_el + assert grid_provider.num_subdomains == 1 + assert grid_provider.max_entity_diameter() > 0 + assert grid_provider.dim > 0 -def test_grid_provider(grid_provider): +def test_dd_subdomain_grid_provider(combined_dd_subdomain_grid_provider): + grid_provider = combined_dd_subdomain_grid_provider assert grid_provider.max_level() >= 0 num_el = grid_provider.num_elements assert num_el > 1 @@ -40,12 +94,11 @@ def test_grid_provider(grid_provider): def test_walker(grid_provider): - walker = xtg.make_walker(grid_provider) + walker = xtg.walker.make_walker(grid_provider) walker.walk() walker.clear() - def test_count(): pass