From 3bb596eb5e5d8c9547287779d7644da52c08335c Mon Sep 17 00:00:00 2001 From: Kilian Weishaupt <kilian.weishaupt@iws.uni-stuttgart.de> Date: Tue, 10 Jul 2018 17:07:53 +0200 Subject: [PATCH] [coupling-ff-pm] Add interface exercise --- exercises/CMakeLists.txt | 1 + .../exercise-coupling-ff-pm/CMakeLists.txt | 1 + exercises/exercise-coupling-ff-pm/README.md | 207 ++++++++++ .../interface/1pspatialparams.hh | 96 +++++ .../interface/CMakeLists.txt | 9 + .../interface/ex_interface_coupling_ff-pm.cc | 281 ++++++++++++++ .../ex_interface_coupling_ff-pm.input | 44 +++ .../interface/ex_interface_ffproblem.hh | 323 ++++++++++++++++ .../interface/ex_interface_pmproblem.hh | 251 ++++++++++++ exercises/extradoc/ex_ff-pm-vertical-flow.png | Bin 0 -> 47564 bytes .../extradoc/ex_ff-pm-wave-interface.png | Bin 0 -> 89922 bytes exercises/solution/CMakeLists.txt | 1 + .../exercise-coupling-ff-pm/CMakeLists.txt | 1 + .../interface/1pspatialparams.hh | 96 +++++ .../interface/CMakeLists.txt | 25 ++ .../interface/ex_interface_coupling_ff-pm.cc | 274 +++++++++++++ .../ex_interface_coupling_ff-pm.input | 44 +++ .../interface/ex_interface_ffproblem.hh | 360 ++++++++++++++++++ .../interface/ex_interface_pmproblem.hh | 257 +++++++++++++ 19 files changed, 2271 insertions(+) create mode 100644 exercises/exercise-coupling-ff-pm/CMakeLists.txt create mode 100644 exercises/exercise-coupling-ff-pm/README.md create mode 100644 exercises/exercise-coupling-ff-pm/interface/1pspatialparams.hh create mode 100644 exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt create mode 100644 exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc create mode 100644 exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input create mode 100644 exercises/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh create mode 100644 exercises/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh create mode 100644 exercises/extradoc/ex_ff-pm-vertical-flow.png create mode 100644 exercises/extradoc/ex_ff-pm-wave-interface.png create mode 100644 exercises/solution/exercise-coupling-ff-pm/CMakeLists.txt create mode 100644 exercises/solution/exercise-coupling-ff-pm/interface/1pspatialparams.hh create mode 100644 exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt create mode 100644 exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc create mode 100644 exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input create mode 100644 exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh create mode 100644 exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh diff --git a/exercises/CMakeLists.txt b/exercises/CMakeLists.txt index 55370342..82031e6c 100644 --- a/exercises/CMakeLists.txt +++ b/exercises/CMakeLists.txt @@ -2,6 +2,7 @@ add_custom_target(test_exercises) add_subdirectory(exercise-basic) +add_subdirectory(exercise-coupling-ff-pm) add_subdirectory(exercise-runtimeparams) add_subdirectory(exercise-grids) add_subdirectory(exercise-properties) diff --git a/exercises/exercise-coupling-ff-pm/CMakeLists.txt b/exercises/exercise-coupling-ff-pm/CMakeLists.txt new file mode 100644 index 00000000..cc41f095 --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(interface) diff --git a/exercises/exercise-coupling-ff-pm/README.md b/exercises/exercise-coupling-ff-pm/README.md new file mode 100644 index 00000000..d1c2d498 --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/README.md @@ -0,0 +1,207 @@ +# Exercise #5 (DuMuX course) + +The aim of this exercise is to get familiar with the set up of coupled free flow/porous medium flow problems. + +## Problem set-up + +The model domain consists of two non-overlapping subdomains. +Free flow is modeled in the upper subdomain, while the lower subdomain models a flow in a porous medium. +Both single-phase flow and two-phase flow will be considered in the porous domain. + + + + + + +### 0. Getting familiar with the code + +* Navigate to the directory `exercises/exercise-coupling-ff-pm` + +There are three sub folders: `interface`, `models` and `turbulence`. + +The problem-related files for this exercise are: +* Three __main files__ for the three sub-tasks :`ex_interface_coupling_ff-pm.cc`, `ex2_coupling_ff-pm.cc`, `ex2_coupling_ff-pm.cc`, +* Three __free flow problem files__: `ex_interface_ffproblem.hh`, `ex2_ffproblem.hh`, `ex3_ffproblem.hh` +* Three __porous medium flow problem files__: `ex_interface_pmproblem.hh`, `ex2_pmproblem.hh`, `ex3_pmproblem.hh` +* The __input files__: ... +* The __spatial parameters files__: `1pspatialparams.hh`, `2pspatialparams.hh` + + +In the main file, `TypeTags` for both submodels are defined. The same applies for types such as `GridManager`, `FVGridGeometry`, `Problem`, etc.. Since we use a monolithic coupling scheme, there is only one `Assembler` and one +`NewtonSolver`. + +The problem files very much look like "regular", uncoupled ones with the exception that they hold a pointer to the `CouplingManager` which allows to evaluate the coupling conditions and to exchange information between the coupled models. The coupling conditions are realized technically in terms of boundary condition. For instance, in lines 178 and 179 +in `ex_interface_ffproblem.hh`, `couplingNeumann` boundary conditions are set, which means that the free flow models evaluates the +mass and momentum fluxes coming from the porous domain and uses these values as boundary conditions at the interface. + +Note the certain checks are performed when combining different models, e.g., the fluid system has to be the same for both domains. + + +We will use a staggered grid for the free flow and a cell-centered finite volume method for the porous medium. +Keep in mind that the staggered grid implementation distinguishes between face variables (velocity components) and +cell center variables (all other variables), therefore in some cases either the `stokesCellCenterIdx` +or the `stokesFaceIdx` is used respectively, while for the porous medium all variables can be accessed with `darcyIdx`. + +The main part of the Stokes/Darcy coupling is implemented in the folder `dumux/multidomain/boundary/stokesdarcy`. + +__Task__: +Take a closer look at the Stokes/Darcy coupling files and try to answer the following questions before moving to the next part of the exercise: +* Where are the elements at the coupling interface paired with their respective coupling partner elements of the other domain? +* Where are the coupling conditions implemented and evaluated? +* You will find four implementations of the `massCouplingCondition`. What are the differences between them? +* Which data is stored and updated regularly such that it is accessible from the respective other domain? +* How can we access volume variables like density and pressure from the respective other domain? +* ... + +### 1. Changing the interface + +In this part of the exercise, a simple coupled system consisting of a one-phase (1p) free flow and a one-phase flow in a porous medium is set up. Both subproblems have no-flow boundaries at the sides. +A velocity profile is set on the upper free flow boundary, which leads to a vertical flow into the porous medium. + +* We will first change the flow direction such that the free flow is parallel to the porous medium. +* Afterwards, the Beavers-Joseph-Saffman condition will be used as an interface condition for the tangential momentum transfer. +* Last, we change the flat interface between the two domains to a wave-shaped one. + +__Tasks__: + +Open the file `ex_interface_ffproblem.hh` and navigate to line 155, where the types of boundary condition are set. +Instead of applying a fixed velocity profile at the top of the domain, we want to use fixed pressure boundary conditions +at the left and right side of the free flow domain, while the top represents an impermeable wall. + +__Change the flow direction__ + +Set a Dirichlet boundary condition for the pressure at the left and ride side of the domain: +``` cpp +if(onLeftBoundary_(globalPos) || onRightBoundary_(globalPos)) + values.setDirichlet(Indices::pressureIdx); + +``` + +Set a Dirichlet boundary condition for the velocities at the top: +``` cpp +if(onUpperBoundary_(globalPos)) +{ + values.setDirichlet(Indices::velocityXIdx); + values.setDirichlet(Indices::velocityYIdx); +} +``` + +Keep the coupling boundary condition: +``` cpp +if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf)) +{ + values.setCouplingNeumann(Indices::conti0EqIdx); + values.setCouplingNeumann(Indices::momentumYBalanceIdx); +} +``` + +Having changed the types of boundary conditions, we must now assign the correct values for them. + +Set a no-slip, no-flow condition for the velocity at the top: +``` cpp +values[Indices::velocityXIdx] = 0.0; +values[Indices::velocityYIdx] = 0.0; +``` +Apply a fixed pressure difference between the inlet and outlet, e.g.: +``` cpp +if(onLeftBoundary_(globalPos)) + values[Indices::pressureIdx] = deltaP_; +if(onRightBoundary_(globalPos)) + values[Indices::pressureIdx] = 0.0; +``` + +For changing the flow direction, the boundary conditions for the porous medium have to be changed as well. + +Use Neumann no-flow boundaries everywhere, keep the coupling conditions. +``` cpp +values.setAllNeumann(); + +if (couplingManager().isCoupledEntity(CouplingManager::darcyIdx, scvf)) + values.setAllCouplingNeumann(); +``` + +__Include slip-condition__ + +This should make the flow go from left to right. However, we are still missing one important feature: +the Beavers-Joseph-Saffman slip condition at the interface: + + +$`\frac{\partial v_x}{\partial y} = \frac{\alpha}{\sqrt K} (v_x - q_{pm})\quad`$ at $`\quad y=0`$ + + +with $`\quad q_{pm}=0`$. + +The include this, we just set: +``` cpp +values.setBJS(Indices::momentumXBalanceIdx); +``` + +at the position where the coupling boundary conditions are set in `ex_interface_ffproblem.hh`. + +To check if the simulation behaves as expected, we can compare the velocity profile $`v_x(y)`$ with the analytical solution provided by [Beavers and Joseph (1967)](https://doi.org/10.1017/S0022112067001375). +For doing so, we uncomment line 212 +```cpp +stokesVtkWriter.addField(stokesProblem->getAnalyticalVelocityX(), "analyticalV_x"); +``` + +in `ex_interface_coupling_ff-pm.cc`. After re-compiling and re-running the executable, we should be able to see also +the analytical solution of $`v_x`$ on the free flow domain. Play around with the grid resolution to see how that affects the velocity profile. + +__Cange shape of interface__ + +Now we want to include a non-flat interface between the two domains. We use `dune-subgrid` to construct +two grids for the two domains from one common host grid. Comment out lines 93-103 in `ex_interface_coupling_ff-pm.cc` and comment lines 112-147 in the same file. This will instantiate a host grid and define two helper lambda functions that are used to choose elements from to host grid for the respective sub grid. In the given case, +the domain is split in two haves, separated by a sinusoidal interface. + +```cpp +auto elementSelectorStokes = [&](const auto& element) +{ + double interface = params.amplitude * std::sin(( element.geometry().center()[0] -params.offset) / params.scaling * 2.0 * M_PI) + params.baseline; + return element.geometry().center()[1] > interface; +}; + +auto elementSelectorDarcy = [&](const auto& element) +{ + double interface = params.amplitude * std::sin(( element.geometry().center()[0] - params.offset) / params.scaling * 2.0 * M_PI) + params.baseline; + return element.geometry().center()[1] < interface; +}; +``` + +Make sure to comment in line 30 in both problem files +```cpp +#include <dumux/io/grid/subgridgridcreator.hh> +``` + +and do the changes in the respective lines for the `Grid` property. + +The problem should no compile and run. However, an error occurs due to the coupling conditions. +So far, we assumed a flat interface, therefore the normal momentum coupling condition + + $`[\sigma \cdot \mathbf{n}]^{FF} = p^{PM}`$ + + was always set for a fixed $`\mathbf{n} = (0,1)^T`$. We need to account for the curvature of the interface and thus replace + ```cpp +values.setCouplingNeumann(Indices::momentumYBalanceIdx); + ``` + with + ```cpp +values.setCouplingNeumann(scvf.directionIndex()); + ``` +The same if true for the BJS condition, however, here we need to consider the tangential direction: +```cpp +values.setCouplingNeumann(1 - scvf.directionIndex()); +``` + +The final result should look something like this: + + + +### 3. Change the models + +1p2c/1p2c -->1p2c/2p2c + +__Task__: + +... + +### 4. ... diff --git a/exercises/exercise-coupling-ff-pm/interface/1pspatialparams.hh b/exercises/exercise-coupling-ff-pm/interface/1pspatialparams.hh new file mode 100644 index 00000000..9708c05b --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/interface/1pspatialparams.hh @@ -0,0 +1,96 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \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 <dumux/material/spatialparams/fv1p.hh> + +namespace Dumux +{ + +/*! + * \ingroup OnePModel + * \ingroup ImplicitTestProblems + * + * \brief The spatial parameters class for the test problem using the + * 1p cc model + */ +template<class TypeTag> +class OnePSpatialParams +: public FVSpatialParamsOneP<typename GET_PROP_TYPE(TypeTag, FVGridGeometry), + typename GET_PROP_TYPE(TypeTag, Scalar), + OnePSpatialParams<TypeTag>> +{ + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using Problem = typename GET_PROP_TYPE(TypeTag, Problem); + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using ParentType = FVSpatialParamsOneP<FVGridGeometry, Scalar, OnePSpatialParams<TypeTag>>; + + 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<const FVGridGeometry> fvGridGeometry) + : ParentType(fvGridGeometry) + { + permeability_ = getParam<Scalar>("Darcy.SpatialParams.Permeability"); + alphaBJ_ = getParam<Scalar>("Darcy.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 0.4; } + + /*! \brief Define the Beavers-Joseph coefficient in [-]. + * + * \param globalPos The global position + */ + Scalar beaversJosephCoeffAtPos(const GlobalPosition& globalPos) const + { return alphaBJ_; } + + +private: + Scalar permeability_; + Scalar alphaBJ_; +}; + +} // end namespace + +#endif diff --git a/exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt b/exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt new file mode 100644 index 00000000..249f34aa --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/interface/CMakeLists.txt @@ -0,0 +1,9 @@ +add_input_file_links() + +# executables for ex_interface_coupling_ff-pm +dune_add_test(NAME ex_interface_coupling_ff-pm + SOURCES ex_interface_coupling_ff-pm.cc + CMD_ARGS ex_interface_coupling_ff-pm.input) + +# add tutorial to the common target +add_dependencies(test_exercises ex_interface_coupling_ff-pm) diff --git a/exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc b/exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc new file mode 100644 index 00000000..85226b99 --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc @@ -0,0 +1,281 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief A test problem for the coupled Stokes/Darcy problem (1p) + */ +#include <config.h> + +#include <iostream> + +#include <dune/common/parallel/mpihelper.hh> +#include <dune/istl/io.hh> + +#include <dumux/common/properties.hh> +#include <dumux/common/parameters.hh> +#include <dumux/common/dumuxmessage.hh> +#include <dumux/linear/seqsolverbackend.hh> +#include <dumux/assembly/fvassembler.hh> +#include <dumux/assembly/diffmethod.hh> +#include <dumux/discretization/methods.hh> +#include <dumux/io/vtkoutputmodule.hh> +#include <dumux/io/staggeredvtkoutputmodule.hh> +#include <dumux/io/grid/gridmanager.hh> + +#include <dumux/multidomain/staggeredtraits.hh> +#include <dumux/multidomain/fvassembler.hh> +#include <dumux/multidomain/newtonsolver.hh> + +#include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh> + +#include "ex_interface_pmproblem.hh" +#include "ex_interface_ffproblem.hh" + +namespace Dumux { +namespace Properties { + +SET_PROP(StokesOnePTypeTag, CouplingManager) +{ + using Traits = StaggeredMultiDomainTraits<TypeTag, TypeTag, TTAG(DarcyOnePTypeTag)>; + using type = Dumux::StokesDarcyCouplingManager<Traits>; +}; + +SET_PROP(DarcyOnePTypeTag, CouplingManager) +{ + using Traits = StaggeredMultiDomainTraits<TTAG(StokesOnePTypeTag), TTAG(StokesOnePTypeTag), TypeTag>; + using type = Dumux::StokesDarcyCouplingManager<Traits>; +}; + +} // end namespace Properties +} // end namespace Dumux + +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 StokesTypeTag = TTAG(StokesOnePTypeTag); + using DarcyTypeTag = TTAG(DarcyOnePTypeTag); + + + + // ******************** comment-out this section for the last exercise **************** // + + // create two individual grids (from the given grid file or the input file) + // for both sub-domains + using DarcyGridManager = Dumux::GridManager<typename GET_PROP_TYPE(DarcyTypeTag, Grid)>; + DarcyGridManager darcyGridManager; + darcyGridManager.init("Darcy"); // pass parameter group + + using StokesGridManager = Dumux::GridManager<typename GET_PROP_TYPE(StokesTypeTag, Grid)>; + StokesGridManager stokesGridManager; + stokesGridManager.init("Stokes"); // pass parameter group + + // we compute on the leaf grid view + const auto& darcyGridView = darcyGridManager.grid().leafGridView(); + const auto& stokesGridView = stokesGridManager.grid().leafGridView(); + + // ************************************************************************************ // + + + // ******************** uncomment this section for the last exercise ****************** // + + // // use dune-subgrid to create the individual grids + // static constexpr int dim = 2; + // using HostGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<double, dim> >; + // using HostGridManager = Dumux::GridManager<HostGrid>; + // HostGridManager hostGridManager; + // hostGridManager.init(); + // auto& hostGrid = hostGridManager.grid(); + // + // struct Params + // { + // double amplitude = getParam<double>("Grid.Amplitude"); + // double baseline = getParam<double>("Grid.Baseline"); + // double offset = getParam<double>("Grid.Offset"); + // double scaling = getParam<double>("Grid.Scaling"); + // }; + // + // Params params; + // + // auto elementSelectorStokes = [&](const auto& element) + // { + // double interface = params.amplitude * std::sin(( element.geometry().center()[0] -params.offset) / params.scaling * 2.0 * M_PI) + params.baseline; + // return element.geometry().center()[1] > interface; + // }; + // + // auto elementSelectorDarcy = [&](const auto& element) + // { + // double interface = params.amplitude * std::sin(( element.geometry().center()[0] - params.offset) / params.scaling * 2.0 * M_PI) + params.baseline; + // return element.geometry().center()[1] < interface; + // }; + // + // // subgrid Pointer + // auto stokesGridPtr = SubgridGridCreator<HostGrid>::makeGrid(hostGrid, elementSelectorStokes, "Stokes"); + // auto darcyGridPtr = SubgridGridCreator<HostGrid>::makeGrid(hostGrid, elementSelectorDarcy, "Darcy"); + // + // // we compute on the leaf grid view + // const auto& darcyGridView = darcyGridPtr->leafGridView(); + // const auto& stokesGridView = stokesGridPtr->leafGridView(); + + // ************************************************************************************ // + + + // create the finite volume grid geometry + using StokesFVGridGeometry = typename GET_PROP_TYPE(StokesTypeTag, FVGridGeometry); + auto stokesFvGridGeometry = std::make_shared<StokesFVGridGeometry>(stokesGridView); + stokesFvGridGeometry->update(); + using DarcyFVGridGeometry = typename GET_PROP_TYPE(DarcyTypeTag, FVGridGeometry); + auto darcyFvGridGeometry = std::make_shared<DarcyFVGridGeometry>(darcyGridView); + darcyFvGridGeometry->update(); + + using Traits = StaggeredMultiDomainTraits<StokesTypeTag, StokesTypeTag, DarcyTypeTag>; + + // the coupling manager + using CouplingManager = StokesDarcyCouplingManager<Traits>; + auto couplingManager = std::make_shared<CouplingManager>(stokesFvGridGeometry, darcyFvGridGeometry); + + // the indices + constexpr auto stokesCellCenterIdx = CouplingManager::stokesCellCenterIdx; + constexpr auto stokesFaceIdx = CouplingManager::stokesFaceIdx; + constexpr auto darcyIdx = CouplingManager::darcyIdx; + + // the problem (initial and boundary conditions) + using StokesProblem = typename GET_PROP_TYPE(StokesTypeTag, Problem); + auto stokesProblem = std::make_shared<StokesProblem>(stokesFvGridGeometry, couplingManager); + using DarcyProblem = typename GET_PROP_TYPE(DarcyTypeTag, Problem); + auto darcyProblem = std::make_shared<DarcyProblem>(darcyFvGridGeometry, couplingManager); + + // the solution vector + Traits::SolutionVector sol; + sol[stokesCellCenterIdx].resize(stokesFvGridGeometry->numCellCenterDofs()); + sol[stokesFaceIdx].resize(stokesFvGridGeometry->numFaceDofs()); + sol[darcyIdx].resize(darcyFvGridGeometry->numDofs()); + + const auto& cellCenterSol = sol[stokesCellCenterIdx]; + const auto& faceSol = sol[stokesFaceIdx]; + + // apply initial solution for instationary problems + typename GET_PROP_TYPE(StokesTypeTag, SolutionVector) stokesSol; + std::get<0>(stokesSol) = cellCenterSol; + std::get<1>(stokesSol) = faceSol; + stokesProblem->applyInitialSolution(stokesSol); + sol[stokesCellCenterIdx] = stokesSol[stokesCellCenterIdx]; + sol[stokesFaceIdx] = stokesSol[stokesFaceIdx]; + + couplingManager->init(stokesProblem, darcyProblem, sol); + + // the grid variables + using StokesGridVariables = typename GET_PROP_TYPE(StokesTypeTag, GridVariables); + auto stokesGridVariables = std::make_shared<StokesGridVariables>(stokesProblem, stokesFvGridGeometry); + stokesGridVariables->init(stokesSol); + using DarcyGridVariables = typename GET_PROP_TYPE(DarcyTypeTag, GridVariables); + auto darcyGridVariables = std::make_shared<DarcyGridVariables>(darcyProblem, darcyFvGridGeometry); + darcyGridVariables->init(sol[darcyIdx]); + + // intialize the vtk output module + const auto stokesName = getParam<std::string>("Problem.Name") + "_" + stokesProblem->name(); + const auto darcyName = getParam<std::string>("Problem.Name") + "_" + darcyProblem->name(); + + StaggeredVtkOutputModule<StokesTypeTag> stokesVtkWriter(*stokesProblem, *stokesFvGridGeometry, *stokesGridVariables, stokesSol, stokesName); + GET_PROP_TYPE(StokesTypeTag, VtkOutputFields)::init(stokesVtkWriter); + + //****** uncomment the add analytical solution of v_x *****// + // stokesVtkWriter.addField(stokesProblem->getAnalyticalVelocityX(), "analyticalV_x"); + + stokesVtkWriter.write(0.0); + + VtkOutputModule<DarcyTypeTag> darcyVtkWriter(*darcyProblem, *darcyFvGridGeometry, *darcyGridVariables, sol[darcyIdx], darcyName); + GET_PROP_TYPE(DarcyTypeTag, VtkOutputFields)::init(darcyVtkWriter); + darcyVtkWriter.write(0.0); + + // the assembler for a stationary problem + using Assembler = MultiDomainFVAssembler<Traits, CouplingManager, DiffMethod::numeric>; + auto assembler = std::make_shared<Assembler>(std::make_tuple(stokesProblem, stokesProblem, darcyProblem), + std::make_tuple(stokesFvGridGeometry->cellCenterFVGridGeometryPtr(), + stokesFvGridGeometry->faceFVGridGeometryPtr(), + darcyFvGridGeometry), + std::make_tuple(stokesGridVariables->cellCenterGridVariablesPtr(), + stokesGridVariables->faceGridVariablesPtr(), + darcyGridVariables), + couplingManager); + + // the linear solver + using LinearSolver = UMFPackBackend; + auto linearSolver = std::make_shared<LinearSolver>(); + + // the non-linear solver + using NewtonSolver = MultiDomainNewtonSolver<Assembler, LinearSolver, CouplingManager>; + NewtonSolver nonLinearSolver(assembler, linearSolver, couplingManager); + + // solve the non-linear system + nonLinearSolver.solve(sol); + + // write vtk output + stokesVtkWriter.write(1.0); + darcyVtkWriter.write(1.0); + + //////////////////////////////////////////////////////////// + // 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 +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/exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input b/exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input new file mode 100644 index 00000000..bd16b9e8 --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input @@ -0,0 +1,44 @@ + # for dune-subgrid + [Grid] +Positions0 = 0 1 +Positions1 = 0 0.2 0.3 0.65 +Cells0 = 100 +Cells1 = 10 50 18 +Baseline = 0.25 # [m] +Amplitude = 0.04 # [m] +Offset = 0.5 # [m] +Scaling = 0.2 #[m] + +[Stokes.Grid] +Verbosity = true +Positions0 = 0.0 1.0 +Positions1 = 1.0 2.0 +Cells0 = 20 +Cells1 = 100 +Grading1 = 1 + +[Darcy.Grid] +Verbosity = true +Positions0 = 0.0 1.0 +Positions1 = 0.0 1.0 +Cells0 = 20 +Cells1 = 20 +Grading1 = 1 + +[Stokes.Problem] +Name = stokes +PressureDifference = 1e-9 + +[Darcy.Problem] +Name = darcy + +[Darcy.SpatialParams] +Permeability = 1e-6 # m^2 +AlphaBeaversJoseph = 1.0 + +[Problem] +Name = ex_ff-pm-interface +EnableGravity = false + +[Vtk] +AddVelocity = 1 diff --git a/exercises/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh b/exercises/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh new file mode 100644 index 00000000..48d29d66 --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh @@ -0,0 +1,323 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \brief The free flow sub problem + */ +#ifndef DUMUX_STOKES_SUBPROBLEM_HH +#define DUMUX_STOKES_SUBPROBLEM_HH + +#include <dune/grid/yaspgrid.hh> + +//****** uncomment for the last exercise *****// +// #include <dumux/io/grid/subgridgridcreator.hh> + +#include <dumux/material/fluidsystems/1pliquid.hh> +#include <dumux/material/components/simpleh2o.hh> + +#include <dumux/freeflow/navierstokes/problem.hh> +#include <dumux/discretization/staggered/freeflow/properties.hh> +#include <dumux/freeflow/navierstokes/model.hh> + +namespace Dumux +{ +template <class TypeTag> +class StokesSubProblem; + +namespace Properties +{ +NEW_TYPE_TAG(StokesOnePTypeTag, INHERITS_FROM(StaggeredFreeFlowModel, NavierStokes)); + +// the fluid system +SET_PROP(StokesOnePTypeTag, FluidSystem) +{ + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using type = FluidSystems::OnePLiquid<Scalar, Dumux::Components::SimpleH2O<Scalar> > ; +}; + +// Set the grid type +SET_PROP(StokesOnePTypeTag, Grid) +{ + static constexpr auto dim = 2; + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using TensorGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<Scalar, dim> >; + +//****** comment out for the last exercise *****// + using type = TensorGrid; + +//****** uncomment for the last exercise *****// + // using HostGrid = TensorGrid; + // using type = Dune::SubGrid<dim, HostGrid>; +}; + +// Set the problem property +SET_TYPE_PROP(StokesOnePTypeTag, Problem, Dumux::StokesSubProblem<TypeTag> ); + +SET_BOOL_PROP(StokesOnePTypeTag, EnableFVGridGeometryCache, true); +SET_BOOL_PROP(StokesOnePTypeTag, EnableGridFluxVariablesCache, true); +SET_BOOL_PROP(StokesOnePTypeTag, EnableGridVolumeVariablesCache, true); + +SET_BOOL_PROP(StokesOnePTypeTag, EnableInertiaTerms, false); +} + +/*! + * \brief The free flow sub problem + */ +template <class TypeTag> +class StokesSubProblem : public NavierStokesProblem<TypeTag> +{ + using ParentType = NavierStokesProblem<TypeTag>; + + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; + using Element = typename GridView::template Codim<0>::Entity; + + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables); + using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + + using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); + +public: + StokesSubProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry, std::shared_ptr<CouplingManager> couplingManager) + : ParentType(fvGridGeometry, "Stokes"), eps_(1e-6), couplingManager_(couplingManager) + { + deltaP_ = getParamFromGroup<Scalar>(this->paramGroup(), "Problem.PressureDifference"); + } + + /*! + * \name Problem parameters + */ + // \{ + + /*! + * \brief Return the temperature within the domain in [K]. + * + * This problem assumes a temperature of 10 degrees Celsius. + */ + Scalar temperature() const + { return 273.15 + 10; } // 10°C + + /*! + * \brief Return the sources within the domain. + * + * \param globalPos The global position + */ + NumEqVector sourceAtPos(const GlobalPosition &globalPos) const + { return NumEqVector(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.dofPosition(); + + if(onUpperBoundary_(globalPos)) + { + values.setDirichlet(Indices::velocityXIdx); + values.setDirichlet(Indices::velocityYIdx); + } + + // left/right wall + if (onRightBoundary_(globalPos) || (onLeftBoundary_(globalPos))) + { + values.setDirichlet(Indices::velocityXIdx); + values.setDirichlet(Indices::velocityYIdx); + } + + // coupling interface + if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf)) + { + values.setCouplingNeumann(Indices::conti0EqIdx); + values.setCouplingNeumann(Indices::momentumYBalanceIdx); + } + + return values; + } + + /*! + * \brief Evaluate the boundary conditions for a Dirichlet control volume. + * + * \param globalPos The global position + */ + PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const + { + PrimaryVariables values(0.0); + values = initialAtPos(globalPos); + + 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<class ElementVolumeVariables, class ElementFaceVariables> + NumEqVector neumann(const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const ElementFaceVariables& elemFaceVars, + const SubControlVolumeFace& scvf) const + { + NumEqVector values(0.0); + + if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf)) + { + values[Indices::conti0EqIdx] = couplingManager().couplingData().massCouplingCondition(fvGeometry, elemVolVars, elemFaceVars, scvf); + values[Indices::momentumYBalanceIdx] = couplingManager().couplingData().momentumCouplingCondition(fvGeometry, elemVolVars, elemFaceVars, scvf); + } + + return values; + } + + // \} + + //! Set the coupling manager + void setCouplingManager(std::shared_ptr<CouplingManager> cm) + { couplingManager_ = cm; } + + //! Get the coupling manager + const CouplingManager& couplingManager() const + { return *couplingManager_; } + + /*! + * \name Volume terms + */ + // \{ + + /*! + * \brief Evaluate the initial value for a control volume. + * + * \param globalPos The global position + */ + PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const + { + PrimaryVariables values(0.0); + values[Indices::velocityYIdx] = -1e-6 * globalPos[0] * (this->fvGridGeometry().bBoxMax()[0] - globalPos[0]); + + return values; + } + + /*! + * \brief Returns the intrinsic permeability of required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar permeability(const SubControlVolumeFace& scvf) const + { + return couplingManager().couplingData().darcyPermeability(scvf); + } + + /*! + * \brief Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar alphaBJ(const SubControlVolumeFace& scvf) const + { + return couplingManager().problem(CouplingManager::darcyIdx).spatialParams().beaversJosephCoeffAtPos(scvf.center()); + } + + /*! + * \brief calculate the analytical velocity in x direction based on Beavers & Joseph (1967) + */ + void calculateAnalyticalVelocityX() const + { + analyticalVelocityX_.resize(this->fvGridGeometry().gridView().size(0)); + + using std::sqrt; + const Scalar dPdX = -deltaP_ / (this->fvGridGeometry().bBoxMax()[0] - this->fvGridGeometry().bBoxMin()[0]); + static const Scalar mu = FluidSystem::viscosity(temperature(), 1e5); + static const Scalar alpha = getParam<Scalar>("Darcy.SpatialParams.AlphaBeaversJoseph"); + static const Scalar K = getParam<Scalar>("Darcy.SpatialParams.Permeability"); + static const Scalar sqrtK = sqrt(K); + const Scalar sigma = (this->fvGridGeometry().bBoxMax()[1] - this->fvGridGeometry().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->fvGridGeometry().gridView())) + { + const auto eIdx = this->fvGridGeometry().gridView().indexSet().index(element); + const Scalar y = element.geometry().center()[1] - this->fvGridGeometry().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<Scalar>& getAnalyticalVelocityX() const + { + if(analyticalVelocityX_.empty()) + calculateAnalyticalVelocityX(); + return analyticalVelocityX_; + } + + // \} + +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_; + Scalar deltaP_; + + std::shared_ptr<CouplingManager> couplingManager_; + + mutable std::vector<Scalar> analyticalVelocityX_; +}; +} //end namespace + +#endif // DUMUX_STOKES_SUBPROBLEM_HH diff --git a/exercises/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh b/exercises/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh new file mode 100644 index 00000000..8013d5aa --- /dev/null +++ b/exercises/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh @@ -0,0 +1,251 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! +* \file +* +* \brief The porous medium flow sub problem +*/ +#ifndef DUMUX_DARCY_SUBPROBLEM_HH +#define DUMUX_DARCY_SUBPROBLEM_HH + +#include <dune/grid/yaspgrid.hh> + +//****** uncomment for the last exercise *****// +// #include <dumux/io/grid/subgridgridcreator.hh> + +#include <dumux/discretization/cellcentered/tpfa/properties.hh> + +#include <dumux/porousmediumflow/1p/model.hh> +#include <dumux/porousmediumflow/problem.hh> + +#include "1pspatialparams.hh" + +#include <dumux/material/components/simpleh2o.hh> +#include <dumux/material/fluidsystems/1pliquid.hh> + +namespace Dumux +{ +template <class TypeTag> +class DarcySubProblem; + +namespace Properties +{ +NEW_TYPE_TAG(DarcyOnePTypeTag, INHERITS_FROM(CCTpfaModel, OneP)); + +// Set the problem property +SET_TYPE_PROP(DarcyOnePTypeTag, Problem, Dumux::DarcySubProblem<TypeTag>); + +// the fluid system +SET_PROP(DarcyOnePTypeTag, FluidSystem) +{ + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using type = FluidSystems::OnePLiquid<Scalar, Dumux::Components::SimpleH2O<Scalar> > ; +}; + +// Set the grid type +SET_PROP(DarcyOnePTypeTag, Grid) +{ + static constexpr auto dim = 2; + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using TensorGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<Scalar, dim> >; + +//****** comment out for the last exercise *****// + using type = TensorGrid; + +//****** uncomment for the last exercise *****// + // using HostGrid = TensorGrid; + // using type = Dune::SubGrid<dim, HostGrid>; +}; + +SET_TYPE_PROP(DarcyOnePTypeTag, SpatialParams, OnePSpatialParams<TypeTag>); +} + +/*! + * \brief The porous medium flow sub problem + */ +template <class TypeTag> +class DarcySubProblem : public PorousMediumFlowProblem<TypeTag> +{ + using ParentType = PorousMediumFlowProblem<TypeTag>; + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables); + using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables); + using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView; + using SubControlVolume = typename FVElementGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); + +public: + DarcySubProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry, + std::shared_ptr<CouplingManager> couplingManager) + : ParentType(fvGridGeometry, "Darcy"), eps_(1e-7), couplingManager_(couplingManager) + {} + + /*! + * \name Simulation steering + */ + // \{ + + /*! + * \brief Return the temperature within the domain in [K]. + * + */ + Scalar temperature() const + { return 273.15 + 10; } // 10°C + // \} + + /*! + * \name Boundary conditions + */ + // \{ + + /*! + * \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; + values.setAllNeumann(); + + if (onLowerBoundary_(scvf.center())) + 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 + { + PrimaryVariables values(0.0); + values = initial(element); + + 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<class ElementVolumeVariables> + NumEqVector neumann(const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf) const + { + NumEqVector values(0.0); + + if (couplingManager().isCoupledEntity(CouplingManager::darcyIdx, scvf)) + values[Indices::conti0EqIdx] = couplingManager().couplingData().massCouplingCondition(fvGeometry, elemVolVars, scvf); + + 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<class ElementVolumeVariables> + 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 + { + return PrimaryVariables(0.0); + } + + // \} + + //! Set the coupling manager + void setCouplingManager(std::shared_ptr<CouplingManager> cm) + { couplingManager_ = cm; } + + //! Get the coupling manager + const CouplingManager& couplingManager() const + { return *couplingManager_; } + +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_; + std::shared_ptr<CouplingManager> couplingManager_; +}; +} //end namespace + +#endif //DUMUX_DARCY_SUBPROBLEM_HH diff --git a/exercises/extradoc/ex_ff-pm-vertical-flow.png b/exercises/extradoc/ex_ff-pm-vertical-flow.png new file mode 100644 index 0000000000000000000000000000000000000000..2c771210ad0f7d1c2d37a6f077642a32925483b4 GIT binary patch literal 47564 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 XOeFWOJj!Je2>6ndQkE<iHwyeOJ5#zR literal 0 HcmV?d00001 diff --git a/exercises/extradoc/ex_ff-pm-wave-interface.png b/exercises/extradoc/ex_ff-pm-wave-interface.png new file mode 100644 index 0000000000000000000000000000000000000000..15c3a01caebfdd30885afd462f9eff4313436bd5 GIT binary patch literal 89922 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 literal 0 HcmV?d00001 diff --git a/exercises/solution/CMakeLists.txt b/exercises/solution/CMakeLists.txt index 50ac3c62..b55b7ace 100644 --- a/exercises/solution/CMakeLists.txt +++ b/exercises/solution/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(exercise-basic) +add_subdirectory(exercise-coupling-ff-pm) add_subdirectory(exercise-fluidsystem) add_subdirectory(exercise-grids) add_subdirectory(exercise-mainfile) diff --git a/exercises/solution/exercise-coupling-ff-pm/CMakeLists.txt b/exercises/solution/exercise-coupling-ff-pm/CMakeLists.txt new file mode 100644 index 00000000..cc41f095 --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/CMakeLists.txt @@ -0,0 +1 @@ +add_subdirectory(interface) diff --git a/exercises/solution/exercise-coupling-ff-pm/interface/1pspatialparams.hh b/exercises/solution/exercise-coupling-ff-pm/interface/1pspatialparams.hh new file mode 100644 index 00000000..9708c05b --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/interface/1pspatialparams.hh @@ -0,0 +1,96 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \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 <dumux/material/spatialparams/fv1p.hh> + +namespace Dumux +{ + +/*! + * \ingroup OnePModel + * \ingroup ImplicitTestProblems + * + * \brief The spatial parameters class for the test problem using the + * 1p cc model + */ +template<class TypeTag> +class OnePSpatialParams +: public FVSpatialParamsOneP<typename GET_PROP_TYPE(TypeTag, FVGridGeometry), + typename GET_PROP_TYPE(TypeTag, Scalar), + OnePSpatialParams<TypeTag>> +{ + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using Problem = typename GET_PROP_TYPE(TypeTag, Problem); + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using ParentType = FVSpatialParamsOneP<FVGridGeometry, Scalar, OnePSpatialParams<TypeTag>>; + + 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<const FVGridGeometry> fvGridGeometry) + : ParentType(fvGridGeometry) + { + permeability_ = getParam<Scalar>("Darcy.SpatialParams.Permeability"); + alphaBJ_ = getParam<Scalar>("Darcy.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 0.4; } + + /*! \brief Define the Beavers-Joseph coefficient in [-]. + * + * \param globalPos The global position + */ + Scalar beaversJosephCoeffAtPos(const GlobalPosition& globalPos) const + { return alphaBJ_; } + + +private: + Scalar permeability_; + Scalar alphaBJ_; +}; + +} // end namespace + +#endif diff --git a/exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt b/exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt new file mode 100644 index 00000000..24d0d12e --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/interface/CMakeLists.txt @@ -0,0 +1,25 @@ +add_input_file_links() + +dune_add_test(NAME orig_ex_interface_coupling_ff-pm + SOURCES ex_interface_coupling_ff-pm.cc + COMPILE_DEFINITIONS EXNUMBER=0 + CMD_ARGS ex_interface_coupling_ff-pm.input) + +dune_add_test(NAME sol_a_ex_interface_coupling_ff-pm + SOURCES ex_interface_coupling_ff-pm.cc + COMPILE_DEFINITIONS EXNUMBER=1 + CMD_ARGS ex_interface_coupling_ff-pm.input) + +dune_add_test(NAME sol_b_ex_interface_coupling_ff-pm + SOURCES ex_interface_coupling_ff-pm.cc + COMPILE_DEFINITIONS EXNUMBER=2 + CMD_ARGS ex_interface_coupling_ff-pm.input) + +dune_add_test(NAME sol_c_ex_interface_coupling_ff-pm + SOURCES ex_interface_coupling_ff-pm.cc + COMPILE_DEFINITIONS EXNUMBER=3 + CMD_ARGS ex_interface_coupling_ff-pm.input) + + +# add exercise to the common target +add_dependencies(test_exercises sol_a_ex_interface_coupling_ff-pm sol_b_ex_interface_coupling_ff-pm sol_b_ex_interface_coupling_ff-pm) diff --git a/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc new file mode 100644 index 00000000..116ed7e2 --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.cc @@ -0,0 +1,274 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief A test problem for the coupled Stokes/Darcy problem (1p) + */ +#include <config.h> + +#include <iostream> + +#include <dune/common/parallel/mpihelper.hh> +#include <dune/istl/io.hh> + +#include <dumux/common/properties.hh> +#include <dumux/common/parameters.hh> +#include <dumux/common/dumuxmessage.hh> +#include <dumux/linear/seqsolverbackend.hh> +#include <dumux/assembly/fvassembler.hh> +#include <dumux/assembly/diffmethod.hh> +#include <dumux/discretization/methods.hh> +#include <dumux/io/vtkoutputmodule.hh> +#include <dumux/io/staggeredvtkoutputmodule.hh> +#include <dumux/io/grid/gridmanager.hh> + +#include <dumux/multidomain/staggeredtraits.hh> +#include <dumux/multidomain/fvassembler.hh> +#include <dumux/multidomain/newtonsolver.hh> + +#include <dumux/multidomain/boundary/stokesdarcy/couplingmanager.hh> + +#include "ex_interface_pmproblem.hh" +#include "ex_interface_ffproblem.hh" + +namespace Dumux { +namespace Properties { + +SET_PROP(StokesOnePTypeTag, CouplingManager) +{ + using Traits = StaggeredMultiDomainTraits<TypeTag, TypeTag, TTAG(DarcyOnePTypeTag)>; + using type = Dumux::StokesDarcyCouplingManager<Traits>; +}; + +SET_PROP(DarcyOnePTypeTag, CouplingManager) +{ + using Traits = StaggeredMultiDomainTraits<TTAG(StokesOnePTypeTag), TTAG(StokesOnePTypeTag), TypeTag>; + using type = Dumux::StokesDarcyCouplingManager<Traits>; +}; + +} // end namespace Properties +} // end namespace Dumux + +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 StokesTypeTag = TTAG(StokesOnePTypeTag); + using DarcyTypeTag = TTAG(DarcyOnePTypeTag); + +#if EXNUMBER < 3 + // try to create a grid (from the given grid file or the input file) + // for both sub-domains + using DarcyGridManager = Dumux::GridManager<typename GET_PROP_TYPE(DarcyTypeTag, Grid)>; + DarcyGridManager darcyGridManager; + darcyGridManager.init("Darcy"); // pass parameter group + + using StokesGridManager = Dumux::GridManager<typename GET_PROP_TYPE(StokesTypeTag, Grid)>; + StokesGridManager stokesGridManager; + stokesGridManager.init("Stokes"); // pass parameter group + + // we compute on the leaf grid view + const auto& darcyGridView = darcyGridManager.grid().leafGridView(); + const auto& stokesGridView = stokesGridManager.grid().leafGridView(); +#else + // use dune-subgrid to create the individual grids + static constexpr int dim = 2; + using HostGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<double, dim> >; + using HostGridManager = Dumux::GridManager<HostGrid>; + HostGridManager hostGridManager; + hostGridManager.init(); + auto& hostGrid = hostGridManager.grid(); + + struct Params + { + double amplitude = getParam<double>("Grid.Amplitude"); + double baseline = getParam<double>("Grid.Baseline"); + double offset = getParam<double>("Grid.Offset"); + double scaling = getParam<double>("Grid.Scaling"); + }; + + Params params; + + auto elementSelectorStokes = [&](const auto& element) + { + double interface = params.amplitude * std::sin(( element.geometry().center()[0] -params.offset) / params.scaling * 2.0 * M_PI) + params.baseline; + return element.geometry().center()[1] > interface; + }; + + auto elementSelectorDarcy = [&](const auto& element) + { + double interface = params.amplitude * std::sin(( element.geometry().center()[0] - params.offset) / params.scaling * 2.0 * M_PI) + params.baseline; + return element.geometry().center()[1] < interface; + }; + + // subgrid Pointer + auto stokesGridPtr = SubgridGridCreator<HostGrid>::makeGrid(hostGrid, elementSelectorStokes, "Stokes"); + auto darcyGridPtr = SubgridGridCreator<HostGrid>::makeGrid(hostGrid, elementSelectorDarcy, "Darcy"); + + // we compute on the leaf grid view + const auto& darcyGridView = darcyGridPtr->leafGridView(); + const auto& stokesGridView = stokesGridPtr->leafGridView(); + +#endif + + + // create the finite volume grid geometry + using StokesFVGridGeometry = typename GET_PROP_TYPE(StokesTypeTag, FVGridGeometry); + auto stokesFvGridGeometry = std::make_shared<StokesFVGridGeometry>(stokesGridView); + stokesFvGridGeometry->update(); + using DarcyFVGridGeometry = typename GET_PROP_TYPE(DarcyTypeTag, FVGridGeometry); + auto darcyFvGridGeometry = std::make_shared<DarcyFVGridGeometry>(darcyGridView); + darcyFvGridGeometry->update(); + + using Traits = StaggeredMultiDomainTraits<StokesTypeTag, StokesTypeTag, DarcyTypeTag>; + + // the coupling manager + using CouplingManager = StokesDarcyCouplingManager<Traits>; + auto couplingManager = std::make_shared<CouplingManager>(stokesFvGridGeometry, darcyFvGridGeometry); + + // the indices + constexpr auto stokesCellCenterIdx = CouplingManager::stokesCellCenterIdx; + constexpr auto stokesFaceIdx = CouplingManager::stokesFaceIdx; + constexpr auto darcyIdx = CouplingManager::darcyIdx; + + // the problem (initial and boundary conditions) + using StokesProblem = typename GET_PROP_TYPE(StokesTypeTag, Problem); + auto stokesProblem = std::make_shared<StokesProblem>(stokesFvGridGeometry, couplingManager); + using DarcyProblem = typename GET_PROP_TYPE(DarcyTypeTag, Problem); + auto darcyProblem = std::make_shared<DarcyProblem>(darcyFvGridGeometry, couplingManager); + + // the solution vector + Traits::SolutionVector sol; + sol[stokesCellCenterIdx].resize(stokesFvGridGeometry->numCellCenterDofs()); + sol[stokesFaceIdx].resize(stokesFvGridGeometry->numFaceDofs()); + sol[darcyIdx].resize(darcyFvGridGeometry->numDofs()); + + const auto& cellCenterSol = sol[stokesCellCenterIdx]; + const auto& faceSol = sol[stokesFaceIdx]; + + // apply initial solution for instationary problems + typename GET_PROP_TYPE(StokesTypeTag, SolutionVector) stokesSol; + std::get<0>(stokesSol) = cellCenterSol; + std::get<1>(stokesSol) = faceSol; + stokesProblem->applyInitialSolution(stokesSol); + sol[stokesCellCenterIdx] = stokesSol[stokesCellCenterIdx]; + sol[stokesFaceIdx] = stokesSol[stokesFaceIdx]; + + couplingManager->init(stokesProblem, darcyProblem, sol); + + // the grid variables + using StokesGridVariables = typename GET_PROP_TYPE(StokesTypeTag, GridVariables); + auto stokesGridVariables = std::make_shared<StokesGridVariables>(stokesProblem, stokesFvGridGeometry); + stokesGridVariables->init(stokesSol); + using DarcyGridVariables = typename GET_PROP_TYPE(DarcyTypeTag, GridVariables); + auto darcyGridVariables = std::make_shared<DarcyGridVariables>(darcyProblem, darcyFvGridGeometry); + darcyGridVariables->init(sol[darcyIdx]); + + // intialize the vtk output module + const auto stokesName = getParam<std::string>("Problem.Name") + "_" + stokesProblem->name(); + const auto darcyName = getParam<std::string>("Problem.Name") + "_" + darcyProblem->name(); + + StaggeredVtkOutputModule<StokesTypeTag> stokesVtkWriter(*stokesProblem, *stokesFvGridGeometry, *stokesGridVariables, stokesSol, stokesName); + GET_PROP_TYPE(StokesTypeTag, VtkOutputFields)::init(stokesVtkWriter); + +#if EXNUMBER >= 2 + stokesVtkWriter.addField(stokesProblem->getAnalyticalVelocityX(), "analyticalV_x"); +#endif + + stokesVtkWriter.write(0.0); + + VtkOutputModule<DarcyTypeTag> darcyVtkWriter(*darcyProblem, *darcyFvGridGeometry, *darcyGridVariables, sol[darcyIdx], darcyName); + GET_PROP_TYPE(DarcyTypeTag, VtkOutputFields)::init(darcyVtkWriter); + darcyVtkWriter.write(0.0); + + // the assembler for a stationary problem + using Assembler = MultiDomainFVAssembler<Traits, CouplingManager, DiffMethod::numeric>; + auto assembler = std::make_shared<Assembler>(std::make_tuple(stokesProblem, stokesProblem, darcyProblem), + std::make_tuple(stokesFvGridGeometry->cellCenterFVGridGeometryPtr(), + stokesFvGridGeometry->faceFVGridGeometryPtr(), + darcyFvGridGeometry), + std::make_tuple(stokesGridVariables->cellCenterGridVariablesPtr(), + stokesGridVariables->faceGridVariablesPtr(), + darcyGridVariables), + couplingManager); + + // the linear solver + using LinearSolver = UMFPackBackend; + auto linearSolver = std::make_shared<LinearSolver>(); + + // the non-linear solver + using NewtonSolver = MultiDomainNewtonSolver<Assembler, LinearSolver, CouplingManager>; + NewtonSolver nonLinearSolver(assembler, linearSolver, couplingManager); + + // solve the non-linear system + nonLinearSolver.solve(sol); + + // write vtk output + stokesVtkWriter.write(1.0); + darcyVtkWriter.write(1.0); + + //////////////////////////////////////////////////////////// + // 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 +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/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input new file mode 100644 index 00000000..bd16b9e8 --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_coupling_ff-pm.input @@ -0,0 +1,44 @@ + # for dune-subgrid + [Grid] +Positions0 = 0 1 +Positions1 = 0 0.2 0.3 0.65 +Cells0 = 100 +Cells1 = 10 50 18 +Baseline = 0.25 # [m] +Amplitude = 0.04 # [m] +Offset = 0.5 # [m] +Scaling = 0.2 #[m] + +[Stokes.Grid] +Verbosity = true +Positions0 = 0.0 1.0 +Positions1 = 1.0 2.0 +Cells0 = 20 +Cells1 = 100 +Grading1 = 1 + +[Darcy.Grid] +Verbosity = true +Positions0 = 0.0 1.0 +Positions1 = 0.0 1.0 +Cells0 = 20 +Cells1 = 20 +Grading1 = 1 + +[Stokes.Problem] +Name = stokes +PressureDifference = 1e-9 + +[Darcy.Problem] +Name = darcy + +[Darcy.SpatialParams] +Permeability = 1e-6 # m^2 +AlphaBeaversJoseph = 1.0 + +[Problem] +Name = ex_ff-pm-interface +EnableGravity = false + +[Vtk] +AddVelocity = 1 diff --git a/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh new file mode 100644 index 00000000..369a7bd2 --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_ffproblem.hh @@ -0,0 +1,360 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * \brief The free flow sub problem + */ +#ifndef DUMUX_STOKES_SUBPROBLEM_HH +#define DUMUX_STOKES_SUBPROBLEM_HH + +#include <dune/grid/yaspgrid.hh> + +#if EXNUMBER >= 3 +#include <dumux/io/grid/subgridgridcreator.hh> +#endif + +#include <dumux/material/fluidsystems/1pliquid.hh> +#include <dumux/material/components/simpleh2o.hh> + +#include <dumux/freeflow/navierstokes/problem.hh> +#include <dumux/discretization/staggered/freeflow/properties.hh> +#include <dumux/freeflow/navierstokes/model.hh> + +namespace Dumux +{ +template <class TypeTag> +class StokesSubProblem; + +namespace Properties +{ +NEW_TYPE_TAG(StokesOnePTypeTag, INHERITS_FROM(StaggeredFreeFlowModel, NavierStokes)); + +// the fluid system +SET_PROP(StokesOnePTypeTag, FluidSystem) +{ + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using type = FluidSystems::OnePLiquid<Scalar, Dumux::Components::SimpleH2O<Scalar> > ; +}; + +// Set the grid type +SET_PROP(StokesOnePTypeTag, Grid) +{ + static constexpr auto dim = 2; + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using TensorGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<Scalar, dim> >; + +#if EXNUMBER < 3 // use "normal" grid + using type = TensorGrid; +#else // use dune-subgrid + using HostGrid = TensorGrid; + using type = Dune::SubGrid<dim, HostGrid>; +#endif +}; + +// Set the problem property +SET_TYPE_PROP(StokesOnePTypeTag, Problem, Dumux::StokesSubProblem<TypeTag> ); + +SET_BOOL_PROP(StokesOnePTypeTag, EnableFVGridGeometryCache, true); +SET_BOOL_PROP(StokesOnePTypeTag, EnableGridFluxVariablesCache, true); +SET_BOOL_PROP(StokesOnePTypeTag, EnableGridVolumeVariablesCache, true); + +SET_BOOL_PROP(StokesOnePTypeTag, EnableInertiaTerms, false); +} + +/*! + * \brief The free flow sub problem + */ +template <class TypeTag> +class StokesSubProblem : public NavierStokesProblem<TypeTag> +{ + using ParentType = NavierStokesProblem<TypeTag>; + + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; + using Element = typename GridView::template Codim<0>::Entity; + + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables); + using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + + using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); + +public: + StokesSubProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry, std::shared_ptr<CouplingManager> couplingManager) + : ParentType(fvGridGeometry, "Stokes"), eps_(1e-6), couplingManager_(couplingManager) + { + deltaP_ = getParamFromGroup<Scalar>(this->paramGroup(), "Problem.PressureDifference"); + } + + /*! + * \name Problem parameters + */ + // \{ + + /*! + * \brief Return the temperature within the domain in [K]. + * + * This problem assumes a temperature of 10 degrees Celsius. + */ + Scalar temperature() const + { return 273.15 + 10; } // 10°C + + /*! + * \brief Return the sources within the domain. + * + * \param globalPos The global position + */ + NumEqVector sourceAtPos(const GlobalPosition &globalPos) const + { return NumEqVector(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.dofPosition(); + +#if EXNUMBER == 0 // flow from top to bottom + if(onUpperBoundary_(globalPos)) + { + values.setDirichlet(Indices::velocityXIdx); + values.setDirichlet(Indices::velocityYIdx); + } + + if (onRightBoundary_(globalPos) || (onLeftBoundary_(globalPos))) + { + values.setDirichlet(Indices::velocityXIdx); + values.setDirichlet(Indices::velocityYIdx); + } +#else // flow flom left to right + if(onLeftBoundary_(globalPos) || onRightBoundary_(globalPos)) + values.setDirichlet(Indices::pressureIdx); + else + { + values.setDirichlet(Indices::velocityXIdx); + values.setDirichlet(Indices::velocityYIdx); + } +#endif + + if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf)) + { + values.setCouplingNeumann(Indices::conti0EqIdx); +#if EXNUMBER < 3 + values.setCouplingNeumann(Indices::momentumYBalanceIdx); +#else + //consider orientation of face automatically + values.setCouplingNeumann(scvf.directionIndex()); +#endif + +#if EXNUMBER == 2 + // set the Beaver-Joseph-Saffman slip condition for the tangential momentum balance equation + values.setBJS(Indices::momentumXBalanceIdx); +#endif + +#if EXNUMBER == 3 + // set the Beaver-Joseph-Saffman slip condition for the tangential momentum balance equation, + // consider orientation of face automatically + values.setBJS(1 - scvf.directionIndex()); +#endif + } + + return values; + } + + /*! + * \brief Evaluate the boundary conditions for a Dirichlet control volume. + * + * \param globalPos The global position + */ + PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const + { + PrimaryVariables values(0.0); + values = initialAtPos(globalPos); + + 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<class ElementVolumeVariables, class ElementFaceVariables> + NumEqVector neumann(const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const ElementFaceVariables& elemFaceVars, + const SubControlVolumeFace& scvf) const + { + NumEqVector values(0.0); + + if(couplingManager().isCoupledEntity(CouplingManager::stokesIdx, scvf)) + { + values[Indices::conti0EqIdx] = couplingManager().couplingData().massCouplingCondition(fvGeometry, elemVolVars, elemFaceVars, scvf); +#if EXNUMBER < 3 + values[Indices::momentumYBalanceIdx] = couplingManager().couplingData().momentumCouplingCondition(fvGeometry, elemVolVars, elemFaceVars, scvf); +#else + values[scvf.directionIndex()] = couplingManager().couplingData().momentumCouplingCondition(fvGeometry, elemVolVars, elemFaceVars, scvf); +#endif + + } + return values; + } + + // \} + + //! Set the coupling manager + void setCouplingManager(std::shared_ptr<CouplingManager> cm) + { couplingManager_ = cm; } + + //! Get the coupling manager + const CouplingManager& couplingManager() const + { return *couplingManager_; } + + /*! + * \name Volume terms + */ + // \{ + + /*! + * \brief Evaluate the initial value for a control volume. + * + * \param globalPos The global position + */ + PrimaryVariables initialAtPos(const GlobalPosition &globalPos) const + { + PrimaryVariables values(0.0); +#if EXNUMBER == 0 + values[Indices::velocityYIdx] = -1e-6 * globalPos[0] * (this->fvGridGeometry().bBoxMax()[0] - globalPos[0]); +#else + // set fixed pressures on the left and right boundary + if(onLeftBoundary_(globalPos)) + values[Indices::pressureIdx] = deltaP_; + if(onRightBoundary_(globalPos)) + values[Indices::pressureIdx] = 0.0; +#endif + + return values; + } + + /*! + * \brief Returns the intrinsic permeability of required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar permeability(const SubControlVolumeFace& scvf) const + { + return couplingManager().couplingData().darcyPermeability(scvf); + } + + /*! + * \brief Returns the alpha value required as input parameter for the Beavers-Joseph-Saffman boundary condition + */ + Scalar alphaBJ(const SubControlVolumeFace& scvf) const + { + return couplingManager().problem(CouplingManager::darcyIdx).spatialParams().beaversJosephCoeffAtPos(scvf.center()); + } + + /*! + * \brief calculate the analytical velocity in x direction based on Beavers & Joseph (1967) + */ + void calculateAnalyticalVelocityX() const + { + analyticalVelocityX_.resize(this->fvGridGeometry().gridView().size(0)); + + using std::sqrt; + const Scalar dPdX = -deltaP_ / (this->fvGridGeometry().bBoxMax()[0] - this->fvGridGeometry().bBoxMin()[0]); + static const Scalar mu = FluidSystem::viscosity(temperature(), 1e5); + static const Scalar alpha = getParam<Scalar>("Darcy.SpatialParams.AlphaBeaversJoseph"); + static const Scalar K = getParam<Scalar>("Darcy.SpatialParams.Permeability"); + static const Scalar sqrtK = sqrt(K); + const Scalar sigma = (this->fvGridGeometry().bBoxMax()[1] - this->fvGridGeometry().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->fvGridGeometry().gridView())) + { + const auto eIdx = this->fvGridGeometry().gridView().indexSet().index(element); + const Scalar y = element.geometry().center()[1] - this->fvGridGeometry().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<Scalar>& getAnalyticalVelocityX() const + { + if(analyticalVelocityX_.empty()) + calculateAnalyticalVelocityX(); + return analyticalVelocityX_; + } + + // \} + +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_; + Scalar deltaP_; + + std::shared_ptr<CouplingManager> couplingManager_; + + mutable std::vector<Scalar> analyticalVelocityX_; +}; +} //end namespace + +#endif // DUMUX_STOKES_SUBPROBLEM_HH diff --git a/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh new file mode 100644 index 00000000..eb1c5a20 --- /dev/null +++ b/exercises/solution/exercise-coupling-ff-pm/interface/ex_interface_pmproblem.hh @@ -0,0 +1,257 @@ +// -*- 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 <http://www.gnu.org/licenses/>. * + *****************************************************************************/ +/*! + * \file + * + * \brief The porous medium flow sub problem + */ +#ifndef DUMUX_DARCY_SUBPROBLEM_HH +#define DUMUX_DARCY_SUBPROBLEM_HH + +#include <dune/grid/yaspgrid.hh> + +#if EXNUMBER >= 3 +#include <dumux/io/grid/subgridgridcreator.hh> +#endif + +#include <dumux/discretization/cellcentered/tpfa/properties.hh> + +#include <dumux/porousmediumflow/1p/model.hh> +#include <dumux/porousmediumflow/problem.hh> + +#include "1pspatialparams.hh" + +#include <dumux/material/components/simpleh2o.hh> +#include <dumux/material/fluidsystems/1pliquid.hh> + +namespace Dumux +{ +template <class TypeTag> +class DarcySubProblem; + +namespace Properties +{ +NEW_TYPE_TAG(DarcyOnePTypeTag, INHERITS_FROM(CCTpfaModel, OneP)); + +// Set the problem property +SET_TYPE_PROP(DarcyOnePTypeTag, Problem, Dumux::DarcySubProblem<TypeTag>); + +// the fluid system +SET_PROP(DarcyOnePTypeTag, FluidSystem) +{ + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using type = FluidSystems::OnePLiquid<Scalar, Dumux::Components::SimpleH2O<Scalar> > ; +}; + +// Set the grid type +SET_PROP(DarcyOnePTypeTag, Grid) +{ + static constexpr auto dim = 2; + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using TensorGrid = Dune::YaspGrid<2, Dune::TensorProductCoordinates<Scalar, dim> >; + +#if EXNUMBER < 3 // use "normal" grid + using type = TensorGrid; +#else // use dune-subgrid + using HostGrid = TensorGrid; + using type = Dune::SubGrid<dim, HostGrid>; +#endif +}; + +SET_TYPE_PROP(DarcyOnePTypeTag, SpatialParams, OnePSpatialParams<TypeTag>); +} + +/*! + * \brief The porous medium flow sub problem + */ +template <class TypeTag> +class DarcySubProblem : public PorousMediumFlowProblem<TypeTag> +{ + using ParentType = PorousMediumFlowProblem<TypeTag>; + using GridView = typename GET_PROP_TYPE(TypeTag, GridView); + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using PrimaryVariables = typename GET_PROP_TYPE(TypeTag, PrimaryVariables); + using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + using VolumeVariables = typename GET_PROP_TYPE(TypeTag, VolumeVariables); + using FVElementGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry)::LocalView; + using SubControlVolume = typename FVElementGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); + +public: + DarcySubProblem(std::shared_ptr<const FVGridGeometry> fvGridGeometry, + std::shared_ptr<CouplingManager> couplingManager) + : ParentType(fvGridGeometry, "Darcy"), eps_(1e-7), couplingManager_(couplingManager) + {} + + /*! + * \name Simulation steering + */ + // \{ + + /*! + * \brief Return the temperature within the domain in [K]. + * + */ + Scalar temperature() const + { return 273.15 + 10; } // 10°C + // \} + + /*! + * \name Boundary conditions + */ + // \{ + + /*! + * \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; + values.setAllNeumann(); + +#if EXNUMBER == 0 // flow from top to bottom + if (onLowerBoundary_(scvf.center())) + values.setAllDirichlet(); +#endif + + if (couplingManager().isCoupledEntity(CouplingManager::darcyIdx, scvf)) + values.setAllCouplingNeumann(); + + 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 + { + PrimaryVariables values(0.0); + values = initial(element); + + 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<class ElementVolumeVariables> + NumEqVector neumann(const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf) const + { + NumEqVector values(0.0); + + if (couplingManager().isCoupledEntity(CouplingManager::darcyIdx, scvf)) + values[Indices::conti0EqIdx] = couplingManager().couplingData().massCouplingCondition(fvGeometry, elemVolVars, scvf); + + 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<class ElementVolumeVariables> + 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 + { + return PrimaryVariables(0.0); + } + + // \} + + //! Set the coupling manager + void setCouplingManager(std::shared_ptr<CouplingManager> cm) + { couplingManager_ = cm; } + + //! Get the coupling manager + const CouplingManager& couplingManager() const + { return *couplingManager_; } + +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_; + std::shared_ptr<CouplingManager> couplingManager_; +}; +} //end namespace + +#endif //DUMUX_DARCY_SUBPROBLEM_HH -- GitLab