From 891699d4ac91552d8068fee359a16f8584f09df2 Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 11:15:13 +0100 Subject: [PATCH 01/14] add tutorial of free flow over porous media --- free-flow-over-porous-media/README.md | 79 +++ free-flow-over-porous-media/clean-tutorial.sh | 1 + .../compile-dumux-cases.sh | 12 + .../free-flow-dumux/CMakeLists.txt | 26 + .../free-flow-dumux/appl/CMakeLists.txt | 5 + .../appl/ffproblem-reversed.hh | 396 +++++++++++++ .../free-flow-dumux/appl/ffproperties.hh | 119 ++++ .../free-flow-dumux/appl/main.cc | 538 ++++++++++++++++++ .../free-flow-dumux/clean.sh | 6 + .../free-flow-dumux/config.h.cmake | 45 ++ .../free-flow-dumux/dune.module | 12 + .../free-flow-dumux/free-flow-dumux.pc.in | 15 + .../free-flow-dumux/params.input | 41 ++ .../free-flow-dumux/run.sh | 29 + ...ous-media-precice-config-visualization.png | Bin 0 -> 68977 bytes .../porous-media-dumux/CMakeLists.txt | 26 + .../porous-media-dumux/appl/CMakeLists.txt | 5 + .../porous-media-dumux/appl/main.cc | 305 ++++++++++ .../porous-media-dumux/appl/problem.hh | 208 +++++++ .../porous-media-dumux/appl/properties.hh | 81 +++ .../porous-media-dumux/appl/spatialparams.hh | 109 ++++ .../porous-media-dumux/clean.sh | 6 + .../porous-media-dumux/config.h.cmake | 45 ++ .../porous-media-dumux/dune.module | 12 + .../porous-media-dumux/params.input | 18 + .../porous-media-dumux.pc.in | 15 + .../porous-media-dumux/run.sh | 29 + .../precice-config.xml | 73 +++ free-flow-over-porous-media/setup-dumux.sh | 35 ++ 29 files changed, 2291 insertions(+) create mode 100644 free-flow-over-porous-media/README.md create mode 120000 free-flow-over-porous-media/clean-tutorial.sh create mode 100755 free-flow-over-porous-media/compile-dumux-cases.sh create mode 100644 free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt create mode 100644 free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt create mode 100644 free-flow-over-porous-media/free-flow-dumux/appl/ffproblem-reversed.hh create mode 100644 free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh create mode 100644 free-flow-over-porous-media/free-flow-dumux/appl/main.cc create mode 100755 free-flow-over-porous-media/free-flow-dumux/clean.sh create mode 100644 free-flow-over-porous-media/free-flow-dumux/config.h.cmake create mode 100644 free-flow-over-porous-media/free-flow-dumux/dune.module create mode 100644 free-flow-over-porous-media/free-flow-dumux/free-flow-dumux.pc.in create mode 100644 free-flow-over-porous-media/free-flow-dumux/params.input create mode 100755 free-flow-over-porous-media/free-flow-dumux/run.sh create mode 100644 free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-precice-config-visualization.png create mode 100644 free-flow-over-porous-media/porous-media-dumux/CMakeLists.txt create mode 100644 free-flow-over-porous-media/porous-media-dumux/appl/CMakeLists.txt create mode 100644 free-flow-over-porous-media/porous-media-dumux/appl/main.cc create mode 100644 free-flow-over-porous-media/porous-media-dumux/appl/problem.hh create mode 100644 free-flow-over-porous-media/porous-media-dumux/appl/properties.hh create mode 100644 free-flow-over-porous-media/porous-media-dumux/appl/spatialparams.hh create mode 100755 free-flow-over-porous-media/porous-media-dumux/clean.sh create mode 100644 free-flow-over-porous-media/porous-media-dumux/config.h.cmake create mode 100644 free-flow-over-porous-media/porous-media-dumux/dune.module create mode 100644 free-flow-over-porous-media/porous-media-dumux/params.input create mode 100644 free-flow-over-porous-media/porous-media-dumux/porous-media-dumux.pc.in create mode 100755 free-flow-over-porous-media/porous-media-dumux/run.sh create mode 100644 free-flow-over-porous-media/precice-config.xml create mode 100755 free-flow-over-porous-media/setup-dumux.sh diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md new file mode 100644 index 000000000..0ff79c29e --- /dev/null +++ b/free-flow-over-porous-media/README.md @@ -0,0 +1,79 @@ +--- +title: Free flow over porous medium 2D +permalink: tutorials-free-flow-over-porous-medium-2d.html +keywords: DuMux, porous medium +summary: Flow-flow coupling example with porous medium field and free flow field. +--- + +{% note %} +Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/free-flow-over-porous-medium-2d). Read how in the [tutorials introduction](https://precice.org/tutorials.html). +{% endnote %} + +## Setup + +This tutorial solves a simple coupled system consisting of a one-phase free flow and a one-phase flow in a porous medium. + +A pressure gradient is applied to the free flow domain from left to right, while at the top of the free-flow we have a non-permeable wall with no-slip boundary conditions. In the porous medium, we assume no-flow across the domain boundaries (left, bottom and right boundary). At the interface we assume a no-slip condition. + + + +## Configuration + +preCICE configuration (image generated using the [precice-config-visualizer](https://precice.org/tooling-config-visualization.html)): + +![preCICE configuration visualization](images/precice-config-visualization.png) + +## Available solvers + +Both the flow in free flow and porous medium can be solved using the simulation framework [DuMux](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/). + +## Solver setup + +To solve the flows with the DuMux framework, the necessary DUNE modules need to be downloaded and set up. This is done by running `sh setup-dumux.sh` in the tutorial folder. + +Note that if an existing installation of DUNE modules is detected in a default location, this may lead to problems in running the `setup-dumux.sh` script. The environment variable DUNE_CONTROL_PATH is suppressed by the script. + +To recompile only the simulation, run `sh compile-dumux-cases.sh` in the tutorial folder. + +## Running the simulation + +You can find the corresponding `run.sh`script for running the case in the folders corresponding to the solvers you want to use. + +### In serial + +To run the free-flow participant, run: + +```bash +cd free-flow-dumux +./run.sh +``` + +To run the porous-medium participant, run: + +```bash +cd porous-medium-dumux +./run.sh +``` + +A serial simulation takes approximately 2 minutes to finish. + +### In parallel + +All participants can be run in parallel. + +To run a participant in parallel, e.g. `free-flow-dumux`, run: + +```bash +cd free-flow-dumux +./run.sh -p +``` + +where `` is the number of processes you want to use for the participant. + +## Post-processing + +The VTU files from both solvers could be rendered and inspected with ParaView. + +## Further information + +Each solver folder contains an input file (`params.input`) that will be passed to the solver executables. This is a DuMUX input file describing the simulation setting, e.g., pressure, mesh size, time stepping, etc. diff --git a/free-flow-over-porous-media/clean-tutorial.sh b/free-flow-over-porous-media/clean-tutorial.sh new file mode 120000 index 000000000..4713f5092 --- /dev/null +++ b/free-flow-over-porous-media/clean-tutorial.sh @@ -0,0 +1 @@ +../tools/clean-tutorial-base.sh \ No newline at end of file diff --git a/free-flow-over-porous-media/compile-dumux-cases.sh b/free-flow-over-porous-media/compile-dumux-cases.sh new file mode 100755 index 000000000..c43bd618c --- /dev/null +++ b/free-flow-over-porous-media/compile-dumux-cases.sh @@ -0,0 +1,12 @@ +#!/usr/bin/env sh +set -e -u + +cd free-flow-dumux/build-cmake/appl +make free_flow_dumux +cd ../../../porous-media-dumux/build-cmake/appl +make porous_media_dumux +cd ../../../ + +# Move free-flow-dumux and porous-media-dumux executables to the participant folder level +mv free-flow-dumux/build-cmake/appl/free_flow_dumux free-flow-dumux/ +mv porous-media-dumux/build-cmake/appl/porous_media_dumux porous-media-dumux/ diff --git a/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt b/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt new file mode 100644 index 000000000..7d3d9b426 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt @@ -0,0 +1,26 @@ +cmake_minimum_required(VERSION 3.13) +project(free-flow-dumux CXX) + +if(NOT (dune-common_DIR OR dune-common_ROOT OR + "${CMAKE_PREFIX_PATH}" MATCHES ".*dune-common.*")) + string(REPLACE ${PROJECT_NAME} dune-common dune-common_DIR + ${PROJECT_BINARY_DIR}) +endif() + +#find dune-common and set the module path +find_package(dune-common REQUIRED) +list(APPEND CMAKE_MODULE_PATH "${PROJECT_SOURCE_DIR}/cmake/modules" + ${dune-common_MODULE_PATH}) + +#include the dune macros +include(DuneMacros) + +# start a dune project with information from dune.module +dune_project() + +dune_enable_all_packages() + +add_subdirectory(appl) + +# finalize the dune project, e.g. generating config.h etc. +finalize_dune_project(GENERATE_CONFIG_H_CMAKE) diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt b/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt new file mode 100644 index 000000000..ddc9c7f7f --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt @@ -0,0 +1,5 @@ +add_executable(porous_media_dumux main.cc) +target_compile_definitions(porous_media_dumux PUBLIC "ENABLEMONOLITHIC=0") +target_link_libraries(porous_media_dumux PRIVATE dumux-precice) + +add_input_file_links() \ No newline at end of file diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/ffproblem-reversed.hh b/free-flow-over-porous-media/free-flow-dumux/appl/ffproblem-reversed.hh new file mode 100644 index 000000000..7ec14d31e --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/appl/ffproblem-reversed.hh @@ -0,0 +1,396 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *****************************************************************************/ +/*! + * \file + * \brief The free flow sub problem + */ +#ifndef DUMUX_STOKES_SUBPROBLEM_HH +#define DUMUX_STOKES_SUBPROBLEM_HH + +#include + +#include + +#include +#include + +#include +#include +#include + +#include + +namespace Dumux { + +/*! + * \brief The free flow sub problem + */ +template +class StokesSubProblem : public BaseProblem { + using ParentType = BaseProblem; + + using GridGeometry = GetPropType; + using GridView = typename GridGeometry::GridView; + using Scalar = GetPropType; + + using ModelTraits = GetPropType; + using Indices = typename ModelTraits::Indices; + + using BoundaryTypes = typename ParentType::BoundaryTypes; + using InitialValues = typename ParentType::InitialValues; + using Sources = typename ParentType::Sources; + using DirichletValues = typename ParentType::DirichletValues; + using BoundaryFluxes = typename ParentType::BoundaryFluxes; + + using FVElementGeometry = typename GridGeometry::LocalView; + using SubControlVolumeFace = + typename FVElementGeometry::SubControlVolumeFace; + using Element = typename GridView::template Codim<0>::Entity; + + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using PrimaryVariables = GetPropType; + + using NumEqVector = Dumux::NumEqVector; + + using FluidSystem = GetPropType; + + using CouplingManager = GetPropType; + + static constexpr auto dimWorld = GridGeometry::GridView::dimensionworld; + using VelocityVector = Dune::FieldVector; + +public: + StokesSubProblem(std::shared_ptr gridGeometry, + std::shared_ptr couplingManager) + : ParentType(gridGeometry, couplingManager, "FreeFlow"), + eps_(1e-6), + couplingParticipant_(Dumux::Precice::CouplingAdapter::getInstance()) + { + deltaP_ = getParamFromGroup(this->paramGroup(), + "Problem.PressureDifference"); + } + + /*! + * \name Problem parameters + */ + // \{ + + /*! + * \brief Return the sources within the domain. + * + * \param globalPos The global position + */ + Sources sourceAtPos(const GlobalPosition &globalPos) const + { + return Sources(0.0); + } + // \} + + /*! + * \name Boundary conditions + */ + // \{ + + /*! + * \brief Specifies which kind of boundary condition should be + * used for which equation on a given boundary segment. + * + * \param element The finite element + * \param scvf The sub control volume face + */ + BoundaryTypes boundaryTypes(const Element &element, + const SubControlVolumeFace &scvf) const + { + BoundaryTypes values; + + const auto &globalPos = scvf.center(); + + if constexpr (ParentType::isMomentumProblem()) { + if (onLeftBoundary_(globalPos) || onRightBoundary_(globalPos)) { + values.setAllNeumann(); + } + // slip boundary with coupling interface + else if (onLowerBoundary_(globalPos)) { + values.setAllNeumann(); + // TODO: Check the handling of the corners + if (!onLeftBoundary_(scvf.ipGlobal()) && + !onRightBoundary_(scvf.ipGlobal())) + values.setDirichlet(Indices::velocityYIdx); + } else { + values.setAllDirichlet(); + } + } else // mass subproblem + { + if (onLeftBoundary_(globalPos) || onRightBoundary_(globalPos)) { + values.setNeumann(Indices::conti0EqIdx); + } else { + values.setNeumann(Indices::conti0EqIdx); + } + } + + return values; + } + + /*! + * \brief Evaluate the boundary conditions for a Dirichlet control volume. + * + * \param globalPos The global position + */ + DirichletValues dirichlet(const Element &element, + const SubControlVolumeFace &scvf) const + { + DirichletValues values(0.0); + values = initialAtPos(scvf.ipGlobal()); + + if constexpr (ParentType::isMomentumProblem()) { + const auto faceId = scvf.index(); + if (couplingParticipant_.isCoupledEntity(faceId)) { + values[Indices::velocityYIdx] = + couplingParticipant_.getScalarQuantityOnFace( + "FreeFlowMesh", "Velocity", faceId); + } + } else { + auto pressure = onLeftBoundary_(scvf.ipGlobal()) ? deltaP_ : 0.0; + values[Indices::pressureIdx] = pressure; + } + + return values; + } + + /*! + * \brief Evaluate the boundary conditions for a Neumann control volume. + * + * \param element The element for which the Neumann boundary condition is set + * \param fvGeomentry The fvGeometry + * \param elemVolVars The element volume variables + * \param elemFaceVars The element face variables + * \param scvf The boundary sub control volume face + */ + template + BoundaryFluxes neumann(const Element &element, + const FVElementGeometry &fvGeometry, + const ElementVolumeVariables &elemVolVars, + const ElementFluxVariablesCache &elemFluxVarsCache, + const SubControlVolumeFace &scvf) const + { + BoundaryFluxes values(0.0); + + const auto &globalPos = scvf.ipGlobal(); + if constexpr (ParentType::isMomentumProblem()) { +#if DUMUX_VERSION_MAJOR >= 3 & DUMUX_VERSION_MINOR >= 9 + using SlipVelocityPolicy = NavierStokesSlipVelocity< + typename GridGeometry::DiscretizationMethod, + NavierStokes::SlipConditions::BJ>; + using FluxHelper = NavierStokesMomentumBoundaryFlux< + typename GridGeometry::DiscretizationMethod, + SlipVelocityPolicy>; +#else + using FluxHelper = NavierStokesMomentumBoundaryFluxHelper; +#endif + if (onSlipBoundary(fvGeometry, scvf)) { + values += FluxHelper::slipVelocityMomentumFlux( + *this, fvGeometry, scvf, elemVolVars, elemFluxVarsCache); + } else if (onLeftBoundary_(globalPos) || + onRightBoundary_(globalPos)) { + auto pressure = onLeftBoundary_(globalPos) ? deltaP_ : 0.0; + values = FluxHelper::fixedPressureMomentumFlux( + *this, fvGeometry, scvf, elemVolVars, elemFluxVarsCache, + pressure, /* zeroNormalVelocityGradient = */ true); + } + } else { + using FluxHelper = NavierStokesScalarBoundaryFluxHelper< + AdvectiveFlux>; + if (onLeftBoundary_(globalPos) || onRightBoundary_(globalPos)) { + values = FluxHelper::scalarOutflowFlux( + *this, element, fvGeometry, scvf, elemVolVars); + } else if (onSlipBoundary(fvGeometry, scvf)) { + const Scalar density = + 1000; // TODO how to handle compressible fluids? + // TODO: Use flux helper with outside data? + // TODO: remove hard-coded values index y=1 and dirsign = -1.0 + values[Indices::conti0EqIdx] = + density * this->faceVelocity(element, fvGeometry, scvf)[1] * + -1.0; // scvf.directionSign(); + } + } + return values; + } + + bool onSlipBoundary(const FVElementGeometry &fvGeometry, + const SubControlVolumeFace &scvf) const + { + return onLowerBoundary_(scvf.ipGlobal()); + } + + // \} + + /*! + * \name Volume terms + */ + // \{ + + /*! + * \brief Evaluate the initial value for a control volume. + * + * \param globalPos The global position + */ + InitialValues initialAtPos(const GlobalPosition &globalPos) const + { + InitialValues values(0.0); + + if constexpr (ParentType::isMomentumProblem()) { + // values[Indices::velocityYIdx] = -1e-6 * globalPos[0] * (this->gridGeometry().bBoxMax()[0] - globalPos[0]); + } else { + if (onLeftBoundary_(globalPos)) + values[Indices::pressureIdx] = deltaP_; + if (onRightBoundary_(globalPos)) + values[Indices::pressureIdx] = 0.0; + } + + return values; + } + + /*! + * \brief Returns the intrinsic permeability of required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar permeability(const Element &element, + const SubControlVolumeFace &scvf) const + { + return 1e-10; // TODO transfer information or just use constant value + } + + /*! + * \brief Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar alphaBJ(const FVElementGeometry &fvGeometry, + const SubControlVolumeFace &scvf) const + { + return 1.0; // TODO transfer information or just use constant value + } + + /*! + * \brief Returns the beta value required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar betaBJ(const FVElementGeometry &fvGeometry, + const SubControlVolumeFace &scvf, + const GlobalPosition &tangentialVector) const + { + return 1e+5; // TODO transfer information or just use constant value + } + + /*! + * \brief Returns the velocity in the porous medium (which is 0 by default according to Saffman). + */ + VelocityVector porousMediumVelocity(const FVElementGeometry &fvGeometry, + const SubControlVolumeFace &scvf) const + { + VelocityVector velocity(0.0); + if constexpr (ParentType::isMomentumProblem()) { + const auto faceId = scvf.index(); + if (couplingParticipant_.isCoupledEntity(faceId)) { + velocity[Indices::velocityYIdx] = + couplingParticipant_.getScalarQuantityOnFace( + "FreeFlowMesh", "Velocity", faceId); + } + } + return velocity; + } + + /*! + * \brief calculate the analytical velocity in x direction based on Beavers & Joseph (1967) + */ + void calculateAnalyticalVelocityX() const + { + analyticalVelocityX_.resize(this->gridGeometry().gridView().size(0)); + + using std::sqrt; + const Scalar dPdX = -deltaP_ / (this->gridGeometry().bBoxMax()[0] - + this->gridGeometry().bBoxMin()[0]); + static const Scalar mu = FluidSystem::viscosity(273.15 + 10, 1e5); + static const Scalar alpha = + getParam("Darcy.SpatialParams.AlphaBeaversJoseph"); + static const Scalar K = + getParam("Darcy.SpatialParams.Permeability"); + static const Scalar sqrtK = sqrt(K); + const Scalar sigma = (this->gridGeometry().bBoxMax()[1] - + this->gridGeometry().bBoxMin()[1]) / + sqrtK; + + const Scalar uB = + -K / (2.0 * mu) * + ((sigma * sigma + 2.0 * alpha * sigma) / (1.0 + alpha * sigma)) * + dPdX; + + for (const auto &element : elements(this->gridGeometry().gridView())) { + const auto eIdx = + this->gridGeometry().gridView().indexSet().index(element); + const Scalar y = element.geometry().center()[1] - + this->gridGeometry().bBoxMin()[1]; + + const Scalar u = + uB * (1.0 + alpha / sqrtK * y) + + 1.0 / (2.0 * mu) * (y * y + 2 * alpha * y * sqrtK) * dPdX; + analyticalVelocityX_[eIdx] = u; + } + } + + /*! + * \brief Get the analytical velocity in x direction + */ + const std::vector &getAnalyticalVelocityX() const + { + if (analyticalVelocityX_.empty()) + calculateAnalyticalVelocityX(); + return analyticalVelocityX_; + } + + // \} + +private: + bool onLeftBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[0] < this->gridGeometry().bBoxMin()[0] + eps_; + } + + bool onRightBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[0] > this->gridGeometry().bBoxMax()[0] - eps_; + } + + bool onLowerBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[1] < this->gridGeometry().bBoxMin()[1] + eps_; + } + + bool onUpperBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[1] > this->gridGeometry().bBoxMax()[1] - eps_; + } + + Scalar eps_; + Scalar deltaP_; + + Dumux::Precice::CouplingAdapter &couplingParticipant_; + + mutable std::vector analyticalVelocityX_; +}; +} // namespace Dumux + +#endif // DUMUX_STOKES_SUBPROBLEM_HH diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh b/free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh new file mode 100644 index 000000000..06bf51569 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh @@ -0,0 +1,119 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *****************************************************************************/ +/*! + * \file + * \brief The free flow sub problem + */ +#ifndef DUMUX_STOKES_SUBPROPERTIES_HH +#define DUMUX_STOKES_SUBPROPERTIES_HH + +#ifndef DIMWORLD +#define DIMWORLD 2 +#endif + +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include "ffproblem-reversed.hh" + +namespace Dumux { + +namespace Properties { +// Create new type tags +namespace TTag { +struct FreeFlowModel { +}; +struct FreeFlowSubMomentum { + using InheritsFrom = std:: + tuple; +}; +struct FreeFlowSubMass { + using InheritsFrom = + std::tuple; +}; +} // end namespace TTag + +// the fluid system +template +struct FluidSystem { + using Scalar = GetPropType; + using type = + FluidSystems::OnePLiquid>; +}; + +// Set the grid type +template +struct Grid { + using type = Dune::YaspGrid, + DIMWORLD>>; +}; + +// Set the problem property +template +struct Problem { + using type = + Dumux::StokesSubProblem>; +}; +template +struct Problem { + using type = + Dumux::StokesSubProblem>; +}; + +template +struct EnableGridGeometryCache { + static constexpr bool value = true; +}; +template +struct EnableGridFluxVariablesCache { + static constexpr bool value = true; +}; +template +struct EnableGridVolumeVariablesCache { + static constexpr bool value = true; +}; + +// Define the DuMux coupling manager to couple the momentum and mass subproblems +// of the freeflow participant +template +struct CouplingManager { + using Traits = + MultiDomainTraits; + using type = FreeFlowCouplingManager; +}; +} // end namespace Properties + +} // namespace Dumux + +#endif // DUMUX_STOKES_SUBPROPERTIES_HH diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc new file mode 100644 index 000000000..e74af0aed --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc @@ -0,0 +1,538 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *****************************************************************************/ +/*! + * \file + * + * \brief A test problem for the coupled Stokes/Darcy problem (1p) + */ +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +#include "ffproperties.hh" + +#include "dumux-precice/couplingadapter.hh" + +#include +#include +#include + +// TODO +// Helper function to put pressure on interface + +template +auto velocityAtInterface(const ElementVolumeVariables &elemVolVars, + const SubControlVolumeFace &scvf) +{ + assert(scvf.isFrontal()); + const double scalarVelocity = elemVolVars[scvf.insideScvIdx()].velocity(); + auto velocity = scvf.unitOuterNormal(); + velocity[scvf.normalAxis()] = scalarVelocity; + return velocity; +} + +template +auto pressureAtInterface(const Problem *problem, + const Element &element, + const SubControlVolumeFace &scvf, + const FVElementGeometry &fvGeometry, + const ElementVolumeVariables &elemVolVars, + const ElementFluxVariablesCache &elemFluxVarsCache) +{ + using ElementBoundaryTypes = + Dumux::GetPropType; + using LocalResidual = + Dumux::GetPropType; + using NumEqVector = Dumux::NumEqVector< + Dumux::GetPropType>; +#if DUMUX_VERSION_MAJOR >= 3 && DUMUX_VERSION_MINOR >= 9 + using SlipVelocityPolicy = Dumux::NavierStokesSlipVelocity< + typename FVElementGeometry::GridGeometry::DiscretizationMethod, + Dumux::NavierStokes::SlipConditions::BJ>; + using FluxHelper = Dumux::NavierStokesMomentumBoundaryFlux< + typename FVElementGeometry::GridGeometry::DiscretizationMethod, + SlipVelocityPolicy>; +#else + using FluxHelper = Dumux::NavierStokesMomentumBoundaryFluxHelper; +#endif + + ElementBoundaryTypes elemBcTypes; + auto localResidual = LocalResidual(problem); + elemBcTypes.update(*problem, element, fvGeometry); + + NumEqVector flux(0.0); + NumEqVector neumannFlux(0.0); + const auto &scv = fvGeometry.scv(scvf.insideScvIdx()); + for (const auto &otherScvf : scvfs(fvGeometry, scv)) { + if (otherScvf.index() == scvf.index()) + continue; + flux += localResidual.maybeHandleNeumannBoundary( + *problem, element, fvGeometry, elemVolVars, elemBcTypes, + elemFluxVarsCache, otherScvf); + } + flux += FluxHelper::fixedPressureMomentumFlux( + *problem, fvGeometry, scvf, elemVolVars, elemFluxVarsCache, 0.0, + /*zeroNormalVelocityGradient=*/false)[scvf.normalAxis()] * + scvf.area(); + return -1 * scvf.directionSign() * flux / scvf.area(); +} + +template +void setInterfacePressures(const std::shared_ptr problem, + const GridVariables &gridVars, + const SolutionVector &sol, + const std::string meshName, + const std::string dataName) +{ + const auto &gridGeometry = problem->gridGeometry(); + auto fvGeometry = localView(gridGeometry); + auto elemVolVars = localView(gridVars.curGridVolVars()); + auto elemFluxVarsCache = localView(gridVars.gridFluxVarsCache()); + + auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); + + for (const auto &element : elements(gridGeometry.gridView())) { + fvGeometry.bind(element); + elemVolVars.bind(element, fvGeometry, sol); + elemFluxVarsCache.bind(element, fvGeometry, elemVolVars); + + for (const auto &scvf : scvfs(fvGeometry)) { + if (couplingParticipant.isCoupledEntity(scvf.index())) { + // TODO: What to do here? + const auto p = pressureAtInterface( + problem.get(), element, scvf, fvGeometry, elemVolVars, + elemFluxVarsCache); + couplingParticipant.writeScalarQuantityOnFace( + meshName, dataName, scvf.index(), p); + } + } + } +} + +template +void setInterfaceVelocities(const MomentumProblem &problem, + const GridVariables &gridVars, + const SolutionVector &sol, + const std::string meshName, + const std::string dataName) +{ + const auto &gridGeometry = problem.gridGeometry(); + auto fvGeometry = localView(gridGeometry); + auto elemVolVars = localView(gridVars.curGridVolVars()); + + auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); + + for (const auto &element : elements(gridGeometry.gridView())) { + fvGeometry.bindElement(element); + elemVolVars.bindElement(element, fvGeometry, sol); + + for (const auto &scvf : scvfs(fvGeometry)) { + if (couplingParticipant.isCoupledEntity(scvf.index())) { + // TODO: What to do here? + const auto v = + velocityAtInterface(elemVolVars, scvf)[scvf.normalAxis()]; + couplingParticipant.writeScalarQuantityOnFace( + meshName, dataName, scvf.index(), v); + } + } + } +} + +template +std::tuple writeVelocitiesOnInterfaceToFile( + const std::string &meshName, + const std::string &filename, + const std::shared_ptr problem, + const GridVariables &gridVars, + const SolutionVector &sol) +{ + const auto &gridGeometry = problem->gridGeometry(); + auto fvGeometry = localView(gridGeometry); + auto elemVolVars = localView(gridVars.curGridVolVars()); + + const auto &couplingParticipant = + Dumux::Precice::CouplingAdapter::getInstance(); + + std::ofstream ofs(filename + ".csv", + std::ofstream::out | std::ofstream::trunc); + ofs << "x,y,"; + if (couplingParticipant.getMeshDimensions(meshName) == 3) + ofs << "z,"; + ofs << "velocityY" + << "\n"; + + double min = std::numeric_limits::max(); + double max = std::numeric_limits::min(); + double sum = 0.; + for (const auto &element : elements(gridGeometry.gridView())) { + fvGeometry.bind(element); + elemVolVars.bind(element, fvGeometry, sol); + + for (const auto &scvf : scvfs(fvGeometry)) { + if (couplingParticipant.isCoupledEntity(scvf.index())) { + const auto &pos = scvf.center(); + for (int i = 0; + i < couplingParticipant.getMeshDimensions(meshName); ++i) { + ofs << pos[i] << ","; + } + const double v = + velocityAtInterface(elemVolVars, scvf)[scvf.normalAxis()]; + max = std::max(v, max); + min = std::min(v, min); + sum += v; + const int prec = ofs.precision(); + ofs << std::setprecision(std::numeric_limits::digits10 + + 1) + << v << "\n"; + ofs.precision(prec); + } + } + } + + ofs.close(); + + return std::make_tuple(min, max, sum); +} + +template +void writePressuresOnInterfaceToFile(const std::string &meshName, + const std::string &filename, + const std::shared_ptr problem, + const GridVariables &gridVars, + const SolutionVector &sol) +{ + const auto &gridGeometry = problem->gridGeometry(); + auto fvGeometry = localView(gridGeometry); + auto elemVolVars = localView(gridVars.curGridVolVars()); + auto elemFluxVarsCache = localView(gridVars.gridFluxVarsCache()); + + const auto &couplingParticipant = + Dumux::Precice::CouplingAdapter::getInstance(); + + std::ofstream ofs(filename + ".csv", + std::ofstream::out | std::ofstream::trunc); + ofs << "x,y,"; + if (couplingParticipant.getMeshDimensions(meshName) == 3) + ofs << "z,"; + ofs << "pressure" + << "\n"; + for (const auto &element : elements(gridGeometry.gridView())) { + fvGeometry.bind(element); + elemVolVars.bind(element, fvGeometry, sol); + elemFluxVarsCache.bind(element, fvGeometry, elemVolVars); + + for (const auto &scvf : scvfs(fvGeometry)) { + if (couplingParticipant.isCoupledEntity(scvf.index())) { + const auto &pos = scvf.center(); + for (int i = 0; + i < couplingParticipant.getMeshDimensions(meshName); ++i) { + ofs << pos[i] << ","; + } + const double p = pressureAtInterface( + problem.get(), element, scvf, fvGeometry, elemVolVars, + elemFluxVarsCache); + ofs << p << "\n"; + } + } + } + + ofs.close(); +} + +int main(int argc, char **argv) +try { + using namespace Dumux; + + // initialize MPI, finalize is done automatically on exit + const auto &mpiHelper = Dune::MPIHelper::instance(argc, argv); + + // print dumux start message + if (mpiHelper.rank() == 0) + DumuxMessage::print(/*firstCall=*/true); + + // parse command line arguments and input file + Parameters::init(argc, argv); + + // Define the sub problem type tags + using MomentumTypeTag = Properties::TTag::FreeFlowSubMomentum; + using MassTypeTag = Properties::TTag::FreeFlowSubMass; + + // try to create a grid (from the given grid file or the input file) + using FreeFlowGridManager = + Dumux::GridManager>; + FreeFlowGridManager freeFlowGridManager; + freeFlowGridManager.init("FreeFlow"); // pass parameter group + + // we compute on the leaf grid view + const auto &freeFlowGridView = freeFlowGridManager.grid().leafGridView(); + + // create the finite volume grid geometry + using MomentumGridGeometry = + GetPropType; + auto momentumGridGeometry = + std::make_shared(freeFlowGridView); + using MassGridGeometry = GetPropType; + auto massGridGeometry = + std::make_shared(freeFlowGridView); + + // create the coupling manager to couple the two subproblems of the freeflow participant + using CouplingManager = + GetPropType; + auto couplingManager = std::make_shared(); + constexpr auto momentumIdx = CouplingManager::freeFlowMomentumIndex; + constexpr auto massIdx = CouplingManager::freeFlowMassIndex; + + // the problem (initial and boundary conditions) + using MomentumProblem = GetPropType; + auto momentumProblem = std::make_shared( + momentumGridGeometry, couplingManager); + using MassProblem = GetPropType; + auto massProblem = + std::make_shared(massGridGeometry, couplingManager); + + // the solution vector + using Traits = MultiDomainTraits; + using SolutionVector = Traits::SolutionVector; + SolutionVector sol; + + // Initialize preCICE.Tell preCICE about: + // - Name of solver + // - What rank of how many ranks this instance is + // Configure preCICE. For now the config file is hardcoded. + // couplingParticipant.createInstance( "FreeFlow", mpiHelper.rank(), mpiHelper.size() ); + std::string preciceConfigFilename = "../precice-config.xml"; + // if (argc == 3) + // preciceConfigFilename = argv[2]; + if (argc > 2) + preciceConfigFilename = argv[argc - 1]; + + auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); + couplingParticipant.announceSolver("FreeFlow", preciceConfigFilename, + mpiHelper.rank(), mpiHelper.size()); + + const std::string meshName("FreeFlowMesh"); // mesh name + const int dim = couplingParticipant.getMeshDimensions(meshName); + std::cout << dim << " " << int(MassGridGeometry::GridView::dimension) + << std::endl; + if (dim != int(MassGridGeometry::GridView::dimension)) + DUNE_THROW(Dune::InvalidStateException, "Dimensions do not match"); + + // GET mesh corodinates + const double xMin = + getParamFromGroup>("Darcy", "Grid.LowerLeft")[0]; + const double xMax = + getParamFromGroup>("Darcy", "Grid.UpperRight")[0]; + std::vector coords; //( dim * vertexSize ); + std::vector coupledScvfIndices; + + for (const auto &element : elements(freeFlowGridView)) { + auto fvGeometry = localView(*momentumGridGeometry); + fvGeometry.bindElement(element); + + for (const auto &scvf : scvfs(fvGeometry)) { + if (!scvf.isFrontal()) + continue; + static constexpr auto eps = 1e-7; + const auto &pos = scvf.center(); + if (pos[1] < momentumGridGeometry->bBoxMin()[1] + eps) { + if (pos[0] > xMin - eps && pos[0] < xMax + eps) { + coupledScvfIndices.push_back(scvf.index()); + for (const auto p : pos) + coords.push_back(p); + } + } + } + } + + couplingParticipant.setMesh(meshName, coords); + couplingParticipant.createIndexMapping(coupledScvfIndices); + + const std::string dataNameV("Velocity"); + const std::string dataNameP("Pressure"); + couplingParticipant.announceQuantity(meshName, dataNameV); + couplingParticipant.announceQuantity(meshName, dataNameP); + + // apply initial solution for instationary problems + momentumProblem->applyInitialSolution(sol[momentumIdx]); + massProblem->applyInitialSolution(sol[massIdx]); + + // the grid variables + using MomentumGridVariables = + GetPropType; + auto momentumGridVariables = std::make_shared( + momentumProblem, momentumGridGeometry); + using MassGridVariables = + GetPropType; + auto massGridVariables = + std::make_shared(massProblem, massGridGeometry); + + // initialize the coupling manager and the grid variables of the subproblems + couplingManager->init( + momentumProblem, massProblem, + std::make_tuple(momentumGridVariables, massGridVariables), sol); + momentumGridVariables->init(sol[momentumIdx]); + massGridVariables->init(sol[massIdx]); + + // intialize the vtk output module + using IOFields = GetPropType; + VtkOutputModule freeFlowVtkWriter(*massGridVariables, sol[massIdx], + massProblem->name()); + IOFields::initOutputModule(freeFlowVtkWriter); + freeFlowVtkWriter.addVelocityOutput( + std::make_shared>()); + freeFlowVtkWriter.addField(massProblem->getAnalyticalVelocityX(), + "analyticalV_x"); + freeFlowVtkWriter.write(0.0); + + if (couplingParticipant.requiresToWriteInitialData()) { + setInterfacePressures( + momentumProblem, *momentumGridVariables, sol[momentumIdx], meshName, + dataNameP); + couplingParticipant.writeQuantityToOtherSolver(meshName, dataNameP); + } + couplingParticipant.initialize(); + couplingParticipant.initializeCheckpoint(sol[momentumIdx], + *momentumGridVariables); + couplingParticipant.initializeCheckpoint(sol[massIdx], *massGridVariables); + + // the assembler for a stationary problem + using Assembler = + MultiDomainFVAssembler; + auto assembler = std::make_shared( + std::make_tuple(momentumProblem, massProblem), + std::make_tuple(momentumGridGeometry, massGridGeometry), + std::make_tuple(momentumGridVariables, massGridVariables), + couplingManager); + + // the linear solver + using LinearSolver = + UMFPackIstlSolver>; + auto linearSolver = std::make_shared(); + + // the non-linear solver + using NewtonSolver = + MultiDomainNewtonSolver; + NewtonSolver nonLinearSolver(assembler, linearSolver, couplingManager); + + double preciceDt = couplingParticipant.getMaxTimeStepSize(); + auto dt = preciceDt; + + double vtkTime = 1.0; + + while (couplingParticipant.isCouplingOngoing()) { + couplingParticipant.writeCheckpointIfRequired(); + + couplingParticipant.readQuantityFromOtherSolver(meshName, dataNameV, + dt); + // solve the non-linear system + nonLinearSolver.solve(sol); + + writeVelocitiesOnInterfaceToFile( + meshName, Dumux::Fmt::format("ff_interface_velocities_{}", vtkTime), + momentumProblem, *momentumGridVariables, sol[momentumIdx]); + writePressuresOnInterfaceToFile( + meshName, Dumux::Fmt::format("ff_interface_pressures_{}", vtkTime), + momentumProblem, *momentumGridVariables, sol[momentumIdx]); + + setInterfacePressures( + momentumProblem, *momentumGridVariables, sol[momentumIdx], meshName, + dataNameP); + couplingParticipant.writeQuantityToOtherSolver(meshName, dataNameP); + freeFlowVtkWriter.write(vtkTime); + vtkTime += 1.; + couplingParticipant.advance(dt); + preciceDt = couplingParticipant.getMaxTimeStepSize(); + dt = std::min(preciceDt, dt); + + if (!couplingParticipant.readCheckpointIfRequired()) { + freeFlowVtkWriter.write(vtkTime); + } + } + //////////////////////////////////////////////////////////// + // finalize, print dumux message to say goodbye + //////////////////////////////////////////////////////////// + + couplingParticipant.finalize(); + + // print dumux end message + if (mpiHelper.rank() == 0) { + Parameters::print(); + DumuxMessage::print(/*firstCall=*/false); + } + + return 0; +} // end main +catch (Dumux::ParameterException &e) { + std::cerr << std::endl + << e << " ---> Abort!" << std::endl; + return 1; +} catch (Dune::DGFException &e) { + std::cerr << "DGF exception thrown (" << e + << "). Most likely, the DGF file name is wrong " + "or the DGF file is corrupted, " + "e.g. missing hash at end of file or wrong number " + "(dimensions) of entries." + << " ---> Abort!" << std::endl; + return 2; +} catch (Dune::Exception &e) { + std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl; + return 3; +} catch (...) { + std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl; + return 4; +} diff --git a/free-flow-over-porous-media/free-flow-dumux/clean.sh b/free-flow-over-porous-media/free-flow-dumux/clean.sh new file mode 100755 index 000000000..3e9fd4e51 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/clean.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_dumux . diff --git a/free-flow-over-porous-media/free-flow-dumux/config.h.cmake b/free-flow-over-porous-media/free-flow-dumux/config.h.cmake new file mode 100644 index 000000000..8a40f6ee9 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/config.h.cmake @@ -0,0 +1,45 @@ +/* begin free-flow-dumux + put the definitions for config.h specific to + your project here. Everything above will be + overwritten +*/ + +/* begin private */ +/* Name of package */ +#define PACKAGE "@DUNE_MOD_NAME@" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "@DUNE_MAINTAINER@" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "@DUNE_MOD_NAME@" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "@DUNE_MOD_NAME@ @DUNE_MOD_VERSION@" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "@DUNE_MOD_NAME@" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "@DUNE_MOD_URL@" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "@DUNE_MOD_VERSION@" + +/* end private */ + +/* Define to the version of free-flow-dumux */ +#define FREE_FLOW_DUMUX_VERSION "@FREE_FLOW_DUMUX_VERSION@" + +/* Define to the major version of free-flow-dumux */ +#define FREE_FLOW_DUMUX_VERSION_MAJOR @FREE_FLOW_DUMUX_VERSION_MAJOR@ + +/* Define to the minor version of free-flow-dumux */ +#define FREE_FLOW_DUMUX_VERSION_MINOR @FREE_FLOW_DUMUX_VERSION_MINOR@ + +/* Define to the revision of free-flow-dumux */ +#define FREE_FLOW_DUMUX_VERSION_REVISION @FREE_FLOW_DUMUX_VERSION_REVISION@ + +/* end free-flow-dumux + Everything below here will be overwritten +*/ diff --git a/free-flow-over-porous-media/free-flow-dumux/dune.module b/free-flow-over-porous-media/free-flow-dumux/dune.module new file mode 100644 index 000000000..24d5d5c37 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/dune.module @@ -0,0 +1,12 @@ +################################ +# Dune module information file # +################################ + +# Name of the module +Module: free-flow-dumux +Version: 1.0 +Maintainer: jun.chen@ipvs.uni-stuttgart.de +# Required build dependencies +Depends: dumux-precice +# Optional build dependencies +#Suggests: diff --git a/free-flow-over-porous-media/free-flow-dumux/free-flow-dumux.pc.in b/free-flow-over-porous-media/free-flow-dumux/free-flow-dumux.pc.in new file mode 100644 index 000000000..9565b0e68 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/free-flow-dumux.pc.in @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +CXX=@CXX@ +CC=@CC@ +DEPENDENCIES=@REQUIRES@ + +Name: @PACKAGE_NAME@ +Version: @VERSION@ +Description: free-flow module +URL: http://dune-project.org/ +Requires: dumux-precice +Libs: -L${libdir} +Cflags: -I${includedir} diff --git a/free-flow-over-porous-media/free-flow-dumux/params.input b/free-flow-over-porous-media/free-flow-dumux/params.input new file mode 100644 index 000000000..7b1ef313f --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/params.input @@ -0,0 +1,41 @@ +[FreeFlow] +EnableUnsymmetrizedVelocityGradientForBeaversJoseph = false + +[FreeFlow.Grid] +Verbosity = true +LowerLeft = 0 1 +UpperRight = 1 2 +Cells = 40 40 +Grading1 = 1 + +[Darcy.Grid] +Verbosity = true +LowerLeft = 0 0 +UpperRight = 1 1 +Cells = 40 40 +Grading1 = 1 + +[FreeFlow.Problem] +Name = ff-pm-2d-precice-stokes +EnableInertiaTerms = false +#Name = ff-pm-2d-precice-navierstokes +#EnableInertiaTerms = true +PressureDifference = 1e-2 + + +[Darcy.Problem] +Name = ff-pm-2d-precice-darcy +InitialP = 0.0e-9 + +[Darcy.SpatialParams] +Permeability = 1e-6 # m^2 +Porosity = 0.4 +AlphaBeaversJoseph = 1.0 + +[Problem] +Name = fvca-iterative +EnableGravity = false +CouplingMode = ReconstructFreeFlowNormalStress + +[Vtk] +AddVelocity = 1 diff --git a/free-flow-over-porous-media/free-flow-dumux/run.sh b/free-flow-over-porous-media/free-flow-dumux/run.sh new file mode 100755 index 000000000..928c3b910 --- /dev/null +++ b/free-flow-over-porous-media/free-flow-dumux/run.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -e -u + +. ../../tools/log.sh +exec > >(tee --append "$LOGFILE") 2>&1 + +usage() { echo "Usage: cmd [-s] [-p n]" 1>&2; exit 1; } + +# Check if no input argument was provided +if [ -z "$*" ] ; then + echo "No input argument provided. Free flow solver is launched in serial" + ./free_flow_dumux params.input +fi + +while getopts ":sp" opt; do + case ${opt} in + s) + ./free_flow_dumux params.input + ;; + p) + mpiexec -n "$2" free_flow_dumux params.input + ;; + *) + usage + ;; + esac +done + +close_log diff --git a/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-precice-config-visualization.png b/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-precice-config-visualization.png new file mode 100644 index 0000000000000000000000000000000000000000..e26b136051449b1eff1832c24861b2a70c2fb53f GIT binary patch literal 68977 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

;y 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. * + *****************************************************************************/ +/*! + * \file + * + * \brief A test problem for the coupled Stokes/Darcy problem (1p) + */ +#include + +#include +#include +#include +#include + +bool printstuff = false; + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include + +#include +#include +#include + +#include "properties.hh" + +#include "dumux-precice/couplingadapter.hh" + +/*! + * \brief Returns the velocity at the interface using Darcy's law for reconstruction + */ +template +auto velocityAtInterface(const Problem &problem, + const Element &element, + const FVElementGeometry &fvGeometry, + const ElementVolumeVariables &elemVolVars, + const SubControlVolumeFace &scvf, + const ElementFluxVariablesCache &elemFluxVarsCache) +{ + const int phaseIdx = 0; + FluxVariables fluxVars; + fluxVars.init(problem, element, fvGeometry, elemVolVars, scvf, + elemFluxVarsCache); + auto upwindTerm = [phaseIdx](const auto &volVars) { + return volVars.mobility(phaseIdx); + }; + const auto scalarVelocity = + fluxVars.advectiveFlux(phaseIdx, upwindTerm) / scvf.area(); + return scalarVelocity; +} + +template +void setInterfaceVelocities(const Problem &problem, + const GridVariables &gridVars, + const SolutionVector &sol, + const std::string meshName, + const std::string dataName) +{ + const auto &gridGeometry = problem.gridGeometry(); + auto fvGeometry = localView(gridGeometry); + auto elemVolVars = localView(gridVars.curGridVolVars()); + auto elemFluxVarsCache = localView(gridVars.gridFluxVarsCache()); + + auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); + + for (const auto &element : elements(gridGeometry.gridView())) { + fvGeometry.bind(element); + elemVolVars.bind(element, fvGeometry, sol); + elemFluxVarsCache.bind(element, fvGeometry, elemVolVars); + + for (const auto &scvf : scvfs(fvGeometry)) { + if (couplingParticipant.isCoupledEntity(scvf.index())) { + // TODO: What to do here? + const double v = velocityAtInterface( + problem, element, fvGeometry, elemVolVars, scvf, + elemFluxVarsCache); + couplingParticipant.writeScalarQuantityOnFace( + meshName, dataName, scvf.index(), v); + } + } + } +} + +int main(int argc, char **argv) +{ + using namespace Dumux; + + // initialize MPI, finalize is done automatically on exit + const auto &mpiHelper = Dune::MPIHelper::instance(argc, argv); + + // print dumux start message + if (mpiHelper.rank() == 0) + DumuxMessage::print(/*firstCall=*/true); + + // parse command line arguments and input file + Parameters::init(argc, argv); + + using DarcyTypeTag = Properties::TTag::DarcyOneP; + + using DarcyGridManager = + Dumux::GridManager>; + DarcyGridManager darcyGridManager; + darcyGridManager.init("Darcy"); // pass parameter group + + // we compute on the leaf grid view + const auto &darcyGridView = darcyGridManager.grid().leafGridView(); + + // create the finite volume grid geometry + using DarcyGridGeometry = + GetPropType; + auto darcyGridGeometry = std::make_shared(darcyGridView); + darcyGridGeometry->update(darcyGridManager.grid().leafGridView()); + + using DarcyProblem = GetPropType; + auto darcyProblem = std::make_shared(darcyGridGeometry); + + // the solution vector + using SolutionVector = + GetPropType; + SolutionVector sol; + sol.resize(darcyGridGeometry->numDofs()); + + // Initialize preCICE.Tell preCICE about: + // - Name of solver + // - What rank of how many ranks this instance is + // Configure preCICE. For now the config file is hardcoded. + std::string preciceConfigFilename = "../precice-config.xml"; + + auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); + couplingParticipant.announceSolver("Darcy", preciceConfigFilename, + mpiHelper.rank(), mpiHelper.size()); + + const std::string meshName("DarcyMesh"); + const int dim = couplingParticipant.getMeshDimensions(meshName); + std::cout << dim << " " << int(DarcyGridGeometry::GridView::dimension) + << std::endl; + if (dim != int(DarcyGridGeometry::GridView::dimension)) + DUNE_THROW(Dune::InvalidStateException, "Dimensions do not match"); + + // GET mesh coordinates + const double xMin = + getParam>("Grid.LowerLeft")[0]; + const double xMax = + getParam>("Grid.UpperRight")[0]; + std::vector coords; //( dim * vertexSize ); + std::vector coupledScvfIndices; + + for (const auto &element : elements(darcyGridView)) { + auto fvGeometry = localView(*darcyGridGeometry); + fvGeometry.bindElement(element); + + for (const auto &scvf : scvfs(fvGeometry)) { + static constexpr auto eps = 1e-7; + const auto &pos = scvf.center(); + if (pos[1] > darcyGridGeometry->bBoxMax()[1] - eps) { + if (pos[0] > xMin - eps && pos[0] < xMax + eps) { + coupledScvfIndices.push_back(scvf.index()); + for (const auto p : pos) + coords.push_back(p); + } + } + } + } + + couplingParticipant.setMesh(meshName, coords); + couplingParticipant.createIndexMapping(coupledScvfIndices); + + const std::string dataNameV("Velocity"); + const std::string dataNameP("Pressure"); + couplingParticipant.announceQuantity(meshName, dataNameP); + couplingParticipant.announceQuantity(meshName, dataNameV); + + darcyProblem->applyInitialSolution(sol); + + // the grid variables + using DarcyGridVariables = + GetPropType; + auto darcyGridVariables = + std::make_shared(darcyProblem, darcyGridGeometry); + darcyGridVariables->init(sol); + + // intialize the vtk output module + + VtkOutputModule> + darcyVtkWriter(*darcyGridVariables, sol, darcyProblem->name()); + using DarcyVelocityOutput = + GetPropType; + darcyVtkWriter.addVelocityOutput( + std::make_shared(*darcyGridVariables)); + GetPropType::initOutputModule( + darcyVtkWriter); + darcyVtkWriter.write(0.0); + + using FluxVariables = GetPropType; + if (couplingParticipant.requiresToWriteInitialData()) { + setInterfaceVelocities( + *darcyProblem, *darcyGridVariables, sol, meshName, dataNameV); + couplingParticipant.writeQuantityToOtherSolver(meshName, dataNameV); + } + couplingParticipant.initialize(); + + // initialize checkpointing + couplingParticipant.initializeCheckpoint(sol, *darcyGridVariables); + + // the assembler for a stationary problem + using Assembler = FVAssembler; + auto assembler = std::make_shared( + darcyProblem, darcyGridGeometry, darcyGridVariables); + + // the linear solver + using LinearSolver = + UMFPackIstlSolver>; + auto linearSolver = std::make_shared(); + + // the non-linear solver + using NewtonSolver = Dumux::NewtonSolver; + NewtonSolver nonLinearSolver(assembler, linearSolver); + + double preciceDt = couplingParticipant.getMaxTimeStepSize(); + auto dt = preciceDt; + + double vtkTime = 1.0; + + while (couplingParticipant.isCouplingOngoing()) { + couplingParticipant.writeCheckpointIfRequired(); + + couplingParticipant.readQuantityFromOtherSolver(meshName, dataNameP, + dt); + + // solve the non-linear system + nonLinearSolver.solve(sol); + + setInterfaceVelocities( + *darcyProblem, *darcyGridVariables, sol, meshName, dataNameV); + couplingParticipant.writeQuantityToOtherSolver(meshName, dataNameV); + + couplingParticipant.advance(dt); + preciceDt = couplingParticipant.getMaxTimeStepSize(); + dt = std::min(preciceDt, dt); + + if (!couplingParticipant.readCheckpointIfRequired()) { + vtkTime += 1.; + darcyVtkWriter.write(vtkTime); + } + } + couplingParticipant.finalize(); + + //////////////////////////////////////////////////////////// + // finalize, print dumux message to say goodbye + //////////////////////////////////////////////////////////// + + // print dumux end message + if (mpiHelper.rank() == 0) { + Parameters::print(); + DumuxMessage::print(/*firstCall=*/false); + } + + return 0; +} // end main diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/problem.hh b/free-flow-over-porous-media/porous-media-dumux/appl/problem.hh new file mode 100644 index 000000000..bd9e1243a --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/appl/problem.hh @@ -0,0 +1,208 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *****************************************************************************/ +/*! + * \file + * + * \brief The porous medium flow sub problem + */ +#ifndef DUMUX_DARCY_SUBPROBLEM_HH +#define DUMUX_DARCY_SUBPROBLEM_HH + +#include + +#include + +#include + +namespace Dumux { + +/*! + * \brief The porous medium flow sub problem + */ +template +class DarcySubProblem : public PorousMediumFlowProblem { + using ParentType = PorousMediumFlowProblem; + using GridView = + typename GetPropType::GridView; + using Scalar = GetPropType; + using PrimaryVariables = GetPropType; + + using NumEqVector = Dumux::NumEqVector; + + using BoundaryTypes = Dumux::BoundaryTypes< + GetPropType::numEq()>; + using VolumeVariables = GetPropType; + using FVElementGeometry = + typename GetPropType::LocalView; + using SubControlVolume = typename FVElementGeometry::SubControlVolume; + using SubControlVolumeFace = + typename FVElementGeometry::SubControlVolumeFace; + using GridGeometry = GetPropType; + + using Indices = + typename GetPropType::Indices; + + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + +public: + DarcySubProblem(std::shared_ptr fvGridGeometry) + : ParentType(fvGridGeometry, "Darcy"), + eps_(1e-7), + couplingParticipant_(Dumux::Precice::CouplingAdapter::getInstance()) + { + } + + /*! + * \brief Specifies which kind of boundary condition should be + * used for which equation on a given boundary control volume. + * + * \param element The element + * \param scvf The boundary sub control volume face + */ + BoundaryTypes boundaryTypes(const Element &element, + const SubControlVolumeFace &scvf) const + { + BoundaryTypes values; + + // set Neumann BCs to all boundaries first + values.setAllNeumann(); + + const auto faceId = scvf.index(); + if (couplingParticipant_.isCoupledEntity(faceId)) + values.setAllDirichlet(); + return values; + } + + /*! + * \brief Evaluate the boundary conditions for a Dirichlet control volume. + * + * \param element The element for which the Dirichlet boundary condition is set + * \param scvf The boundary subcontrolvolumeface + * + * For this method, the \a values parameter stores primary variables. + */ + PrimaryVariables dirichlet(const Element &element, + const SubControlVolumeFace &scvf) const + { + // set p = 0 at the bottom + PrimaryVariables values(0.0); + values = initial(element); + + const auto faceId = scvf.index(); + if (couplingParticipant_.isCoupledEntity(faceId)) + values = couplingParticipant_.getScalarQuantityOnFace( + "DarcyMesh", "Pressure", faceId); + + return values; + } + + /*! + * \brief Evaluate the boundary conditions for a Neumann control volume. + * + * \param element The element for which the Neumann boundary condition is set + * \param fvGeomentry The fvGeometry + * \param elemVolVars The element volume variables + * \param scvf The boundary sub control volume face + * + * For this method, the \a values variable stores primary variables. + */ + template + NumEqVector neumann(const Element &element, + const FVElementGeometry &fvGeometry, + const ElementVolumeVariables &elemVolVars, + const ElementFluxVarsCache &elemFluxVarsCache, + const SubControlVolumeFace &scvf) const + { + // no-flow everywhere ... + NumEqVector values(0.0); + return values; + } + + // \} + + /*! + * \name Volume terms + */ + // \{ + /*! + * \brief Evaluate the source term for all phases within a given + * sub-control-volume. + * + * \param element The element for which the source term is set + * \param fvGeomentry The fvGeometry + * \param elemVolVars The element volume variables + * \param scv The subcontrolvolume + */ + template + NumEqVector source(const Element &element, + const FVElementGeometry &fvGeometry, + const ElementVolumeVariables &elemVolVars, + const SubControlVolume &scv) const + { + return NumEqVector(0.0); + } + + // \} + + /*! + * \brief Evaluate the initial value for a control volume. + * + * \param element The element + * + * For this method, the \a priVars parameter stores primary + * variables. + */ + PrimaryVariables initial(const Element &element) const + { + static const Scalar p = + getParamFromGroup(this->paramGroup(), "Problem.InitialP"); + return PrimaryVariables(p); + } + + // \} + +private: + bool onLeftBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[0] < this->fvGridGeometry().bBoxMin()[0] + eps_; + } + + bool onRightBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - eps_; + } + + bool onLowerBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[1] < this->fvGridGeometry().bBoxMin()[1] + eps_; + } + + bool onUpperBoundary_(const GlobalPosition &globalPos) const + { + return globalPos[1] > this->fvGridGeometry().bBoxMax()[1] - eps_; + } + + Scalar eps_; + + Dumux::Precice::CouplingAdapter &couplingParticipant_; +}; +} // namespace Dumux + +#endif // DUMUX_DARCY_SUBPROBLEM_HH diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/properties.hh b/free-flow-over-porous-media/porous-media-dumux/appl/properties.hh new file mode 100644 index 000000000..aeb522e87 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/appl/properties.hh @@ -0,0 +1,81 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *****************************************************************************/ +/*! + * \file + * + * \brief The porous medium flow sub problem + */ +#ifndef DUMUX_DARCY_SUBPROPERTIES_HH +#define DUMUX_DARCY_SUBPROPERTIES_HH + +#ifndef DIMWORLD +#define DIMWORLD 2 +#endif + +#include + +#include + +#include + +#include "spatialparams.hh" + +#include +#include + +#include "problem.hh" + +namespace Dumux::Properties { + +// Create new type tags +namespace TTag { +struct DarcyOneP { + using InheritsFrom = std::tuple; +}; +} // end namespace TTag + +// Set the problem property +template +struct Problem { + using type = Dumux::DarcySubProblem; +}; + +// the fluid system +template +struct FluidSystem { + using Scalar = GetPropType; + using type = + FluidSystems::OnePLiquid>; +}; + +// Set the grid type +template +struct Grid { + using type = Dune::YaspGrid; +}; + +template +struct SpatialParams { + using type = OnePSpatialParams, + GetPropType>; +}; + +} // end namespace Dumux::Properties + +#endif // DUMUX_DARCY_SUBPROPERTIES_HH diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/spatialparams.hh b/free-flow-over-porous-media/porous-media-dumux/appl/spatialparams.hh new file mode 100644 index 000000000..07459cb73 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/appl/spatialparams.hh @@ -0,0 +1,109 @@ +// -*- mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- +// vi: set et ts=4 sw=4 sts=4: +/***************************************************************************** + * See the file COPYING for full copying permissions. * + * * + * This program is free software: you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation, either version 2 of the License, or * + * (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program. If not, see . * + *****************************************************************************/ +/*! + * \file + * \ingroup OnePTests + * \brief The spatial parameters class for the test problem using the 1p cc model + */ +#ifndef DUMUX_1P_TEST_SPATIALPARAMS_HH +#define DUMUX_1P_TEST_SPATIALPARAMS_HH + +#include + +namespace Dumux { +/*! + * \ingroup OnePModel + * + * \brief The spatial parameters class for the test problem using the + * 1p cc model + */ +template +class OnePSpatialParams : public FVPorousMediumFlowSpatialParamsOneP< + FVGridGeometry, + Scalar, + OnePSpatialParams> { + using GridView = typename FVGridGeometry::GridView; + using ParentType = FVPorousMediumFlowSpatialParamsOneP< + FVGridGeometry, + Scalar, + OnePSpatialParams>; + + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + +public: + // export permeability type + using PermeabilityType = Scalar; + + OnePSpatialParams(std::shared_ptr fvGridGeometry) + : ParentType(fvGridGeometry) + { + permeability_ = getParam("SpatialParams.Permeability"); + porosity_ = getParam("SpatialParams.Porosity"); + alphaBJ_ = getParam("SpatialParams.AlphaBeaversJoseph"); + } + + /*! + * \brief Function for defining the (intrinsic) permeability \f$[m^2]\f$. + * + * \param globalPos The global position + * \return the intrinsic permeability + */ + PermeabilityType permeabilityAtPos(const GlobalPosition &globalPos) const + { + return permeability_; + } + + /*! \brief Define the porosity in [-]. + * + * \param globalPos The global position + */ + Scalar porosityAtPos(const GlobalPosition &globalPos) const + { + return porosity_; + } + + /*! \brief Define the Beavers-Joseph coefficient in [-]. + * + * \param globalPos The global position + */ + Scalar beaversJosephCoeffAtPos(const GlobalPosition &globalPos) const + { + return alphaBJ_; + } + + /*! + * \brief Return the temperature within the domain in [K]. + * + * This problem assumes a temperature of 10 degrees Celsius. + */ + Scalar temperatureAtPos(const GlobalPosition &globalPos) const + { + return 273.15 + 10; // 10°C + } + +private: + Scalar permeability_; + Scalar porosity_; + Scalar alphaBJ_; +}; + +} // namespace Dumux + +#endif diff --git a/free-flow-over-porous-media/porous-media-dumux/clean.sh b/free-flow-over-porous-media/porous-media-dumux/clean.sh new file mode 100755 index 000000000..3e9fd4e51 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/clean.sh @@ -0,0 +1,6 @@ +#!/usr/bin/env sh +set -e -u + +. ../../tools/cleaning-tools.sh + +clean_dumux . diff --git a/free-flow-over-porous-media/porous-media-dumux/config.h.cmake b/free-flow-over-porous-media/porous-media-dumux/config.h.cmake new file mode 100644 index 000000000..c508ddec4 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/config.h.cmake @@ -0,0 +1,45 @@ +/* begin porous-media-dumux + put the definitions for config.h specific to + your project here. Everything above will be + overwritten +*/ + +/* begin private */ +/* Name of package */ +#define PACKAGE "@DUNE_MOD_NAME@" + +/* Define to the address where bug reports for this package should be sent. */ +#define PACKAGE_BUGREPORT "@DUNE_MAINTAINER@" + +/* Define to the full name of this package. */ +#define PACKAGE_NAME "@DUNE_MOD_NAME@" + +/* Define to the full name and version of this package. */ +#define PACKAGE_STRING "@DUNE_MOD_NAME@ @DUNE_MOD_VERSION@" + +/* Define to the one symbol short name of this package. */ +#define PACKAGE_TARNAME "@DUNE_MOD_NAME@" + +/* Define to the home page for this package. */ +#define PACKAGE_URL "@DUNE_MOD_URL@" + +/* Define to the version of this package. */ +#define PACKAGE_VERSION "@DUNE_MOD_VERSION@" + +/* end private */ + +/* Define to the version of porous-media-dumux */ +#define POROUS_MEDIA_DUMUX_VERSION "@POROUS_MEDIA_DUMUX_VERSION@" + +/* Define to the major version of porous-media-dumux */ +#define POROUS_MEDIA_DUMUX_VERSION_MAJOR @POROUS_MEDIA_DUMUX_VERSION_MAJOR@ + +/* Define to the minor version of porous-media-dumux */ +#define POROUS_MEDIA_DUMUX_VERSION_MINOR @POROUS_MEDIA_DUMUX_VERSION_MINOR@ + +/* Define to the revision of porous-media-dumux */ +#define POROUS_MEDIA_DUMUX_VERSION_REVISION @POROUS_MEDIA_DUMUX_VERSION_REVISION@ + +/* end porous-media-dumux + Everything below here will be overwritten +*/ diff --git a/free-flow-over-porous-media/porous-media-dumux/dune.module b/free-flow-over-porous-media/porous-media-dumux/dune.module new file mode 100644 index 000000000..fdc7ffb22 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/dune.module @@ -0,0 +1,12 @@ +################################ +# Dune module information file # +################################ + +# Name of the module +Module: porous-media-dumux +Version: 1.0 +Maintainer: jun.chen@iws.uni-stuttgart.de +# Required build dependencies +Depends: dumux-precice +# Optional build dependencies +#Suggests: diff --git a/free-flow-over-porous-media/porous-media-dumux/params.input b/free-flow-over-porous-media/porous-media-dumux/params.input new file mode 100644 index 000000000..a7cddbae6 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/params.input @@ -0,0 +1,18 @@ +[Grid] +Verbosity = true +LowerLeft = 0 0 +UpperRight = 1 1 +Cells = 40 40 +Grading1 = 1 + +[Problem] +Name = porous-media-dumux +InitialP = 0.0e-9 + +[SpatialParams] +Permeability = 1e-6 # m^2 +Porosity = 0.4 +AlphaBeaversJoseph = 1.0 + +[Vtk] +AddVelocity = 1 diff --git a/free-flow-over-porous-media/porous-media-dumux/porous-media-dumux.pc.in b/free-flow-over-porous-media/porous-media-dumux/porous-media-dumux.pc.in new file mode 100644 index 000000000..d24c6f29f --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/porous-media-dumux.pc.in @@ -0,0 +1,15 @@ +prefix=@prefix@ +exec_prefix=@exec_prefix@ +libdir=@libdir@ +includedir=@includedir@ +CXX=@CXX@ +CC=@CC@ +DEPENDENCIES=@REQUIRES@ + +Name: @PACKAGE_NAME@ +Version: @VERSION@ +Description: porous-media-dumux module +URL: http://dune-project.org/ +Requires: dumux-precice +Libs: -L${libdir} +Cflags: -I${includedir} diff --git a/free-flow-over-porous-media/porous-media-dumux/run.sh b/free-flow-over-porous-media/porous-media-dumux/run.sh new file mode 100755 index 000000000..e3ede49a9 --- /dev/null +++ b/free-flow-over-porous-media/porous-media-dumux/run.sh @@ -0,0 +1,29 @@ +#!/usr/bin/env bash +set -e -u + +. ../../tools/log.sh +exec > >(tee --append "$LOGFILE") 2>&1 + +usage() { echo "Usage: cmd [-s] [-p n]" 1>&2; exit 1; } + +# Check if no input argument was provided +if [ -z "$*" ] ; then + echo "No input argument provided. Porous medium solver is launched in serial" + ./porous_media_dumux params.input +fi + +while getopts ":sp" opt; do + case ${opt} in + s) + ./porous_media_dumux params.input + ;; + p) + mpiexec -n "$2" porous_media_dumux params.input + ;; + *) + usage + ;; + esac +done + +close_log diff --git a/free-flow-over-porous-media/precice-config.xml b/free-flow-over-porous-media/precice-config.xml new file mode 100644 index 000000000..af77688be --- /dev/null +++ b/free-flow-over-porous-media/precice-config.xml @@ -0,0 +1,73 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/free-flow-over-porous-media/setup-dumux.sh b/free-flow-over-porous-media/setup-dumux.sh new file mode 100755 index 000000000..56fc29fc6 --- /dev/null +++ b/free-flow-over-porous-media/setup-dumux.sh @@ -0,0 +1,35 @@ +#!/usr/bin/env sh +set -e -u + +# This script sets up a DUNE environment in the working directory to solve the two-scale-heat-conduction problem with DuMuX on one or both scales + +# Clean any old leftover dumux or dune folders +rm -rfv dumux/ dumux-adapter/ +rm -rfv dune-*/ +rm -rfv install* + +# Get the DuMuX install script and install it +wget https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/-/raw/releases/3.7/bin/installdumux.py +DUNE_CONTROL_PATH=. python3 installdumux.py +# clear build directories +cd dumux +rm -r dune-common/build-cmake/dune-env/lib/dunecontrol || true +DUNE_CONTROL_PATH=. ./dune-common/bin/dunecontrol exec rm -r build-cmake +cd .. + +# Take out all the module folders from the dumux/ folder and remove the dumux/ folder +mv dumux dumux-install +mv dumux-install/* ./ +rm -r dumux-install + +# Get additional required DUNE modules +# DuMux-preCICE adapter +git clone https://github.com/precice/dumux-adapter.git +# DUNE SPGrid for periodic boundary conditions +DUNE_CONTROL_PATH=. python3 dumux/bin/installexternal.py spgrid + +# Re-build environment +DUNE_CONTROL_PATH=. ./dune-common/bin/dunecontrol --opts=./dumux/cmake.opts all + +# Compile and move macro-dumux and micro-dumux executables to the participant folder level +./compile-dumux-cases.sh From f5a9d3dbcc559ee09e27f14f7eb453847999d01d Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 11:26:49 +0100 Subject: [PATCH 02/14] rename files --- free-flow-over-porous-media/README.md | 2 +- free-flow-over-porous-media/free-flow-dumux/appl/main.cc | 2 +- .../free-flow-dumux/appl/{ffproblem-reversed.hh => problem.hh} | 0 .../free-flow-dumux/appl/{ffproperties.hh => properties.hh} | 2 +- 4 files changed, 3 insertions(+), 3 deletions(-) rename free-flow-over-porous-media/free-flow-dumux/appl/{ffproblem-reversed.hh => problem.hh} (100%) rename free-flow-over-porous-media/free-flow-dumux/appl/{ffproperties.hh => properties.hh} (99%) diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index 0ff79c29e..06d0fef1c 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -6,7 +6,7 @@ summary: Flow-flow coupling example with porous medium field and free flow field --- {% note %} -Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/free-flow-over-porous-medium-2d). Read how in the [tutorials introduction](https://precice.org/tutorials.html). +Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/master/free-flow-over-porous-media-2d). Read how in the [tutorials introduction](https://precice.org/tutorials.html). {% endnote %} ## Setup diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc index e74af0aed..79b036295 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc +++ b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc @@ -51,7 +51,7 @@ #include -#include "ffproperties.hh" +#include "properties.hh" #include "dumux-precice/couplingadapter.hh" diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/ffproblem-reversed.hh b/free-flow-over-porous-media/free-flow-dumux/appl/problem.hh similarity index 100% rename from free-flow-over-porous-media/free-flow-dumux/appl/ffproblem-reversed.hh rename to free-flow-over-porous-media/free-flow-dumux/appl/problem.hh diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh b/free-flow-over-porous-media/free-flow-dumux/appl/properties.hh similarity index 99% rename from free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh rename to free-flow-over-porous-media/free-flow-dumux/appl/properties.hh index 06bf51569..a2f98b525 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/ffproperties.hh +++ b/free-flow-over-porous-media/free-flow-dumux/appl/properties.hh @@ -41,7 +41,7 @@ #include #include -#include "ffproblem-reversed.hh" +#include "problem.hh" namespace Dumux { From cd42aa2bb5c3d07109a91fbf287c207835a3b79c Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 11:31:39 +0100 Subject: [PATCH 03/14] update README --- free-flow-over-porous-media/README.md | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index 06d0fef1c..7e5029973 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -1,8 +1,8 @@ --- -title: Free flow over porous medium 2D -permalink: tutorials-free-flow-over-porous-medium-2d.html -keywords: DuMux, porous medium -summary: Flow-flow coupling example with porous medium field and free flow field. +title: Free flow over porous media 2D +permalink: tutorials-free-flow-over-porous-media-2d.html +keywords: DuMux, porous media +summary: Flow-flow coupling example with porous media field and free flow field. --- {% note %} @@ -11,9 +11,9 @@ Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/ ## Setup -This tutorial solves a simple coupled system consisting of a one-phase free flow and a one-phase flow in a porous medium. +This tutorial solves a simple coupled system consisting of a one-phase free flow and a one-phase flow in a porous media. -A pressure gradient is applied to the free flow domain from left to right, while at the top of the free-flow we have a non-permeable wall with no-slip boundary conditions. In the porous medium, we assume no-flow across the domain boundaries (left, bottom and right boundary). At the interface we assume a no-slip condition. +A pressure gradient is applied to the free flow domain from left to right, while at the top of the free-flow we have a non-permeable wall with no-slip boundary conditions. In the porous media, we assume no-flow across the domain boundaries (left, bottom and right boundary). At the interface we assume a no-slip condition. @@ -25,7 +25,7 @@ preCICE configuration (image generated using the [precice-config-visualizer](htt ## Available solvers -Both the flow in free flow and porous medium can be solved using the simulation framework [DuMux](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/). +Both the flow in free flow and porous media can be solved using the simulation framework [DuMux](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/). ## Solver setup @@ -48,10 +48,10 @@ cd free-flow-dumux ./run.sh ``` -To run the porous-medium participant, run: +To run the porous-media participant, run: ```bash -cd porous-medium-dumux +cd porous-media-dumux ./run.sh ``` From 23dbde279ccad31853a51670d5d1de74f9e5ea93 Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 11:51:19 +0100 Subject: [PATCH 04/14] remove intermediate output --- .../free-flow-dumux/appl/main.cc | 24 ++----------------- .../free-flow-dumux/params.input | 9 +------ 2 files changed, 3 insertions(+), 30 deletions(-) diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc index 79b036295..e5188a677 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc +++ b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc @@ -294,7 +294,7 @@ void writePressuresOnInterfaceToFile(const std::string &meshName, } int main(int argc, char **argv) -try { +{ using namespace Dumux; // initialize MPI, finalize is done automatically on exit @@ -493,13 +493,12 @@ try { momentumProblem, *momentumGridVariables, sol[momentumIdx], meshName, dataNameP); couplingParticipant.writeQuantityToOtherSolver(meshName, dataNameP); - freeFlowVtkWriter.write(vtkTime); - vtkTime += 1.; couplingParticipant.advance(dt); preciceDt = couplingParticipant.getMaxTimeStepSize(); dt = std::min(preciceDt, dt); if (!couplingParticipant.readCheckpointIfRequired()) { + vtkTime += 1.; freeFlowVtkWriter.write(vtkTime); } } @@ -516,23 +515,4 @@ try { } return 0; -} // end main -catch (Dumux::ParameterException &e) { - std::cerr << std::endl - << e << " ---> Abort!" << std::endl; - return 1; -} catch (Dune::DGFException &e) { - std::cerr << "DGF exception thrown (" << e - << "). Most likely, the DGF file name is wrong " - "or the DGF file is corrupted, " - "e.g. missing hash at end of file or wrong number " - "(dimensions) of entries." - << " ---> Abort!" << std::endl; - return 2; -} catch (Dune::Exception &e) { - std::cerr << "Dune reported error: " << e << " ---> Abort!" << std::endl; - return 3; -} catch (...) { - std::cerr << "Unknown exception thrown! ---> Abort!" << std::endl; - return 4; } diff --git a/free-flow-over-porous-media/free-flow-dumux/params.input b/free-flow-over-porous-media/free-flow-dumux/params.input index 7b1ef313f..5ece5dc45 100644 --- a/free-flow-over-porous-media/free-flow-dumux/params.input +++ b/free-flow-over-porous-media/free-flow-dumux/params.input @@ -16,17 +16,10 @@ Cells = 40 40 Grading1 = 1 [FreeFlow.Problem] -Name = ff-pm-2d-precice-stokes +Name = free-flow-dumux EnableInertiaTerms = false -#Name = ff-pm-2d-precice-navierstokes -#EnableInertiaTerms = true PressureDifference = 1e-2 - -[Darcy.Problem] -Name = ff-pm-2d-precice-darcy -InitialP = 0.0e-9 - [Darcy.SpatialParams] Permeability = 1e-6 # m^2 Porosity = 0.4 From 912fea729dbf7d9e5187dc43915f9d9f2250be8c Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 12:05:20 +0100 Subject: [PATCH 05/14] add setup figure --- free-flow-over-porous-media/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index 7e5029973..2ad5f7ee6 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -15,13 +15,14 @@ This tutorial solves a simple coupled system consisting of a one-phase free flow A pressure gradient is applied to the free flow domain from left to right, while at the top of the free-flow we have a non-permeable wall with no-slip boundary conditions. In the porous media, we assume no-flow across the domain boundaries (left, bottom and right boundary). At the interface we assume a no-slip condition. - +The setting is illustrated in the following figure: +![Free flow over porous media setup](images/tutorial-free-flow-over-porous-media-setup.png) ## Configuration preCICE configuration (image generated using the [precice-config-visualizer](https://precice.org/tooling-config-visualization.html)): -![preCICE configuration visualization](images/precice-config-visualization.png) +![preCICE configuration visualization](images/tutorial-free-flow-over-porous-media-precice-config-visualization.png) ## Available solvers From eec61d3dcfe7987ac5b1deff37918ba610163845 Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 12:06:34 +0100 Subject: [PATCH 06/14] update file path --- free-flow-over-porous-media/README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index 2ad5f7ee6..d76ee176c 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -16,13 +16,14 @@ This tutorial solves a simple coupled system consisting of a one-phase free flow A pressure gradient is applied to the free flow domain from left to right, while at the top of the free-flow we have a non-permeable wall with no-slip boundary conditions. In the porous media, we assume no-flow across the domain boundaries (left, bottom and right boundary). At the interface we assume a no-slip condition. The setting is illustrated in the following figure: -![Free flow over porous media setup](images/tutorial-free-flow-over-porous-media-setup.png) + +![Free flow over porous media setup](images/tutorials-free-flow-over-porous-media-setup.png) ## Configuration preCICE configuration (image generated using the [precice-config-visualizer](https://precice.org/tooling-config-visualization.html)): -![preCICE configuration visualization](images/tutorial-free-flow-over-porous-media-precice-config-visualization.png) +![preCICE configuration visualization](images/tutorials-free-flow-over-porous-media-precice-config-visualization.png) ## Available solvers From 99ba9fff2069653f8a3318cbb4f1397cab9f033e Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 12:31:04 +0100 Subject: [PATCH 07/14] add switch for csv output --- .../free-flow-dumux/appl/main.cc | 17 +++++++++++------ .../free-flow-dumux/params.input | 3 +++ 2 files changed, 14 insertions(+), 6 deletions(-) diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc index e5188a677..5e817d6e7 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc +++ b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc @@ -427,6 +427,9 @@ int main(int argc, char **argv) momentumGridVariables->init(sol[momentumIdx]); massGridVariables->init(sol[massIdx]); + bool writeInterfaceDataToFile = + getParamFromGroup("Output", "EnableCSVWriter", false); + // intialize the vtk output module using IOFields = GetPropType; VtkOutputModule freeFlowVtkWriter(*massGridVariables, sol[massIdx], @@ -482,12 +485,14 @@ int main(int argc, char **argv) // solve the non-linear system nonLinearSolver.solve(sol); - writeVelocitiesOnInterfaceToFile( - meshName, Dumux::Fmt::format("ff_interface_velocities_{}", vtkTime), - momentumProblem, *momentumGridVariables, sol[momentumIdx]); - writePressuresOnInterfaceToFile( - meshName, Dumux::Fmt::format("ff_interface_pressures_{}", vtkTime), - momentumProblem, *momentumGridVariables, sol[momentumIdx]); + if (writeInterfaceDataToFile) { + writeVelocitiesOnInterfaceToFile( + meshName, Dumux::Fmt::format("ff_interface_velocities_{}", vtkTime), + momentumProblem, *momentumGridVariables, sol[momentumIdx]); + writePressuresOnInterfaceToFile( + meshName, Dumux::Fmt::format("ff_interface_pressures_{}", vtkTime), + momentumProblem, *momentumGridVariables, sol[momentumIdx]); + } setInterfacePressures( momentumProblem, *momentumGridVariables, sol[momentumIdx], meshName, diff --git a/free-flow-over-porous-media/free-flow-dumux/params.input b/free-flow-over-porous-media/free-flow-dumux/params.input index 5ece5dc45..6988dd85a 100644 --- a/free-flow-over-porous-media/free-flow-dumux/params.input +++ b/free-flow-over-porous-media/free-flow-dumux/params.input @@ -32,3 +32,6 @@ CouplingMode = ReconstructFreeFlowNormalStress [Vtk] AddVelocity = 1 + +[Output] +EnableCSVWriter = false From 00e8e95464da9af03d8648f44ae2770304dd7c6c Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 27 Oct 2025 16:11:15 +0100 Subject: [PATCH 08/14] add results --- free-flow-over-porous-media/README.md | 5 ++ .../free-flow-dumux/appl/main.cc | 2 +- .../free-flow-dumux/appl/problem.hh | 4 +- ...flow-over-porous-media-result-pressure.png | Bin 0 -> 18856 bytes ...-free-flow-over-porous-media-result-ux.png | Bin 0 -> 84468 bytes ...ials-free-flow-over-porous-media-setup.png | Bin 0 -> 28743 bytes .../porous-media-dumux/appl/main.cc | 2 +- .../porous-media-dumux/appl/problem.hh | 2 +- .../precice-config.xml | 54 +++++++++++------- 9 files changed, 42 insertions(+), 27 deletions(-) create mode 100644 free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-result-pressure.png create mode 100644 free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-result-ux.png create mode 100644 free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-setup.png diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index d76ee176c..f472c3932 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -78,4 +78,9 @@ The VTU files from both solvers could be rendered and inspected with ParaView. ## Further information +The simulation is stationary and the results of the pressure and the velocity fields are as follows: + +![Free flow over porous media results - pressure](images/tutorials-free-flow-over-porous-media-result-pressure.png) +![Free flow over porous media results - velocity](images/tutorials-free-flow-over-porous-media-result-ux.png) + Each solver folder contains an input file (`params.input`) that will be passed to the solver executables. This is a DuMUX input file describing the simulation setting, e.g., pressure, mesh size, time stepping, etc. diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc index 5e817d6e7..cae35bc57 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc +++ b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc @@ -364,7 +364,7 @@ int main(int argc, char **argv) couplingParticipant.announceSolver("FreeFlow", preciceConfigFilename, mpiHelper.rank(), mpiHelper.size()); - const std::string meshName("FreeFlowMesh"); // mesh name + const std::string meshName("Free-Flow-Mesh"); // mesh name const int dim = couplingParticipant.getMeshDimensions(meshName); std::cout << dim << " " << int(MassGridGeometry::GridView::dimension) << std::endl; diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/problem.hh b/free-flow-over-porous-media/free-flow-dumux/appl/problem.hh index 7ec14d31e..3173d4127 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/problem.hh +++ b/free-flow-over-porous-media/free-flow-dumux/appl/problem.hh @@ -164,7 +164,7 @@ public: if (couplingParticipant_.isCoupledEntity(faceId)) { values[Indices::velocityYIdx] = couplingParticipant_.getScalarQuantityOnFace( - "FreeFlowMesh", "Velocity", faceId); + "Free-Flow-Mesh", "Velocity", faceId); } } else { auto pressure = onLeftBoundary_(scvf.ipGlobal()) ? deltaP_ : 0.0; @@ -307,7 +307,7 @@ public: if (couplingParticipant_.isCoupledEntity(faceId)) { velocity[Indices::velocityYIdx] = couplingParticipant_.getScalarQuantityOnFace( - "FreeFlowMesh", "Velocity", faceId); + "Free-Flow-Mesh", "Velocity", faceId); } } return velocity; diff --git a/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-result-pressure.png b/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-result-pressure.png new file mode 100644 index 0000000000000000000000000000000000000000..669af0cdf0f45c3ce7344635f601f1f4633438a3 GIT binary patch literal 18856 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 literal 0 HcmV?d00001 diff --git a/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-result-ux.png b/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-result-ux.png new file mode 100644 index 0000000000000000000000000000000000000000..3a61f79875125925217bdb3894d67d1d80d55639 GIT binary patch literal 84468 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

WX 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 literal 0 HcmV?d00001 diff --git a/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-setup.png b/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-setup.png new file mode 100644 index 0000000000000000000000000000000000000000..3d25b9e1d2508c4e0585cca95671350cb79b3f58 GIT binary patch literal 28743 zcmeEu`Br< zAPf){xa>=x%$+%3pO<4dnEPkHvsE6y?o$+QZ^l6l%VE!F_`KZAoBv9)a9q#6O1p5} zZuid*M?;r_1_~WwZd_ah*Q1Jl4H5=M7RD>#tJ$k7W{VHA8Bzl7?|h&9Svhjy_1>d1 zJ6s>A+Xx_n$RxA8V^Qg6QAtN(V#39fP5xFzSmP6>nO9ybm3%yuszlUSS-q@VORESc zvqe`)X1OCxM!&w9d3^1uK#h7Ai9m#@Q1o(BIG1*XDJYcHbw00&MzAwspu4>er?o8? zM;bdx&c5MXkVM2Ndh60C!O2tvZ?SY*ULkf_g^>rVnKniB_EeF%X>#*?OgYM=#Jy_- zPMJr4QMeYgkW#4`7OlS;BF&~3(-KAABG{8{^gh|RA!?Tg!+kshbI%L{QYh4%=;I0> zvPM?A!r@79ieAVfl=a%_0D8T2M1ts1N+ZxiDK+>Q-(oCEOv9M+l!Yk~gTO_NEfWXM5TJ{%X$nju}fCpI@+ugNtq>shSp*QiH zGa8Z4DLythXW-EF?+>!)?bl{%syzId?yZI>v**eDHu20%F)UdyZ&AIC_999&YZH9c z$7WrnQ6}nsFQ5PS{Plvwv#Z3eYZ+Jvd);=(I>A_2zte-TKC$7Zc~LM2f7c$mJ88C; zKH+KC;{4UPK{B8h;5uWHDe(7i;eU6ZOMk?u()y0`*Zvi2v#qOD6K1Rv-J5MT_mam@ zP48oyz3FyO^4gP@sHH=}yb2BG#jgH}gN%P1O@IHp{Yqcw1E+#E)>6uxzF|q7*Tf+Y zfA_a8@X}$2;wd8#;>9}J-bKvHy*c)6R^O?oh>~zoCZfaNX>U_Bz{?%R#pdYTOb*p- z8QC_R$f0>?)#L-wk13va&m(x-RxuOB!1_V0I2ticl2ZQWm!imeV`hT$nUK$)cv`B6 zHE(7Qch$fz4RF=^G< z+#15}PKW!;vdeUCe1lHPL$cir?iW9GT=WhHspcCTe+INcsWq(B4>ID-SIYMrgA%{{ zJaks_J%TCf5h^vr=)4)V zk2}0>ARWOZr;H{hq`j~duma{}v9v!>Yx(iY$+=mZ$+y?K;L^*QM9jlFbFTA$%}~+( zUK>f@AWXImxV&vtUQ3`>t-Ivb0J zq@;}#w;uU8M@HNsV;q=OS#bClibHTc5=k9ND)4@TI+n!5J9@|#BcP@Q<&#rsS7W)W zsJBPvS^BFhT9*sj2$x#cE`MU^iGt}z%Y(M>>B9cCG$?$uf_yd@12nd6N2wNOzw<=} zCj&dktO;YgGA7pL@&qAI;iF0sf{9?hUzndvdJhnOEpa!c$(@j4hLp2$v$PN%T$nHK zpL&YL5MhAj%hY9yr|Czq{I!yA3j_J-sW^eU9}12YeVlm9(dGIP_XPZ(5JJS>a-x$) zXy}wrDngt0lZY^k*Dxu5hJyTLvl$MzBj$_bLV4~VHL^}(`qvh<{i3{7^;$fXtLpChg( z-#Qs8(-G_*sD8Z~3Fw7d@TNhu27UND@E^lBbF9LjYWz*SMU1tqk6K-?(=i*c_4|bg ziFSA{e1pLgzLn;$?&ubqW%8gwu|K3eC`G5ATsIQDoTbH`X_kCOi#1y22rEc!KV4y zSNYD&R6-N|Xl@(FhfKI1%GCWOyw&Lhi?fHSxCo~Vt$LiLrNU%`=cAtl`c@9|VTKHL zX&c<_G1hjiFL3ZH5`c}6Ch?k7^Ap*jjIa%cf&YtS@9B&|*7mie{eP!=nK$hy>b_RI z(vvR<8XDX=4?Z9ZdYqp~{kKz=Rx&UdrB!KDPD!B{YQ2RgT%z36(N^4aPBmnd&lP#n4ZJpI%~$WtEV{S( z18ukw z-V1r|e75+jhA`(xfv>tAaR_B;?=sIg{F~nmPa?|avcI8)^WvM_e{9F?%Qm}Zdl4(b z&*9&UZXPG1EJlSttvy;{LjGz72@GlYY3AP}cd)I-ozbWv6pkfrM++CQ&8!sC_+aA? z)?lcJ+ z6<_wI{1qJTb|ak_x}GDi)8aYQpkJlUym(URo|t8W?cR?-1TZmyp~ys_9W6+q|2fDF z#j)b1nB&VIjJY2Rg{Ez#TQFL-uF<*_ECU*G*WhAu|8=XRnxXiRJKa}rb6ZAz6E>cy zw4c0t*FMR_lw$>@>`g}J()FOaO1OX>-mEN#it@kXyg;xwGVy?MLb zYipR;r~pAZ;uRe8F=U6UYN;e4rm06P8ne;s6(Ks$Dsv8B^dtx~3Dx6^PoBK=OR!F; zSR60tGj)JM6)F&f7LfCf4c5uM8jdaFKMxQGXkYIK5%UuIpqH@b%>@!B_w}o< zh!J%NAy>(d2szGWFu}Nw=xevl7ku1|Dxi1GDGCS#dnHwGPhdqc<^zWxr!eEk(lDK; z>iFid2=>2xi8r$i=gO_utJXX;h#mCt28Ns=6NW2WP)Yr}>2UE&-!{}$*J}*&B&?+Q z9l@NlXwFbm(bO5)ayix@YWZAnPdfbMT{QbSRWEL~vEkb)jQIJLDC<1;cQ2W6#W5>T zHBp_e%CHGe*Dw40ibEoFtUA7}q{bq`qHsncbL<}O>AzT(f+g9thyQ%h0iJIQN!7c1 zZldKWQ}BC1{aIV51EC?YrVC%9gv;5(u6!F0G@JR$f3NNjCc-T$Hmgwoa$RZ|>W{5< zKaf5nFvM5mUqZS6lo)Qo@aY3(_zh7)_q2cH(t1Ika?E&@|4om+{eIVPZF$N}Pg!`A zdLoO8ofy^4suS5OiH@o4L}GN4F~bf%{(k%h{Wr3lCLL{TjW=54&9kqfzOO_?UbFUW z?jHp*C(@13%{Qp-rk!3(*GeYu=rQH&A$nmIEGR7(->6`kaw$e=#fq(!ZT#nFmao}^ z0=RDdI~WG&>9NAcYvf8RhU2k5Tt@OJ=4H6_2=Y)d=FF2OfpsVGcDn2)pL@{&T;8PJ zIy>wNicdPS8%r(n9~gbsXpc9SS6^2T5{F#dIE+fPc%$oeVx=raWmhEh(OH%2o-OAJ|x zA({^vKsiDCon>jz-ksr+fc6iaX`8~za`@~ErWkaT5j-w7?#Ii=e47D`x#Z}&db`(nK+2=LI_^L=wecxQ}6%=}bmu4wDcQzfVI(s#h zS`qCo~Q>9m+_T z-XAvvwTok6Z=Dt4-xy5rFEUdPnaxa_Qa z=T6RT&T_M7ff*gNrA4Kk*BmNTAFWU!*N#S*+Pn54bKIXal;ES;2!hpbHuS$~NwIbh zB)wuuB$=KMZ?+e1bAsxGCPk!HyfHyP1vCgs`)iK!5J-4(oUV)B6V# z94-x|?gc@%BqQ@pmXhNapI(OaHhjW_GL%}(^2035)3K?2A0MyG@<6? zI@XDvc5=NS1IJ%2^RYH3pEWxgk&0D`jqN@FC!!c+5o0QC8=PA?qpinPKp;+{VmL_W zAA5_hmcEQ&r=>Y|r)1iE)ALY9{B7e_&9Cu){`_BSHM6h-Z~5{$l9Fi)1=B69@xVM+ zB=Onr`0g??Es!@{Vufs7dn!?C&Gp=(3UTd=VBic^n4vaJ&N%es8C?bTJLgm3&z19Q zQq691a#Z@HHk%M;?FAvSVDX2=T564?1A3z~UBs1f`N7~xqLoti540D4HF2`B$vkgs zZ`y&QY0nGccW6B|^qWhjuadQcYOaDeG^`Y)R`8P)UzAm(QC|`Vb^o_#oid-jWw5n( zET~}7j250p-#L|ZU$!fz&?A?eIm^G4{blqgfO-=2BzD;NM-w#k?@+xTpQUXwlVcL5 zbHLU2|4l;?8~yr_{;Bq^b1Ohm<{_sdOk;0sn1f46PcUy;PKNSCHkRhL-CchxtJTC{ z1a3~KHTwie;+t}bdW>)!=FVb0qN_a|439CzhxqsJP8wJcc#R;KP|@n5#@9ub+ew!X z+OB2U{Xl~9w58Da9lv+%v)`j{*N71XdW|$`L1CYG$0!CFSDhVe?GGL6%V-ig&rKN4 zhVT}2KIeDigloveX@+lWsCI((RrZ$Ie19|3BTn7^Zb{d*m^33Mpo8qFyBnjSFUF08 zKsknxt}U5mv2f1Q)Rst-#f;%B5k#VaUv9ctgH6g=+V?q#RXeKTd){J{f0TJo_*a)d zab);$Bb@UqN5%nPyyw$IHwC{usP0wa>;3(Hyy3a|$(u%QcoKkZ@TBMU(7qbMaxjY_ zAoYG`LAw>@Bxr!qL8^%9^G)-7P>0mQmH5S9Tcje1Lfv9L%36w zBH`L0Qw)FZbiYzeYrp-GrNmR0yTcWKb8-v_$0^P1g?E4 za7=>c^{moeT(6-2q!5_?c%nJJ_~P1v&&lLvD{p@I7$M!^Rm6xKafm=t;MZh1}f$lY7`PeOMkeNY(1EfuhJD%e6Dhd$5m$@(_YHuO8_ zzFR;bk7%35PW|-L6%xe0a-}6&g6&Ak#YUhmPC!EkOBt;%D;$j+!=gFpXj7!HV4{{y zW(m@NlQhCDTWD*M@?B@;xEr3sgv5^kr_QA8>$1BFER;IJ9)!ynCyVgqkmyy2+XZXPsJjr?&>8{k{ zX~*NE@Rj!NdXLITA31~5mW6Us76b0Pm}d`4?n_k_KWHL?u1u9S9y=pIPU6Jwn&VM+`4TA3f#^ zRwW5Kxixi=`g;?>t(f&6N*AVuVdwx)FIvd9eD#B*`tN_YMQNak+275QcOACJm^2t5Pe|fnNc4U`r8)YW2!%uK z=VnqdUjij06NWg$C3aWjZgJSOS3Nm7!||RN@s9I(KT-aY^!`+OyT5hCNl(SP)gUGgYE!OXdx^bmv7@30KQ0m9mP+rnI`o&Y*qWt>8EV?-MlEaz-`@w z28lF|l|P{0ni~9NxEqYSOtbACfKp6_uYs-hX)ZZxBzrDl zS?~5*;V}i}7RE$Y3U-wKvGnJ6EUilvjH<19Gj<2RE^$FB^K?mFmqP;7Q}o|Ck#8C5 zg?DU1?{C8=VgNq(|Fu(lJ0~v{)bcVG2GX-pv!nz=9Fexz{5AImqK+-8$zgw z)Xp~U4kzB$xqh)%SNb|bhy`Abw%;$-N~=IKDkbn@zjdIMk?^Nccui@4*QoWGr=R2* zSV}Gxa-Pkl-V-aKxvcCq=C!QT`EBw)|GIAc3zesfwxTy`VZ-`qEDn(#i#EVtg~i1F zUCyTFK!A$gJsJR9Mcg)>ps*|tcqWx;7+~_Vq^ys&H*c*A{c9hi^(fBy>bj&e@?}a$ za1mF}LNkZf^(BG?)ocA!#3KYs^jrO1)}4<%0R`71JCWzRPSD`1@AzFp8jS%8i@Z_L z0=8KXHxi@Q3kUL@9CgFGE?bbPi-_$<`%!FkB zXXQQ;_G(Ixc<}#y0p(^y*Ea=_h@KU*cOV{mtz7Hig6^-LCyF0Z#CuEtjq8t-Q-8wY z=qsmq{Lctuh&&AUpn|s&#t%3&-X$CW-n_5UWj|6ZKYoJJoBdttouo5-QoiInmrl6q5WX{ zz-@&9E2EL<(t}3!z}(gN6x9D*(_BOyzX49YI6Hj!D()=E3!Tt=qW$KeRLxQzZ3+i7 zQ>yW1>LKaRfwaF{cc2<^`IDzqFIjqCUb^Z}oDEi8^v6T7B{FKNUa4cyu3mfOpT+zV znUtDbs)@TC4SMW=0s)<>kCmlwjdAeqH~3W8SFlSaN8|klqJCuR>aYi!Obr*sZ?ir8 z^*iuZjh;~3Gq5M+se*P_*OQ-$Ucu|wCyw|QxWc{S?r(Y&*ws`^Dw<;F@1@AeN-oe({gXa z!M$#e{J+Mhhlo=Kj$O8QJ4tog^D}j^6q4>zu#&y>2zDP+Z7J~LjuS`W;Q#e5K{2;K zyy8b6J)dQ%$aJF9a8xdvaKwYWrh@01RixzcPRQkWoR8~-{r*4Z=3x}7FZ2xARa+m5 zYG0<&Jolt0_S1(Iul@P^?rmkEKppG2j!d z<(Z~GDxfOWR-&BnF1V1UQm$cavtF$rjFF+V4@D5mns3@8SlVwR$cbXL3WQGT^1& zjD$Tr>=5%J`FM45==9-RpG}U&-fBw4Fvy~=^gDg;z}&#TbL}GVBi(=aIYj{ zue^sNMI++fqwB%DGP_;rmA`6RPRyS4A1Kisblmzp#4RwNTlPbP`M7j#m&^#PsH24f z-{;APZ&{LZ`WPQkK2*H}}i4amaRa&uZSgYa# zsoz8w+x`jH4C_MMS_LU-BFXZB!`3IN-bdQH|Q_9cM(YtIHo7ezuYg)l3AT~JE@iQjj%`0Se+Z%%MnPvxC04M7^E&J^3)*iuLZ zNibuS8onPX*uLApfC@euPziEy5;v;lD%AhUQ$dP8@#&YOHpHh1L9W&n64+ zA?%L&Y5aT2nrOi)VIrs7MLy{!v1ipa^B501%|Wv`e_oE;?=@z+vc%R^oQ2uB$p=~h z(14{0{0dW<8WhSC@pjutVy@zuy>NxjH?rxBbAEclibI)6oG>Bsa(P?o1eE=+xPERq_kW^NBtJ4{^X(30@=yj82}p80nkrm(KpNxc+sj{mt^#pUj1$>M5N5)@1SS{U^P=H9PX!(xzu1-8}kP$UpTLzSjf)N!To0g32 z-!AEX#k*@1#9J4}C8G931%MNPmU*?dsDhss&Xy~lCeBoVWW#o|U=&c@RNXHjU1Q}Q zty@^uW2AHsEvHzYnq6dP6A1}|0O(S7H6yFJ(8H7Z>;1%)UvI$6vdP?Jym zgSq;KPJd5THI#%))fil*<}K%TVhK#l<3gIjQ+_7ysA93*wM3XzEn&t>iRv zPyk(UJiRVFIxT7A=Hv3YJ@gtEE5`2p&#aWh|Iq>*DN66S6&QqfOxTm6Gj!+gdOhQL zL09C4u1<+Bq=I_-;HUXrd2=0!I3fo+<9)uZmg(<>}c@87b9X(Nv3Y= zbk{+ZXcs@0fTjjQq(f0R0K#Gv#wFZaHdk6C^m!@Sa&E)tiWw4F7ONGamMB=MDp3I} zm2g(_r)#OFXYo_2g{i8ON9v<@7g3^UAM@|bh{Tku-%pk`m*I?HD#){baoWisVta8Swm*>RssFMO&x4zmUUZyj5$ zb-~m6119u@044OgP%F7(jL@!&Stx;CL{t(~V$Qr7q3WZ-Cm$K{YS=mU%-5l;f|KOG z)soGifc;$dRYBcyz}@%~0F!CO{B~j$WZO(wV5&T`dZ;g_e$qep% zb1#Uky*tN*rSA2t*r+b~)6pRMm;t!#;|of6%lyFxY(-+HREM4H(tQiMJm0x zrD9Sg0j!ut!khaBPyfj)Ku5XNDK;&%;uUl2*+({ zI-Djo$In#lSw4o}P@;(`XV>{KfI9+QFrj*Maq!cRvbx^swJTk{r$R6NLR8>4Xy7ET z)aiqN<9b{-xrAQcXY!+e?FhZ-{d?gz6yQVH)sIS@y_FVarQ{)JtIxzqboQ_F4PI38 zCT{P-d_=(`FPJeD8l-pWpp+ENlXrh0)-2;seD(WDVn408hyZ}K*+5pw?L3dX=%<~O zXWRM%@>nVjpG6z&v1V|$jCNh6t})StF7y2tQiJlvz$tn7YUBABH8t_q4nQ!ZrO?N( zQgMTDTvi7kost5$*MN(0a^Ux{x>PZ0=srSOb3su7jD=pqg^hm zf_aXd^eB7e6DkQX-TMfxHS-ijrcyKfT2*OiTAnN#jQ+#BP1+J00KN+)`;Q!dDcAMr zV6bT@3$@D{3?I9q4f_krQ3e%M`7C^axV7!a;;|w?+!{R{-ft=mDo|$}CdXGCJqy+v-$p9H>CG7mUn+uT)M_Cv%H%llp@l-<@AqR3Wlf#`_w!NZ zmih92<}ZBM=Di;eFsJHFjywMYpdSgbbxin6Jzv896^EHC*3+Y_`Ig-Q3`vNwf9K|? zn%Qt6wp2im*Ap|{yNfMn--MxX^o_bPgR>M#Ccj}Z!zX{P#|hExkt6dj+1rW~-Y(=M z4t6!o$Wx%3yzmlav&ygx7Ga+X0iaaP#k66r*Ul4)de`+7U3#m8xQ-M90XLF(KzA{5 z=wTHzd~REk)r=>VP<1%plR*O%3nrQ5RMuZoF%ETd{j7cK0?`XaJBUGi(0YyboWTIZVWv8!dM)oYn~Qe`@Hg450ikI6vqdhmA| z7s$wRv@+U^ggBtq_|Z6`XGkIP^A$?RKW$F^U)@K@TbzLM!ARUFq~IqyiqBF-QOKMb zWbx9Qh(Ga446_0^Yf~hsF>iK$#nrG$Tc+((54!qSEl!ZU9&T7J>g2I}#mg0fKvags z?}L1e`qS>L2bAUju=Xl7t}8X7=(Wa=w_Vw)?ozUK)yqEI21vArSYlLOnuX~Oly#gi z8bT+p{pFqe*QVgTcvuqTIGRsGaC`rxG-~lffg$J&LD?sL@d~#0M51bLTbl!YHtm?b zD|dDGqtq|dChfYmy!9>yo*(wcSO0LOc7etKBy_`iq7$hd#=vViwIP#da=auhB?R!#plYmI_+_C}?A=i2!9 zU?K(>EZgvbkhwmVS$)%^s-5TsD6Q-HIdf5rGp)12U1 zw-g$(!P_TSsd=GqXlrm9=LNH?7B<)A8o*p=%7WqWmKNjJTCML_M+xdl@C&F`o8)zG zwS6$kww2!kebUE*@PMYTo=toPU%Y5gd_0^YcLG$h@KT#KCkv)XxV_#_yH3$Y>{qHH z<3y$QK4#~fr@z0VwaA4>5%N`w;pJ8x^>kv;AtmiP&M-n5A5i9Y6*x*B+ds9v_Bjc~ zoN9@_e2D2rw8l!Cl*LerGfb}+PrM&KL)$@a=iQyC8+XVlFui%HDl4O(NkW>MB5cjpeCa@%5R64zQ237eurK|L!Qrl3;5J&vt~JUgXyWKk`` zI4Adn$APmPlMCmQv>>Kclj13kvTfs~zP5L)C|$*7h4K` zXR%Bn#VGt=2daMuK$0W#Fi&e^?XxC(2&|bkWQcrqKGJK{V1qtk=g`@pK`qSC)Zypv zy`*AwH$RrH2ep_{SbN$Jb|uY@F2;*AG=+IMRb;Z-iQWS}+|q}KX2pYOIH4PcPB>3v z97!9R;3sXbZEKMOFQVVx6gX=)GRkFm{lK9PY!5+J|(# z;k1G=tdfPrj#!63R{HaAqNu*FE65Ws-rQ=$jDsd|QT?OynQ*1pdW(Y&Jxu%|_u}lV zCI#2g71=kkOS%$-I!b5&PztiggmhuI@dYZYH<&tjs}0$wZ)@H22*${gs1fF+V@7`E z_>*}3M}fz?r7?D^3-;6pew$TtsnupLas*qbA$HTgHoC)`-Jrh=DNZ993|;B9CWw8H zaYHFFQ-Xh{RzT2IrD4%^^}RQ1&Mq|O1%pz%q(|~fq5`k7;5MI_j&#c;x2j7$>pgc? zK%Pr=(CL&}QwC8BE;u^9<~=HOJMGuhuQ_$!E=;*C#w;FMAFV8*ddIl1@Ozy^V#kG@ zy!g{rP5S;0G_->N$N);oRsE|ISuV=DT15k8Zr+X`B}nDGK{A_6N%rw4`nM5ik)Zi` zXj>oc_bKVy@p+p{D@vEs{wWcUthj6~Hx1Wrm26q7dEog4;Tv35I$I*@z+V^NC1A)e zres8F=C0YJMf#q?>^v3jD0QC`%%dcH*`>ZYzV6P-GQpl4qJRjKzqYi5b36tS*G49e zkZ3?PTr)3JDW&WLL4J=^PbFN3VZ_E*xNF@E(%2r9(7j_>{JER8kel}Z-D zb@VkLv3$+f6k>zKXAhWS9}xBFOlD=y%*w;WTiNv|hv!`sVu5hX#^yx*yXD7gTQ0?C zLHGHq?;KrF6fW8DgYKbp6J_3$mInYi(hm4Mm44^a6&W566$`q%;60pQ0p+CBBU`^c z8@1MIb?#|eJ)0#LHQgDz_ZEN+>*E(!w-*}cRBgTU@(OsCr<5GA^KHk*Mkvg|6V~dM zkrWp?D~~tv%B0s^;$TuIS5$ZG;$T7do$zPHy&iq$Lhsq-5l5kl`W~QPd-7Y=euaE@ z#1{S9SEGLCI{UFiki*7E%#&Q#Rno^fE~-u@40k|Gyhf0fkyGp7y~vvlL{ZFIPpL9s zRK0`!`{6&G84Df&vbi$*aDqDZZNk~!-TJYzE}dxy`Mow2=(^b?g2%qW4J1o;2jyoD zM;r0+)sj-{0xtE};x*n^@?_ya9^%Kfs}y(VN(dMX1F*|)Dkl{vjYLgNOc+Y%7kcMp znW)gj)YqS>9Nzj)mDC#*E)7vOHI~R#(`Yb5N{!x!7wQ*h+Q$N3Nb3l5xq1Y%_tpu# z{M7D^v-dNu--OFH{Ff$ure4gSwdX9ZzAOX5XNeBo5tfC94@nuHM!Ejz?u~55%;$dZa`iAjhHj~!b8EuZ!5t2T2wC-FU z+r+t!9*8U70G{#v*eOsYP>e)%xBp85x+cZfO?ZF-1tNJsj&hdtqNVHD8r>>>DXN*F z<~$QxyzEnPybbimmAP@&k;;|~HpvKXX&89>6c z|F-LaeT1Wvlid(56;)nOCzn9?Hzh`)>Rmo*-L+Pr>?*I*t<&&SYL*z9baG72ZSe>k zXaQ>2rrpuJMHdYIMERW@*Ms?ZegzyK?SSYqdU+njsA5Uc6=d zXSe6~-@QNDHqImWz}_kQ&dWLK{^^3%o@c6^jIqS}E_M}Xe>l&^ILFhSuiMVt%PzXDNEl35%taL9>O4#_|XcMqUo-4lz#&6%`?Ui zoDPvHp@OK1sSfw}=eN#H6JeW054C&;x37R@4P2Z3`0*0!G*Nz&u;n!btB?*Q!|cTj zyude&AsLrf(_)#*4Z+g0>5{Y{7d0XL(yQ*X6!gRyf0elIV3h^w!BeQ#*#MP3OGB&z zMUe>*qr=t%YwNyuB*(+ae8C}?6BV5K*Qm+ppf_Y1;AUbHGGoB{s0i8HFDxx{@HT9S zMMJQ=0kmhQk>3?X0{2Pj^Qkxlwh05)ob&fQpS$ahw(lAftE@S_9WsPDpx8h?jk?EsDKoV(*}S#YvCaOc*diAC9# zkK_yVHmzG|v$AQ3dNwoEDTkrOA#?Nn`IEY|{~FQFD*pu`DU6Q?&3--i*H`(IYOW&E zo@xN8LgA^%B7ln0q#h9hf06Z!-Tv)&nroM`@|phh5pKU(i4L9N-4!5eGjQ0=)h5+s ziB1FB<$H>`vHXB<3!RE_@rO!uZGapT4L$7I+noSl@!h8+`l)*t8+HHqXw#qA0PGHC zjs#=lFpK1ZeE!iF5AeRoj=5R-@&60io{U-)HTzSYN=woNXTFbY>+2>&ia42&m87R_ zO5L8Ne?_emJU2_0Yi#^ zG7$Mc(Nzw)jYVHTNZMQ%t_QP!X^X&6fCwOi8a?p1@G(J%60%S8>P2Lhr}wte72 z^?Y8_RkgI!9M9cVkk80x;RmBtfI1nn$0(X#2mzaPc~9Vl%k<)U`3g-TRzgshtrL7y z0?0>Ftk0H|<4Lviu=DbQDa?SgMLFK_N!(lxx+eM~nmHd&d5rn1I-2{?ZuKHZBo1Y9 zxb$sK#W4L28!#VXW3T!(U{wh}tDPnxxsTdQ6ir0i*RQjfDrtb7rm!tI2%9bjfK?cy z;`4r;F*QL&xGEXZ?2qB2s#1{J-O<&M*R-HYFNW+qs#;m|B-d^Hs_l9?Jwk~OcT+z~ z?dMjly;?EbV|og2dX$6eYgSD?64izJ;%KsLgnMZ>{*}*m&m+2gm&%L!kIY=PW^!R? z=Uqt7vf@~^qG%vP)eOC^@kL`)8C>Hxer+60?!P55JKO5J}jF0v+JyzK+zN5|GsPGqQl=L#^%u|AMI@(GGDWy3c($swV zup@PAq9vrgXT9Xhg!>jzXgT~EU|B%Sjj?+`&hS3oNwW6XCQV-fK)Yyl1Vn!{ddkQa zV7_NO(qVR-8+4?a`+SMy>c6AA=|=+O$v-(1wk_|@%BCa2Vnb(RfR?*Z#}W(w)ojZ* zmVsj64{VijS{rsBLG!|^+kR*E(#2O08UaC@`tz~F%yp&!t+6LocmlARp8uH)NH7mw z0Vu}R_?Wi+;MEvtLT2wSlJV=ei z%6t>s)8(IFtfvzS^5wm3KL!qL33V!%_qz>wFz+S-)9=nXf|L0{>3c!hBvRU^5LbTD zzv!Y?d(hNTL9YR2NZTn|e3mDi^_GZ0zAY6Ilc= z>p$m%2T&JNyZSXQi*)S*As*hXekZ*Qg1rcMFN9F{w_b@U$2gTpK2mKRd_cGNBHn^2 z#{^L;69nXlnf#qK?#CkwDW)eV)vu&JtoUb|tksk;QH+RT(b#;2OT`8m55>!CL;R0(1LVO&Fdhym44HdRr3>=$S zsW5{74(AzT9D?O=FmWXCKSKa7#N~(s20cMxBw7V-Su?;5tJlv5ZqKry&DXMF)vs_K z(9kpS_oiD@Bx_E;fPBD>$ixm+!a#rPJy^pN_zT5I9LqBo13>h^uXRFUC+<^ zIcz2#`Jg@fvA;72yX>2Cu--Fno;Dzo>ik%lCh;rmpS-#0D2}f25Q3;?93Y67JSPCx z+FutE1G@IZ?5mMf)^k4*5f0XzW`#tSK8aTG%f31GA6}R@Pmv(N!#-xcWe;2|ivTTX z{)mZA0RezA+csK8fv$FVuPHlSgcy+Xt^U_--|e_`Uy`MG0WX%8E~*$1pe*%tx95{i zH+FB4nf|p0z0q6Xt5`fTwo5XGQvKEeB^alUm4AW=%&8qX3zuAu7{Lrlnc`SL?mZO% zx2)Eh(92>1nP*H}1SsS?01wWf(h5Yd2a$fZO?cLlEuY9|5&3^`x2W7e*L}{;9p{Gv z_CAn90_Wa=rXCRDFCHuN+05**)_?>VB@BFkz|N>r`)`#6q@}md@_`?5x#EuOaa?r% zGd%3oVOutfhg2qiaS%ebrow_z`CZ=*ZpC<1@$TV{JlV$Aw8RyPhDV+h@5X6AG|iht z&@LQkLaS3J!;T{1a7Ge7i(yLOv}jO3Yc)51zfApMge514!A73Ks|KN0h~<@v4lFPK zb@R{dPg>VWlBkNiMrHYjyv=&$P#0Z*1u_B{ENGv+;0XskMk2iaO~2z9g$z|HbKO+6%5w%z4mg$vh~}<=eE7J?I$mns!rasmk`iB z`Up^b{fRZd2g^c}Qnkk?a%5v~tdt`V?4#f+4t~EKZtuls#;~sC-Kv=W%%kM^^YibL z$RHm;gW4~My`fhUn@B@kmL_7k0rlDj_ki;e64YS@k1X-z5un@eRJ3;f zj~0O7iyaeGQ#aqPC$W~D8%RiqrlK*Cby3Y+ZNVZsQTK+qFJIDSgtvvxH@{294I;n} zn@Bf5KTD6f4<+m#FQL6)flA-LGHTTrzRxus#%}Jw`$K0+WC5TA;AmS00Lr}k!k&Gr zV{A;T=L2BbZ>Q-6?fpc_?>0affzLn<`pOw*k>tx1BWj9g5f5o}vlQlmQ6i;k4qQk} z0=5};oJ!i6b9zZX$WWj!*2VsG>3V~XtOGTikT71yceWNlfycxo&chNK02B=8R~TqbJs=w! z?AxIbz5?qTp@%M&SelWENagu+>ZGn`equ6Th%u?}M0Bc83O(VFC0M;TN=5Wn3|H{l zhR=n^8u7OBa(z{SvyfKGG=nR$cF*de0Z$KP(!$)mw`pus29TB1wWMa9oC*8329D2KQy>RYpY)6E_By;HP2GQ+Ro%d&n9PG!p$NJ6or+}d6j~d+-0jSaxM2Tb z<%kQe-Fm?Q3Ui~nN3^ML&vuW2x~0?L{&^BS#S;hp2I=J_ZQaKQnGg+MVJeVTo>mQO(0q>VVlyua3YlP^)r{6sfE4c2W1_xZF$_SNwH28+KhETCy0V#C` zOyINC`Pe)OWXbo>LeeFZ4K}Q`2$5pg>ussCtxMJGpgt&Kz>F#9GvK^-G$|V04S8~o zn}22ATkn-_y#>D!fS+>^1hC`nrs(xrBmQR9U{@R~j*p8ij*)>r^uvGm1tNDO!yERt zhPC7oX4AId*!{lhbeF1l1bYtpaiV_vmAPk8X(A(>e;QnCD;$3r=UX0N`?N=8P{s8X@--5^~`yALKt3cqY|w8Ge_OQ!6^_ z2#PUfaR{-3=H=$UmZ%19I2`(P8pL{Qpz`{|x*;oPnW;29zYYHJ{1(>O0imyLY~%282qjV#OM< zOIqJe1}bfPVPdG|Dk_L-T@yze8AAn(A8Kj`{b%;&M^{Kw=L*c?Cfonj-d6_26?EH9 z1PD$99V7$@?gaNF5Zonb2=30HgG&N~O9&byxDy-(3GOzyTVQbad55oFy}CbN-KzWV z{+l{;s!#Xs-g~dLcAq|h=tcw8ZIkf3Jj+^JU8$b?Qc@;u>WFz? z>p(4ww+^}XF@E{du|0x28q$vWX`n~kM)L937pv5sAEwE`D$qj$yo1?bilq_>OCzJG zdsu)}po*GOOxo~LB_W>m1w;D^Z|_W^Y+_fetk;xE((SUfiE=@_LFn9Nfrxr~lQH zEd9pFr?nog=goLrYjZ}a^uvR<)car5r@_JPLnvG5lO><>XW0Nf-WpxJ{BD|x9QD={_YHX3`Uhwh_^S^K3dPW&u?H!aG9mV=tEB+M1 zn7Y3*`kVK=#v?;|OFt}72)ccE7owQz=WMU*=V(6UCsnkk4#q#2g|QoYl8X7By`xpx zov^+om4Dk*14-JwePTW+X(=I*bTGAA8q97qw(I39|B+gc2^ z_j~;;&9h|D;_m=>Yb_p|y%hXR>Q@HaAxh<{53#nDlPju4E-dYeT92K!;ne zm5A4xyD3Bew6p*xTlig0#QUxF-yeFVLT+p+TK2V792ueh>&#hT)gofriAZXP?vvBywb9R?Vd!S!O-U zdiDI3kB0cipRW}>F@ISwV6ysywwsgWTEvcHllmVdypZ*)J5w{rmf7%Hee=vrvfQQT zknmqAsU6p*F!jw%lB(tRE>r@N2NzEmuE=?}C!Q+^y8g{19p|jI=F7*PL`ljOiJenx zRm?uR=TKuhx}Ie}8n|>szY8pPc56R%wI22ORNl5{F;+k$I$Nc7z`<5@GV+CGx(b`} zY==w(A5`b=`H0~vSs?ja;B>GF>B2xNRx3)c?xpAb} zi!TsK;NLe-e$s-%6On@P?A*E2nj9E}R6KVN*6VC~^7wGo>mW-bW07pb5)-oydQPtT z^=owUPjqKFIessXESc^|hcYBhfpmfD>K`RB2?Iqu$&0FwYY-uCuBSvN1e z3H=X2L9bb<9|h~qwYwsd!h!j`#B5G&WM4kfwr>WVbvCa z&z+#^>S|1S{L=(kG%yB6-OXhtwCZ>M6wjwMZZ$pip!d2hWdoa9LOAP82*6;lqT>8= z=II6(($Wmkz}3~SGsa|p?4z`Z*guq@O9htyzx_y3(5s92R|Y>Ac4GOb9BuW)`cO8_-;2J!1vRJk<)*Bk7isTJ1&)Cvdxc`hDV93j(Zz zum4hK{&5_7z?>551%4OblT+c5M_e{uoQiZZnXWDSnRi9S#TyE`KU*3`J(IzwO7v<< zD8bb^--o#k42NNw=v+P?j1Ecz24Bbi{X;@Fvm>aG$2yw(kvW*(>653P+In34n9IV2x$yB}km zi=Eu(#Ygu)Dm^u}ack#`S!{lA6NiUJ{SAJCK?gaX3=YN^9rQ&z)^r|uA z7=wBS`?_ZI8!J3lP2_zGDQdhqP)k-;ur_g`4+DF1+Cs*OLwEL9_4V4^XRfr1aP}F5 z(TI2*qEz3A0+^D_y{bF9jc(}T_a!Z#Uur^ru^EM^&*cQvUZ`jrFo)&WdYU(V#%s$U z^Rigus`2p(mkBxkGbCO!vZC@&XXf@e-G+)*>1xq7_gO=LSd}v|RHs^7b+Ou-xO#U% z?x044uI#!cwsLK*Ch4X#M?ul-ZLINEh0$U%m_JLHtz1%ed8T-oaiyx-QUCX0+6~!+ z7ij?)TJE>pWwO4dX1Tw=B4bTG|2$!+*SQ~-#->}#Vl6Hi^@^xQX)QHO4gJU+SLPK+ z3w_!#G$W&W-w{ehEk-YWaE<4EL$Pnr{Fd=R%rQV>uZYQwZ77z@M=a1p2gl@54n5t< z0sNlp-*i=@8x7k|X--pC(K~Ew>uP92S1?GmZ*Z-IBBl%a5xgzBR4#HY0Gt3H9| zHOQ^=>5sN<2sw|ks@uk28DQeSDEoAN{5XAd#U$gAeZHqMx3rWgSR|<^^*g6n<;G28 z~XcURCdVXF0Git93**+w%B~GsFjfgIMbI{a&J#CJ)M2^ZFvL72SP}k62 zTW^P-9IpX5Wm=Kzfhc1?5M9n6B}I#LrI}BU8dr88bxwCI)teKxp&x>Bijn0;7Nb?t z8+;)kj_6v}1nFwRR1z8!x!y~wMEIC1Skh_Lm<=V`lG@QbN z&EW7#ILKvVt|@s}&D`lASriK!>o96SneY8@71QnAlu9p5C0F)avY~zJVeLJ>W=)O8 zMCH$Le-={x+q`TRA%(Dq>g>qsT{-c%$vyyv~ zd?GLRNnGb^mde@V=soFkJRFXO#lF~tpWhd(TVmsxHDqyq2tQ|5B=0Qe+iD-2YsAvg z;^vG-izdtXGI8WFGgH|Szni9Sa?ZB0zCz9D<*@c!WzYS?K6Y2XmZ!8KF}~fls7!Qf zpQw^KJG=Jm^pBkTzVe&?GKbx*lFGSVeZ9l^3C7FyOT!;$XP!Jr1TGf0R2Tf)K`E$m z9F{@CK*RW1)y&pB&(#-*jWVCj3SG?J1SEW;I^%TV!g=x;^!t)DUz1q2uTM1ij9<=r`&oFv zt#|g^qn;>JR{Ou*aG8B!Yz5bJogI}zmy8Bg+R>Gj%hQCTONZqzLHl!t`#n?%!DtOp zB$1}R6zxCIs6Wzh)7<>7wJ&=XBb}YQIZ*CvxXafVR1F0 z1`>KVy>ZuShkxK7wxH$p6@N=ZAEQ{01ZyVrN)Qgki}O#mDD+A#YfP?}_#!X7q#MS9 z3!qNdJXW-f+~@u;-}jdIYt6y^Rid24-dsRC7kTXlMcy+E3@mHFp}9?(>eGbYqDF5X zlC&k}*vd~_oth8E$?u-X@Btxdg7erY0F-P=_vm$DYOnj7j-0t2w0E4>n<@3VbUVD3 zZy4boD}eKm$?l7k18yCK+2VbxE2E`V@A&KXigO|uty1h}!%lRkZy^tlrMLuFbdlg8 zsf?*)n>L#N6k93ESEmDp@zZV3YT`&DEhh^3w)=1V4bN=C8aS){RGwwnIX$WNID#2dkurr%YorYc4^Zn$|XTg)7r4e_xBs(i5 zy8PvqRXOw7v89M28sISxeZMpdYYyiI{DFoM4&Ah=@1|RXN98k*O-3~~aZF^o36I(S zb&&ZykS6pgth6D4mTecMriySp6wij@x_B6c<;=a;&+h`zL^b)5m=ld6U5FiTv6JI;k67Vf&Qt?AZkx$hb!pAFCAyA!#B!9;le zwsSp-Hy*q6SJKYR{VNB)(Jn6^5YSD}bM#4bAn6JCceTne(=v6;V>5;4(-oNz-#y;~3yY4%iUM+9k_j$P za5CxJVr_$c<0+?I{Zvlq%nKP0DJQP`>m%vr9j-q=gdh$EX7A#NH-|zXe$W%*6vhM+ zxXm|{d5EJUr(4;TYM$Ww^*Ff3Iy7W&c4v}^Sr;5}KXPaqCx0Za+HWw%9vkGPgqRI@ z1GrIp`z%=%pKUzFuh-phSLT7)I!f6Dm+IF2GDKqI+a($_50A^?$J;s%X8}LIAo##0 z^qVnjn|m;U6uw`H85t&Xh)y|$V~e^9=(YQ|9Euu6#UG6ux)b&Y^*q618(WT*I8%%9 z1Jd3aAbTU5vU(F<(wp?tm)@$oeRLFX8&dpHZzQsVwtYc&Uk8k*D~PaP1#THF(apCv zi>4on4}dRzhmmF8Nf%j=#mf4;#3K?&QXrFwt$ir;rNLy&!VunqbYxI-6*rfvnrsMR z0;VRtk`j)$4_Oy0a0*tk5K>Diy&dSItDV|z+NWtDp^mcL&B9ST*PYCpuoY#7f#}5O z*FuqXi5XN6NJ=K7ET}QcW!JGMy}43O-tuHO=Uc3^;Q0w}&R;UPrY?XzUSwy}SwGX6 zo680oaBy(`Xy)|YCMghr+JbnLVT^{wvHB`&z;eEH+Cd76#ipGeQtO=Wer_;WrU6{! zACEi71R7dcy^pk830wyX{U_?g|J$cR$GC8~Y1gK=X&C4*3&ch4gmPijYrx{v+ws*b zE(u7;oc`4&@oR3n+Ro&qQcur>(VbMcm6-0Z@gHic;vsdwVOZ8geffqOipvco{9ng$CA$l6rRouJGxA zw)c)V$EIn>{GLqGGUJ|IzG}PSPl{IuUg^)|tik+s^=;XuQHYF-UQSMJuH%n?mnIL) zJ(ZJ&e$;O0mYfk4Oor9J{8k$ah!%~9@ z5qY z%8HmV&i$N}!sMf1S%HSewIn6c-~<@!b>#RievPwRtbVH6(B0uP7AkH;CYWibU9$Km zKWQ18?)Rbhfu{EIXn@{(% z+%s-1o*}i*W=&=i;LJ{E>x{RRtK2wV&ZWC<+_^6R5KnmSxD-|AKNV=c7>;JLOuTnXbC*uDF4P^DF;7xjI=k6%_}sIu+XEi&>Niqi2O4rP zL{QC~OzPOA-u!O!*)@mkb!8EU(9j5w;@izncAx|g6rGX)D>v>gx9^aOyU!6jo5M?8s-;?x z#(AH&+;(WY*wkK+nblspd>XmrXoJ+Gwp-p_J>TeeuU)Eg-$~9JwY}tc>blL+c)qyy zf=alxUf;{XqMv9cQ~}3vHOcU~+bXSR6clqo3a98$%BmM@LmGIwHsjrODE9F&0hqL4 zDnAAYC2Q^ef&X3!KV$Velk9M_?N6&bb4+F|;D_5&Dc)V{CWr)orl`QLf6;qJO-xK^ zq!%dOoBu3VHWg1B@kiLSP)ryOcAUQ0=qq(1qQm2pU|_+{ zH#Hj>nQ90=`2saybKJXoc3kJLZVs4$God<3dem86u_%Kmv!$%!_dYi&mWgW?#si^OSzGzb&gS#p zuSsYsq=@tLAD1&&Hg!-!aH(Ni^}8Y?2F5R?i31rqedBf5NnNrw0J>_8Xfg zFQQi{XxCIxXk|9Z;v%cDrf0Mst5+ke4zeOc=Tad}tl^F2!e(Y>(CA~bz@4PU0qz2< z`j#;qFUqe$Ss$(B*Uun-dG#(tXMc1|s@^q3Q-=(ybLmJ}6J~|AI6=ciBPdL6f3_bE zkepwY<>J#7YoC;43wO*^a9hRS#>OPaes}gd*L3C14>3wYdmi)pp^OmlP*%VU@aYk> zn#_A(*>b2ze&T@YzaL;eudvX_TrHwBeLOpAJ)G+%3!cb=mOIa|m z-Fpyx!>3fg{0UgYVxbm4KoAlF=@94lsOy*?doi=U-6N~e5eVjc{`^HiI0n9D1QrJ& zFi3zVW5Wcir5D~REU)k5fu%8CZEn#B(LBMoUyxGQCSkkv00HjKbA<$;!ZY_BMu4Q^ z@1UWzwGHCpm9jA~F-dA#F@2@UcHriDwRN#4-QH{gGY0epbhzC@7i?u?t4M{&_kt~} zRIlW4+H9e*ZFWd8d-puI|C8tC$nv>6#$|^PhjKOx;7Ri>-u3OqBFHJ}=FGRbzIpU- zsc+{6dZCJxlosP~DnQEu9e{kN8|x&0fq?KA1Ej}&eRyPfcDLi%1mmj$X3G1iObuX2 zlP{sHx~&V{7ywFO=;?p2sUtYHy5##s&c)tfMBk-(l~RH0``>f7;aObw&ss6+gh=-j>|H8lQp|sF6IO z^B;E{5oei&6T7DHj7}o}9fn23o4}{5r5O0vFZj>9>qu}ozS}Jpgo^4;F(=};e&d(z zm_T>CK9jT#642whnzlJz-@iYiHj$_Jx?l_~t)@mFW+`8O!#oaj*~Q_Z_W?&o_hKVJ z!ys`*v)^sD`9s1x*R4Bnr8nrV+Yz0<_x^Srq1(5pf#y&@u;=dgL~lSUg$LCun&rBS7VWJ8_tvZ2{() z&J-lq)8~ZrZ;mZnj#goq+25nP4TTJ{Y*LT_d+YdG+xz-5*SwneUpT|(aHRS80v|}= zKkjqWfm_dJ30sGPjbKR4-BT2z1jo|{K$!!JO_)j|3&aJEj_8vr3yc6uqaX+aAomK) zzJ=GFsIg_OYxT-f?NPiQ!N8T<%h}Tdb7g&i-%B-L;LVEgwPvmry*#G|4hmAC0h9|& z+iQ_*6(}Hi24x6@u1{;Po0zqZ^^yI#1!sO7P6r-OSI|8=h|3N=q^w~_Jyo0Xew4f8 zi<0|3Vf7&-c%|z~Ij5_WhEE7P5y5+iha=v<*lZG5rPv{klP>UNE|GN#=`D!kO|ROq@5mQv^Pk6>SVUR>%y4=!E-aD8T}{=>Y$c%O&^2$b`DE%-r|PcvMaU8JeKv!t!IM9NFuH{HRT-5j?o1Q|Gn8P$I$c2jPSN9v(@?ZW_Pe4-7K)9NYI@DCXvcM1XsT1+fLw^Dno^fZUo#=}<>VEEFG zjuq>5Vtlp$`w|0)8Xla8m8Zs)RPd=U)fF}%dX5y}8WTfl!CgSWzT9udcd)yloZ$u0 zi6vnS|Mbu6h6SqT2KBW+2AIppwySj(Fz)z!h@B=c^yZYCeD=5*0sbWlBQxqFE?TC@ zoT1B8XXNxck#fJfKR~x|l4q%5)eiwwN9#M(BoHa(^{cS#7J;e*kTd>qxjeg{ubvrE z^IEOwZ-2^0AsEp~BV`Hb!3-=6t&4w=c=N#WuLB&3C$p!LT|3Sh+CWy0zn$A0;A_585d0_WTM7k7Rld@BEVZA-q9H6wCj(qOc<_YP)TrA{c{g%%e~xsWJHH_rwW-K}5mPldyG zg8glBCNABJQv|R9xm0k^*WmTz`=nDyBpNF;j3dCN9Pww`xnq?7j2Fk;I(&jh4H287F)1eULt?i~R3=eYP6d zFP6OvkWGCLtQtzflXjYNG|XhJ>KDEM!5ty*qt9EtK`ZL+r~jZjPFYS95FrqPlPVOP z(Xi9*>#~@Xgp!l{&dyH$qy93TT3h`}`LZc?!1~)u5Sc!oly~FXmn~%x3Gr#ydwlZ^ z?lNU=A3{TETu@LMk0`7LyyCsx5yiLFWvTq%;8C}^T42x@RF}Q%4U0@8Fc0K++vd%Y z0;q1$k`5*%RLjeYQp2gDmN@t=Q+>2bVSN5vU5vq*Iz5gF%_|_;HNQutNb|Al#j{3X zH3o#%+HLDEm4uI7lZ(uoo=>c=Z-2{VOQYMk;kB7)#05F*OfAux0*)Lj%y3kf=;PUs zcMymCKKc<@n~L|x;S${lT64F3gx3)wph@_He*K%q!RVBH(%#-M*!S3Yq~Lso;Mdn+ z>f;PwoCY$vI*3xuEl`din~1DbDtP1vYxW85MswYM%ALE(M8a8X4?fKWf%qiZd-RU- zmzNs;AdJ0Jr zT`Q!>_O(Y+@a=5Q4`LIawpDe z5fg(>k+&D=re_i_aYk5>d)5mBvlc0S@ypp=*_%WEvl0_QyPZl_`p3$00d?d-M9Fy? zzWv~ch#7Qy78PS zqG$9no9A~S{dzf)T^V-_@=Hi8a!m*h-d&r)w!_d3G*70xPW4+;DtR2j z{5xhz{?kU5h-mv&e7BfL<79<4RlkaKUc6&I%9BbM3L`y9&BM@6iA)W{DW>6AwDv!S zP9V+v{d=!aBZzl>YlBq3w%~o9;L3Q!>er-?xVg6J;Tc4%yw|^VJ{KGvRc_QLA8WOT z3~65Qb5qz^i88u)+@=;{pgZ9vB*i_H1AA%ufs$pN=dpTjwZz=uYdPzMO@Fp1QD=eh zq1l?v$o>+`!eP^=+qpo=W7{+_^ReuvMJWqV7p;sN;om-tH~Pp@r1E->pI_beWqvG2 zv^7V)r1YUGx6e7us;@~^PQ*z??qR5@Tkcgz`-84{NXjyIL zwKX}vz4#CuEYr76Ni-TN`74?QOXu^%)ffhai~e`H$Yj-Tv-e%T5~Fec{(6D>A|9%$ z4|t&g2G-I6ufHv_L^P+U@Kt(~@s(DJuCpWyK=;zpa7)?C6~MiElj=U4(bnZibKqP% zitB-(qXYzcz3FlZ;Ng{8N`Xill=o!GU?OYPZ8YbCxP}Lt`W4VM?f-ZiQ(8*BGw{)r z$rP0B)NpD-ngokGLOyMCjiDbg`g}oJec@OE-^8rXdiGDa!~)TfLHa+{4y}=VOQ41M zj3paMiDV4US7v4pq^dd5nNPhp=x*#P9LZx9ww0$i+SsyU-;C)++|l?ff{w2O4hsz2 zl>}`75rm}na*eFnQ%d2lcbT41jDg;V6{{(l@9$+0% zATM-4WsBXj2$ifw13>$ruA;JEC?OX}yWvz#p#baKnbcGZ=O=z6L@#p)=5{sM8krr! zd#MEtA(C>L8;SddA3^{KSfM}_bEH_859Y+It1GW_#h9MLMcQ3!+YOX|j+QqSdQX2T zrl;rcErCRF!C4-|`xX-|KHCZc`t3X-jF@wYJ^>ZsL>BSPudpK0QIB*kwgZ7Y(*;P= zv?t_^Q)d!YrTU}3tJa74TD8@}0&j`f{xqF>Qpr;biBNRc-UYOjH5IFr0-YYfMLKxT zxshM*d(B6MMMt!ij^|VBobLKR2#zH9>FM$61#2AzI~>skCMx3ve{51c% ziAn2N7uh*mDX?oHc9*IFr9?hmO?qH6Za>JcHq&TFF)Jn}{vr#2jh+!?-vDbq@I?S} z0{PtUPZ|Zeh_H#Y+TV{0on0RGtH9;}=AtY0V3MAvnd=4hx!F={lN)lQM$0D~`_{Jh z_LZ-p^S@DEV2{r;|AZ7<;FIlrSm|fE&irEg8QIvD6jHu~*}HpF8h*viJR<#7fq!w<+K>t?3ZoYyTa zgS^SWE`##d?)hy+eR_f}Bqtf*AfOiiAQK!4hMtQ8NBP$8A8! zbt3pLD?eXb)zApqBH{X|6{w9n9*r1P?<`H)RF@(bxvke0b`xBK5tJ#&}$*7`$v>mJlzl#JI zBFq-p-4I~CH=FCbWr{>l);n{WQ3nOg>&f^uw3Im=J2~Z?C4ae|q)&JZ>YBJn$z|y3 zE40J;CR3o=Ue&^G1rY1DPBa86O - + - + - - - - + + + + - - - + + + @@ -51,18 +51,28 @@ - - - - - - + + + + + + - - + + From a86c2eec282e9e21ed1d7e9b69654096e03797d5 Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Thu, 30 Oct 2025 13:51:15 +0100 Subject: [PATCH 09/14] remove parallel execution --- free-flow-over-porous-media/README.md | 17 +---------------- .../free-flow-dumux/appl/main.cc | 8 -------- .../free-flow-dumux/run.sh | 7 +++---- .../porous-media-dumux/appl/main.cc | 5 ----- .../porous-media-dumux/run.sh | 7 +++---- free-flow-over-porous-media/precice-config.xml | 7 +------ 6 files changed, 8 insertions(+), 43 deletions(-) diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index f472c3932..dbefe2f5b 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -41,8 +41,6 @@ To recompile only the simulation, run `sh compile-dumux-cases.sh` in the tutoria You can find the corresponding `run.sh`script for running the case in the folders corresponding to the solvers you want to use. -### In serial - To run the free-flow participant, run: ```bash @@ -57,20 +55,7 @@ cd porous-media-dumux ./run.sh ``` -A serial simulation takes approximately 2 minutes to finish. - -### In parallel - -All participants can be run in parallel. - -To run a participant in parallel, e.g. `free-flow-dumux`, run: - -```bash -cd free-flow-dumux -./run.sh -p -``` - -where `` is the number of processes you want to use for the participant. +So far only serial execution is supported for this tutorial, which takes less than two minutes to finish. ## Post-processing diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc index cae35bc57..12a2e4648 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc +++ b/free-flow-over-porous-media/free-flow-dumux/appl/main.cc @@ -350,15 +350,7 @@ int main(int argc, char **argv) SolutionVector sol; // Initialize preCICE.Tell preCICE about: - // - Name of solver - // - What rank of how many ranks this instance is - // Configure preCICE. For now the config file is hardcoded. - // couplingParticipant.createInstance( "FreeFlow", mpiHelper.rank(), mpiHelper.size() ); std::string preciceConfigFilename = "../precice-config.xml"; - // if (argc == 3) - // preciceConfigFilename = argv[2]; - if (argc > 2) - preciceConfigFilename = argv[argc - 1]; auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); couplingParticipant.announceSolver("FreeFlow", preciceConfigFilename, diff --git a/free-flow-over-porous-media/free-flow-dumux/run.sh b/free-flow-over-porous-media/free-flow-dumux/run.sh index 928c3b910..b7932e3c5 100755 --- a/free-flow-over-porous-media/free-flow-dumux/run.sh +++ b/free-flow-over-porous-media/free-flow-dumux/run.sh @@ -16,14 +16,13 @@ while getopts ":sp" opt; do case ${opt} in s) ./free_flow_dumux params.input + close_log ;; p) - mpiexec -n "$2" free_flow_dumux params.input + echo "Participant is not started, only serial execution is available." ;; *) usage ;; esac -done - -close_log +done \ No newline at end of file diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/main.cc b/free-flow-over-porous-media/porous-media-dumux/appl/main.cc index 0cdead562..87fa08e1a 100644 --- a/free-flow-over-porous-media/porous-media-dumux/appl/main.cc +++ b/free-flow-over-porous-media/porous-media-dumux/appl/main.cc @@ -28,8 +28,6 @@ #include #include -bool printstuff = false; - #include #include #include @@ -165,9 +163,6 @@ int main(int argc, char **argv) sol.resize(darcyGridGeometry->numDofs()); // Initialize preCICE.Tell preCICE about: - // - Name of solver - // - What rank of how many ranks this instance is - // Configure preCICE. For now the config file is hardcoded. std::string preciceConfigFilename = "../precice-config.xml"; auto &couplingParticipant = Dumux::Precice::CouplingAdapter::getInstance(); diff --git a/free-flow-over-porous-media/porous-media-dumux/run.sh b/free-flow-over-porous-media/porous-media-dumux/run.sh index e3ede49a9..c1397a81f 100755 --- a/free-flow-over-porous-media/porous-media-dumux/run.sh +++ b/free-flow-over-porous-media/porous-media-dumux/run.sh @@ -16,14 +16,13 @@ while getopts ":sp" opt; do case ${opt} in s) ./porous_media_dumux params.input + close_log ;; p) - mpiexec -n "$2" porous_media_dumux params.input + echo "Participant is not started, only serial execution is available." ;; *) usage ;; esac -done - -close_log +done \ No newline at end of file diff --git a/free-flow-over-porous-media/precice-config.xml b/free-flow-over-porous-media/precice-config.xml index 9bd862bf7..8f28c1ac4 100644 --- a/free-flow-over-porous-media/precice-config.xml +++ b/free-flow-over-porous-media/precice-config.xml @@ -30,7 +30,7 @@ direction="write" from="Free-Flow-Mesh" to="Porous-Media-Mesh" - constraint="consistent" /> + constraint="conservative" /> - - - From 1c5a53c708daf2e338961d6b848f13d84a677294 Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 3 Nov 2025 16:28:27 +0100 Subject: [PATCH 10/14] Improve README and CMAKE file --- free-flow-over-porous-media/README.md | 18 +++++++------- .../free-flow-dumux/appl/CMakeLists.txt | 6 ++--- .../free-flow-dumux/run.sh | 24 +++---------------- .../porous-media-dumux/dune.module | 2 +- .../porous-media-dumux/run.sh | 24 +++---------------- .../precice-config.xml | 2 +- 6 files changed, 20 insertions(+), 56 deletions(-) diff --git a/free-flow-over-porous-media/README.md b/free-flow-over-porous-media/README.md index dbefe2f5b..2a08750c4 100644 --- a/free-flow-over-porous-media/README.md +++ b/free-flow-over-porous-media/README.md @@ -11,9 +11,9 @@ Get the [case files of this tutorial](https://github.com/precice/tutorials/tree/ ## Setup -This tutorial solves a simple coupled system consisting of a one-phase free flow and a one-phase flow in a porous media. +This tutorial solves a coupled system consisting of a one-phase free flow and a one-phase flow in a porous media. -A pressure gradient is applied to the free flow domain from left to right, while at the top of the free-flow we have a non-permeable wall with no-slip boundary conditions. In the porous media, we assume no-flow across the domain boundaries (left, bottom and right boundary). At the interface we assume a no-slip condition. +A pressure gradient is applied to the free flow domain from left to right. The top edge of the free-flow is a non-permeable wall with no-slip boundary conditions. In the porous media, there is a no-flow condition across the domain boundaries (left, bottom, and right boundaries). At the interface, a no-slip condition applies. The case is stationary (solved to a steady-state solution). The setting is illustrated in the following figure: @@ -27,19 +27,19 @@ preCICE configuration (image generated using the [precice-config-visualizer](htt ## Available solvers -Both the flow in free flow and porous media can be solved using the simulation framework [DuMux](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/). +Both the participants are computed using the simulation code [DuMux](https://git.iws.uni-stuttgart.de/dumux-repositories/dumux/). ## Solver setup To solve the flows with the DuMux framework, the necessary DUNE modules need to be downloaded and set up. This is done by running `sh setup-dumux.sh` in the tutorial folder. -Note that if an existing installation of DUNE modules is detected in a default location, this may lead to problems in running the `setup-dumux.sh` script. The environment variable DUNE_CONTROL_PATH is suppressed by the script. +Note that if an existing installation of DUNE modules is detected in a default location, this may lead to problems in running the `setup-dumux.sh` script. The script suppresses the environment variable `DUNE_CONTROL_PATH`. -To recompile only the simulation, run `sh compile-dumux-cases.sh` in the tutorial folder. +To only recompile the participants, run `sh compile-dumux-cases.sh` in the tutorial folder. ## Running the simulation -You can find the corresponding `run.sh`script for running the case in the folders corresponding to the solvers you want to use. +Each participant has a `run.sh` script. To run the free-flow participant, run: @@ -55,15 +55,15 @@ cd porous-media-dumux ./run.sh ``` -So far only serial execution is supported for this tutorial, which takes less than two minutes to finish. +Participants can be executed only in serial. Parallel execution is not supported. The case takes approximately two minutes to finish. ## Post-processing -The VTU files from both solvers could be rendered and inspected with ParaView. +Both participants write VTU outputs, which can be viewed using ParaView. ## Further information -The simulation is stationary and the results of the pressure and the velocity fields are as follows: +The results of the pressure and the velocity fields are as follows: ![Free flow over porous media results - pressure](images/tutorials-free-flow-over-porous-media-result-pressure.png) ![Free flow over porous media results - velocity](images/tutorials-free-flow-over-porous-media-result-ux.png) diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt b/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt index ddc9c7f7f..e9c64417a 100644 --- a/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt +++ b/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt @@ -1,5 +1,5 @@ -add_executable(porous_media_dumux main.cc) -target_compile_definitions(porous_media_dumux PUBLIC "ENABLEMONOLITHIC=0") -target_link_libraries(porous_media_dumux PRIVATE dumux-precice) +add_executable(free_flow_dumux main.cc) +target_compile_definitions(free_flow_dumux PUBLIC "ENABLEMONOLITHIC=0") +target_link_libraries(free_flow_dumux PRIVATE dumux-precice) add_input_file_links() \ No newline at end of file diff --git a/free-flow-over-porous-media/free-flow-dumux/run.sh b/free-flow-over-porous-media/free-flow-dumux/run.sh index b7932e3c5..58ae26589 100755 --- a/free-flow-over-porous-media/free-flow-dumux/run.sh +++ b/free-flow-over-porous-media/free-flow-dumux/run.sh @@ -4,25 +4,7 @@ set -e -u . ../../tools/log.sh exec > >(tee --append "$LOGFILE") 2>&1 -usage() { echo "Usage: cmd [-s] [-p n]" 1>&2; exit 1; } +echo "Free flow solver is launched in serial." +./free_flow_dumux params.input -# Check if no input argument was provided -if [ -z "$*" ] ; then - echo "No input argument provided. Free flow solver is launched in serial" - ./free_flow_dumux params.input -fi - -while getopts ":sp" opt; do - case ${opt} in - s) - ./free_flow_dumux params.input - close_log - ;; - p) - echo "Participant is not started, only serial execution is available." - ;; - *) - usage - ;; - esac -done \ No newline at end of file +close_log \ No newline at end of file diff --git a/free-flow-over-porous-media/porous-media-dumux/dune.module b/free-flow-over-porous-media/porous-media-dumux/dune.module index fdc7ffb22..752d3ccce 100644 --- a/free-flow-over-porous-media/porous-media-dumux/dune.module +++ b/free-flow-over-porous-media/porous-media-dumux/dune.module @@ -5,7 +5,7 @@ # Name of the module Module: porous-media-dumux Version: 1.0 -Maintainer: jun.chen@iws.uni-stuttgart.de +Maintainer: jun.chen@ipvs.uni-stuttgart.de # Required build dependencies Depends: dumux-precice # Optional build dependencies diff --git a/free-flow-over-porous-media/porous-media-dumux/run.sh b/free-flow-over-porous-media/porous-media-dumux/run.sh index c1397a81f..db42f655b 100755 --- a/free-flow-over-porous-media/porous-media-dumux/run.sh +++ b/free-flow-over-porous-media/porous-media-dumux/run.sh @@ -4,25 +4,7 @@ set -e -u . ../../tools/log.sh exec > >(tee --append "$LOGFILE") 2>&1 -usage() { echo "Usage: cmd [-s] [-p n]" 1>&2; exit 1; } +echo "Porous medium solver is launched in serial." +./porous_media_dumux params.input -# Check if no input argument was provided -if [ -z "$*" ] ; then - echo "No input argument provided. Porous medium solver is launched in serial" - ./porous_media_dumux params.input -fi - -while getopts ":sp" opt; do - case ${opt} in - s) - ./porous_media_dumux params.input - close_log - ;; - p) - echo "Participant is not started, only serial execution is available." - ;; - *) - usage - ;; - esac -done \ No newline at end of file +close_log \ No newline at end of file diff --git a/free-flow-over-porous-media/precice-config.xml b/free-flow-over-porous-media/precice-config.xml index 8f28c1ac4..13c04369b 100644 --- a/free-flow-over-porous-media/precice-config.xml +++ b/free-flow-over-porous-media/precice-config.xml @@ -44,7 +44,7 @@ - + From 7b82a7222fa8158d8233d4ccc03450437396a67f Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 3 Nov 2025 17:07:12 +0100 Subject: [PATCH 11/14] Update visualisation --- ...ous-media-precice-config-visualization.png | Bin 68977 -> 65923 bytes .../precice-config.xml | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) diff --git a/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-precice-config-visualization.png b/free-flow-over-porous-media/images/tutorials-free-flow-over-porous-media-precice-config-visualization.png index e26b136051449b1eff1832c24861b2a70c2fb53f..24a544ca28f2b7eb6988a553622b1676a514f4e0 100644 GIT binary patch literal 65923 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

;y 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 + - Date: Mon, 3 Nov 2025 17:16:34 +0100 Subject: [PATCH 12/14] Add changelog entry --- changelog-entries/678.md | 1 + 1 file changed, 1 insertion(+) create mode 100644 changelog-entries/678.md diff --git a/changelog-entries/678.md b/changelog-entries/678.md new file mode 100644 index 000000000..7b6077542 --- /dev/null +++ b/changelog-entries/678.md @@ -0,0 +1 @@ +- Added new [free-flow-over-porous-media tutorial](https://precice.org/tutorials-free-flow-over-porous-media-2d.html) from [the example case in dumux-adapter](https://github.com/precice/dumux-adapter/tree/77e0fe5ca0dc6a1414d6cce5813ca914f0904259/examples/ff-pm) and updated to follow tutorials structure. From 40d03ef372b8299c6dcc4413cfe3c162a2f85a36 Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 10 Nov 2025 14:13:08 +0100 Subject: [PATCH 13/14] remove echo message in the script --- changelog-entries/678.md | 2 +- free-flow-over-porous-media/free-flow-dumux/run.sh | 1 - free-flow-over-porous-media/porous-media-dumux/run.sh | 1 - 3 files changed, 1 insertion(+), 3 deletions(-) diff --git a/changelog-entries/678.md b/changelog-entries/678.md index 7b6077542..176224a7e 100644 --- a/changelog-entries/678.md +++ b/changelog-entries/678.md @@ -1 +1 @@ -- Added new [free-flow-over-porous-media tutorial](https://precice.org/tutorials-free-flow-over-porous-media-2d.html) from [the example case in dumux-adapter](https://github.com/precice/dumux-adapter/tree/77e0fe5ca0dc6a1414d6cce5813ca914f0904259/examples/ff-pm) and updated to follow tutorials structure. +- Added new [free-flow-over-porous-media tutorial](https://precice.org/tutorials-free-flow-over-porous-media-2d.html) (migrated from the [example case in dumux-adapter](https://github.com/precice/dumux-adapter/tree/77e0fe5ca0dc6a1414d6cce5813ca914f0904259/examples/ff-pm)). diff --git a/free-flow-over-porous-media/free-flow-dumux/run.sh b/free-flow-over-porous-media/free-flow-dumux/run.sh index 58ae26589..d151945b6 100755 --- a/free-flow-over-porous-media/free-flow-dumux/run.sh +++ b/free-flow-over-porous-media/free-flow-dumux/run.sh @@ -4,7 +4,6 @@ set -e -u . ../../tools/log.sh exec > >(tee --append "$LOGFILE") 2>&1 -echo "Free flow solver is launched in serial." ./free_flow_dumux params.input close_log \ No newline at end of file diff --git a/free-flow-over-porous-media/porous-media-dumux/run.sh b/free-flow-over-porous-media/porous-media-dumux/run.sh index db42f655b..1ccbdb99d 100755 --- a/free-flow-over-porous-media/porous-media-dumux/run.sh +++ b/free-flow-over-porous-media/porous-media-dumux/run.sh @@ -4,7 +4,6 @@ set -e -u . ../../tools/log.sh exec > >(tee --append "$LOGFILE") 2>&1 -echo "Porous medium solver is launched in serial." ./porous_media_dumux params.input close_log \ No newline at end of file From 810ceb02aff47e40e34bcfe251c672ed8fbe9c3f Mon Sep 17 00:00:00 2001 From: Jun Chen Date: Mon, 10 Nov 2025 15:45:34 +0100 Subject: [PATCH 14/14] rename solver folders --- free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt | 2 +- .../free-flow-dumux/{appl => solver-dumux}/CMakeLists.txt | 0 .../free-flow-dumux/{appl => solver-dumux}/main.cc | 0 .../free-flow-dumux/{appl => solver-dumux}/problem.hh | 0 .../free-flow-dumux/{appl => solver-dumux}/properties.hh | 0 free-flow-over-porous-media/porous-media-dumux/CMakeLists.txt | 2 +- .../porous-media-dumux/{appl => solver-dumux}/CMakeLists.txt | 0 .../porous-media-dumux/{appl => solver-dumux}/main.cc | 0 .../porous-media-dumux/{appl => solver-dumux}/problem.hh | 0 .../porous-media-dumux/{appl => solver-dumux}/properties.hh | 0 .../porous-media-dumux/{appl => solver-dumux}/spatialparams.hh | 0 11 files changed, 2 insertions(+), 2 deletions(-) rename free-flow-over-porous-media/free-flow-dumux/{appl => solver-dumux}/CMakeLists.txt (100%) rename free-flow-over-porous-media/free-flow-dumux/{appl => solver-dumux}/main.cc (100%) rename free-flow-over-porous-media/free-flow-dumux/{appl => solver-dumux}/problem.hh (100%) rename free-flow-over-porous-media/free-flow-dumux/{appl => solver-dumux}/properties.hh (100%) rename free-flow-over-porous-media/porous-media-dumux/{appl => solver-dumux}/CMakeLists.txt (100%) rename free-flow-over-porous-media/porous-media-dumux/{appl => solver-dumux}/main.cc (100%) rename free-flow-over-porous-media/porous-media-dumux/{appl => solver-dumux}/problem.hh (100%) rename free-flow-over-porous-media/porous-media-dumux/{appl => solver-dumux}/properties.hh (100%) rename free-flow-over-porous-media/porous-media-dumux/{appl => solver-dumux}/spatialparams.hh (100%) diff --git a/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt b/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt index 7d3d9b426..eb8ff2c27 100644 --- a/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt +++ b/free-flow-over-porous-media/free-flow-dumux/CMakeLists.txt @@ -20,7 +20,7 @@ dune_project() dune_enable_all_packages() -add_subdirectory(appl) +add_subdirectory(solver-dumux) # finalize the dune project, e.g. generating config.h etc. finalize_dune_project(GENERATE_CONFIG_H_CMAKE) diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt b/free-flow-over-porous-media/free-flow-dumux/solver-dumux/CMakeLists.txt similarity index 100% rename from free-flow-over-porous-media/free-flow-dumux/appl/CMakeLists.txt rename to free-flow-over-porous-media/free-flow-dumux/solver-dumux/CMakeLists.txt diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/main.cc b/free-flow-over-porous-media/free-flow-dumux/solver-dumux/main.cc similarity index 100% rename from free-flow-over-porous-media/free-flow-dumux/appl/main.cc rename to free-flow-over-porous-media/free-flow-dumux/solver-dumux/main.cc diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/problem.hh b/free-flow-over-porous-media/free-flow-dumux/solver-dumux/problem.hh similarity index 100% rename from free-flow-over-porous-media/free-flow-dumux/appl/problem.hh rename to free-flow-over-porous-media/free-flow-dumux/solver-dumux/problem.hh diff --git a/free-flow-over-porous-media/free-flow-dumux/appl/properties.hh b/free-flow-over-porous-media/free-flow-dumux/solver-dumux/properties.hh similarity index 100% rename from free-flow-over-porous-media/free-flow-dumux/appl/properties.hh rename to free-flow-over-porous-media/free-flow-dumux/solver-dumux/properties.hh diff --git a/free-flow-over-porous-media/porous-media-dumux/CMakeLists.txt b/free-flow-over-porous-media/porous-media-dumux/CMakeLists.txt index 3e6b44404..7d18766cf 100644 --- a/free-flow-over-porous-media/porous-media-dumux/CMakeLists.txt +++ b/free-flow-over-porous-media/porous-media-dumux/CMakeLists.txt @@ -20,7 +20,7 @@ dune_project() dune_enable_all_packages() -add_subdirectory(appl) +add_subdirectory(solver-dumux) # finalize the dune project, e.g. generating config.h etc. finalize_dune_project(GENERATE_CONFIG_H_CMAKE) diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/CMakeLists.txt b/free-flow-over-porous-media/porous-media-dumux/solver-dumux/CMakeLists.txt similarity index 100% rename from free-flow-over-porous-media/porous-media-dumux/appl/CMakeLists.txt rename to free-flow-over-porous-media/porous-media-dumux/solver-dumux/CMakeLists.txt diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/main.cc b/free-flow-over-porous-media/porous-media-dumux/solver-dumux/main.cc similarity index 100% rename from free-flow-over-porous-media/porous-media-dumux/appl/main.cc rename to free-flow-over-porous-media/porous-media-dumux/solver-dumux/main.cc diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/problem.hh b/free-flow-over-porous-media/porous-media-dumux/solver-dumux/problem.hh similarity index 100% rename from free-flow-over-porous-media/porous-media-dumux/appl/problem.hh rename to free-flow-over-porous-media/porous-media-dumux/solver-dumux/problem.hh diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/properties.hh b/free-flow-over-porous-media/porous-media-dumux/solver-dumux/properties.hh similarity index 100% rename from free-flow-over-porous-media/porous-media-dumux/appl/properties.hh rename to free-flow-over-porous-media/porous-media-dumux/solver-dumux/properties.hh diff --git a/free-flow-over-porous-media/porous-media-dumux/appl/spatialparams.hh b/free-flow-over-porous-media/porous-media-dumux/solver-dumux/spatialparams.hh similarity index 100% rename from free-flow-over-porous-media/porous-media-dumux/appl/spatialparams.hh rename to free-flow-over-porous-media/porous-media-dumux/solver-dumux/spatialparams.hh