From 600f2cdf3a0fa5eec2b64b412193a806b9cea3a4 Mon Sep 17 00:00:00 2001 From: Theresa Kurz <theresa.kurz@iws.uni-stuttgart.de> Date: Mon, 17 Dec 2018 16:08:18 +0100 Subject: [PATCH] [exercise-fracture] update README --- exercises/exercise-fractures/README.md | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/exercises/exercise-fractures/README.md b/exercises/exercise-fractures/README.md index b526647b..067ac67f 100644 --- a/exercises/exercise-fractures/README.md +++ b/exercises/exercise-fractures/README.md @@ -67,11 +67,10 @@ From the matrix side, the coupling works a bit different. Since the fracture dom ... // create the type tag node for the matrix sub-problem -// We need to put the facet-coupling type tag after the physics-related type tag -// because it overwrites some of the properties inherited from "TwoP". This is -// necessary because we need e.g. a modified implementation of darcys law that -// evaluates the coupling conditions on faces that coincide with the fractures. -NEW_TYPE_TAG(MatrixProblemTypeTag, INHERITS_FROM(TwoP, CCTpfaFacetCouplingModel)); +// Create new type tags +namespace TTag { +struct MatrixProblemTypeTag { using InheritsFrom = std::tuple<CCTpfaFacetCouplingModel, TwoP>; }; +} // end namespace TTag ``` Additionally, we need to provide access to the coupling manager in the matrix problem, so that the flux assembly engine of the matrix domain has access to the state inside the fracture (which the fluxes depend on): @@ -189,7 +188,7 @@ int getElementDomainMarker(const Element& element) const { return gridDataPtr_->getElementDomainMarker(element); } ``` -The domain markers are also already added to the output (see `exercise_fractures.cc`, lines 188-197). To visualize them, open any of your previously produced results with _Paraview_ and take a look at them by selecting __domainMarker__. +The domain markers are also already added to the output (see `exercise_fractures.cc`, lines 195-199). To visualize them, open any of your previously produced results with _Paraview_ and take a look at them by selecting __domainMarker__. Adjust the functions for permeability, porosity and material law parameters in the `fracturespatialparams.hh` file such that they are selected depending on the domain marker of the elements. You will see in the results that the pressure jump across the first vertical fracture is now lower than before, because there are highly permeable fractures crossing it, allowing for a pressure release into the other parts of the domain. @@ -201,8 +200,8 @@ We can now also set the interior boundary condition depending on the domain mark // we need to obtain the domain marker of the fracture element that is coupled to this face // therefore we first get the fracture problem from the coupling manager. For this test, we // know that the fracture domain id is 1 (see main file) -static constexpr std::size_t fractureDomainId = 1; -const auto& fractureProblem = couplingManager().template problem<fractureDomainId>(); +static constexpr auto fractureDomainId = Dune::index_constant<1>(); +const auto& fractureProblem = couplingManager().problem(fractureDomainId); // use helper function in coupling manager to obtain the element this face couples to const auto fractureElement = couplingManager().getLowDimElement(element, scvf); -- GitLab