From cfc9b9aa43cbaa068ca96a014dfc15df1ab7cc95 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Fri, 19 Oct 2018 15:46:31 +0200 Subject: [PATCH 01/12] [facet] introduce tpfa ficks law --- .../facet/cellcentered/tpfa/CMakeLists.txt | 1 + .../facet/cellcentered/tpfa/fickslaw.hh | 337 ++++++++++++++++++ .../facet/cellcentered/tpfa/properties.hh | 5 + 3 files changed, 343 insertions(+) create mode 100644 dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh diff --git a/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt b/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt index 44dd6edc06..9175158d75 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt +++ b/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt @@ -2,5 +2,6 @@ install(FILES couplingmanager.hh couplingmapper.hh darcyslaw.hh +fickslaw.hh properties.hh DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/multidomain/facet/cellcentered/tpfa) diff --git a/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh new file mode 100644 index 0000000000..6fbf45bc21 --- /dev/null +++ b/dumux/multidomain/facet/cellcentered/tpfa/fickslaw.hh @@ -0,0 +1,337 @@ +// -*- 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 MultiDomain + * \ingroup FacetCoupling + * \copydoc Dumux::CCTpfaFacetCouplingFicksLaw + */ +#ifndef DUMUX_DISCRETIZATION_CC_TPFA_FACET_COUPLING_FICKS_LAW_HH +#define DUMUX_DISCRETIZATION_CC_TPFA_FACET_COUPLING_FICKS_LAW_HH + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +namespace Dumux { + +//! Forward declaration of the implementation +template +class CCTpfaFacetCouplingFicksLawImpl; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief The cache corresponding to tpfa Fick's Law with facet coupling + * \note We distinguish between network and non-network grids here. Specializations + * for the two cases can be found below. + */ +template +class CCTpfaFacetCouplingFicksLawCache; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Fick's law for cell-centered finite volume schemes with two-point flux approximation + * in the context of coupled models where the coupling occurs across the facets of the bulk + * domain elements with a lower-dimensional domain living on these facets. + * + * \tparam TypeTag the problem type tag + */ +template +using CCTpfaFacetCouplingFicksLaw = + CCTpfaFacetCouplingFicksLawImpl< TypeTag, ( int(GET_PROP_TYPE(TypeTag, GridView)::dimension) < + int(GET_PROP_TYPE(TypeTag, GridView)::dimensionworld) ) >; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Specialization of the FacetCouplingTpfaFicksLawCache for non-network grids. + */ +template +class CCTpfaFacetCouplingFicksLawCache +{ + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolumeFace = typename FVGridGeometry::SubControlVolumeFace; + using Element = typename FVGridGeometry::GridView::template Codim<0>::Entity; + + static constexpr int numPhases = GET_PROP_TYPE(TypeTag, ModelTraits)::numPhases(); + static constexpr int numComponents = GET_PROP_TYPE(TypeTag, ModelTraits)::numComponents(); + + // the standard tpfa fick's law implementation + using DiffusionType = typename GET_PROP_TYPE(TypeTag, MolecularDiffusionType); + using TpfaFicksLaw = FicksLawImplementation; + +public: + //! export the corresponding filler class (use standard tpfa one) + using Filler = typename TpfaFicksLaw::Cache::Filler; + + //! we store the transmissibilities associated with the interior + //! cell, outside cell, and the fracture facet in an array. Access + //! to this array should be done using the following indices: + static constexpr int insideTijIdx = 0; + static constexpr int outsideTijIdx = 1; + static constexpr int facetTijIdx = 2; + + //! Export transmissibility storage type + using DiffusionTransmissibilityContainer = std::array; + + //! update subject to a given problem + template< class Problem, class ElementVolumeVariables > + void updateDiffusion(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace &scvf, + unsigned int phaseIdx, unsigned int compIdx) + { + tij_[phaseIdx][compIdx] = DiffusionType::calculateTransmissibility(problem, element, fvGeometry, elemVolVars, scvf, phaseIdx, compIdx); + } + + //! We use the same name as in the TpfaFicksLawCache so + //! that this cache and the law implementation for non-coupled + //! models can be reused here on facets that do not lie on an + //! interior boundary, i.e. do not coincide with a fracture + Scalar diffusionTij(unsigned int phaseIdx, unsigned int compIdx) const + { return tij_[phaseIdx][compIdx][insideTijIdx]; } + + //! returns the transmissibility associated with the inside cell + Scalar diffusionTijInside(unsigned int phaseIdx, unsigned int compIdx) const + { return tij_[phaseIdx][compIdx][insideTijIdx]; } + + //! returns the transmissibility associated with the outside cell + Scalar diffusionTijOutside(unsigned int phaseIdx, unsigned int compIdx) const + {return tij_[phaseIdx][compIdx][outsideTijIdx]; } + + //! returns the transmissibility associated with the outside cell + Scalar diffusionTijFacet(unsigned int phaseIdx, unsigned int compIdx) const + {return tij_[phaseIdx][compIdx][facetTijIdx]; } + +private: + std::array< std::array< std::array, numComponents>, numPhases > tij_; +}; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Specialization of the CCTpfaFicksLaw grids where dim=dimWorld + */ +template +class CCTpfaFacetCouplingFicksLawImpl +{ + using ThisType = CCTpfaFacetCouplingFicksLawImpl; + using TpfaFicksLaw = FicksLawImplementation; + + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVGridGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVGridGeometry::SubControlVolumeFace; + + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + using IndexType = typename GridView::IndexSet::IndexType; + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using BalanceEqOpts = typename GET_PROP_TYPE(TypeTag, BalanceEqOpts); + + using ScalarType = typename GET_PROP_TYPE(TypeTag, Scalar); + static constexpr int numPhases = GET_PROP_TYPE(TypeTag, ModelTraits)::numPhases(); + static constexpr int numComponents = GET_PROP_TYPE(TypeTag, ModelTraits)::numComponents(); + using ComponentFluxVector = Dune::FieldVector; + + public: + //! state the scalar type of the law + using Scalar = ScalarType; + //! export the discretization method this implementation belongs to + static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa; + //! export the type for the corresponding cache + using Cache = CCTpfaFacetCouplingFicksLawCache; + //! export the type used to store transmissibilities + using TijContainer = typename Cache::DiffusionTransmissibilityContainer; + + + //! Compute the diffusive flux + template< class Problem, class ElementVolumeVariables, class ElementFluxVarsCache > + static ComponentFluxVector flux(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + int phaseIdx, + const ElementFluxVarsCache& elemFluxVarsCache) + { + if (!problem.couplingManager().isOnInteriorBoundary(element, scvf)) + return TpfaFicksLaw::flux(problem, element, fvGeometry, elemVolVars, scvf, phaseIdx, elemFluxVarsCache); + + ComponentFluxVector componentFlux(0.0); + for (int compIdx = 0; compIdx < numComponents; compIdx++) + { + if(compIdx == FluidSystem::getMainComponent(phaseIdx)) + continue; + + // Obtain inside and fracture pressures + const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()]; + const auto& facetVolVars = problem.couplingManager().getLowDimVolVars(element, scvf); + const auto xInside = insideVolVars.moleFraction(phaseIdx, compIdx); + const auto xFacet = facetVolVars.moleFraction(phaseIdx, compIdx); + + // compute and return flux + const auto& fluxVarsCache = elemFluxVarsCache[scvf]; + Scalar flux = fluxVarsCache.diffusionTijInside(phaseIdx, compIdx)*xInside + + fluxVarsCache.diffusionTijFacet(phaseIdx, compIdx)*xFacet; + + if (!scvf.boundary()) + flux += fluxVarsCache.diffusionTijOutside(phaseIdx, compIdx) + *elemVolVars[scvf.outsideScvIdx()].moleFraction(phaseIdx, compIdx); + + // for the density, use arithmetic average + const auto rho = 0.5*(insideVolVars.molarDensity(phaseIdx) + facetVolVars.molarDensity(phaseIdx)); + + componentFlux[compIdx] = rho*flux; + if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx) && !FluidSystem::isTracerFluidSystem()) + componentFlux[FluidSystem::getMainComponent(phaseIdx)] -= componentFlux[compIdx]; + } + + return componentFlux; + } + + // The flux variables cache has to be bound to an element prior to flux calculations + // During the binding, the transmissibility will be computed and stored using the method below. + template< class Problem, class ElementVolumeVariables > + static TijContainer calculateTransmissibility(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + unsigned int phaseIdx, unsigned int compIdx) + { + TijContainer tij; + if (!problem.couplingManager().isCoupled(element, scvf)) + { + //! use the standard darcy's law and only compute one transmissibility + tij[Cache::insideTijIdx] = TpfaFicksLaw::calculateTransmissibility(problem, element, fvGeometry, elemVolVars, scvf, phaseIdx, compIdx); + return tij; + } + + //! xi factor for the coupling conditions + static const Scalar xi = getParamFromGroup(problem.paramGroup(), "FacetCoupling.Xi", 1.0); + static const Scalar oneMinusXi = 1.0 - xi; + + using EffDiffModel = typename GET_PROP_TYPE(TypeTag, EffectiveDiffusivityModel); + const auto insideScvIdx = scvf.insideScvIdx(); + const auto& insideScv = fvGeometry.scv(insideScvIdx); + const auto& insideVolVars = elemVolVars[insideScvIdx]; + const auto insideD = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), + insideVolVars.saturation(phaseIdx), + insideVolVars.diffusionCoefficient(phaseIdx, compIdx)); + const auto wIn = scvf.area()*computeTpfaTransmissibility(scvf, insideScv, insideD, insideVolVars.extrusionFactor()); + + // proceed depending on the interior BC types used + const auto iBcTypes = problem.interiorBoundaryTypes(element, scvf); + + // neumann-coupling + if (iBcTypes.hasOnlyNeumann()) + { + const auto& facetVolVars = problem.couplingManager().getLowDimVolVars(element, scvf); + // TODO How can we tell this class which effective diffusivity law is used + // in the facet domain? Here, we simply assume it uses the same law + // as this domain. But, we cannot make it an additional template parameter + // because that leads to a compiler error for models that do not specify + // an effective diffusivity law, e.g. models that do not consider diffusion. + const auto facetD = EffDiffModel::effectiveDiffusivity(facetVolVars.porosity(), + facetVolVars.saturation(phaseIdx), + facetVolVars.diffusionCoefficient(phaseIdx, compIdx)); + const auto wFacet = 2.0*scvf.area()*insideVolVars.extrusionFactor() + /facetVolVars.extrusionFactor() + *vtmv(scvf.unitOuterNormal(), facetD, scvf.unitOuterNormal()); + + // The fluxes across this face and the outside face can be expressed in matrix form: + // \f$\mathbf{C} \bar{\mathbf{u}} + \mathbf{D} \mathbf{u} + \mathbf{E} \mathbf{u}_\gamma\f$, + // where \f$\gamma$\f denotes the domain living on the facets and \f$\bar{\mathbf{u}}$\f are + // intermediate face unknowns in the matrix domain. Equivalently, flux continuity reads: + // \f$\mathbf{A} \bar{\mathbf{u}} = \mathbf{B} \mathbf{u} + \mathbf{M} \mathbf{u}_\gamma\f$. + // Combining the two, we can eliminate the intermediate unknowns and compute the transmissibilities. + if (!scvf.boundary() && xi != 1.0) + { + const auto outsideScvIdx = scvf.outsideScvIdx(); + const auto& outsideVolVars = elemVolVars[outsideScvIdx]; + const auto outsideD = EffDiffModel::effectiveDiffusivity(outsideVolVars.porosity(), + outsideVolVars.saturation(phaseIdx), + outsideVolVars.diffusionCoefficient(phaseIdx, compIdx)); + const auto wOut = -1.0*scvf.area()*computeTpfaTransmissibility(scvf, + fvGeometry.scv(outsideScvIdx), + outsideD, + outsideVolVars.extrusionFactor()); + const Scalar xiWIn = xi*wIn; + const Scalar xiWOut = xi*wOut; + const Scalar oneMinusXiWIn = oneMinusXi*wIn; + const Scalar oneMinusXiWOut = oneMinusXi*wOut; + + // assemble matrices + Dune::FieldMatrix A, B; + A[0][0] = xiWIn+wFacet; + A[0][1] = oneMinusXiWOut; + A[1][0] = oneMinusXiWIn; + A[1][1] = xiWOut-wFacet; + + B[0][0] = xiWIn; + B[0][1] = oneMinusXiWOut; + B[1][0] = oneMinusXiWIn; + B[1][1] = xiWOut; + + // tij = C(A^-1)B + const Scalar detA = A[0][0]*A[1][1] - A[1][0]*A[0][1]; + tij[Cache::insideTijIdx] = xiWIn - xiWIn*(A[1][1]*B[0][0] - A[0][1]*B[1][0])/detA; + tij[Cache::outsideTijIdx] = -xiWIn*(A[1][1]*B[0][1] - A[0][1]*B[1][1])/detA; + tij[Cache::facetTijIdx] = -xiWIn*wFacet*(A[1][1] + A[0][1])/detA; + } + else + { + // TODO: check for division by zero?? + tij[Cache::insideTijIdx] = wFacet*wIn/(wIn+wFacet); + tij[Cache::facetTijIdx] = -tij[Cache::insideTijIdx]; + tij[Cache::outsideTijIdx] = 0.0; + } + } + else if (iBcTypes.hasOnlyDirichlet()) + { + tij[Cache::insideTijIdx] = wIn; + tij[Cache::outsideTijIdx] = 0.0; + tij[Cache::facetTijIdx] = -wIn; + } + else + DUNE_THROW(Dune::NotImplemented, "Interior boundary types other than pure Dirichlet or Neumann"); + + return tij; + } +}; + +} // end namespace Dumux + +#endif diff --git a/dumux/multidomain/facet/cellcentered/tpfa/properties.hh b/dumux/multidomain/facet/cellcentered/tpfa/properties.hh index 16e6ef0e9c..4b9dc50064 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/properties.hh +++ b/dumux/multidomain/facet/cellcentered/tpfa/properties.hh @@ -32,9 +32,11 @@ #include #include + #include #include #include +#include #include @@ -52,6 +54,9 @@ SET_TYPE_PROP(CCTpfaFacetCouplingModel, CCTpfaFacetCouplingDarcysLaw< typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, FVGridGeometry) >); +//! Use the tpfa facet coupling-specific Fick's law +SET_TYPE_PROP(CCTpfaFacetCouplingModel, MolecularDiffusionType, CCTpfaFacetCouplingFicksLaw); + //! Use the cc local residual for models with facet coupling SET_TYPE_PROP(CCTpfaFacetCouplingModel, BaseLocalResidual, CCFacetCouplingLocalResidual); -- GitLab From 607378f2d6078f2a87bf6c19c573faca396e86ed Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Fri, 19 Oct 2018 16:21:44 +0200 Subject: [PATCH 02/12] [facet][darcyslaw] remove duplicate alias --- dumux/multidomain/facet/box/darcyslaw.hh | 1 - 1 file changed, 1 deletion(-) diff --git a/dumux/multidomain/facet/box/darcyslaw.hh b/dumux/multidomain/facet/box/darcyslaw.hh index e69d899552..b37894100b 100644 --- a/dumux/multidomain/facet/box/darcyslaw.hh +++ b/dumux/multidomain/facet/box/darcyslaw.hh @@ -104,7 +104,6 @@ public: using std::sqrt; // If this is a surface grid, use the square root of the facet extrusion factor // as an approximate average distance from scvf ip to facet center - using std::sqrt; const auto a = facetVolVars.extrusionFactor(); auto gradP = scvf.unitOuterNormal(); gradP *= dim == dimWorld ? 0.5*a : 0.5*sqrt(a); -- GitLab From 7f48b4e39c7f5d6a2426cb08949c7dfef68fc200 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Fri, 19 Oct 2018 16:22:43 +0200 Subject: [PATCH 03/12] [facet] introduce box ficks law --- dumux/multidomain/facet/box/CMakeLists.txt | 1 + dumux/multidomain/facet/box/fickslaw.hh | 213 +++++++++++++++++++++ dumux/multidomain/facet/box/properties.hh | 4 + 3 files changed, 218 insertions(+) create mode 100644 dumux/multidomain/facet/box/fickslaw.hh diff --git a/dumux/multidomain/facet/box/CMakeLists.txt b/dumux/multidomain/facet/box/CMakeLists.txt index cf4da19bf2..a9641d813d 100644 --- a/dumux/multidomain/facet/box/CMakeLists.txt +++ b/dumux/multidomain/facet/box/CMakeLists.txt @@ -3,6 +3,7 @@ couplingmanager.hh couplingmapper.hh darcyslaw.hh elementboundarytypes.hh +fickslaw.hh fvelementgeometry.hh fvgridgeometry.hh localresidual.hh diff --git a/dumux/multidomain/facet/box/fickslaw.hh b/dumux/multidomain/facet/box/fickslaw.hh new file mode 100644 index 0000000000..c92fa1c687 --- /dev/null +++ b/dumux/multidomain/facet/box/fickslaw.hh @@ -0,0 +1,213 @@ +// -*- 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 MultiDomain + * \ingroup FacetCoupling + * \copydoc Dumux::BoxFacetCouplingFicksLaw + */ +#ifndef DUMUX_DISCRETIZATION_BOX_FACET_COUPLING_FICKS_LAW_HH +#define DUMUX_DISCRETIZATION_BOX_FACET_COUPLING_FICKS_LAW_HH + +#include +#include + +#include +#include +#include + +#include +#include + +namespace Dumux { + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Fick's law for the box scheme scheme in the context of coupled models + * where coupling occurs across the facets of the bulk domain elements + * with a lower-dimensional domain living on these facets. + * + * \tparam TypeTag the problem type tag + */ +template +class BoxFacetCouplingFicksLaw +{ + using DefaultBoxFicksLaw = FicksLawImplementation; + + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits); + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using BalanceEqOpts = typename GET_PROP_TYPE(TypeTag, BalanceEqOpts); + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVElementGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using CoordScalar = typename GridView::ctype; + + static constexpr int dim = GridView::dimension; + static constexpr int dimWorld = GridView::dimensionworld; + + static constexpr int numPhases = ModelTraits::numPhases(); + static constexpr int numComponents = ModelTraits::numComponents(); + using ComponentFluxVector = Dune::FieldVector; + +public: + + template + static ComponentFluxVector flux(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + const int phaseIdx, + const ElementFluxVarsCache& elemFluxVarCache) + { + // if this scvf is not on an interior boundary, use the standard law + if (!scvf.interiorBoundary()) + return DefaultBoxFicksLaw::flux(problem, element, fvGeometry, elemVolVars, scvf, phaseIdx, elemFluxVarCache); + + // obtain the effective diffusivity model used + using EffDiffModel = typename GET_PROP_TYPE(TypeTag, EffectiveDiffusivityModel); + + // get some references for convenience + const auto& fluxVarCache = elemFluxVarCache[scvf]; + const auto& shapeValues = fluxVarCache.shapeValues(); + const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx()); + const auto& insideVolVars = elemVolVars[insideScv]; + + // evaluate user-defined interior boundary types + const auto bcTypes = problem.interiorBoundaryTypes(element, scvf); + + ComponentFluxVector componentFlux(0.0); + // on interior Neumann boundaries, evaluate the flux using the facet permeability + if (bcTypes.hasOnlyNeumann()) + { + for (int compIdx = 0; compIdx < numComponents; compIdx++) + { + if(compIdx == FluidSystem::getMainComponent(phaseIdx)) + continue; + + // interpolate mole fraction/density to scvf integration point + Scalar x = 0.0; + Scalar rho = 0.0; + for (const auto& scv : scvs(fvGeometry)) + { + const auto& volVars = elemVolVars[scv]; + x += volVars.moleFraction(phaseIdx, compIdx)*shapeValues[scv.indexInElement()][0]; + rho += volVars.molarDensity(phaseIdx)*shapeValues[scv.indexInElement()][0]; + } + + // compute tpfa flux from integration point to facet centerline + const auto& facetVolVars = problem.couplingManager().getLowDimVolVars(element, scvf); + + using std::sqrt; + // If this is a surface grid, use the square root of the facet extrusion factor + // as an approximate average distance from scvf ip to facet center + const auto a = facetVolVars.extrusionFactor(); + auto gradX = scvf.unitOuterNormal(); + gradX *= dim == dimWorld ? 0.5*a : 0.5*sqrt(a); + gradX /= gradX.two_norm2(); + gradX *= (facetVolVars.moleFraction(phaseIdx, compIdx) - x); + + // TODO How can we tell this class which effective diffusivity law is used + // in the facet domain? Here, we simply assume it uses the same law + // as this domain. But, we cannot make it an additional template parameter + // because that leads to a compiler error for models that do not specify + // an effective diffusivity law, e.g. models that do not consider diffusion. + auto facetD = EffDiffModel::effectiveDiffusivity(facetVolVars.porosity(), + facetVolVars.saturation(phaseIdx), + facetVolVars.diffusionCoefficient(phaseIdx, compIdx)); + + // apply facet diffusion coefficient + componentFlux[compIdx] = -1.0*rho*scvf.area() + *insideVolVars.extrusionFactor() + *vtmv(scvf.unitOuterNormal(), facetD, gradX); + if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx) && !FluidSystem::isTracerFluidSystem()) + componentFlux[phaseIdx] -= componentFlux[compIdx]; + } + } + + // on interior Dirichlet boundaries use the facet mole fraction and evaluate flux + else if (bcTypes.hasOnlyDirichlet()) + { + for (int compIdx = 0; compIdx < numComponents; compIdx++) + { + if(compIdx == FluidSystem::getMainComponent(phaseIdx)) + continue; + + // create vector with nodal mole fractions + std::vector x(element.subEntities(dim)); + for (const auto& scv : scvs(fvGeometry)) + x[scv.localDofIndex()] = elemVolVars[scv].moleFraction(phaseIdx, compIdx); + + // substitute with facet pressures for those scvs touching this facet + for (const auto& scvfJ : scvfs(fvGeometry)) + if (scvfJ.interiorBoundary() && scvfJ.facetIndexInElement() == scvf.facetIndexInElement()) + x[ fvGeometry.scv(scvfJ.insideScvIdx()).localDofIndex() ] + = problem.couplingManager().getLowDimVolVars(element, scvfJ).moleFraction(phaseIdx, compIdx); + + // evaluate gradX at integration point + Scalar rho(0.0); + Dune::FieldVector gradX(0.0); + for (const auto& scv : scvs(fvGeometry)) + { + rho += elemVolVars[scv].molarDensity(phaseIdx)*shapeValues[scv.indexInElement()][0]; + gradX.axpy(x[scv.localDofIndex()], fluxVarCache.gradN(scv.indexInElement())); + } + + auto insideD = EffDiffModel::effectiveDiffusivity(insideVolVars.porosity(), + insideVolVars.saturation(phaseIdx), + insideVolVars.diffusionCoefficient(phaseIdx, compIdx)); + + // apply matrix diffusion coefficient and return the flux + componentFlux[compIdx] = -1.0*scvf.area()*rho + *insideVolVars.extrusionFactor() + *vtmv(scvf.unitOuterNormal(), insideD, gradX); + if (BalanceEqOpts::mainComponentIsBalanced(phaseIdx) && !FluidSystem::isTracerFluidSystem()) + componentFlux[phaseIdx] -= componentFlux[compIdx]; + } + } + + // mixed boundary types are not supported + else + DUNE_THROW(Dune::NotImplemented, "Mixed boundary types are not supported"); + + // return computed fluxes + return componentFlux; + } + + // compute transmissibilities ti for analytical jacobians + template + static std::vector calculateTransmissibilities(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + const FluxVarCache& fluxVarCache) + { + DUNE_THROW(Dune::NotImplemented, "transmissibilty computation for BoxFacetCouplingFicksLaw"); + } +}; + +} // end namespace Dumux + +#endif diff --git a/dumux/multidomain/facet/box/properties.hh b/dumux/multidomain/facet/box/properties.hh index ffa796d566..c48a668fb9 100644 --- a/dumux/multidomain/facet/box/properties.hh +++ b/dumux/multidomain/facet/box/properties.hh @@ -34,6 +34,7 @@ #include #include +#include #include #include #include @@ -58,6 +59,9 @@ SET_TYPE_PROP(BoxFacetCouplingModel, BoxFacetCouplingDarcysLaw< typename GET_PROP_TYPE(TypeTag, Scalar), typename GET_PROP_TYPE(TypeTag, FVGridGeometry) >); +//! Use the box facet coupling-specific Fick's law +SET_TYPE_PROP(BoxFacetCouplingModel, MolecularDiffusionType, BoxFacetCouplingFicksLaw); + //! Per default, use the porous medium flow flux variables with the modified upwind scheme SET_TYPE_PROP(BoxFacetCouplingModel, FluxVariables, -- GitLab From 5ce7776604af1dd03296299cb74912ca6619c8f5 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Fri, 19 Oct 2018 16:36:18 +0200 Subject: [PATCH 04/12] [facet] add 1pnc test testing diffusion --- .../facet/1pnc_1pnc/CMakeLists.txt | 37 ++ .../facet/1pnc_1pnc/bulkproblem.hh | 165 ++++++ .../1pnc_1pnc/facetcoupling_1pnc1pnc.input | 22 + .../facet/1pnc_1pnc/grids/hybridgrid.msh | 240 +++++++++ .../facet/1pnc_1pnc/lowdimproblem.hh | 153 ++++++ .../facet/1pnc_1pnc/spatialparams.hh | 74 +++ .../test_facetcoupling_fv_1pnc_1pnc.cc | 313 ++++++++++++ test/multidomain/facet/CMakeLists.txt | 1 + .../facetcoupling_1pnc1pnc_bulk_box.vtu | 474 ++++++++++++++++++ .../facetcoupling_1pnc1pnc_bulk_tpfa | 203 ++++++++ .../facetcoupling_1pnc1pnc_bulk_tpfa.vtu | 203 ++++++++ .../facetcoupling_1pnc1pnc_lowdim_box | 54 ++ .../facetcoupling_1pnc1pnc_lowdim_box.vtp | 54 ++ .../facetcoupling_1pnc1pnc_lowdim_tpfa | 52 ++ .../facetcoupling_1pnc1pnc_lowdim_tpfa.vtp | 52 ++ 15 files changed, 2097 insertions(+) create mode 100644 test/multidomain/facet/1pnc_1pnc/CMakeLists.txt create mode 100644 test/multidomain/facet/1pnc_1pnc/bulkproblem.hh create mode 100644 test/multidomain/facet/1pnc_1pnc/facetcoupling_1pnc1pnc.input create mode 100644 test/multidomain/facet/1pnc_1pnc/grids/hybridgrid.msh create mode 100644 test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh create mode 100644 test/multidomain/facet/1pnc_1pnc/spatialparams.hh create mode 100644 test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc create mode 100644 test/references/facetcoupling_1pnc1pnc_bulk_box.vtu create mode 100644 test/references/facetcoupling_1pnc1pnc_bulk_tpfa create mode 100644 test/references/facetcoupling_1pnc1pnc_bulk_tpfa.vtu create mode 100644 test/references/facetcoupling_1pnc1pnc_lowdim_box create mode 100644 test/references/facetcoupling_1pnc1pnc_lowdim_box.vtp create mode 100644 test/references/facetcoupling_1pnc1pnc_lowdim_tpfa create mode 100644 test/references/facetcoupling_1pnc1pnc_lowdim_tpfa.vtp diff --git a/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt b/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt new file mode 100644 index 0000000000..ad24089106 --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt @@ -0,0 +1,37 @@ +dune_symlink_to_source_files(FILES "grids" "facetcoupling_1pnc1pnc.input") + +dune_add_test(NAME test_facet_1pnc1pnc_tpfa + CMAKE_GUARD "( dune-foamgrid_FOUND AND dune-alugrid_FOUND AND gmsh_FOUND AND HAVE_UMFPACK )" + COMPILE_DEFINITIONS BULKTYPETAG=OnePNCBulkTpfa + COMPILE_DEFINITIONS LOWDIMTYPETAG=OnePNCLowDimTpfa + SOURCES test_facetcoupling_fv_1pnc_1pnc.cc + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzy + --files ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pnc1pnc_bulk_tpfa.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_bulk_tpfa-00016.vtu + ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa.vtp + ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_lowdim_tpfa-00016.vtp + --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pnc1pnc_tpfa facetcoupling_1pnc1pnc.input -Bulk.Problem.Name 1pnc_1pnc_bulk_tpfa -LowDim.Problem.Name 1pnc_1pnc_lowdim_tpfa") + +dune_add_test(NAME test_facet_1pnc1pnc_box + CMAKE_GUARD "( dune-foamgrid_FOUND AND dune-alugrid_FOUND AND gmsh_FOUND AND HAVE_UMFPACK )" + COMPILE_DEFINITIONS BULKTYPETAG=OnePNCBulkBox + COMPILE_DEFINITIONS LOWDIMTYPETAG=OnePNCLowDimBox + SOURCES test_facetcoupling_fv_1pnc_1pnc.cc + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzy + --files ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pnc1pnc_bulk_box.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_bulk_box-00016.vtu + ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pnc1pnc_lowdim_box.vtp + ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_lowdim_box-00016.vtp + --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pnc1pnc_box facetcoupling_1pnc1pnc.input -Bulk.Problem.Name 1pnc_1pnc_bulk_box -LowDim.Problem.Name 1pnc_1pnc_lowdim_box") + +set(CMAKE_BUILD_TYPE Release) + +#install sources +install(FILES +test_facetcoupling_fv_1pnc1pnc.cc +bulkProblem.hh +lowdimproblem.hh +spatialparams.hh +DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/test/multidomain/facet/1pnc_1pnc/) diff --git a/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh b/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh new file mode 100644 index 0000000000..d870a30c59 --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh @@ -0,0 +1,165 @@ +// -*- 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 MultiDomain + * \ingroup FacetCoupling + * \brief The problem for the bulk domain in the single-phase two-components facet coupling test + */ +#ifndef DUMUX_TEST_TPFAFACETCOUPLING_ONEPNC_BULKPROBLEM_HH +#define DUMUX_TEST_TPFAFACETCOUPLING_ONEPNC_BULKPROBLEM_HH + +#include + +#include +#include + +#include +#include + +#include +#include + +#include "spatialparams.hh" + +namespace Dumux { +// forward declarations +template class OnePNCBulkProblem; + +namespace Properties { +// create the type tag nodes +NEW_TYPE_TAG(OnePNCBulk, INHERITS_FROM(OnePNC)); +NEW_TYPE_TAG(OnePNCBulkTpfa, INHERITS_FROM(OnePNCBulk, CCTpfaFacetCouplingModel)); +NEW_TYPE_TAG(OnePNCBulkBox, INHERITS_FROM(OnePNCBulk, BoxFacetCouplingModel)); + +// Set the grid type +SET_TYPE_PROP(OnePNCBulk, Grid, Dune::ALUGrid<2, 2, Dune::cube, Dune::nonconforming>); +// Set the problem type +SET_TYPE_PROP(OnePNCBulk, Problem, OnePNCBulkProblem); +// set the spatial params +SET_TYPE_PROP(OnePNCBulk, + SpatialParams, + OnePSpatialParams); +// the fluid system +SET_TYPE_PROP(OnePNCBulk, + FluidSystem, + FluidSystems::OnePAdapter< FluidSystems::H2ON2> >); + +// Define whether mole(true) or mass (false) fractions are used +SET_BOOL_PROP(OnePNCBulk, UseMoles, true); +} // end namespace Properties +/*! + * \ingroup OnePTests + * \brief Test problem for the incompressible one-phase model + * with coupling across the bulk grid facets + */ +template +class OnePNCBulkProblem : public PorousMediumFlowProblem +{ + using ParentType = PorousMediumFlowProblem; + + using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); + using PrimaryVariables = typename GridVariables::PrimaryVariables; + using Scalar = typename GridVariables::Scalar; + + using FVGridGeometry = typename GridVariables::GridGeometry; + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVGridGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVGridGeometry::SubControlVolumeFace; + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); + using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + + // copy some indices for convenience + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + enum + { + // indices of the primary variables + pressureIdx = Indices::pressureIdx, + + // component indices + H2OIdx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::H2OIdx), + N2Idx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::N2Idx), + }; + +public: + OnePNCBulkProblem(std::shared_ptr fvGridGeometry, + std::shared_ptr spatialParams, + const std::string& paramGroup = "") + : ParentType(fvGridGeometry, spatialParams, paramGroup) + , boundaryMoleFraction_(getParamFromGroup(paramGroup, "Problem.BoundaryMoleFraction")) + {} + + //! Specifies the type of boundary condition at a given position + BoundaryTypes boundaryTypesAtPos(const GlobalPosition& globalPos) const + { + BoundaryTypes values; + values.setAllNeumann(); + if ( (globalPos[0] < this->fvGridGeometry().bBoxMin()[0] + 1e-6 && globalPos[1] < 0.0) + || (globalPos[0] > this->fvGridGeometry().bBoxMax()[0] - 1e-6 && globalPos[1] > 0.0) ) + values.setAllDirichlet(); + return values; + } + + //! Specifies the type of interior boundary condition at a given position + BoundaryTypes interiorBoundaryTypes(const Element& element, const SubControlVolumeFace& scvf) const + { + BoundaryTypes values; + values.setAllNeumann(); + return values; + } + + //! evaluates the Dirichlet boundary condition for a given position + PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const + { + auto values = initialAtPos(globalPos); + if (globalPos[0] < 1e-6) + values[N2Idx] = boundaryMoleFraction_; + return values; + } + + //! evaluate the initial conditions + PrimaryVariables initialAtPos(const GlobalPosition& globalPos) const + { return PrimaryVariables({1.0e5, 0.0}); } + + //! returns the temperature in \f$\mathrm{[K]}\f$ in the domain + Scalar temperature() const + { return 283.15; /*10°*/ } + + //! sets the pointer to the coupling manager. + void setCouplingManager(std::shared_ptr cm) + { couplingManagerPtr_ = cm; } + + //! returns reference to the coupling manager. + const CouplingManager& couplingManager() const + { return *couplingManagerPtr_; } + +private: + std::shared_ptr couplingManagerPtr_; + Scalar boundaryMoleFraction_; +}; + +} // end namespace Dumux + +#endif diff --git a/test/multidomain/facet/1pnc_1pnc/facetcoupling_1pnc1pnc.input b/test/multidomain/facet/1pnc_1pnc/facetcoupling_1pnc1pnc.input new file mode 100644 index 0000000000..43bc5b8834 --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/facetcoupling_1pnc1pnc.input @@ -0,0 +1,22 @@ +[TimeLoop] +TEnd = 5e7 +DtInitial = 10000 + +[Problem] +UseInteriorDirichletBCs = false +EnableGravity = false +FractureAperture = 1e-3 +BoundaryMoleFraction = 1e-4 + +[Grid] +File = ./grids/hybridgrid.msh + +[Bulk] +Problem.Name = 1pnc_1pnc_bulk +SpatialParams.Permeability = 1e-12 +SpatialParams.Porosity = 0.2 + +[LowDim] +Problem.Name = 1pnc_1pnc_lowdim +SpatialParams.Permeability = 1e-8 +SpatialParams.Porosity = 0.8 diff --git a/test/multidomain/facet/1pnc_1pnc/grids/hybridgrid.msh b/test/multidomain/facet/1pnc_1pnc/grids/hybridgrid.msh new file mode 100644 index 0000000000..0d6912868b --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/grids/hybridgrid.msh @@ -0,0 +1,240 @@ +$MeshFormat +2.2 0 8 +$EndMeshFormat +$Nodes +121 +1 0.5 -0.5 0 +2 0.5 0 0 +3 0.5 0.5 0 +4 -0.5 0.5 0 +5 -0.5 0 0 +6 -0.5 -0.5 0 +7 -0.5 0.4 0 +8 -0.5 0.3000000000006937 0 +9 -0.5 0.2000000000008325 0 +10 -0.5 0.1000000000004163 0 +11 -0.4000000000002772 0 0 +12 -0.3000000000005547 0 0 +13 -0.2000000000008318 0 0 +14 -0.1000000000011089 0 0 +15 -1.375122238300719e-12 0 0 +16 0.09999999999889131 0 0 +17 0.1999999999991684 0 0 +18 0.2999999999994456 0 0 +19 0.3999999999997228 0 0 +20 0.5 0.09999999999977846 0 +21 0.5 0.1999999999994866 0 +22 0.5 0.2999999999994725 0 +23 0.5 0.3999999999997362 0 +24 0.4000000000002772 0.5 0 +25 0.3000000000005547 0.5 0 +26 0.2000000000008318 0.5 0 +27 0.1000000000011089 0.5 0 +28 1.375122238300719e-12 0.5 0 +29 -0.09999999999889131 0.5 0 +30 -0.1999999999991684 0.5 0 +31 -0.2999999999994456 0.5 0 +32 -0.3999999999997228 0.5 0 +33 -0.5 -0.09999999999977846 0 +34 -0.5 -0.1999999999994866 0 +35 -0.5 -0.2999999999994725 0 +36 -0.5 -0.3999999999997362 0 +37 -0.4000000000002772 -0.5 0 +38 -0.3000000000005547 -0.5 0 +39 -0.2000000000008318 -0.5 0 +40 -0.1000000000011089 -0.5 0 +41 -1.375122238300719e-12 -0.5 0 +42 0.09999999999889131 -0.5 0 +43 0.1999999999991684 -0.5 0 +44 0.2999999999994456 -0.5 0 +45 0.3999999999997228 -0.5 0 +46 0.5 -0.4 0 +47 0.5 -0.3000000000006937 0 +48 0.5 -0.2000000000008325 0 +49 0.5 -0.1000000000004163 0 +50 0.3999999999997228 -0.3999999999999737 0 +51 0.2999999999994456 -0.3999999999999473 0 +52 0.1999999999991684 -0.3999999999999208 0 +53 0.09999999999889134 -0.3999999999998946 0 +54 -1.375122238300719e-12 -0.3999999999998681 0 +55 -0.1000000000011089 -0.3999999999998417 0 +56 -0.2000000000008318 -0.3999999999998154 0 +57 -0.3000000000005547 -0.3999999999997891 0 +58 -0.4000000000002772 -0.3999999999997627 0 +59 0.3999999999997228 -0.3000000000005716 0 +60 0.2999999999994456 -0.3000000000004495 0 +61 0.1999999999991684 -0.3000000000003273 0 +62 0.09999999999889131 -0.3000000000002052 0 +63 -1.375122238300719e-12 -0.3000000000000831 0 +64 -0.1000000000011089 -0.299999999999961 0 +65 -0.2000000000008318 -0.299999999999839 0 +66 -0.3000000000005547 -0.2999999999997167 0 +67 -0.4000000000002772 -0.2999999999995946 0 +68 0.3999999999997228 -0.200000000000698 0 +69 0.2999999999994456 -0.2000000000005633 0 +70 0.1999999999991684 -0.2000000000004287 0 +71 0.09999999999889131 -0.2000000000002942 0 +72 -1.375122238300719e-12 -0.2000000000001595 0 +73 -0.1000000000011089 -0.2000000000000249 0 +74 -0.2000000000008318 -0.1999999999998904 0 +75 -0.3000000000005547 -0.1999999999997557 0 +76 -0.4000000000002772 -0.1999999999996211 0 +77 0.3999999999997228 -0.1000000000003525 0 +78 0.2999999999994456 -0.1000000000002887 0 +79 0.1999999999991684 -0.1000000000002249 0 +80 0.09999999999889131 -0.1000000000001611 0 +81 -1.375108360512911e-12 -0.1000000000000973 0 +82 -0.1000000000011089 -0.1000000000000336 0 +83 -0.2000000000008319 -0.09999999999996981 0 +84 -0.3000000000005547 -0.099999999999906 0 +85 -0.4000000000002772 -0.09999999999984224 0 +86 0.3999999999998338 0.09999999999984224 0 +87 0.2999999999996674 0.09999999999990603 0 +88 0.1999999999995011 0.09999999999996978 0 +89 0.09999999999933482 0.1000000000000336 0 +90 -8.250899963258007e-13 0.1000000000000974 0 +91 -0.1000000000006654 0.1000000000001612 0 +92 -0.2000000000004992 0.1000000000002249 0 +93 -0.3000000000003329 0.1000000000002887 0 +94 -0.4000000000001663 0.1000000000003525 0 +95 0.3999999999999445 0.1999999999996212 0 +96 0.2999999999998891 0.1999999999997557 0 +97 0.1999999999998337 0.1999999999998903 0 +98 0.09999999999977838 0.2000000000000249 0 +99 -2.750299987752669e-13 0.2000000000001595 0 +100 -0.1000000000002219 0.2000000000002941 0 +101 -0.2000000000001665 0.2000000000004288 0 +102 -0.3000000000001111 0.2000000000005633 0 +103 -0.4000000000000554 0.2000000000006979 0 +104 0.4000000000000555 0.2999999999995946 0 +105 0.3000000000001111 0.2999999999997167 0 +106 0.2000000000001664 0.2999999999998389 0 +107 0.1000000000002219 0.299999999999961 0 +108 2.750022431996513e-13 0.3000000000000831 0 +109 -0.09999999999977835 0.3000000000002053 0 +110 -0.1999999999998338 0.3000000000003273 0 +111 -0.2999999999998892 0.3000000000004495 0 +112 -0.3999999999999446 0.3000000000005715 0 +113 0.4000000000001663 0.3999999999997627 0 +114 0.3000000000003328 0.3999999999997889 0 +115 0.2000000000004992 0.3999999999998153 0 +116 0.1000000000006654 0.3999999999998417 0 +117 8.250483629623773e-13 0.3999999999998681 0 +118 -0.09999999999933486 0.3999999999998946 0 +119 -0.1999999999995011 0.399999999999921 0 +120 -0.2999999999996674 0.3999999999999472 0 +121 -0.3999999999998337 0.3999999999999736 0 +$EndNodes +$Elements +110 +1 1 2 1 2 5 11 +2 1 2 1 2 11 12 +3 1 2 1 2 12 13 +4 1 2 1 2 13 14 +5 1 2 1 2 14 15 +6 1 2 1 2 15 16 +7 1 2 1 2 16 17 +8 1 2 1 2 17 18 +9 1 2 1 2 18 19 +10 1 2 1 2 19 2 +11 3 2 1 9 1 45 50 46 +12 3 2 1 9 45 44 51 50 +13 3 2 1 9 44 43 52 51 +14 3 2 1 9 43 42 53 52 +15 3 2 1 9 42 41 54 53 +16 3 2 1 9 41 40 55 54 +17 3 2 1 9 40 39 56 55 +18 3 2 1 9 39 38 57 56 +19 3 2 1 9 38 37 58 57 +20 3 2 1 9 37 6 36 58 +21 3 2 1 9 46 50 59 47 +22 3 2 1 9 50 51 60 59 +23 3 2 1 9 51 52 61 60 +24 3 2 1 9 52 53 62 61 +25 3 2 1 9 53 54 63 62 +26 3 2 1 9 54 55 64 63 +27 3 2 1 9 55 56 65 64 +28 3 2 1 9 56 57 66 65 +29 3 2 1 9 57 58 67 66 +30 3 2 1 9 58 36 35 67 +31 3 2 1 9 47 59 68 48 +32 3 2 1 9 59 60 69 68 +33 3 2 1 9 60 61 70 69 +34 3 2 1 9 61 62 71 70 +35 3 2 1 9 62 63 72 71 +36 3 2 1 9 63 64 73 72 +37 3 2 1 9 64 65 74 73 +38 3 2 1 9 65 66 75 74 +39 3 2 1 9 66 67 76 75 +40 3 2 1 9 67 35 34 76 +41 3 2 1 9 48 68 77 49 +42 3 2 1 9 68 69 78 77 +43 3 2 1 9 69 70 79 78 +44 3 2 1 9 70 71 80 79 +45 3 2 1 9 71 72 81 80 +46 3 2 1 9 72 73 82 81 +47 3 2 1 9 73 74 83 82 +48 3 2 1 9 74 75 84 83 +49 3 2 1 9 75 76 85 84 +50 3 2 1 9 76 34 33 85 +51 3 2 1 9 49 77 19 2 +52 3 2 1 9 77 78 18 19 +53 3 2 1 9 78 79 17 18 +54 3 2 1 9 79 80 16 17 +55 3 2 1 9 80 81 15 16 +56 3 2 1 9 81 82 14 15 +57 3 2 1 9 82 83 13 14 +58 3 2 1 9 83 84 12 13 +59 3 2 1 9 84 85 11 12 +60 3 2 1 9 85 33 5 11 +61 3 2 1 11 2 20 86 19 +62 3 2 1 11 19 86 87 18 +63 3 2 1 11 18 87 88 17 +64 3 2 1 11 17 88 89 16 +65 3 2 1 11 16 89 90 15 +66 3 2 1 11 15 90 91 14 +67 3 2 1 11 14 91 92 13 +68 3 2 1 11 13 92 93 12 +69 3 2 1 11 12 93 94 11 +70 3 2 1 11 11 94 10 5 +71 3 2 1 11 20 21 95 86 +72 3 2 1 11 86 95 96 87 +73 3 2 1 11 87 96 97 88 +74 3 2 1 11 88 97 98 89 +75 3 2 1 11 89 98 99 90 +76 3 2 1 11 90 99 100 91 +77 3 2 1 11 91 100 101 92 +78 3 2 1 11 92 101 102 93 +79 3 2 1 11 93 102 103 94 +80 3 2 1 11 94 103 9 10 +81 3 2 1 11 21 22 104 95 +82 3 2 1 11 95 104 105 96 +83 3 2 1 11 96 105 106 97 +84 3 2 1 11 97 106 107 98 +85 3 2 1 11 98 107 108 99 +86 3 2 1 11 99 108 109 100 +87 3 2 1 11 100 109 110 101 +88 3 2 1 11 101 110 111 102 +89 3 2 1 11 102 111 112 103 +90 3 2 1 11 103 112 8 9 +91 3 2 1 11 22 23 113 104 +92 3 2 1 11 104 113 114 105 +93 3 2 1 11 105 114 115 106 +94 3 2 1 11 106 115 116 107 +95 3 2 1 11 107 116 117 108 +96 3 2 1 11 108 117 118 109 +97 3 2 1 11 109 118 119 110 +98 3 2 1 11 110 119 120 111 +99 3 2 1 11 111 120 121 112 +100 3 2 1 11 112 121 7 8 +101 3 2 1 11 23 3 24 113 +102 3 2 1 11 113 24 25 114 +103 3 2 1 11 114 25 26 115 +104 3 2 1 11 115 26 27 116 +105 3 2 1 11 116 27 28 117 +106 3 2 1 11 117 28 29 118 +107 3 2 1 11 118 29 30 119 +108 3 2 1 11 119 30 31 120 +109 3 2 1 11 120 31 32 121 +110 3 2 1 11 121 32 4 7 +$EndElements diff --git a/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh b/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh new file mode 100644 index 0000000000..0391d4bbc9 --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh @@ -0,0 +1,153 @@ +// -*- 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 MultiDomain + * \ingroup FacetCoupling + * \brief The problem for the lower-dimensional domain in the single-phase two-components facet coupling test + */ +#ifndef DUMUX_TEST_TPFAFACETCOUPLING_ONEPNC_LOWDIMPROBLEM_HH +#define DUMUX_TEST_TPFAFACETCOUPLING_ONEPNC_LOWDIMPROBLEM_HH + +#include + +#include +#include + +#include +#include + +#include +#include + +#include "spatialparams.hh" + +namespace Dumux { +// forward declarations +template class OnePNCLowDimProblem; + +namespace Properties { +// create the type tag nodes +NEW_TYPE_TAG(OnePNCLowDim, INHERITS_FROM(OnePNC)); +NEW_TYPE_TAG(OnePNCLowDimTpfa, INHERITS_FROM(CCTpfaModel, OnePNCLowDim)); +NEW_TYPE_TAG(OnePNCLowDimBox, INHERITS_FROM(BoxModel, OnePNCLowDim)); + +// Set the grid type +SET_TYPE_PROP(OnePNCLowDim, Grid, Dune::FoamGrid<1, 2>); +// Set the problem type +SET_TYPE_PROP(OnePNCLowDim, Problem, OnePNCLowDimProblem); +// set the spatial params +SET_TYPE_PROP(OnePNCLowDim, SpatialParams, OnePSpatialParams< typename GET_PROP_TYPE(TypeTag, FVGridGeometry), + typename GET_PROP_TYPE(TypeTag, Scalar) >); + +// the fluid system +SET_TYPE_PROP(OnePNCLowDim, + FluidSystem, + FluidSystems::OnePAdapter< FluidSystems::H2ON2> >); + +// Define whether mole(true) or mass (false) fractions are used +SET_BOOL_PROP(OnePNCLowDim, UseMoles, true); +} // end namespace Properties + +/*! + * \ingroup OnePTests + * \brief The lower-dimensional test problem for the incompressible + * one-phase model with coupling across the bulk grid facets + */ +template +class OnePNCLowDimProblem : public PorousMediumFlowProblem +{ + using ParentType = PorousMediumFlowProblem; + + using GridVariables = typename GET_PROP_TYPE(TypeTag, GridVariables); + using ElementVolumeVariables = typename GridVariables::GridVolumeVariables::LocalView; + using PrimaryVariables = typename GridVariables::PrimaryVariables; + using Scalar = typename GridVariables::Scalar; + + using FVGridGeometry = typename GridVariables::GridGeometry; + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVGridGeometry::SubControlVolume; + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + + using BoundaryTypes = typename GET_PROP_TYPE(TypeTag, BoundaryTypes); + using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); + using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + +public: + OnePNCLowDimProblem(std::shared_ptr fvGridGeometry, + std::shared_ptr spatialParams, + const std::string& paramGroup = "") + : ParentType(fvGridGeometry, spatialParams, paramGroup) + , aperture_(getParam("Problem.FractureAperture")) + {} + + //! Specifies the type of boundary condition at a given position + BoundaryTypes boundaryTypesAtPos(const GlobalPosition& globalPos) const + { + BoundaryTypes values; + values.setAllNeumann(); + return values; + } + + //! Evaluate the source term at a given position + NumEqVector source(const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolume& scv) const + { + // evaluate sources from bulk domain + auto source = couplingManagerPtr_->evalSourcesFromBulk(element, fvGeometry, elemVolVars, scv); + source /= scv.volume()*elemVolVars[scv].extrusionFactor(); + return source; + } + + //! evaluates the Dirichlet boundary condition for a given position + PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const + { return PrimaryVariables(initialAtPos(globalPos)); } + + //! Set the aperture as extrusion factor. + Scalar extrusionFactorAtPos(const GlobalPosition& globalPos) const + { return aperture_; } + + //! evaluate the initial conditions + PrimaryVariables initialAtPos(const GlobalPosition& globalPos) const + { return PrimaryVariables({1.0e5, 0.0}); } + + //! returns the temperature in \f$\mathrm{[K]}\f$ in the domain + Scalar temperature() const + { return 283.15; /*10°*/ } + + //! sets the pointer to the coupling manager. + void setCouplingManager(std::shared_ptr cm) + { couplingManagerPtr_ = cm; } + + //! returns reference to the coupling manager. + const CouplingManager& couplingManager() const + { return *couplingManagerPtr_; } + +private: + std::shared_ptr couplingManagerPtr_; + Scalar aperture_; +}; + +} // end namespace Dumux + +#endif diff --git a/test/multidomain/facet/1pnc_1pnc/spatialparams.hh b/test/multidomain/facet/1pnc_1pnc/spatialparams.hh new file mode 100644 index 0000000000..958afa0182 --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/spatialparams.hh @@ -0,0 +1,74 @@ +// -*- 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 OnePNCTests + * \brief The spatial params the one-phase two-components facet coupling test + */ +#ifndef DUMUX_TEST_TPFAFACETCOUPLING_ONEPNC_SPATIALPARAMS_HH +#define DUMUX_TEST_TPFAFACETCOUPLING_ONEPNC_SPATIALPARAMS_HH + +#include + +namespace Dumux +{ + +/*! + * \ingroup OnePTests + * \brief The spatial params the single-phase two-components facet coupling test + */ +template< class FVGridGeometry, class Scalar > +class OnePSpatialParams +: public FVSpatialParamsOneP< FVGridGeometry, Scalar, OnePSpatialParams > +{ + using ThisType = OnePSpatialParams< FVGridGeometry, Scalar >; + using ParentType = FVSpatialParamsOneP< FVGridGeometry, Scalar, ThisType >; + + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + +public: + //! export the type used for permeabilities + using PermeabilityType = Scalar; + + //! the constructor + OnePSpatialParams(std::shared_ptr fvGridGeometry, const std::string& paramGroup = "") + : ParentType(fvGridGeometry) + { + permeability_ = getParamFromGroup(paramGroup, "SpatialParams.Permeability"); + porosity_ = getParamFromGroup(paramGroup, "SpatialParams.Porosity"); + } + + //! Function for defining the (intrinsic) permeability \f$[m^2]\f$. + PermeabilityType permeabilityAtPos(const GlobalPosition& globalPos) const + { return permeability_; } + + //! Return the porosity + Scalar porosityAtPos(const GlobalPosition& globalPos) const + { return porosity_; } + +private: + PermeabilityType permeability_; + Scalar porosity_; +}; + +} // end namespace Dumux + +#endif diff --git a/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc b/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc new file mode 100644 index 0000000000..54e84bd271 --- /dev/null +++ b/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc @@ -0,0 +1,313 @@ +// -*- 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 test for the one-phase two-components facet coupling model + */ +#include + +#include + +#include +#include + +#include "bulkproblem.hh" +#include "lowdimproblem.hh" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include + +// obtain/define some types to be used below in the property definitions and in main +template< class BulkTypeTag, class LowDimTypeTag > +class TestTraits +{ + using BulkFVGridGeometry = typename GET_PROP_TYPE(BulkTypeTag, FVGridGeometry); + using LowDimFVGridGeometry = typename GET_PROP_TYPE(LowDimTypeTag, FVGridGeometry); +public: + using MDTraits = Dumux::MultiDomainTraits; + using CouplingMapper = Dumux::FacetCouplingMapper; + using CouplingManager = Dumux::FacetCouplingManager; +}; + +// set the coupling manager property in the sub-problems for both box and tpfa +namespace Dumux { +namespace Properties { + +// set cm property for the box test +using BoxTraits = TestTraits; +SET_TYPE_PROP(OnePNCBulkBox, CouplingManager, typename BoxTraits::CouplingManager); +SET_TYPE_PROP(OnePNCLowDimBox, CouplingManager, typename BoxTraits::CouplingManager); + +// set cm property for the tpfa test +using TpfaTraits = TestTraits; +SET_TYPE_PROP(OnePNCBulkTpfa, CouplingManager, typename TpfaTraits::CouplingManager); +SET_TYPE_PROP(OnePNCLowDimTpfa, CouplingManager, typename TpfaTraits::CouplingManager); + +} // end namespace Properties +} // end namespace Dumux + +// updates the finite volume grid geometry. This is necessary as the finite volume +// grid geometry for the box scheme with facet coupling requires additional data for +// the update. The reason is that we have to create additional faces on interior +// boundaries, which wouldn't be created in the standard scheme. +template< class FVGridGeometry, + class GridManager, + class LowDimGridView, + std::enable_if_t = 0 > +void updateBulkFVGridGeometry(FVGridGeometry& fvGridGeometry, + const GridManager& gridManager, + const LowDimGridView& lowDimGridView) +{ + using BulkFacetGridAdapter = Dumux::CodimOneGridAdapter; + BulkFacetGridAdapter facetGridAdapter(gridManager.getEmbeddings()); + fvGridGeometry.update(lowDimGridView, facetGridAdapter); +} + +// specialization for cell-centered schemes +template< class FVGridGeometry, + class GridManager, + class LowDimGridView, + std::enable_if_t = 0 > +void updateBulkFVGridGeometry(FVGridGeometry& fvGridGeometry, + const GridManager& gridManager, + const LowDimGridView& lowDimGridView) +{ + fvGridGeometry.update(); +} + +// main program +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); + + // initialize parameter tree + Parameters::init(argc, argv); + + ////////////////////////////////////////////////////// + // try to create the grids (from the given grid file) + ////////////////////////////////////////////////////// + using BulkProblemTypeTag = TTAG(BULKTYPETAG); + using LowDimProblemTypeTag = TTAG(LOWDIMTYPETAG); + using BulkGrid = typename GET_PROP_TYPE(BulkProblemTypeTag, Grid); + using LowDimGrid = typename GET_PROP_TYPE(LowDimProblemTypeTag, Grid); + + using GridManager = FacetCouplingGridManager; + GridManager gridManager; + gridManager.init(); + gridManager.loadBalance(); + + //////////////////////////////////////////////////////////// + // run stationary, non-linear problem on this grid + //////////////////////////////////////////////////////////// + + // we compute on the leaf grid views + const auto& bulkGridView = gridManager.template grid<0>().leafGridView(); + const auto& lowDimGridView = gridManager.template grid<1>().leafGridView(); + + // create the finite volume grid geometries + using BulkFVGridGeometry = typename GET_PROP_TYPE(BulkProblemTypeTag, FVGridGeometry); + using LowDimFVGridGeometry = typename GET_PROP_TYPE(LowDimProblemTypeTag, FVGridGeometry); + auto bulkFvGridGeometry = std::make_shared(bulkGridView); + auto lowDimFvGridGeometry = std::make_shared(lowDimGridView); + updateBulkFVGridGeometry(*bulkFvGridGeometry, gridManager, lowDimGridView); + lowDimFvGridGeometry->update(); + + // the problems (boundary conditions) + using BulkProblem = typename GET_PROP_TYPE(BulkProblemTypeTag, Problem); + using LowDimProblem = typename GET_PROP_TYPE(LowDimProblemTypeTag, Problem); + auto bulkSpatialParams = std::make_shared(bulkFvGridGeometry, "Bulk"); + auto bulkProblem = std::make_shared(bulkFvGridGeometry, bulkSpatialParams, "Bulk"); + auto lowDimSpatialParams = std::make_shared(lowDimFvGridGeometry, "LowDim"); + auto lowDimProblem = std::make_shared(lowDimFvGridGeometry, lowDimSpatialParams, "LowDim"); + + // the solution vector + using TestTraits = TestTraits; + using MDTraits = typename TestTraits::MDTraits; + using SolutionVector = typename MDTraits::SolutionVector; + SolutionVector x, xOld; + + static const auto bulkId = typename MDTraits::template DomainIdx<0>(); + static const auto lowDimId = typename MDTraits::template DomainIdx<1>(); + x[bulkId].resize(bulkFvGridGeometry->numDofs()); + x[lowDimId].resize(lowDimFvGridGeometry->numDofs()); + bulkProblem->applyInitialSolution(x[bulkId]); + lowDimProblem->applyInitialSolution(x[lowDimId]); + xOld = x; + + // the coupling mapper + auto couplingMapper = std::make_shared(); + couplingMapper->update(*bulkFvGridGeometry, *lowDimFvGridGeometry, gridManager.getEmbeddings()); + + // the coupling manager + using CouplingManager = typename TestTraits::CouplingManager; + auto couplingManager = std::make_shared(); + couplingManager->init(bulkProblem, lowDimProblem, couplingMapper, x); + + // set coupling manager pointer in sub-problems + bulkProblem->setCouplingManager(couplingManager); + lowDimProblem->setCouplingManager(couplingManager); + + // the grid variables + using BulkGridVariables = typename GET_PROP_TYPE(BulkProblemTypeTag, GridVariables); + using LowDimGridVariables = typename GET_PROP_TYPE(LowDimProblemTypeTag, GridVariables); + auto bulkGridVariables = std::make_shared(bulkProblem, bulkFvGridGeometry); + auto lowDimGridVariables = std::make_shared(lowDimProblem, lowDimFvGridGeometry); + bulkGridVariables->init(x[bulkId]); + lowDimGridVariables->init(x[lowDimId]); + + // intialize the vtk output module + const auto bulkDM = BulkFVGridGeometry::discMethod == DiscretizationMethod::box ? Dune::VTK::nonconforming : Dune::VTK::conforming; + using BulkSolutionVector = std::decay_t; + using LowDimSolutionVector = std::decay_t; + VtkOutputModule bulkVtkWriter(*bulkGridVariables, x[bulkId], bulkProblem->name(), "Bulk", bulkDM); + VtkOutputModule lowDimVtkWriter(*lowDimGridVariables, x[lowDimId], lowDimProblem->name(), "LowDim"); + + // container for the output of the exact solutions + std::vector bulkExact; + std::vector lowDimExact; + + // Add model specific output fields + using BulkVtkOutputFields = typename GET_PROP_TYPE(BulkProblemTypeTag, VtkOutputFields); + using LowDimVtkOutputFields = typename GET_PROP_TYPE(LowDimProblemTypeTag, VtkOutputFields); + BulkVtkOutputFields::init(bulkVtkWriter); + LowDimVtkOutputFields::init(lowDimVtkWriter); + + // write initial solution + bulkVtkWriter.write(0.0); + lowDimVtkWriter.write(0.0); + + // instantiate time loop + using BulkScalar = typename GET_PROP_TYPE(BulkProblemTypeTag, Scalar); + auto timeLoop = std::make_shared>( 0.0, + getParam("TimeLoop.DtInitial"), + getParam("TimeLoop.TEnd")); + timeLoop->setMaxTimeStepSize(getParam("TimeLoop.MaxTimeStepSize")); + + // the assembler + using Assembler = MultiDomainFVAssembler; + auto assembler = std::make_shared( std::make_tuple(bulkProblem, lowDimProblem), + std::make_tuple(bulkFvGridGeometry, lowDimFvGridGeometry), + std::make_tuple(bulkGridVariables, lowDimGridVariables), + couplingManager, timeLoop); + + // the linear solver + using LinearSolver = UMFPackBackend; + auto linearSolver = std::make_shared(); + + // the non-linear solver + using NewtonSolver = Dumux::MultiDomainNewtonSolver; + auto newtonSolver = std::make_shared(assembler, linearSolver, couplingManager); + + // time loop + timeLoop->start(); do + { + // set previous solution for storage evaluations + assembler->setPreviousSolution(xOld); + + // linearize & solve + newtonSolver->solve(x, *timeLoop); + + // make the new solution the old solution + xOld = x; + bulkGridVariables->advanceTimeStep(); + lowDimGridVariables->advanceTimeStep(); + + // advance to the time loop to the next step + timeLoop->advanceTimeStep(); + + // write vtk output + bulkVtkWriter.write(timeLoop->time()); + lowDimVtkWriter.write(timeLoop->time()); + + // report statistics of this time step + timeLoop->reportTimeStep(); + + // set new dt as suggested by the Newton solver + timeLoop->setTimeStepSize(newtonSolver->suggestTimeStepSize(timeLoop->timeStepSize())); + + } while (!timeLoop->finished()); + + // output some Newton statistics + newtonSolver->report(); + + // print final time loop statistics + timeLoop->finalize(); + + //////////////////////////////////////////////////////////// + // finalize, print dumux message to say goodbye + //////////////////////////////////////////////////////////// + if (mpiHelper.rank() == 0) + DumuxMessage::print(/*firstCall=*/false); + + return 0; +} +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/test/multidomain/facet/CMakeLists.txt b/test/multidomain/facet/CMakeLists.txt index b98e0bb021..aa6239b67f 100644 --- a/test/multidomain/facet/CMakeLists.txt +++ b/test/multidomain/facet/CMakeLists.txt @@ -1,4 +1,5 @@ add_subdirectory(1p_1p) +add_subdirectory(1pnc_1pnc) dune_symlink_to_source_files(FILES "grid.msh" "grid2.msh" "test_gridmanager.input" "test_vertexmapper.input" "test_couplingmapper_boundary.input" "2d_grid.msh" "3d_grid.msh") diff --git a/test/references/facetcoupling_1pnc1pnc_bulk_box.vtu b/test/references/facetcoupling_1pnc1pnc_bulk_box.vtu new file mode 100644 index 0000000000..7cda7017f4 --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_bulk_box.vtu @@ -0,0 +1,474 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 1.45519e-11 0 0 + 0 0 0 1.45519e-11 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 -1.45519e-11 0 0 0 0 0 -1.45519e-11 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 1.45519e-11 0 0 + 0 0 0 0 1.45519e-11 1.45519e-11 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 1.45519e-11 0 0 + 0 0 0 1.45519e-11 1.45519e-11 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 1.45519e-11 0 + 0 0 0 0 0 -1.45519e-11 0 0 -1.45519e-11 -1.45519e-11 0 0 + 0 -1.45519e-11 0 0 0 0 0 -1.45519e-11 -1.45519e-11 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 -1.45519e-11 0 0 0 0 0 -1.45519e-11 0 0 0 0 + 0 0 -1.45519e-11 0 0 0 0 0 1.45519e-11 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 -1.45519e-11 0 0 -1.45519e-11 + 0 0 -1.45519e-11 -1.45519e-11 0 0 0 0 0 0 -1.45519e-11 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + 0.999927 0.999927 0.9999 0.9999 0.99995 0.99995 0.999927 0.999927 0.999968 0.999968 0.99995 0.99995 + 0.999927 0.999928 0.9999 0.9999 0.99995 0.999952 0.999927 0.999928 0.999968 0.999969 0.99995 0.999952 + 0.99998 0.99998 0.999968 0.999968 0.999988 0.999988 0.99998 0.99998 0.99998 0.999981 0.999968 0.999969 + 0.999988 0.999989 0.99998 0.999981 0.999989 0.99999 0.999981 0.999983 0.999928 0.999931 0.9999 0.9999 + 0.999931 0.999942 0.9999 0.9999 0.999952 0.999956 0.999928 0.999931 0.999969 0.999972 0.999952 0.999956 + 0.999956 0.999963 0.999931 0.999942 0.999972 0.999977 0.999956 0.999963 0.999942 0.99996 0.9999 0.999953 + 0.999963 0.999972 0.999942 0.99996 0.999977 0.999982 0.999963 0.999972 0.999981 0.999983 0.999969 0.999972 + 0.999983 0.999986 0.999972 0.999977 0.99999 0.999992 0.999983 0.999986 0.999986 0.999989 0.999977 0.999982 + 0.999992 0.999993 0.999986 0.999989 0.999993 0.999993 0.999988 0.999988 0.999996 0.999996 0.999993 0.999993 + 0.999998 0.999998 0.999996 0.999996 0.999993 0.999994 0.999988 0.999989 0.999994 0.999994 0.999989 0.99999 + 0.999996 0.999996 0.999993 0.999994 0.999998 0.999998 0.999996 0.999996 0.999996 0.999997 0.999994 0.999994 + 0.999998 0.999998 0.999996 0.999997 0.999999 0.999999 0.999998 0.999998 0.999999 0.999999 0.999999 0.999999 + 0.999999 0.999999 0.999998 0.999998 0.999999 0.999999 0.999998 0.999998 0.999999 0.999999 0.999999 0.999999 + 0.999999 0.999999 0.999999 0.999999 0.999994 0.999995 0.99999 0.999992 0.999997 0.999997 0.999994 0.999995 + 0.999998 0.999998 0.999997 0.999997 0.999995 0.999996 0.999992 0.999993 0.999997 0.999998 0.999995 0.999996 + 0.999998 0.999999 0.999997 0.999998 0.999999 0.999999 0.999998 0.999998 0.999999 0.999999 0.999999 0.999999 + 0.999999 0.999999 0.999998 0.999999 0.999999 0.999999 0.999999 0.999999 0.99996 0.999976 0.999953 0.999974 + 0.999972 0.999982 0.99996 0.999976 0.999982 0.999987 0.999972 0.999982 0.999976 0.999986 0.999974 0.999985 + 0.999982 0.999989 0.999976 0.999986 0.999987 0.999992 0.999982 0.999989 0.999989 0.999992 0.999982 0.999987 + 0.999993 0.999995 0.999989 0.999992 0.999992 0.999994 0.999987 0.999992 0.999995 0.999996 0.999992 0.999994 + 0.999986 0.999992 0.999985 0.999991 0.999992 0.999995 0.999991 0.999994 0.999989 0.999993 0.999986 0.999992 + 0.999992 0.999995 0.999989 0.999993 0.999993 0.999995 0.999992 0.999995 0.999995 0.999995 0.999994 0.999995 + 0.999995 0.999996 0.999995 0.999995 0.999994 0.999996 0.999992 0.999995 0.999995 0.999996 0.999993 0.999995 + 0.999996 0.999997 0.999995 0.999996 0.999996 0.999997 0.999994 0.999996 0.999997 0.999998 0.999996 0.999997 + 0.999996 0.999997 0.999995 0.999996 0.999997 0.999998 0.999996 0.999997 0.999998 0.999998 0.999997 0.999998 + 0.999996 0.999997 0.999993 0.999995 0.999998 0.999998 0.999996 0.999997 0.999999 0.999999 0.999998 0.999998 + 0.999997 0.999998 0.999995 0.999996 0.999998 0.999999 0.999997 0.999998 0.999999 0.999999 0.999998 0.999999 + 0.999999 0.999999 0.999998 0.999998 0.999999 1 0.999999 0.999999 0.999999 1 0.999999 1 + 1 1 0.999999 0.999999 0.999999 0.999999 0.999999 0.999999 1 1 0.999999 0.999999 + 1 1 1 1 1 1 1 1 0.999998 0.999998 0.999996 0.999997 + 0.999998 0.999999 0.999997 0.999998 0.999999 0.999999 0.999998 0.999999 0.999999 0.999999 0.999998 0.999998 + 0.999999 0.999999 0.999999 0.999999 0.999999 1 0.999999 0.999999 1 1 0.999999 1 + 1 1 1 1 1 1 0.999999 0.999999 1 1 1 1 + 1 1 1 1 + + + 7.34532e-05 7.31383e-05 0.0001 0.0001 5.03245e-05 4.98574e-05 7.34532e-05 7.31383e-05 3.24494e-05 3.20094e-05 5.03245e-05 4.98574e-05 + 7.31383e-05 7.19372e-05 0.0001 0.0001 4.98574e-05 4.8182e-05 7.31383e-05 7.19372e-05 3.20094e-05 3.0544e-05 4.98574e-05 4.8182e-05 + 1.99056e-05 1.95796e-05 3.24494e-05 3.20094e-05 1.17391e-05 1.15292e-05 1.99056e-05 1.95796e-05 1.95796e-05 1.85549e-05 3.20094e-05 3.0544e-05 + 1.15292e-05 1.08913e-05 1.95796e-05 1.85549e-05 1.08913e-05 9.82511e-06 1.85549e-05 1.67524e-05 7.19372e-05 6.86807e-05 0.0001 0.0001 + 6.86807e-05 5.83307e-05 0.0001 0.0001 4.8182e-05 4.43465e-05 7.19372e-05 6.86807e-05 3.0544e-05 2.77167e-05 4.8182e-05 4.43465e-05 + 4.43465e-05 3.72821e-05 6.86807e-05 5.83307e-05 2.77167e-05 2.33767e-05 4.43465e-05 3.72821e-05 5.83307e-05 4.0096e-05 0.0001 4.68836e-05 + 3.72821e-05 2.77013e-05 5.83307e-05 4.0096e-05 2.33767e-05 1.80287e-05 3.72821e-05 2.77013e-05 1.85549e-05 1.67524e-05 3.0544e-05 2.77167e-05 + 1.67524e-05 1.4214e-05 2.77167e-05 2.33767e-05 9.82511e-06 8.3921e-06 1.67524e-05 1.4214e-05 1.4214e-05 1.12278e-05 2.33767e-05 1.80287e-05 + 8.3921e-06 6.74978e-06 1.4214e-05 1.12278e-05 6.72451e-06 6.59992e-06 1.17391e-05 1.15292e-05 3.7946e-06 3.72358e-06 6.72451e-06 6.59992e-06 + 2.17664e-06 2.13578e-06 3.7946e-06 3.72358e-06 6.59992e-06 6.22842e-06 1.15292e-05 1.08913e-05 6.22842e-06 5.6252e-06 1.08913e-05 9.82511e-06 + 3.72358e-06 3.5139e-06 6.59992e-06 6.22842e-06 2.13578e-06 2.01539e-06 3.72358e-06 3.5139e-06 3.5139e-06 3.17837e-06 6.22842e-06 5.6252e-06 + 2.01539e-06 1.82253e-06 3.5139e-06 3.17837e-06 1.38024e-06 1.35413e-06 2.17664e-06 2.13578e-06 1.14214e-06 1.12039e-06 1.38024e-06 1.35413e-06 + 1.35413e-06 1.27675e-06 2.13578e-06 2.01539e-06 1.27675e-06 1.15037e-06 2.01539e-06 1.82253e-06 1.12039e-06 1.05562e-06 1.35413e-06 1.27675e-06 + 1.05562e-06 9.48172e-07 1.27675e-06 1.15037e-06 5.6252e-06 4.83581e-06 9.82511e-06 8.3921e-06 3.17837e-06 2.74478e-06 5.6252e-06 4.83581e-06 + 1.82253e-06 1.57034e-06 3.17837e-06 2.74478e-06 4.83581e-06 3.94499e-06 8.3921e-06 6.74978e-06 2.74478e-06 2.25886e-06 4.83581e-06 3.94499e-06 + 1.57034e-06 1.28272e-06 2.74478e-06 2.25886e-06 1.15037e-06 9.75778e-07 1.82253e-06 1.57034e-06 9.48172e-07 7.93335e-07 1.15037e-06 9.75778e-07 + 9.75778e-07 7.45867e-07 1.57034e-06 1.28272e-06 7.93335e-07 5.61334e-07 9.75778e-07 7.45867e-07 4.00638e-05 2.38328e-05 4.68375e-05 2.62298e-05 + 2.76864e-05 1.8352e-05 4.00638e-05 2.38328e-05 1.80199e-05 1.26795e-05 2.76864e-05 1.8352e-05 2.38328e-05 1.39556e-05 2.62298e-05 1.49869e-05 + 1.8352e-05 1.13871e-05 2.38328e-05 1.39556e-05 1.26795e-05 8.35716e-06 1.8352e-05 1.13871e-05 1.12229e-05 8.21364e-06 1.80199e-05 1.26795e-05 + 6.74706e-06 5.08274e-06 1.12229e-05 8.21364e-06 8.21364e-06 5.67851e-06 1.26795e-05 8.35716e-06 5.08274e-06 3.64942e-06 8.21364e-06 5.67851e-06 + 1.39556e-05 8.30354e-06 1.49869e-05 8.79154e-06 8.30354e-06 5.43931e-06 8.79154e-06 5.70516e-06 1.13871e-05 7.03265e-06 1.39556e-05 8.30354e-06 + 8.35716e-06 5.41529e-06 1.13871e-05 7.03265e-06 7.03265e-06 4.72712e-06 8.30354e-06 5.43931e-06 5.43931e-06 4.56891e-06 5.70516e-06 4.77398e-06 + 4.72712e-06 4.01295e-06 5.43931e-06 4.56891e-06 5.67851e-06 3.85874e-06 8.35716e-06 5.41529e-06 5.41529e-06 3.77386e-06 7.03265e-06 4.72712e-06 + 3.85874e-06 2.79743e-06 5.41529e-06 3.77386e-06 3.64942e-06 2.58611e-06 5.67851e-06 3.85874e-06 2.58611e-06 1.94655e-06 3.85874e-06 2.79743e-06 + 3.77386e-06 3.25262e-06 4.72712e-06 4.01295e-06 2.79743e-06 2.45236e-06 3.77386e-06 3.25262e-06 1.94655e-06 1.73479e-06 2.79743e-06 2.45236e-06 + 3.94351e-06 3.03675e-06 6.74706e-06 5.08274e-06 2.25805e-06 1.76209e-06 3.94351e-06 3.03675e-06 1.28225e-06 9.88446e-07 2.25805e-06 1.76209e-06 + 3.03675e-06 2.24622e-06 5.08274e-06 3.64942e-06 1.76209e-06 1.32895e-06 3.03675e-06 2.24622e-06 9.88446e-07 7.40981e-07 1.76209e-06 1.32895e-06 + 1.32895e-06 9.9993e-07 2.24622e-06 1.64818e-06 7.45423e-07 4.99572e-07 1.28225e-06 9.88446e-07 5.60816e-07 0 7.45423e-07 4.99572e-07 + 4.99572e-07 3.36617e-07 9.88446e-07 7.40981e-07 7.40981e-07 5.61866e-07 1.32895e-06 9.9993e-07 3.36617e-07 2.52003e-07 7.40981e-07 5.61866e-07 + 0 0 4.99572e-07 3.36617e-07 0 0 3.36617e-07 2.52003e-07 2.24622e-06 1.64818e-06 3.64942e-06 2.58611e-06 + 1.64818e-06 1.28147e-06 2.58611e-06 1.94655e-06 9.9993e-07 7.97043e-07 1.64818e-06 1.28147e-06 1.28147e-06 1.1586e-06 1.94655e-06 1.73479e-06 + 7.97043e-07 7.28774e-07 1.28147e-06 1.1586e-06 5.61866e-07 4.54579e-07 9.9993e-07 7.97043e-07 2.52003e-07 2.04925e-07 5.61866e-07 4.54579e-07 + 0 0 2.52003e-07 2.04925e-07 4.54579e-07 4.18756e-07 7.97043e-07 7.28774e-07 2.04925e-07 1.89487e-07 4.54579e-07 4.18756e-07 + 0 0 2.04925e-07 1.89487e-07 + + + 0.999886 0.999886 0.999844 0.999844 0.999922 0.999922 0.999886 0.999886 0.99995 0.99995 0.999922 0.999922 + 0.999886 0.999888 0.999844 0.999844 0.999922 0.999925 0.999886 0.999888 0.99995 0.999952 0.999922 0.999925 + 0.999969 0.99997 0.99995 0.99995 0.999982 0.999982 0.999969 0.99997 0.99997 0.999971 0.99995 0.999952 + 0.999982 0.999983 0.99997 0.999971 0.999983 0.999985 0.999971 0.999974 0.999888 0.999893 0.999844 0.999844 + 0.999893 0.999909 0.999844 0.999844 0.999925 0.999931 0.999888 0.999893 0.999952 0.999957 0.999925 0.999931 + 0.999931 0.999942 0.999893 0.999909 0.999957 0.999964 0.999931 0.999942 0.999909 0.999938 0.999844 0.999927 + 0.999942 0.999957 0.999909 0.999938 0.999964 0.999972 0.999942 0.999957 0.999971 0.999974 0.999952 0.999957 + 0.999974 0.999978 0.999957 0.999964 0.999985 0.999987 0.999974 0.999978 0.999978 0.999983 0.999964 0.999972 + 0.999987 0.99999 0.999978 0.999983 0.99999 0.99999 0.999982 0.999982 0.999994 0.999994 0.99999 0.99999 + 0.999997 0.999997 0.999994 0.999994 0.99999 0.99999 0.999982 0.999983 0.99999 0.999991 0.999983 0.999985 + 0.999994 0.999995 0.99999 0.99999 0.999997 0.999997 0.999994 0.999995 0.999995 0.999995 0.99999 0.999991 + 0.999997 0.999997 0.999995 0.999995 0.999998 0.999998 0.999997 0.999997 0.999998 0.999998 0.999998 0.999998 + 0.999998 0.999998 0.999997 0.999997 0.999998 0.999998 0.999997 0.999997 0.999998 0.999998 0.999998 0.999998 + 0.999998 0.999999 0.999998 0.999998 0.999991 0.999992 0.999985 0.999987 0.999995 0.999996 0.999991 0.999992 + 0.999997 0.999998 0.999995 0.999996 0.999992 0.999994 0.999987 0.99999 0.999996 0.999996 0.999992 0.999994 + 0.999998 0.999998 0.999996 0.999996 0.999998 0.999999 0.999997 0.999998 0.999999 0.999999 0.999998 0.999999 + 0.999999 0.999999 0.999998 0.999998 0.999999 0.999999 0.999999 0.999999 0.999938 0.999963 0.999927 0.999959 + 0.999957 0.999971 0.999938 0.999963 0.999972 0.99998 0.999957 0.999971 0.999963 0.999978 0.999959 0.999977 + 0.999971 0.999982 0.999963 0.999978 0.99998 0.999987 0.999971 0.999982 0.999983 0.999987 0.999972 0.99998 + 0.99999 0.999992 0.999983 0.999987 0.999987 0.999991 0.99998 0.999987 0.999992 0.999994 0.999987 0.999991 + 0.999978 0.999987 0.999977 0.999986 0.999987 0.999992 0.999986 0.999991 0.999982 0.999989 0.999978 0.999987 + 0.999987 0.999992 0.999982 0.999989 0.999989 0.999993 0.999987 0.999992 0.999992 0.999993 0.999991 0.999993 + 0.999993 0.999994 0.999992 0.999993 0.999991 0.999994 0.999987 0.999992 0.999992 0.999994 0.999989 0.999993 + 0.999994 0.999996 0.999992 0.999994 0.999994 0.999996 0.999991 0.999994 0.999996 0.999997 0.999994 0.999996 + 0.999994 0.999995 0.999993 0.999994 0.999996 0.999996 0.999994 0.999995 0.999997 0.999997 0.999996 0.999996 + 0.999994 0.999995 0.99999 0.999992 0.999996 0.999997 0.999994 0.999995 0.999998 0.999998 0.999996 0.999997 + 0.999995 0.999996 0.999992 0.999994 0.999997 0.999998 0.999995 0.999996 0.999998 0.999999 0.999997 0.999998 + 0.999998 0.999998 0.999996 0.999997 0.999999 0.999999 0.999998 0.999998 0.999999 1 0.999999 0.999999 + 0.999999 0.999999 0.999998 0.999999 0.999999 0.999999 0.999998 0.999998 0.999999 1 0.999999 0.999999 + 1 1 0.999999 0.999999 1 1 0.999999 1 0.999996 0.999997 0.999994 0.999996 + 0.999997 0.999998 0.999996 0.999997 0.999998 0.999999 0.999997 0.999998 0.999998 0.999998 0.999997 0.999997 + 0.999999 0.999999 0.999998 0.999998 0.999999 0.999999 0.999998 0.999999 1 1 0.999999 0.999999 + 1 1 1 1 0.999999 0.999999 0.999999 0.999999 1 1 0.999999 0.999999 + 1 1 1 1 + + + 0.000114214 0.000113725 0.00015549 0.00015549 7.82519e-05 7.75255e-05 0.000114214 0.000113725 5.04575e-05 4.97733e-05 7.82519e-05 7.75255e-05 + 0.000113725 0.000111857 0.00015549 0.00015549 7.75255e-05 7.49204e-05 0.000113725 0.000111857 4.97733e-05 4.74948e-05 7.75255e-05 7.49204e-05 + 3.09526e-05 3.04457e-05 5.04575e-05 4.97733e-05 1.8254e-05 1.79276e-05 3.09526e-05 3.04457e-05 3.04457e-05 2.88524e-05 4.97733e-05 4.74948e-05 + 1.79276e-05 1.69357e-05 3.04457e-05 2.88524e-05 1.69357e-05 1.52778e-05 2.88524e-05 2.60496e-05 0.000111857 0.000106794 0.00015549 0.00015549 + 0.000106794 9.07007e-05 0.00015549 0.00015549 7.49204e-05 6.89566e-05 0.000111857 0.000106794 4.74948e-05 4.30985e-05 7.49204e-05 6.89566e-05 + 6.89566e-05 5.79721e-05 0.000106794 9.07007e-05 4.30985e-05 3.635e-05 6.89566e-05 5.79721e-05 9.07007e-05 6.23475e-05 0.00015549 7.29015e-05 + 5.79721e-05 4.30745e-05 9.07007e-05 6.23475e-05 3.635e-05 2.80342e-05 5.79721e-05 4.30745e-05 2.88524e-05 2.60496e-05 4.74948e-05 4.30985e-05 + 2.60496e-05 2.21024e-05 4.30985e-05 3.635e-05 1.52778e-05 1.30496e-05 2.60496e-05 2.21024e-05 2.21024e-05 1.7459e-05 3.635e-05 2.80342e-05 + 1.30496e-05 1.04958e-05 2.21024e-05 1.7459e-05 1.04565e-05 1.02628e-05 1.8254e-05 1.79276e-05 5.90054e-06 5.79011e-06 1.04565e-05 1.02628e-05 + 3.38464e-06 3.3211e-06 5.90054e-06 5.79011e-06 1.02628e-05 9.68509e-06 1.79276e-05 1.69357e-05 9.68509e-06 8.74709e-06 1.69357e-05 1.52778e-05 + 5.79011e-06 5.46407e-06 1.02628e-05 9.68509e-06 3.3211e-06 3.1339e-06 5.79011e-06 5.46407e-06 5.46407e-06 4.94232e-06 9.68509e-06 8.74709e-06 + 3.1339e-06 2.83402e-06 5.46407e-06 4.94232e-06 2.14625e-06 2.10565e-06 3.38464e-06 3.3211e-06 1.77602e-06 1.7422e-06 2.14625e-06 2.10565e-06 + 2.10565e-06 1.98533e-06 3.3211e-06 3.1339e-06 1.98533e-06 1.78882e-06 3.1339e-06 2.83402e-06 1.7422e-06 1.64147e-06 2.10565e-06 1.98533e-06 + 1.64147e-06 1.4744e-06 1.98533e-06 1.78882e-06 8.74709e-06 7.51961e-06 1.52778e-05 1.30496e-05 4.94232e-06 4.2681e-06 8.74709e-06 7.51961e-06 + 2.83402e-06 2.44185e-06 4.94232e-06 4.2681e-06 7.51961e-06 6.1344e-06 1.30496e-05 1.04958e-05 4.2681e-06 3.5125e-06 7.51961e-06 6.1344e-06 + 2.44185e-06 1.99462e-06 4.2681e-06 3.5125e-06 1.78882e-06 1.51732e-06 2.83402e-06 2.44185e-06 1.4744e-06 1.23363e-06 1.78882e-06 1.51732e-06 + 1.51732e-06 1.15981e-06 2.44185e-06 1.99462e-06 1.23363e-06 8.72867e-07 1.51732e-06 1.15981e-06 6.22973e-05 3.70593e-05 7.28299e-05 4.07865e-05 + 4.30513e-05 2.85369e-05 6.22973e-05 3.70593e-05 2.80204e-05 1.97164e-05 4.30513e-05 2.85369e-05 3.70593e-05 2.17006e-05 4.07865e-05 2.33043e-05 + 2.85369e-05 1.77068e-05 3.70593e-05 2.17006e-05 1.97164e-05 1.29952e-05 2.85369e-05 1.77068e-05 1.74514e-05 1.27721e-05 2.80204e-05 1.97164e-05 + 1.04916e-05 7.90358e-06 1.74514e-05 1.27721e-05 1.27721e-05 8.82999e-06 1.97164e-05 1.29952e-05 7.90358e-06 5.67479e-06 1.27721e-05 8.82999e-06 + 2.17006e-05 1.29118e-05 2.33043e-05 1.36707e-05 1.29118e-05 8.45804e-06 1.36707e-05 8.87143e-06 1.77068e-05 1.09356e-05 2.17006e-05 1.29118e-05 + 1.29952e-05 8.42069e-06 1.77068e-05 1.09356e-05 1.09356e-05 7.3506e-06 1.29118e-05 8.45804e-06 8.45804e-06 7.10459e-06 8.87143e-06 7.42347e-06 + 7.3506e-06 6.24008e-06 8.45804e-06 7.10459e-06 8.82999e-06 6.00028e-06 1.29952e-05 8.42069e-06 8.42069e-06 5.8683e-06 1.09356e-05 7.3506e-06 + 6.00028e-06 4.34996e-06 8.42069e-06 5.8683e-06 5.67479e-06 4.02136e-06 8.82999e-06 6.00028e-06 4.02136e-06 3.02685e-06 6.00028e-06 4.34996e-06 + 5.8683e-06 5.05777e-06 7.3506e-06 6.24008e-06 4.34996e-06 3.81338e-06 5.8683e-06 5.05777e-06 3.02685e-06 2.69757e-06 4.34996e-06 3.81338e-06 + 6.1321e-06 4.72211e-06 1.04916e-05 7.90358e-06 3.51124e-06 2.74003e-06 6.1321e-06 4.72211e-06 1.99388e-06 1.53702e-06 3.51124e-06 2.74003e-06 + 4.72211e-06 3.49284e-06 7.90358e-06 5.67479e-06 2.74003e-06 2.06651e-06 4.72211e-06 3.49284e-06 1.53702e-06 1.15222e-06 2.74003e-06 2.06651e-06 + 2.06651e-06 1.55488e-06 3.49284e-06 2.56291e-06 1.15912e-06 7.76829e-07 1.99388e-06 1.53702e-06 8.72062e-07 0 1.15912e-06 7.76829e-07 + 7.76829e-07 5.23436e-07 1.53702e-06 1.15222e-06 1.15222e-06 8.73695e-07 2.06651e-06 1.55488e-06 5.23436e-07 3.91862e-07 1.15222e-06 8.73695e-07 + 0 0 7.76829e-07 5.23436e-07 0 0 5.23436e-07 3.91862e-07 3.49284e-06 2.56291e-06 5.67479e-06 4.02136e-06 + 2.56291e-06 1.99267e-06 4.02136e-06 3.02685e-06 1.55488e-06 1.23939e-06 2.56291e-06 1.99267e-06 1.99267e-06 1.80161e-06 3.02685e-06 2.69757e-06 + 1.23939e-06 1.13323e-06 1.99267e-06 1.80161e-06 8.73695e-07 7.06865e-07 1.55488e-06 1.23939e-06 3.91862e-07 3.18655e-07 8.73695e-07 7.06865e-07 + 0 0 3.91862e-07 3.18655e-07 7.06865e-07 6.51161e-07 1.23939e-06 1.13323e-06 3.18655e-07 2.9465e-07 7.06865e-07 6.51161e-07 + 0 0 3.18655e-07 2.9465e-07 + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + + + -0.4 -0.5 0 -0.4 -0.4 0 -0.5 -0.5 0 -0.5 -0.4 0 + -0.3 -0.5 0 -0.3 -0.4 0 -0.4 -0.5 0 -0.4 -0.4 0 + -0.2 -0.5 0 -0.2 -0.4 0 -0.3 -0.5 0 -0.3 -0.4 0 + -0.4 -0.4 0 -0.4 -0.3 0 -0.5 -0.4 0 -0.5 -0.3 0 + -0.3 -0.4 0 -0.3 -0.3 0 -0.4 -0.4 0 -0.4 -0.3 0 + -0.2 -0.4 0 -0.2 -0.3 0 -0.3 -0.4 0 -0.3 -0.3 0 + -0.1 -0.5 0 -0.1 -0.4 0 -0.2 -0.5 0 -0.2 -0.4 0 + -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 -0.1 -0.5 0 -0.1 -0.4 0 + -0.1 -0.4 0 -0.1 -0.3 0 -0.2 -0.4 0 -0.2 -0.3 0 + -1.37512e-12 -0.4 0 -1.37512e-12 -0.3 0 -0.1 -0.4 0 -0.1 -0.3 0 + -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 -0.1 -0.3 0 -0.1 -0.2 0 + -0.4 -0.3 0 -0.4 -0.2 0 -0.5 -0.3 0 -0.5 -0.2 0 + -0.4 -0.2 0 -0.4 -0.1 0 -0.5 -0.2 0 -0.5 -0.1 0 + -0.3 -0.3 0 -0.3 -0.2 0 -0.4 -0.3 0 -0.4 -0.2 0 + -0.2 -0.3 0 -0.2 -0.2 0 -0.3 -0.3 0 -0.3 -0.2 0 + -0.3 -0.2 0 -0.3 -0.1 0 -0.4 -0.2 0 -0.4 -0.1 0 + -0.2 -0.2 0 -0.2 -0.1 0 -0.3 -0.2 0 -0.3 -0.1 0 + -0.4 -0.1 0 -0.4 0 0 -0.5 -0.1 0 -0.5 0 0 + -0.3 -0.1 0 -0.3 0 0 -0.4 -0.1 0 -0.4 0 0 + -0.2 -0.1 0 -0.2 0 0 -0.3 -0.1 0 -0.3 0 0 + -0.1 -0.3 0 -0.1 -0.2 0 -0.2 -0.3 0 -0.2 -0.2 0 + -0.1 -0.2 0 -0.1 -0.1 0 -0.2 -0.2 0 -0.2 -0.1 0 + -1.37512e-12 -0.2 0 -1.37511e-12 -0.1 0 -0.1 -0.2 0 -0.1 -0.1 0 + -0.1 -0.1 0 -0.1 0 0 -0.2 -0.1 0 -0.2 0 0 + -1.37511e-12 -0.1 0 -1.37512e-12 0 0 -0.1 -0.1 0 -0.1 0 0 + 0.1 -0.5 0 0.1 -0.4 0 -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 + 0.2 -0.5 0 0.2 -0.4 0 0.1 -0.5 0 0.1 -0.4 0 + 0.3 -0.5 0 0.3 -0.4 0 0.2 -0.5 0 0.2 -0.4 0 + 0.1 -0.4 0 0.1 -0.3 0 -1.37512e-12 -0.4 0 -1.37512e-12 -0.3 0 + 0.1 -0.3 0 0.1 -0.2 0 -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 + 0.2 -0.4 0 0.2 -0.3 0 0.1 -0.4 0 0.1 -0.3 0 + 0.3 -0.4 0 0.3 -0.3 0 0.2 -0.4 0 0.2 -0.3 0 + 0.2 -0.3 0 0.2 -0.2 0 0.1 -0.3 0 0.1 -0.2 0 + 0.3 -0.3 0 0.3 -0.2 0 0.2 -0.3 0 0.2 -0.2 0 + 0.4 -0.5 0 0.4 -0.4 0 0.3 -0.5 0 0.3 -0.4 0 + 0.5 -0.5 0 0.5 -0.4 0 0.4 -0.5 0 0.4 -0.4 0 + 0.4 -0.4 0 0.4 -0.3 0 0.3 -0.4 0 0.3 -0.3 0 + 0.4 -0.3 0 0.4 -0.2 0 0.3 -0.3 0 0.3 -0.2 0 + 0.5 -0.4 0 0.5 -0.3 0 0.4 -0.4 0 0.4 -0.3 0 + 0.5 -0.3 0 0.5 -0.2 0 0.4 -0.3 0 0.4 -0.2 0 + 0.1 -0.2 0 0.1 -0.1 0 -1.37512e-12 -0.2 0 -1.37511e-12 -0.1 0 + 0.2 -0.2 0 0.2 -0.1 0 0.1 -0.2 0 0.1 -0.1 0 + 0.3 -0.2 0 0.3 -0.1 0 0.2 -0.2 0 0.2 -0.1 0 + 0.1 -0.1 0 0.1 0 0 -1.37511e-12 -0.1 0 -1.37512e-12 0 0 + 0.2 -0.1 0 0.2 0 0 0.1 -0.1 0 0.1 0 0 + 0.3 -0.1 0 0.3 0 0 0.2 -0.1 0 0.2 0 0 + 0.4 -0.2 0 0.4 -0.1 0 0.3 -0.2 0 0.3 -0.1 0 + 0.5 -0.2 0 0.5 -0.1 0 0.4 -0.2 0 0.4 -0.1 0 + 0.4 -0.1 0 0.4 0 0 0.3 -0.1 0 0.3 0 0 + 0.5 -0.1 0 0.5 0 0 0.4 -0.1 0 0.4 0 0 + -0.4 0 0 -0.4 0.1 0 -0.5 0 0 -0.5 0.1 0 + -0.3 0 0 -0.3 0.1 0 -0.4 0 0 -0.4 0.1 0 + -0.2 0 0 -0.2 0.1 0 -0.3 0 0 -0.3 0.1 0 + -0.4 0.1 0 -0.4 0.2 0 -0.5 0.1 0 -0.5 0.2 0 + -0.3 0.1 0 -0.3 0.2 0 -0.4 0.1 0 -0.4 0.2 0 + -0.2 0.1 0 -0.2 0.2 0 -0.3 0.1 0 -0.3 0.2 0 + -0.1 0 0 -0.1 0.1 0 -0.2 0 0 -0.2 0.1 0 + -1.37512e-12 0 0 -8.2509e-13 0.1 0 -0.1 0 0 -0.1 0.1 0 + -0.1 0.1 0 -0.1 0.2 0 -0.2 0.1 0 -0.2 0.2 0 + -8.2509e-13 0.1 0 -2.7503e-13 0.2 0 -0.1 0.1 0 -0.1 0.2 0 + -0.4 0.2 0 -0.4 0.3 0 -0.5 0.2 0 -0.5 0.3 0 + -0.4 0.3 0 -0.4 0.4 0 -0.5 0.3 0 -0.5 0.4 0 + -0.3 0.2 0 -0.3 0.3 0 -0.4 0.2 0 -0.4 0.3 0 + -0.2 0.2 0 -0.2 0.3 0 -0.3 0.2 0 -0.3 0.3 0 + -0.3 0.3 0 -0.3 0.4 0 -0.4 0.3 0 -0.4 0.4 0 + -0.4 0.4 0 -0.4 0.5 0 -0.5 0.4 0 -0.5 0.5 0 + -0.3 0.4 0 -0.3 0.5 0 -0.4 0.4 0 -0.4 0.5 0 + -0.1 0.2 0 -0.1 0.3 0 -0.2 0.2 0 -0.2 0.3 0 + -0.2 0.3 0 -0.2 0.4 0 -0.3 0.3 0 -0.3 0.4 0 + -0.1 0.3 0 -0.1 0.4 0 -0.2 0.3 0 -0.2 0.4 0 + -2.7503e-13 0.2 0 2.75002e-13 0.3 0 -0.1 0.2 0 -0.1 0.3 0 + 2.75002e-13 0.3 0 8.25048e-13 0.4 0 -0.1 0.3 0 -0.1 0.4 0 + -0.2 0.4 0 -0.2 0.5 0 -0.3 0.4 0 -0.3 0.5 0 + -0.1 0.4 0 -0.1 0.5 0 -0.2 0.4 0 -0.2 0.5 0 + 8.25048e-13 0.4 0 1.37512e-12 0.5 0 -0.1 0.4 0 -0.1 0.5 0 + 0.1 0 0 0.1 0.1 0 -1.37512e-12 0 0 -8.2509e-13 0.1 0 + 0.2 0 0 0.2 0.1 0 0.1 0 0 0.1 0.1 0 + 0.3 0 0 0.3 0.1 0 0.2 0 0 0.2 0.1 0 + 0.1 0.1 0 0.1 0.2 0 -8.2509e-13 0.1 0 -2.7503e-13 0.2 0 + 0.2 0.1 0 0.2 0.2 0 0.1 0.1 0 0.1 0.2 0 + 0.3 0.1 0 0.3 0.2 0 0.2 0.1 0 0.2 0.2 0 + 0.2 0.2 0 0.2 0.3 0 0.1 0.2 0 0.1 0.3 0 + 0.4 0 0 0.4 0.1 0 0.3 0 0 0.3 0.1 0 + 0.5 0 0 0.5 0.1 0 0.4 0 0 0.4 0.1 0 + 0.4 0.1 0 0.4 0.2 0 0.3 0.1 0 0.3 0.2 0 + 0.3 0.2 0 0.3 0.3 0 0.2 0.2 0 0.2 0.3 0 + 0.4 0.2 0 0.4 0.3 0 0.3 0.2 0 0.3 0.3 0 + 0.5 0.1 0 0.5 0.2 0 0.4 0.1 0 0.4 0.2 0 + 0.5 0.2 0 0.5 0.3 0 0.4 0.2 0 0.4 0.3 0 + 0.1 0.2 0 0.1 0.3 0 -2.7503e-13 0.2 0 2.75002e-13 0.3 0 + 0.1 0.3 0 0.1 0.4 0 2.75002e-13 0.3 0 8.25048e-13 0.4 0 + 0.2 0.3 0 0.2 0.4 0 0.1 0.3 0 0.1 0.4 0 + 0.1 0.4 0 0.1 0.5 0 8.25048e-13 0.4 0 1.37512e-12 0.5 0 + 0.2 0.4 0 0.2 0.5 0 0.1 0.4 0 0.1 0.5 0 + 0.3 0.3 0 0.3 0.4 0 0.2 0.3 0 0.2 0.4 0 + 0.4 0.3 0 0.4 0.4 0 0.3 0.3 0 0.3 0.4 0 + 0.5 0.3 0 0.5 0.4 0 0.4 0.3 0 0.4 0.4 0 + 0.3 0.4 0 0.3 0.5 0 0.2 0.4 0 0.2 0.5 0 + 0.4 0.4 0 0.4 0.5 0 0.3 0.4 0 0.3 0.5 0 + 0.5 0.4 0 0.5 0.5 0 0.4 0.4 0 0.4 0.5 0 + + + + + 0 1 3 2 4 5 7 6 8 9 11 10 + 12 13 15 14 16 17 19 18 20 21 23 22 + 24 25 27 26 28 29 31 30 32 33 35 34 + 36 37 39 38 40 41 43 42 44 45 47 46 + 48 49 51 50 52 53 55 54 56 57 59 58 + 60 61 63 62 64 65 67 66 68 69 71 70 + 72 73 75 74 76 77 79 78 80 81 83 82 + 84 85 87 86 88 89 91 90 92 93 95 94 + 96 97 99 98 100 101 103 102 104 105 107 106 + 108 109 111 110 112 113 115 114 116 117 119 118 + 120 121 123 122 124 125 127 126 128 129 131 130 + 132 133 135 134 136 137 139 138 140 141 143 142 + 144 145 147 146 148 149 151 150 152 153 155 154 + 156 157 159 158 160 161 163 162 164 165 167 166 + 168 169 171 170 172 173 175 174 176 177 179 178 + 180 181 183 182 184 185 187 186 188 189 191 190 + 192 193 195 194 196 197 199 198 200 201 203 202 + 204 205 207 206 208 209 211 210 212 213 215 214 + 216 217 219 218 220 221 223 222 224 225 227 226 + 228 229 231 230 232 233 235 234 236 237 239 238 + 240 241 243 242 244 245 247 246 248 249 251 250 + 252 253 255 254 256 257 259 258 260 261 263 262 + 264 265 267 266 268 269 271 270 272 273 275 274 + 276 277 279 278 280 281 283 282 284 285 287 286 + 288 289 291 290 292 293 295 294 296 297 299 298 + 300 301 303 302 304 305 307 306 308 309 311 310 + 312 313 315 314 316 317 319 318 320 321 323 322 + 324 325 327 326 328 329 331 330 332 333 335 334 + 336 337 339 338 340 341 343 342 344 345 347 346 + 348 349 351 350 352 353 355 354 356 357 359 358 + 360 361 363 362 364 365 367 366 368 369 371 370 + 372 373 375 374 376 377 379 378 380 381 383 382 + 384 385 387 386 388 389 391 390 392 393 395 394 + 396 397 399 398 + + + 4 8 12 16 20 24 28 32 36 40 44 48 + 52 56 60 64 68 72 76 80 84 88 92 96 + 100 104 108 112 116 120 124 128 132 136 140 144 + 148 152 156 160 164 168 172 176 180 184 188 192 + 196 200 204 208 212 216 220 224 228 232 236 240 + 244 248 252 256 260 264 268 272 276 280 284 288 + 292 296 300 304 308 312 316 320 324 328 332 336 + 340 344 348 352 356 360 364 368 372 376 380 384 + 388 392 396 400 + + + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 + + + + + diff --git a/test/references/facetcoupling_1pnc1pnc_bulk_tpfa b/test/references/facetcoupling_1pnc1pnc_bulk_tpfa new file mode 100644 index 0000000000..d9fceb0a67 --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_bulk_tpfa @@ -0,0 +1,203 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + 0.999914 0.999939 0.99996 0.999914 0.99994 0.99996 0.999975 0.999985 0.999975 0.999985 0.999986 0.999915 + 0.999918 0.999942 0.999962 0.999945 0.999965 0.999926 0.999954 0.999971 0.999976 0.999979 0.999987 0.999982 + 0.999989 0.999991 0.999995 0.999997 0.999991 0.999992 0.999995 0.999997 0.999995 0.999997 0.999998 0.999999 + 0.999998 0.999998 0.999999 0.999999 0.999993 0.999996 0.999998 0.999994 0.999996 0.999998 0.999999 0.999999 + 0.999999 0.999999 0.999958 0.999969 0.999979 0.999976 0.99998 0.999986 0.999986 0.999992 0.99999 0.999994 + 0.999986 0.999991 0.999988 0.999991 0.999992 0.999994 0.999994 0.999994 0.999994 0.999996 0.999996 0.999997 + 0.999995 0.999997 0.999998 0.999995 0.999997 0.999998 0.999996 0.999998 0.999999 0.999998 0.999999 1 + 0.999999 0.999999 1 1 1 0.999997 0.999998 0.999999 0.999998 0.999999 0.999999 1 + 1 0.999999 1 1 + + + 8.6312e-05 6.09546e-05 4.03961e-05 8.59915e-05 6.02737e-05 3.96846e-05 2.5391e-05 1.52906e-05 2.48184e-05 1.48917e-05 1.40304e-05 8.50386e-05 + 8.23203e-05 5.84949e-05 3.79764e-05 5.45507e-05 3.46931e-05 7.36008e-05 4.63323e-05 2.9129e-05 2.35255e-05 2.12661e-05 1.26209e-05 1.78689e-05 + 1.06537e-05 8.9057e-06 5.0709e-06 2.87856e-06 8.65167e-06 8.12082e-06 4.91751e-06 2.78697e-06 4.60434e-06 2.60243e-06 1.71458e-06 1.21545e-06 + 1.65637e-06 1.53873e-06 1.17119e-06 1.08002e-06 7.29135e-06 4.13038e-06 2.32754e-06 6.18868e-06 3.52019e-06 1.97795e-06 1.36066e-06 9.34193e-07 + 1.12425e-06 7.11219e-07 4.17527e-05 3.14076e-05 2.12792e-05 2.41036e-05 1.96717e-05 1.42292e-05 1.3579e-05 8.30333e-06 9.52405e-06 6.03592e-06 + 1.40327e-05 8.60062e-06 1.19968e-05 9.1383e-06 7.57813e-06 6.23646e-06 5.59432e-06 6.40705e-06 6.0137e-06 4.39616e-06 4.22468e-06 3.01311e-06 + 4.5594e-06 3.43039e-06 2.41667e-06 4.91184e-06 2.82762e-06 1.58476e-06 3.67042e-06 2.15572e-06 1.21659e-06 1.60126e-06 8.42114e-07 3.29343e-07 + 6.27057e-07 9.18186e-07 4.71317e-07 2.0537e-07 1.46946e-07 2.6557e-06 1.95974e-06 1.21548e-06 1.61082e-06 1.01977e-06 7.11171e-07 3.68039e-07 + 1.13751e-07 6.05888e-07 3.16281e-07 9.7867e-08 + + + 0.999866 0.999905 0.999937 0.999866 0.999906 0.999938 0.999961 0.999976 0.999961 0.999977 0.999978 0.999868 + 0.999872 0.999909 0.999941 0.999915 0.999946 0.999886 0.999928 0.999955 0.999963 0.999967 0.99998 0.999972 + 0.999983 0.999986 0.999992 0.999996 0.999987 0.999987 0.999992 0.999996 0.999993 0.999996 0.999997 0.999998 + 0.999997 0.999998 0.999998 0.999998 0.999989 0.999994 0.999996 0.99999 0.999995 0.999997 0.999998 0.999999 + 0.999998 0.999999 0.999935 0.999951 0.999967 0.999963 0.999969 0.999978 0.999979 0.999987 0.999985 0.999991 + 0.999978 0.999987 0.999981 0.999986 0.999988 0.99999 0.999991 0.99999 0.999991 0.999993 0.999993 0.999995 + 0.999993 0.999995 0.999996 0.999992 0.999996 0.999998 0.999994 0.999997 0.999998 0.999997 0.999999 0.999999 + 0.999999 0.999999 0.999999 1 1 0.999996 0.999997 0.999998 0.999997 0.999998 0.999999 0.999999 + 1 0.999999 1 1 + + + 0.000134208 9.47805e-05 6.28141e-05 0.000133709 9.37219e-05 6.17077e-05 3.94822e-05 2.37765e-05 3.85918e-05 2.31562e-05 2.18169e-05 0.000132228 + 0.000128001 9.0956e-05 5.90515e-05 8.48232e-05 5.39464e-05 0.000114444 7.20444e-05 4.52945e-05 3.65814e-05 3.30681e-05 1.96252e-05 2.77857e-05 + 1.65663e-05 1.38482e-05 7.88517e-06 4.47612e-06 1.34532e-05 1.26277e-05 7.64665e-06 4.3337e-06 7.15968e-06 4.04675e-06 2.66615e-06 1.89001e-06 + 2.57563e-06 2.39271e-06 1.82119e-06 1.67942e-06 1.13379e-05 6.42268e-06 3.6193e-06 9.6233e-06 5.47384e-06 3.07569e-06 2.1158e-06 1.45266e-06 + 1.7482e-06 1.10594e-06 6.49234e-05 4.88376e-05 3.30886e-05 3.74804e-05 3.0589e-05 2.21261e-05 2.1115e-05 1.29115e-05 1.48097e-05 9.38576e-06 + 2.18205e-05 1.33738e-05 1.86547e-05 1.42099e-05 1.17838e-05 9.69759e-06 8.69907e-06 9.96285e-06 9.35121e-06 6.83597e-06 6.56932e-06 4.68535e-06 + 7.0898e-06 5.3342e-06 3.75789e-06 7.63784e-06 4.39691e-06 2.46429e-06 5.70744e-06 3.35211e-06 1.89178e-06 2.48994e-06 1.30948e-06 5.12124e-07 + 9.75066e-07 1.42777e-06 7.32893e-07 3.19348e-07 2.28499e-07 4.12957e-06 3.04737e-06 1.89005e-06 2.5048e-06 1.58574e-06 1.10586e-06 5.72297e-07 + 1.76881e-07 9.42148e-07 4.91814e-07 1.52182e-07 + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + + + -0.4 -0.5 0 -0.4 -0.4 0 -0.5 -0.5 0 -0.5 -0.4 0 + -0.3 -0.5 0 -0.3 -0.4 0 -0.2 -0.5 0 -0.2 -0.4 0 + -0.4 -0.3 0 -0.5 -0.3 0 -0.3 -0.3 0 -0.2 -0.3 0 + -0.1 -0.5 0 -0.1 -0.4 0 -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 + -0.1 -0.3 0 -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 -0.1 -0.2 0 + -0.4 -0.2 0 -0.5 -0.2 0 -0.4 -0.1 0 -0.5 -0.1 0 + -0.3 -0.2 0 -0.2 -0.2 0 -0.3 -0.1 0 -0.2 -0.1 0 + -0.4 0 0 -0.5 0 0 -0.3 0 0 -0.2 0 0 + -0.1 -0.1 0 -1.37511e-12 -0.1 0 -0.1 0 0 -1.37512e-12 0 0 + 0.1 -0.5 0 0.1 -0.4 0 0.2 -0.5 0 0.2 -0.4 0 + 0.3 -0.5 0 0.3 -0.4 0 0.1 -0.3 0 0.1 -0.2 0 + 0.2 -0.3 0 0.3 -0.3 0 0.2 -0.2 0 0.3 -0.2 0 + 0.4 -0.5 0 0.4 -0.4 0 0.5 -0.5 0 0.5 -0.4 0 + 0.4 -0.3 0 0.4 -0.2 0 0.5 -0.3 0 0.5 -0.2 0 + 0.1 -0.1 0 0.2 -0.1 0 0.3 -0.1 0 0.1 0 0 + 0.2 0 0 0.3 0 0 0.4 -0.1 0 0.5 -0.1 0 + 0.4 0 0 0.5 0 0 -0.4 0.1 0 -0.5 0.1 0 + -0.3 0.1 0 -0.2 0.1 0 -0.4 0.2 0 -0.5 0.2 0 + -0.3 0.2 0 -0.2 0.2 0 -0.1 0.1 0 -8.2509e-13 0.1 0 + -0.1 0.2 0 -2.7503e-13 0.2 0 -0.4 0.3 0 -0.5 0.3 0 + -0.4 0.4 0 -0.5 0.4 0 -0.3 0.3 0 -0.2 0.3 0 + -0.3 0.4 0 -0.4 0.5 0 -0.5 0.5 0 -0.3 0.5 0 + -0.1 0.3 0 -0.2 0.4 0 -0.1 0.4 0 2.75002e-13 0.3 0 + 8.25048e-13 0.4 0 -0.2 0.5 0 -0.1 0.5 0 1.37512e-12 0.5 0 + 0.1 0.1 0 0.2 0.1 0 0.3 0.1 0 0.1 0.2 0 + 0.2 0.2 0 0.3 0.2 0 0.2 0.3 0 0.1 0.3 0 + 0.4 0.1 0 0.5 0.1 0 0.4 0.2 0 0.3 0.3 0 + 0.4 0.3 0 0.5 0.2 0 0.5 0.3 0 0.1 0.4 0 + 0.2 0.4 0 0.1 0.5 0 0.2 0.5 0 0.3 0.4 0 + 0.4 0.4 0 0.5 0.4 0 0.3 0.5 0 0.4 0.5 0 + 0.5 0.5 0 + + + + + 0 1 3 2 4 5 1 0 6 7 5 4 + 1 8 9 3 5 10 8 1 7 11 10 5 + 12 13 7 6 14 15 13 12 13 16 11 7 + 15 17 16 13 17 18 19 16 8 20 21 9 + 20 22 23 21 10 24 20 8 11 25 24 10 + 24 26 22 20 25 27 26 24 22 28 29 23 + 26 30 28 22 27 31 30 26 16 19 25 11 + 19 32 27 25 18 33 32 19 32 34 31 27 + 33 35 34 32 36 37 15 14 38 39 37 36 + 40 41 39 38 37 42 17 15 42 43 18 17 + 39 44 42 37 41 45 44 39 44 46 43 42 + 45 47 46 44 48 49 41 40 50 51 49 48 + 49 52 45 41 52 53 47 45 51 54 52 49 + 54 55 53 52 43 56 33 18 46 57 56 43 + 47 58 57 46 56 59 35 33 57 60 59 56 + 58 61 60 57 53 62 58 47 55 63 62 53 + 62 64 61 58 63 65 64 62 28 66 67 29 + 30 68 66 28 31 69 68 30 66 70 71 67 + 68 72 70 66 69 73 72 68 34 74 69 31 + 35 75 74 34 74 76 73 69 75 77 76 74 + 70 78 79 71 78 80 81 79 72 82 78 70 + 73 83 82 72 82 84 80 78 80 85 86 81 + 84 87 85 80 76 88 83 73 83 89 84 82 + 88 90 89 83 77 91 88 76 91 92 90 88 + 89 93 87 84 90 94 93 89 92 95 94 90 + 59 96 75 35 60 97 96 59 61 98 97 60 + 96 99 77 75 97 100 99 96 98 101 100 97 + 100 102 103 99 64 104 98 61 65 105 104 64 + 104 106 101 98 101 107 102 100 106 108 107 101 + 105 109 106 104 109 110 108 106 99 103 91 77 + 103 111 92 91 102 112 111 103 111 113 95 92 + 112 114 113 111 107 115 112 102 108 116 115 107 + 110 117 116 108 115 118 114 112 116 119 118 115 + 117 120 119 116 + + + 4 8 12 16 20 24 28 32 36 40 44 48 + 52 56 60 64 68 72 76 80 84 88 92 96 + 100 104 108 112 116 120 124 128 132 136 140 144 + 148 152 156 160 164 168 172 176 180 184 188 192 + 196 200 204 208 212 216 220 224 228 232 236 240 + 244 248 252 256 260 264 268 272 276 280 284 288 + 292 296 300 304 308 312 316 320 324 328 332 336 + 340 344 348 352 356 360 364 368 372 376 380 384 + 388 392 396 400 + + + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 + + + + + diff --git a/test/references/facetcoupling_1pnc1pnc_bulk_tpfa.vtu b/test/references/facetcoupling_1pnc1pnc_bulk_tpfa.vtu new file mode 100644 index 0000000000..d9fceb0a67 --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_bulk_tpfa.vtu @@ -0,0 +1,203 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + 0.999914 0.999939 0.99996 0.999914 0.99994 0.99996 0.999975 0.999985 0.999975 0.999985 0.999986 0.999915 + 0.999918 0.999942 0.999962 0.999945 0.999965 0.999926 0.999954 0.999971 0.999976 0.999979 0.999987 0.999982 + 0.999989 0.999991 0.999995 0.999997 0.999991 0.999992 0.999995 0.999997 0.999995 0.999997 0.999998 0.999999 + 0.999998 0.999998 0.999999 0.999999 0.999993 0.999996 0.999998 0.999994 0.999996 0.999998 0.999999 0.999999 + 0.999999 0.999999 0.999958 0.999969 0.999979 0.999976 0.99998 0.999986 0.999986 0.999992 0.99999 0.999994 + 0.999986 0.999991 0.999988 0.999991 0.999992 0.999994 0.999994 0.999994 0.999994 0.999996 0.999996 0.999997 + 0.999995 0.999997 0.999998 0.999995 0.999997 0.999998 0.999996 0.999998 0.999999 0.999998 0.999999 1 + 0.999999 0.999999 1 1 1 0.999997 0.999998 0.999999 0.999998 0.999999 0.999999 1 + 1 0.999999 1 1 + + + 8.6312e-05 6.09546e-05 4.03961e-05 8.59915e-05 6.02737e-05 3.96846e-05 2.5391e-05 1.52906e-05 2.48184e-05 1.48917e-05 1.40304e-05 8.50386e-05 + 8.23203e-05 5.84949e-05 3.79764e-05 5.45507e-05 3.46931e-05 7.36008e-05 4.63323e-05 2.9129e-05 2.35255e-05 2.12661e-05 1.26209e-05 1.78689e-05 + 1.06537e-05 8.9057e-06 5.0709e-06 2.87856e-06 8.65167e-06 8.12082e-06 4.91751e-06 2.78697e-06 4.60434e-06 2.60243e-06 1.71458e-06 1.21545e-06 + 1.65637e-06 1.53873e-06 1.17119e-06 1.08002e-06 7.29135e-06 4.13038e-06 2.32754e-06 6.18868e-06 3.52019e-06 1.97795e-06 1.36066e-06 9.34193e-07 + 1.12425e-06 7.11219e-07 4.17527e-05 3.14076e-05 2.12792e-05 2.41036e-05 1.96717e-05 1.42292e-05 1.3579e-05 8.30333e-06 9.52405e-06 6.03592e-06 + 1.40327e-05 8.60062e-06 1.19968e-05 9.1383e-06 7.57813e-06 6.23646e-06 5.59432e-06 6.40705e-06 6.0137e-06 4.39616e-06 4.22468e-06 3.01311e-06 + 4.5594e-06 3.43039e-06 2.41667e-06 4.91184e-06 2.82762e-06 1.58476e-06 3.67042e-06 2.15572e-06 1.21659e-06 1.60126e-06 8.42114e-07 3.29343e-07 + 6.27057e-07 9.18186e-07 4.71317e-07 2.0537e-07 1.46946e-07 2.6557e-06 1.95974e-06 1.21548e-06 1.61082e-06 1.01977e-06 7.11171e-07 3.68039e-07 + 1.13751e-07 6.05888e-07 3.16281e-07 9.7867e-08 + + + 0.999866 0.999905 0.999937 0.999866 0.999906 0.999938 0.999961 0.999976 0.999961 0.999977 0.999978 0.999868 + 0.999872 0.999909 0.999941 0.999915 0.999946 0.999886 0.999928 0.999955 0.999963 0.999967 0.99998 0.999972 + 0.999983 0.999986 0.999992 0.999996 0.999987 0.999987 0.999992 0.999996 0.999993 0.999996 0.999997 0.999998 + 0.999997 0.999998 0.999998 0.999998 0.999989 0.999994 0.999996 0.99999 0.999995 0.999997 0.999998 0.999999 + 0.999998 0.999999 0.999935 0.999951 0.999967 0.999963 0.999969 0.999978 0.999979 0.999987 0.999985 0.999991 + 0.999978 0.999987 0.999981 0.999986 0.999988 0.99999 0.999991 0.99999 0.999991 0.999993 0.999993 0.999995 + 0.999993 0.999995 0.999996 0.999992 0.999996 0.999998 0.999994 0.999997 0.999998 0.999997 0.999999 0.999999 + 0.999999 0.999999 0.999999 1 1 0.999996 0.999997 0.999998 0.999997 0.999998 0.999999 0.999999 + 1 0.999999 1 1 + + + 0.000134208 9.47805e-05 6.28141e-05 0.000133709 9.37219e-05 6.17077e-05 3.94822e-05 2.37765e-05 3.85918e-05 2.31562e-05 2.18169e-05 0.000132228 + 0.000128001 9.0956e-05 5.90515e-05 8.48232e-05 5.39464e-05 0.000114444 7.20444e-05 4.52945e-05 3.65814e-05 3.30681e-05 1.96252e-05 2.77857e-05 + 1.65663e-05 1.38482e-05 7.88517e-06 4.47612e-06 1.34532e-05 1.26277e-05 7.64665e-06 4.3337e-06 7.15968e-06 4.04675e-06 2.66615e-06 1.89001e-06 + 2.57563e-06 2.39271e-06 1.82119e-06 1.67942e-06 1.13379e-05 6.42268e-06 3.6193e-06 9.6233e-06 5.47384e-06 3.07569e-06 2.1158e-06 1.45266e-06 + 1.7482e-06 1.10594e-06 6.49234e-05 4.88376e-05 3.30886e-05 3.74804e-05 3.0589e-05 2.21261e-05 2.1115e-05 1.29115e-05 1.48097e-05 9.38576e-06 + 2.18205e-05 1.33738e-05 1.86547e-05 1.42099e-05 1.17838e-05 9.69759e-06 8.69907e-06 9.96285e-06 9.35121e-06 6.83597e-06 6.56932e-06 4.68535e-06 + 7.0898e-06 5.3342e-06 3.75789e-06 7.63784e-06 4.39691e-06 2.46429e-06 5.70744e-06 3.35211e-06 1.89178e-06 2.48994e-06 1.30948e-06 5.12124e-07 + 9.75066e-07 1.42777e-06 7.32893e-07 3.19348e-07 2.28499e-07 4.12957e-06 3.04737e-06 1.89005e-06 2.5048e-06 1.58574e-06 1.10586e-06 5.72297e-07 + 1.76881e-07 9.42148e-07 4.91814e-07 1.52182e-07 + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + + + -0.4 -0.5 0 -0.4 -0.4 0 -0.5 -0.5 0 -0.5 -0.4 0 + -0.3 -0.5 0 -0.3 -0.4 0 -0.2 -0.5 0 -0.2 -0.4 0 + -0.4 -0.3 0 -0.5 -0.3 0 -0.3 -0.3 0 -0.2 -0.3 0 + -0.1 -0.5 0 -0.1 -0.4 0 -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 + -0.1 -0.3 0 -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 -0.1 -0.2 0 + -0.4 -0.2 0 -0.5 -0.2 0 -0.4 -0.1 0 -0.5 -0.1 0 + -0.3 -0.2 0 -0.2 -0.2 0 -0.3 -0.1 0 -0.2 -0.1 0 + -0.4 0 0 -0.5 0 0 -0.3 0 0 -0.2 0 0 + -0.1 -0.1 0 -1.37511e-12 -0.1 0 -0.1 0 0 -1.37512e-12 0 0 + 0.1 -0.5 0 0.1 -0.4 0 0.2 -0.5 0 0.2 -0.4 0 + 0.3 -0.5 0 0.3 -0.4 0 0.1 -0.3 0 0.1 -0.2 0 + 0.2 -0.3 0 0.3 -0.3 0 0.2 -0.2 0 0.3 -0.2 0 + 0.4 -0.5 0 0.4 -0.4 0 0.5 -0.5 0 0.5 -0.4 0 + 0.4 -0.3 0 0.4 -0.2 0 0.5 -0.3 0 0.5 -0.2 0 + 0.1 -0.1 0 0.2 -0.1 0 0.3 -0.1 0 0.1 0 0 + 0.2 0 0 0.3 0 0 0.4 -0.1 0 0.5 -0.1 0 + 0.4 0 0 0.5 0 0 -0.4 0.1 0 -0.5 0.1 0 + -0.3 0.1 0 -0.2 0.1 0 -0.4 0.2 0 -0.5 0.2 0 + -0.3 0.2 0 -0.2 0.2 0 -0.1 0.1 0 -8.2509e-13 0.1 0 + -0.1 0.2 0 -2.7503e-13 0.2 0 -0.4 0.3 0 -0.5 0.3 0 + -0.4 0.4 0 -0.5 0.4 0 -0.3 0.3 0 -0.2 0.3 0 + -0.3 0.4 0 -0.4 0.5 0 -0.5 0.5 0 -0.3 0.5 0 + -0.1 0.3 0 -0.2 0.4 0 -0.1 0.4 0 2.75002e-13 0.3 0 + 8.25048e-13 0.4 0 -0.2 0.5 0 -0.1 0.5 0 1.37512e-12 0.5 0 + 0.1 0.1 0 0.2 0.1 0 0.3 0.1 0 0.1 0.2 0 + 0.2 0.2 0 0.3 0.2 0 0.2 0.3 0 0.1 0.3 0 + 0.4 0.1 0 0.5 0.1 0 0.4 0.2 0 0.3 0.3 0 + 0.4 0.3 0 0.5 0.2 0 0.5 0.3 0 0.1 0.4 0 + 0.2 0.4 0 0.1 0.5 0 0.2 0.5 0 0.3 0.4 0 + 0.4 0.4 0 0.5 0.4 0 0.3 0.5 0 0.4 0.5 0 + 0.5 0.5 0 + + + + + 0 1 3 2 4 5 1 0 6 7 5 4 + 1 8 9 3 5 10 8 1 7 11 10 5 + 12 13 7 6 14 15 13 12 13 16 11 7 + 15 17 16 13 17 18 19 16 8 20 21 9 + 20 22 23 21 10 24 20 8 11 25 24 10 + 24 26 22 20 25 27 26 24 22 28 29 23 + 26 30 28 22 27 31 30 26 16 19 25 11 + 19 32 27 25 18 33 32 19 32 34 31 27 + 33 35 34 32 36 37 15 14 38 39 37 36 + 40 41 39 38 37 42 17 15 42 43 18 17 + 39 44 42 37 41 45 44 39 44 46 43 42 + 45 47 46 44 48 49 41 40 50 51 49 48 + 49 52 45 41 52 53 47 45 51 54 52 49 + 54 55 53 52 43 56 33 18 46 57 56 43 + 47 58 57 46 56 59 35 33 57 60 59 56 + 58 61 60 57 53 62 58 47 55 63 62 53 + 62 64 61 58 63 65 64 62 28 66 67 29 + 30 68 66 28 31 69 68 30 66 70 71 67 + 68 72 70 66 69 73 72 68 34 74 69 31 + 35 75 74 34 74 76 73 69 75 77 76 74 + 70 78 79 71 78 80 81 79 72 82 78 70 + 73 83 82 72 82 84 80 78 80 85 86 81 + 84 87 85 80 76 88 83 73 83 89 84 82 + 88 90 89 83 77 91 88 76 91 92 90 88 + 89 93 87 84 90 94 93 89 92 95 94 90 + 59 96 75 35 60 97 96 59 61 98 97 60 + 96 99 77 75 97 100 99 96 98 101 100 97 + 100 102 103 99 64 104 98 61 65 105 104 64 + 104 106 101 98 101 107 102 100 106 108 107 101 + 105 109 106 104 109 110 108 106 99 103 91 77 + 103 111 92 91 102 112 111 103 111 113 95 92 + 112 114 113 111 107 115 112 102 108 116 115 107 + 110 117 116 108 115 118 114 112 116 119 118 115 + 117 120 119 116 + + + 4 8 12 16 20 24 28 32 36 40 44 48 + 52 56 60 64 68 72 76 80 84 88 92 96 + 100 104 108 112 116 120 124 128 132 136 140 144 + 148 152 156 160 164 168 172 176 180 184 188 192 + 196 200 204 208 212 216 220 224 228 232 236 240 + 244 248 252 256 260 264 268 272 276 280 284 288 + 292 296 300 304 308 312 316 320 324 328 332 336 + 340 344 348 352 356 360 364 368 372 376 380 384 + 388 392 396 400 + + + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 + + + + + diff --git a/test/references/facetcoupling_1pnc1pnc_lowdim_box b/test/references/facetcoupling_1pnc1pnc_lowdim_box new file mode 100644 index 0000000000..a2fd262304 --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_lowdim_box @@ -0,0 +1,54 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 1.45519e-11 1.45519e-11 + + + 0.999955 0.999961 0.999972 0.999982 0.999988 0.999993 0.999996 0.999998 0.999999 0.999999 0.999999 + + + 4.51651e-05 3.9379e-05 2.80334e-05 1.83831e-05 1.15156e-05 6.95753e-06 4.08406e-06 2.34719e-06 1.33738e-06 7.89683e-07 6.07223e-07 + + + 0.99993 0.999939 0.999956 0.999971 0.999982 0.999989 0.999994 0.999996 0.999998 0.999999 0.999999 + + + 7.02294e-05 6.12326e-05 4.35909e-05 2.85853e-05 1.79066e-05 1.08188e-05 6.35065e-06 3.64985e-06 2.07961e-06 1.22795e-06 9.44224e-07 + + + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + diff --git a/test/references/facetcoupling_1pnc1pnc_lowdim_box.vtp b/test/references/facetcoupling_1pnc1pnc_lowdim_box.vtp new file mode 100644 index 0000000000..a2fd262304 --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_lowdim_box.vtp @@ -0,0 +1,54 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 1.45519e-11 1.45519e-11 + + + 0.999955 0.999961 0.999972 0.999982 0.999988 0.999993 0.999996 0.999998 0.999999 0.999999 0.999999 + + + 4.51651e-05 3.9379e-05 2.80334e-05 1.83831e-05 1.15156e-05 6.95753e-06 4.08406e-06 2.34719e-06 1.33738e-06 7.89683e-07 6.07223e-07 + + + 0.99993 0.999939 0.999956 0.999971 0.999982 0.999989 0.999994 0.999996 0.999998 0.999999 0.999999 + + + 7.02294e-05 6.12326e-05 4.35909e-05 2.85853e-05 1.79066e-05 1.08188e-05 6.35065e-06 3.64985e-06 2.07961e-06 1.22795e-06 9.44224e-07 + + + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + diff --git a/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa b/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa new file mode 100644 index 0000000000..e906edf6ca --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa @@ -0,0 +1,52 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 0 + + + 0.999943 0.999961 0.999975 0.999984 0.999991 0.999994 0.999997 0.999998 0.999999 0.999999 + + + 5.73583e-05 3.89112e-05 2.52356e-05 1.57459e-05 9.49338e-06 5.55991e-06 3.17989e-06 1.78488e-06 9.85086e-07 5.25626e-07 + + + 0.999911 0.99994 0.999961 0.999976 0.999985 0.999991 0.999995 0.999997 0.999998 0.999999 + + + 8.91886e-05 6.05051e-05 3.92405e-05 2.44845e-05 1.4762e-05 8.64557e-06 4.94469e-06 2.77547e-06 1.5318e-06 8.17343e-07 + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + diff --git a/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa.vtp b/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa.vtp new file mode 100644 index 0000000000..e906edf6ca --- /dev/null +++ b/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa.vtp @@ -0,0 +1,52 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + + + 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 + + + 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 + + + 0 0 0 0 0 0 0 0 0 0 + + + 0.999943 0.999961 0.999975 0.999984 0.999991 0.999994 0.999997 0.999998 0.999999 0.999999 + + + 5.73583e-05 3.89112e-05 2.52356e-05 1.57459e-05 9.49338e-06 5.55991e-06 3.17989e-06 1.78488e-06 9.85086e-07 5.25626e-07 + + + 0.999911 0.99994 0.999961 0.999976 0.999985 0.999991 0.999995 0.999997 0.999998 0.999999 + + + 8.91886e-05 6.05051e-05 3.92405e-05 2.44845e-05 1.4762e-05 8.64557e-06 4.94469e-06 2.77547e-06 1.5318e-06 8.17343e-07 + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + -- GitLab From 41ec33de25052aabd6e39ed822cf7a44d200a9da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Mon, 22 Oct 2018 13:10:45 +0200 Subject: [PATCH 05/12] [facet][cm] add missing using statement for parent functions --- dumux/multidomain/facet/couplingmanager.hh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/dumux/multidomain/facet/couplingmanager.hh b/dumux/multidomain/facet/couplingmanager.hh index 368648a76b..170f6b2141 100644 --- a/dumux/multidomain/facet/couplingmanager.hh +++ b/dumux/multidomain/facet/couplingmanager.hh @@ -186,6 +186,9 @@ public: using BulkFacetManager::getLowDimVolVars; using FacetEdgeManager::getLowDimVolVars; + using BulkFacetManager::getLowDimElement; + using FacetEdgeManager::getLowDimElement; + using BulkFacetManager::evalSourcesFromBulk; using FacetEdgeManager::evalSourcesFromBulk; -- GitLab From efd07199347241269d907284627761d010f38c00 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Mon, 22 Oct 2018 13:18:44 +0200 Subject: [PATCH 06/12] [facet][md] allow for retrievment of lowdim data wrapper for scvf --- .../multidomain/facet/box/couplingmanager.hh | 54 +++++++++++++++++-- .../cellcentered/tpfa/couplingmanager.hh | 50 +++++++++++++++-- dumux/multidomain/facet/couplingmanager.hh | 49 +++++++++++++++++ 3 files changed, 147 insertions(+), 6 deletions(-) diff --git a/dumux/multidomain/facet/box/couplingmanager.hh b/dumux/multidomain/facet/box/couplingmanager.hh index 0e6468f994..7e5e46e748 100644 --- a/dumux/multidomain/facet/box/couplingmanager.hh +++ b/dumux/multidomain/facet/box/couplingmanager.hh @@ -32,6 +32,7 @@ #include #include #include +#include namespace Dumux { @@ -100,11 +101,13 @@ class FacetCouplingManager elementIdx; + std::vector< Element > lowDimElements; std::vector< FVElementGeometry > lowDimFvGeometries; std::vector< ElementVolumeVariables > lowDimElemVolVars; void reset() { + lowDimElements.clear(); lowDimFvGeometries.clear(); lowDimElemVolVars.clear(); isSet = false; @@ -326,6 +329,48 @@ public: return this->problem(lowDimId).fvGridGeometry().element(lowDimElemIdx); } + /*! + * \brief returns the coupling data of the lower-dimensional d.o.f coinciding with a bulk scvf. + */ + ScvfCouplingData> getLowDimCouplingData(const Element& element, + const SubControlVolumeFace& scvf) const + { + const auto eIdx = this->problem(bulkId).fvGridGeometry().elementMapper().index(element); + assert(bulkContext_.isSet); + assert(bulkElemIsCoupled_[eIdx]); + + const auto& map = couplingMapperPtr_->couplingMap(bulkGridId, lowDimGridId); + const auto& couplingData = map.find(eIdx)->second; + + // search the low dim element idx this scvf is embedded in + // and find out the local index of the scv it couples to + unsigned int coupledScvIdx; + auto it = std::find_if( couplingData.elementToScvfMap.begin(), + couplingData.elementToScvfMap.end(), + [&] (auto& dataPair) + { + const auto& scvfList = dataPair.second; + auto it = std::find(scvfList.begin(), scvfList.end(), scvf.index()); + coupledScvIdx = std::distance(scvfList.begin(), it); + return it != scvfList.end(); + } ); + + assert(it != couplingData.elementToScvfMap.end()); + const auto lowDimElemIdx = it->first; + const auto& s = map.find(bulkContext_.elementIdx)->second.couplingElementStencil; + const auto& idxInContext = std::distance( s.begin(), std::find(s.begin(), s.end(), lowDimElemIdx) ); + assert(std::find(s.begin(), s.end(), lowDimElemIdx) != s.end()); + + static constexpr auto dm = FVGridGeometry::discMethod; + const auto scvIdx = dm == DiscretizationMethod::box ? coupledScvIdx : lowDimElemIdx; + + return ScvfCouplingData>(this->problem(lowDimId), + bulkContext_.lowDimElements[idxInContext], + bulkContext_.lowDimElemVolVars[idxInContext][scvIdx], + bulkContext_.lowDimFvGeometries[idxInContext], + bulkContext_.lowDimFvGeometries[idxInContext].scv(scvIdx)); + } + /*! * \brief Evaluates the coupling element residual of a bulk domain element with respect * to a dof in the lower-dimensional domain (dofIdxGlobalJ). This is essentially @@ -461,14 +506,16 @@ public: auto it = map.find(bulkElemIdx); assert(it != map.end()); const auto& elementStencil = it->second.couplingElementStencil; - bulkContext_.lowDimFvGeometries.reserve(elementStencil.size()); - bulkContext_.lowDimElemVolVars.reserve(elementStencil.size()); + const auto stencilSize = elementStencil.size(); + bulkContext_.lowDimElements.reserve(stencilSize); + bulkContext_.lowDimFvGeometries.reserve(stencilSize); + bulkContext_.lowDimElemVolVars.reserve(stencilSize); for (const auto lowDimElemIdx : elementStencil) { const auto& ldGridGeometry = this->problem(lowDimId).fvGridGeometry(); - const auto elemJ = ldGridGeometry.element(lowDimElemIdx); + auto elemJ = ldGridGeometry.element(lowDimElemIdx); auto fvGeom = localView(ldGridGeometry); auto elemVolVars = localView(assembler.gridVariables(lowDimId).curGridVolVars()); fvGeom.bindElement(elemJ); @@ -476,6 +523,7 @@ public: // TODO interpolated volvars bulkContext_.isSet = true; + bulkContext_.lowDimElements.emplace_back( std::move(elemJ) ); bulkContext_.lowDimFvGeometries.emplace_back( std::move(fvGeom) ); bulkContext_.lowDimElemVolVars.emplace_back( std::move(elemVolVars) ); } diff --git a/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh b/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh index 25dcb6eb9b..d2b8252018 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh +++ b/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh @@ -108,11 +108,13 @@ class FacetCouplingManager elementIdx; + std::vector< Element > lowDimElements; std::vector< FVElementGeometry > lowDimFvGeometries; std::vector< VolumeVariables > lowDimVolVars; void reset() { + lowDimElements.clear(); lowDimFvGeometries.clear(); lowDimVolVars.clear(); isSet = false; @@ -300,6 +302,45 @@ public: return this->problem(lowDimId).fvGridGeometry().element(lowDimElemIdx); } + /*! + * \brief returns the coupling data of the lower-dimensional d.o.f coinciding with a bulk scvf. + */ + ScvfCouplingData> getLowDimCouplingData(const Element& element, + const SubControlVolumeFace& scvf) const + { + assert(bulkContext_.isSet); + assert(bulkScvfIsCoupled_[scvf.index()]); + assert(scvf.insideScvIdx() == this->problem(bulkId).fvGridGeometry().elementMapper().index(element)); + + const auto& map = couplingMapperPtr_->couplingMap(bulkGridId, lowDimGridId); + const auto& couplingData = map.find(scvf.insideScvIdx())->second; + + // search the low dim element idx this scvf is embedded in + auto it = std::find_if( couplingData.elementToScvfMap.begin(), + couplingData.elementToScvfMap.end(), + [&scvf] (auto& dataPair) + { + const auto& scvfs = dataPair.second; + return std::find(scvfs.begin(), scvfs.end(), scvf.index()) != scvfs.end(); + } ); + + assert(it != couplingData.elementToScvfMap.end()); + const auto lowDimElemIdx = it->first; + const auto& s = map.find(bulkContext_.elementIdx)->second.couplingElementStencil; + const auto& idxInContext = std::distance( s.begin(), std::find(s.begin(), s.end(), lowDimElemIdx) ); + assert(std::find(s.begin(), s.end(), lowDimElemIdx) != s.end()); + + // TODO If box is used we have interpolated vol vars - but which scv to return??? We return the first for now... + static constexpr auto dm = FVGridGeometry::discMethod; + const auto scvIdx = dm == DiscretizationMethod::box ? 0 : lowDimElemIdx; + + return ScvfCouplingData>(this->problem(lowDimId), + bulkContext_.lowDimElements[idxInContext], + bulkContext_.lowDimVolVars[idxInContext], + bulkContext_.lowDimFvGeometries[idxInContext], + bulkContext_.lowDimFvGeometries[idxInContext].scv(scvIdx)); + } + /*! * \brief Evaluates the coupling element residual of a bulk domain element with respect * to a dof in the lower-dimensional domain (dofIdxGlobalJ). This is essentially @@ -421,8 +462,10 @@ public: auto it = map.find(bulkElemIdx); assert(it != map.end()); const auto& elementStencil = it->second.couplingElementStencil; - bulkContext_.lowDimFvGeometries.reserve(elementStencil.size()); - bulkContext_.lowDimVolVars.reserve(elementStencil.size()); + const auto stencilSize = elementStencil.size(); + bulkContext_.lowDimElements.reserve(stencilSize); + bulkContext_.lowDimFvGeometries.reserve(stencilSize); + bulkContext_.lowDimVolVars.reserve(stencilSize); for (const auto lowDimElemIdx : elementStencil) { @@ -430,7 +473,7 @@ public: const auto& ldProblem = this->problem(lowDimId); const auto& ldGridGeometry = this->problem(lowDimId).fvGridGeometry(); - const auto elemJ = ldGridGeometry.element(lowDimElemIdx); + auto elemJ = ldGridGeometry.element(lowDimElemIdx); auto fvGeom = localView(ldGridGeometry); fvGeom.bindElement(elemJ); @@ -450,6 +493,7 @@ public: fvGeom.scv(lowDimElemIdx) ); bulkContext_.isSet = true; + bulkContext_.lowDimElements.emplace_back( std::move(elemJ) ); bulkContext_.lowDimFvGeometries.emplace_back( std::move(fvGeom) ); bulkContext_.lowDimVolVars.emplace_back( std::move(volVars) ); } diff --git a/dumux/multidomain/facet/couplingmanager.hh b/dumux/multidomain/facet/couplingmanager.hh index 170f6b2141..0865a6a962 100644 --- a/dumux/multidomain/facet/couplingmanager.hh +++ b/dumux/multidomain/facet/couplingmanager.hh @@ -32,6 +32,52 @@ namespace Dumux { +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Class to temporarily store the geometric and physical variables from the coupling + * context related to the domain with codimension one at the degree of freedom that + * a sub-control volume face of the bulk domain couples to. + * + * \tparam CodimOneTypeTag The type tag of the problem that lives on the domain with codimension one. + */ +template +class ScvfCouplingData +{ + using Problem = typename GET_PROP_TYPE(CodimOneTypeTag, Problem); + using VolVars = typename GET_PROP_TYPE(CodimOneTypeTag, VolumeVariables); + using FVGridGeometry = typename GET_PROP_TYPE(CodimOneTypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVGridGeometry::SubControlVolume; + using Element = typename FVGridGeometry::GridView::template Codim<0>::Entity; + +public: + ScvfCouplingData(const Problem& problem, + const Element& element, + const VolVars& volVars, + const FVElementGeometry& fvGeometry, + const SubControlVolume& scv) + : problem_(problem) + , element_(element) + , volVars_(volVars) + , fvGeometry_(fvGeometry) + , scv_(scv) + {} + + const Problem& problem() const { return problem_; } + const Element& element() const { return element_; } + const VolVars& volVars() const { return volVars_; } + const FVElementGeometry& fvGeometry() const { return fvGeometry_; } + const SubControlVolume& scv() const { return scv_; } + +private: + const Problem& problem_; + const Element& element_; + const VolVars& volVars_; + const FVElementGeometry& fvGeometry_; + const SubControlVolume& scv_; +}; + /*! * \ingroup MultiDomain * \ingroup FacetCoupling @@ -189,6 +235,9 @@ public: using BulkFacetManager::getLowDimElement; using FacetEdgeManager::getLowDimElement; + using BulkFacetManager::getLowDimCouplingData; + using FacetEdgeManager::getLowDimCouplingData; + using BulkFacetManager::evalSourcesFromBulk; using FacetEdgeManager::evalSourcesFromBulk; -- GitLab From 1d7d01cade7a7b3ba146bf405dfc16d232d51d5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Mon, 22 Oct 2018 15:00:38 +0200 Subject: [PATCH 07/12] [facet][darcyslaw] remove obsolete property system include --- dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh | 1 - 1 file changed, 1 deletion(-) diff --git a/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh index 56e3ca98e9..4d1ebe6877 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh +++ b/dumux/multidomain/facet/cellcentered/tpfa/darcyslaw.hh @@ -33,7 +33,6 @@ #include #include -#include #include #include -- GitLab From 1c64883d1bdeb70cea9c1d2b1a4f8c5daef376f7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Tue, 23 Oct 2018 10:27:12 +0200 Subject: [PATCH 08/12] [facet] introduce box fourier's law --- dumux/multidomain/facet/box/CMakeLists.txt | 1 + dumux/multidomain/facet/box/fourierslaw.hh | 179 +++++++++++++++++++++ dumux/multidomain/facet/box/properties.hh | 4 + 3 files changed, 184 insertions(+) create mode 100644 dumux/multidomain/facet/box/fourierslaw.hh diff --git a/dumux/multidomain/facet/box/CMakeLists.txt b/dumux/multidomain/facet/box/CMakeLists.txt index a9641d813d..b73b0185d5 100644 --- a/dumux/multidomain/facet/box/CMakeLists.txt +++ b/dumux/multidomain/facet/box/CMakeLists.txt @@ -4,6 +4,7 @@ couplingmapper.hh darcyslaw.hh elementboundarytypes.hh fickslaw.hh +fourierslaw.hh fvelementgeometry.hh fvgridgeometry.hh localresidual.hh diff --git a/dumux/multidomain/facet/box/fourierslaw.hh b/dumux/multidomain/facet/box/fourierslaw.hh new file mode 100644 index 0000000000..2feeb10c0c --- /dev/null +++ b/dumux/multidomain/facet/box/fourierslaw.hh @@ -0,0 +1,179 @@ +// -*- 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 MultiDomain + * \ingroup FacetCoupling + * \copydoc Dumux::BoxFacetCouplingFouriersLaw + */ +#ifndef DUMUX_DISCRETIZATION_BOX_FACET_COUPLING_FOURIERS_LAW_HH +#define DUMUX_DISCRETIZATION_BOX_FACET_COUPLING_FOURIERS_LAW_HH + +#include +#include + +#include +#include +#include + +#include +#include + +namespace Dumux { + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Fourier's law for the box scheme scheme in the context of coupled models + * where coupling occurs across the facets of the bulk domain elements + * with a lower-dimensional domain living on these facets. + * + * \tparam TypeTag the problem type tag + */ +template +class BoxFacetCouplingFouriersLaw +{ + using DefaultBoxFouriersLaw = FouriersLawImplementation; + + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using ModelTraits = typename GET_PROP_TYPE(TypeTag, ModelTraits); + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using BalanceEqOpts = typename GET_PROP_TYPE(TypeTag, BalanceEqOpts); + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVElementGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVElementGeometry::SubControlVolumeFace; + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using CoordScalar = typename GridView::ctype; + + static constexpr int dim = GridView::dimension; + static constexpr int dimWorld = GridView::dimensionworld; + +public: + + template + static Scalar flux(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + const ElementFluxVarsCache& elemFluxVarCache) + { + // if this scvf is not on an interior boundary, use the standard law + if (!scvf.interiorBoundary()) + return DefaultBoxFouriersLaw::flux(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarCache); + + // obtain the effective diffusivity model used + using EffThermCondModel = typename GET_PROP_TYPE(TypeTag, ThermalConductivityModel); + + // get some references for convenience + const auto& fluxVarCache = elemFluxVarCache[scvf]; + const auto& shapeValues = fluxVarCache.shapeValues(); + const auto& insideScv = fvGeometry.scv(scvf.insideScvIdx()); + const auto& insideVolVars = elemVolVars[insideScv]; + + // evaluate user-defined interior boundary types + const auto bcTypes = problem.interiorBoundaryTypes(element, scvf); + + // on interior Neumann boundaries, evaluate the flux using the facet permeability + if (bcTypes.hasOnlyNeumann()) + { + // interpolate temperature to scvf integration point + Scalar T = 0.0; + for (const auto& scv : scvs(fvGeometry)) + T += elemVolVars[scv].temperature()*shapeValues[scv.indexInElement()][0]; + + // compute tpfa flux from integration point to facet centerline + const auto& facetData = problem.couplingManager().getLowDimCouplingData(element, scvf); + + using std::sqrt; + // If this is a surface grid, use the square root of the facet extrusion factor + // as an approximate average distance from scvf ip to facet center + const auto a = facetData.volVars().extrusionFactor(); + auto gradT = scvf.unitOuterNormal(); + gradT *= dim == dimWorld ? 0.5*a : 0.5*sqrt(a); + gradT /= gradT.two_norm2(); + gradT *= (facetData.volVars().temperature() - T); + + // TODO How can we tell this class which effective thermal conductivity law is used + // in the facet domain? Here, we simply assume it uses the same law + // as this domain. But, we cannot make it an additional template parameter + // because that leads to a compiler error for models that do not specify + // an effective diffusivity law, e.g. models that do not consider diffusion. + const auto facetLambda = EffThermCondModel::effectiveThermalConductivity(facetData.volVars(), + facetData.problem().spatialParams(), + facetData.element(), + facetData.fvGeometry(), + facetData.scv()); + + // apply facet fourier coefficient + return -1.0*scvf.area()*insideVolVars.extrusionFactor()*vtmv(scvf.unitOuterNormal(), facetLambda, gradT); + } + + // on interior Dirichlet boundaries use the facet mole fraction and evaluate flux + else if (bcTypes.hasOnlyDirichlet()) + { + // create vector with nodal temperatures + std::vector T(element.subEntities(dim)); + for (const auto& scv : scvs(fvGeometry)) + T[scv.localDofIndex()] = elemVolVars[scv].temperature(); + + // substitute with facet pressures for those scvs touching this facet + for (const auto& scvfJ : scvfs(fvGeometry)) + if (scvfJ.interiorBoundary() && scvfJ.facetIndexInElement() == scvf.facetIndexInElement()) + T[ fvGeometry.scv(scvfJ.insideScvIdx()).localDofIndex() ] + = problem.couplingManager().getLowDimVolVars(element, scvfJ).temperature(); + + // evaluate gradT at integration point + Dune::FieldVector gradT(0.0); + for (const auto& scv : scvs(fvGeometry)) + gradT.axpy(T[scv.localDofIndex()], fluxVarCache.gradN(scv.indexInElement())); + + auto insideLambda = EffThermCondModel::effectiveThermalConductivity(insideVolVars, + problem.spatialParams(), + element, + fvGeometry, + fvGeometry.scv(scvf.insideScvIdx())); + + // apply matrix fourier coefficient and return the flux + return -1.0*scvf.area()*insideVolVars.extrusionFactor()*vtmv(scvf.unitOuterNormal(), insideLambda, gradT); + } + + // mixed boundary types are not supported + else + DUNE_THROW(Dune::NotImplemented, "Mixed boundary types are not supported"); + } + + // compute transmissibilities ti for analytical jacobians + template + static std::vector calculateTransmissibilities(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + const FluxVarCache& fluxVarCache) + { + DUNE_THROW(Dune::NotImplemented, "transmissibilty computation for BoxFacetCouplingFouriersLaw"); + } +}; + +} // end namespace Dumux + +#endif diff --git a/dumux/multidomain/facet/box/properties.hh b/dumux/multidomain/facet/box/properties.hh index c48a668fb9..860725c9a1 100644 --- a/dumux/multidomain/facet/box/properties.hh +++ b/dumux/multidomain/facet/box/properties.hh @@ -35,6 +35,7 @@ #include #include +#include #include #include #include @@ -62,6 +63,9 @@ SET_TYPE_PROP(BoxFacetCouplingModel, //! Use the box facet coupling-specific Fick's law SET_TYPE_PROP(BoxFacetCouplingModel, MolecularDiffusionType, BoxFacetCouplingFicksLaw); +//! Use the box facet coupling-specific Fourier's law +SET_TYPE_PROP(BoxFacetCouplingModel, HeatConductionType, BoxFacetCouplingFouriersLaw); + //! Per default, use the porous medium flow flux variables with the modified upwind scheme SET_TYPE_PROP(BoxFacetCouplingModel, FluxVariables, -- GitLab From 098e3907608cfde792fda4c924a109b6b7b0d275 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Tue, 23 Oct 2018 10:27:30 +0200 Subject: [PATCH 09/12] [facet] introduce tpfa fourier's law --- .../facet/cellcentered/tpfa/CMakeLists.txt | 1 + .../facet/cellcentered/tpfa/fourierslaw.hh | 319 ++++++++++++++++++ .../facet/cellcentered/tpfa/properties.hh | 4 + 3 files changed, 324 insertions(+) create mode 100644 dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh diff --git a/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt b/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt index 9175158d75..0f21d29c22 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt +++ b/dumux/multidomain/facet/cellcentered/tpfa/CMakeLists.txt @@ -3,5 +3,6 @@ couplingmanager.hh couplingmapper.hh darcyslaw.hh fickslaw.hh +fourierslaw.hh properties.hh DESTINATION ${CMAKE_INSTALL_INCLUDEDIR}/dumux/multidomain/facet/cellcentered/tpfa) diff --git a/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh b/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh new file mode 100644 index 0000000000..09d47df005 --- /dev/null +++ b/dumux/multidomain/facet/cellcentered/tpfa/fourierslaw.hh @@ -0,0 +1,319 @@ +// -*- 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 MultiDomain + * \ingroup FacetCoupling + * \copydoc Dumux::CCTpfaFacetCouplingFouriersLaw + */ +#ifndef DUMUX_DISCRETIZATION_CC_TPFA_FACET_COUPLING_FOURIERS_LAW_HH +#define DUMUX_DISCRETIZATION_CC_TPFA_FACET_COUPLING_FOURIERS_LAW_HH + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +namespace Dumux { + +//! Forward declaration of the implementation +template +class CCTpfaFacetCouplingFouriersLawImpl; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief The cache corresponding to tpfa Fourier's Law with facet coupling + * \note We distinguish between network and non-network grids here. Specializations + * for the two cases can be found below. + */ +template +class CCTpfaFacetCouplingFouriersLawCache; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Fourier's law for cell-centered finite volume schemes with two-point flux approximation + * in the context of coupled models where the coupling occurs across the facets of the bulk + * domain elements with a lower-dimensional domain living on these facets. + * + * \tparam TypeTag the problem type tag + */ +template +using CCTpfaFacetCouplingFouriersLaw = + CCTpfaFacetCouplingFouriersLawImpl< TypeTag, ( int(GET_PROP_TYPE(TypeTag, GridView)::dimension) < + int(GET_PROP_TYPE(TypeTag, GridView)::dimensionworld) ) >; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Specialization of the FacetCouplingTpfaFouriersLawCache for non-network grids. + */ +template +class CCTpfaFacetCouplingFouriersLawCache +{ + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolumeFace = typename FVGridGeometry::SubControlVolumeFace; + using Element = typename FVGridGeometry::GridView::template Codim<0>::Entity; + + // the standard tpfa fourier's law implementation + using HeatConductionType = typename GET_PROP_TYPE(TypeTag, HeatConductionType); + using TpfaFouriersLaw = FouriersLawImplementation; + +public: + //! export the corresponding filler class (use standard tpfa one) + using Filler = typename TpfaFouriersLaw::Cache::Filler; + + //! we store the transmissibilities associated with the interior + //! cell, outside cell, and the fracture facet in an array. Access + //! to this array should be done using the following indices: + static constexpr int insideTijIdx = 0; + static constexpr int outsideTijIdx = 1; + static constexpr int facetTijIdx = 2; + + //! Export transmissibility storage type + using HeatConductionTransmissibilityContainer = std::array; + + //! update subject to a given problem + template< class Problem, class ElementVolumeVariables > + void updateHeatConduction(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace &scvf) + { + tij_ = HeatConductionType::calculateTransmissibility(problem, element, fvGeometry, elemVolVars, scvf); + } + + //! We use the same name as in the TpfaFicksLawCache so + //! that this cache and the law implementation for non-coupled + //! models can be reused here on facets that do not lie on an + //! interior boundary, i.e. do not coincide with a fracture + Scalar heatConductionTij() const + { return tij_[insideTijIdx]; } + + //! returns the transmissibility associated with the inside cell + Scalar heatConductionTijInside() const + { return tij_[insideTijIdx]; } + + //! returns the transmissibility associated with the outside cell + Scalar heatConductionTijOutside() const + {return tij_[outsideTijIdx]; } + + //! returns the transmissibility associated with the outside cell + Scalar heatConductionTijFacet() const + {return tij_[facetTijIdx]; } + +private: + HeatConductionTransmissibilityContainer tij_; +}; + +/*! + * \ingroup MultiDomain + * \ingroup FacetCoupling + * \brief Specialization of the CCTpfaFouriersLaw grids where dim=dimWorld + */ +template +class CCTpfaFacetCouplingFouriersLawImpl +{ + using ThisType = CCTpfaFacetCouplingFouriersLawImpl; + using TpfaFouriersLaw = FouriersLawImplementation; + + using FVGridGeometry = typename GET_PROP_TYPE(TypeTag, FVGridGeometry); + using FVElementGeometry = typename FVGridGeometry::LocalView; + using SubControlVolume = typename FVGridGeometry::SubControlVolume; + using SubControlVolumeFace = typename FVGridGeometry::SubControlVolumeFace; + + using GridView = typename FVGridGeometry::GridView; + using Element = typename GridView::template Codim<0>::Entity; + using GlobalPosition = typename Element::Geometry::GlobalCoordinate; + using IndexType = typename GridView::IndexSet::IndexType; + + public: + //! state the scalar type of the law + using Scalar = typename GET_PROP_TYPE(TypeTag, Scalar); + //! export the discretization method this implementation belongs to + static const DiscretizationMethod discMethod = DiscretizationMethod::cctpfa; + //! export the type for the corresponding cache + using Cache = CCTpfaFacetCouplingFouriersLawCache; + //! export the type used to store transmissibilities + using TijContainer = typename Cache::HeatConductionTransmissibilityContainer; + + + //! Compute the diffusive flux + template< class Problem, class ElementVolumeVariables, class ElementFluxVarsCache > + static Scalar flux(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf, + const ElementFluxVarsCache& elemFluxVarsCache) + { + if (!problem.couplingManager().isOnInteriorBoundary(element, scvf)) + return TpfaFouriersLaw::flux(problem, element, fvGeometry, elemVolVars, scvf, elemFluxVarsCache); + + // Obtain inside and fracture pressures + const auto& insideVolVars = elemVolVars[scvf.insideScvIdx()]; + const auto& facetVolVars = problem.couplingManager().getLowDimVolVars(element, scvf); + const auto tInside = insideVolVars.temperature(); + const auto tFacet = facetVolVars.temperature(); + + // compute and return flux + const auto& fluxVarsCache = elemFluxVarsCache[scvf]; + Scalar flux = fluxVarsCache.heatConductionTijInside()*tInside + + fluxVarsCache.heatConductionTijFacet()*tFacet; + + if (!scvf.boundary()) + flux += fluxVarsCache.heatConductionTijOutside()*elemVolVars[scvf.outsideScvIdx()].temperature(); + + return flux; + } + + // The flux variables cache has to be bound to an element prior to flux calculations + // During the binding, the transmissibility will be computed and stored using the method below. + template< class Problem, class ElementVolumeVariables > + static TijContainer calculateTransmissibility(const Problem& problem, + const Element& element, + const FVElementGeometry& fvGeometry, + const ElementVolumeVariables& elemVolVars, + const SubControlVolumeFace& scvf) + { + TijContainer tij; + if (!problem.couplingManager().isCoupled(element, scvf)) + { + //! use the standard darcy's law and only compute one transmissibility + tij[Cache::insideTijIdx] = TpfaFouriersLaw::calculateTransmissibility(problem, element, fvGeometry, elemVolVars, scvf); + return tij; + } + + //! xi factor for the coupling conditions + static const Scalar xi = getParamFromGroup(problem.paramGroup(), "FacetCoupling.Xi", 1.0); + static const Scalar oneMinusXi = 1.0 - xi; + + using EffThermCondModel = typename GET_PROP_TYPE(TypeTag, ThermalConductivityModel); + const auto insideScvIdx = scvf.insideScvIdx(); + const auto& insideScv = fvGeometry.scv(insideScvIdx); + const auto& insideVolVars = elemVolVars[insideScvIdx]; + const auto insideLambda = EffThermCondModel::effectiveThermalConductivity(insideVolVars, + problem.spatialParams(), + element, + fvGeometry, + insideScv); + const auto wIn = scvf.area()*computeTpfaTransmissibility(scvf, insideScv, insideLambda, insideVolVars.extrusionFactor()); + + // proceed depending on the interior BC types used + const auto iBcTypes = problem.interiorBoundaryTypes(element, scvf); + + // neumann-coupling + if (iBcTypes.hasOnlyNeumann()) + { + const auto& facetData = problem.couplingManager().getLowDimCouplingData(element, scvf); + + // TODO How can we tell this class which effective thermal conductivity law is used + // in the facet domain? Here, we simply assume it uses the same law + // as this domain. But, we cannot make it an additional template parameter + // because that leads to a compiler error for models that do not specify + // an effective diffusivity law, e.g. models that do not consider diffusion. + const auto facetLambda = EffThermCondModel::effectiveThermalConductivity(facetData.volVars(), + facetData.problem().spatialParams(), + facetData.element(), + facetData.fvGeometry(), + facetData.scv()); + + const auto wFacet = 2.0*scvf.area()*insideVolVars.extrusionFactor() + /facetData.volVars().extrusionFactor() + *vtmv(scvf.unitOuterNormal(), facetLambda, scvf.unitOuterNormal()); + + // The fluxes across this face and the outside face can be expressed in matrix form: + // \f$\mathbf{C} \bar{\mathbf{u}} + \mathbf{D} \mathbf{u} + \mathbf{E} \mathbf{u}_\gamma\f$, + // where \f$\gamma$\f denotes the domain living on the facets and \f$\bar{\mathbf{u}}$\f are + // intermediate face unknowns in the matrix domain. Equivalently, flux continuity reads: + // \f$\mathbf{A} \bar{\mathbf{u}} = \mathbf{B} \mathbf{u} + \mathbf{M} \mathbf{u}_\gamma\f$. + // Combining the two, we can eliminate the intermediate unknowns and compute the transmissibilities. + if (!scvf.boundary() && xi != 1.0) + { + const auto outsideScvIdx = scvf.outsideScvIdx(); + const auto& outsideScv = fvGeometry.scv(outsideScvIdx); + const auto& outsideVolVars = elemVolVars[outsideScvIdx]; + const auto outsideElement = problem.fvGridGeometry().element(outsideScvIdx); + const auto outsideLambda = EffThermCondModel::effectiveThermalConductivity(outsideVolVars, + problem.spatialParams(), + outsideElement, + fvGeometry, + outsideScv); + const auto wOut = -1.0*scvf.area()*computeTpfaTransmissibility(scvf, + outsideScv, + outsideLambda, + outsideVolVars.extrusionFactor()); + const Scalar xiWIn = xi*wIn; + const Scalar xiWOut = xi*wOut; + const Scalar oneMinusXiWIn = oneMinusXi*wIn; + const Scalar oneMinusXiWOut = oneMinusXi*wOut; + + // assemble matrices + Dune::FieldMatrix A, B; + A[0][0] = xiWIn+wFacet; + A[0][1] = oneMinusXiWOut; + A[1][0] = oneMinusXiWIn; + A[1][1] = xiWOut-wFacet; + + B[0][0] = xiWIn; + B[0][1] = oneMinusXiWOut; + B[1][0] = oneMinusXiWIn; + B[1][1] = xiWOut; + + // tij = C(A^-1)B + const Scalar detA = A[0][0]*A[1][1] - A[1][0]*A[0][1]; + tij[Cache::insideTijIdx] = xiWIn - xiWIn*(A[1][1]*B[0][0] - A[0][1]*B[1][0])/detA; + tij[Cache::outsideTijIdx] = -xiWIn*(A[1][1]*B[0][1] - A[0][1]*B[1][1])/detA; + tij[Cache::facetTijIdx] = -xiWIn*wFacet*(A[1][1] + A[0][1])/detA; + } + else + { + // TODO: check for division by zero?? + tij[Cache::insideTijIdx] = wFacet*wIn/(wIn+wFacet); + tij[Cache::facetTijIdx] = -tij[Cache::insideTijIdx]; + tij[Cache::outsideTijIdx] = 0.0; + } + } + else if (iBcTypes.hasOnlyDirichlet()) + { + tij[Cache::insideTijIdx] = wIn; + tij[Cache::outsideTijIdx] = 0.0; + tij[Cache::facetTijIdx] = -wIn; + } + else + DUNE_THROW(Dune::NotImplemented, "Interior boundary types other than pure Dirichlet or Neumann"); + + return tij; + } +}; + +} // end namespace Dumux + +#endif diff --git a/dumux/multidomain/facet/cellcentered/tpfa/properties.hh b/dumux/multidomain/facet/cellcentered/tpfa/properties.hh index 4b9dc50064..74b31bb519 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/properties.hh +++ b/dumux/multidomain/facet/cellcentered/tpfa/properties.hh @@ -37,6 +37,7 @@ #include #include #include +#include #include @@ -57,6 +58,9 @@ SET_TYPE_PROP(CCTpfaFacetCouplingModel, //! Use the tpfa facet coupling-specific Fick's law SET_TYPE_PROP(CCTpfaFacetCouplingModel, MolecularDiffusionType, CCTpfaFacetCouplingFicksLaw); +//! Use the tpfa facet coupling-specific Fourier's law +SET_TYPE_PROP(CCTpfaFacetCouplingModel, HeatConductionType, CCTpfaFacetCouplingFouriersLaw); + //! Use the cc local residual for models with facet coupling SET_TYPE_PROP(CCTpfaFacetCouplingModel, BaseLocalResidual, CCFacetCouplingLocalResidual); -- GitLab From 4bbb4812a32c1eca17d74bdb83829538d28a0d4b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Tue, 23 Oct 2018 10:29:03 +0200 Subject: [PATCH 10/12] [test][facet] extend 1pnc test to ni --- .../facet/1pnc_1pnc/CMakeLists.txt | 34 +- .../facet/1pnc_1pnc/bulkproblem.hh | 42 +- .../facet/1pnc_1pnc/lowdimproblem.hh | 39 +- .../test_facetcoupling_fv_1pnc_1pnc.cc | 6 + .../facetcoupling_1pncni1pncni_bulk_box.vtu | 510 ++++++++++++++++++ .../facetcoupling_1pncni1pncni_bulk_tpfa.vtu | 214 ++++++++ .../facetcoupling_1pncni1pncni_lowdim_box.vtp | 57 ++ .../facetcoupling_1pncni1pncni_lowdim_box.vtu | 57 ++ ...facetcoupling_1pncni1pncni_lowdim_tpfa.vtp | 55 ++ 9 files changed, 1007 insertions(+), 7 deletions(-) create mode 100644 test/references/facetcoupling_1pncni1pncni_bulk_box.vtu create mode 100644 test/references/facetcoupling_1pncni1pncni_bulk_tpfa.vtu create mode 100644 test/references/facetcoupling_1pncni1pncni_lowdim_box.vtp create mode 100644 test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu create mode 100644 test/references/facetcoupling_1pncni1pncni_lowdim_tpfa.vtp diff --git a/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt b/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt index ad24089106..1bd35c109b 100644 --- a/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt +++ b/test/multidomain/facet/1pnc_1pnc/CMakeLists.txt @@ -11,7 +11,8 @@ dune_add_test(NAME test_facet_1pnc1pnc_tpfa ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_bulk_tpfa-00016.vtu ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa.vtp ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_lowdim_tpfa-00016.vtp - --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pnc1pnc_tpfa facetcoupling_1pnc1pnc.input -Bulk.Problem.Name 1pnc_1pnc_bulk_tpfa -LowDim.Problem.Name 1pnc_1pnc_lowdim_tpfa") + --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pnc1pnc_tpfa facetcoupling_1pnc1pnc.input + -Bulk.Problem.Name 1pnc_1pnc_bulk_tpfa -LowDim.Problem.Name 1pnc_1pnc_lowdim_tpfa") dune_add_test(NAME test_facet_1pnc1pnc_box CMAKE_GUARD "( dune-foamgrid_FOUND AND dune-alugrid_FOUND AND gmsh_FOUND AND HAVE_UMFPACK )" @@ -24,7 +25,36 @@ dune_add_test(NAME test_facet_1pnc1pnc_box ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_bulk_box-00016.vtu ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pnc1pnc_lowdim_box.vtp ${CMAKE_CURRENT_BINARY_DIR}/1pnc_1pnc_lowdim_box-00016.vtp - --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pnc1pnc_box facetcoupling_1pnc1pnc.input -Bulk.Problem.Name 1pnc_1pnc_bulk_box -LowDim.Problem.Name 1pnc_1pnc_lowdim_box") + --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pnc1pnc_box facetcoupling_1pnc1pnc.input + -Bulk.Problem.Name 1pnc_1pnc_bulk_box -LowDim.Problem.Name 1pnc_1pnc_lowdim_box") + +dune_add_test(NAME test_facet_1pncni1pncni_tpfa + CMAKE_GUARD "( dune-foamgrid_FOUND AND dune-alugrid_FOUND AND gmsh_FOUND AND HAVE_UMFPACK )" + COMPILE_DEFINITIONS BULKTYPETAG=OnePNCNIBulkTpfa + COMPILE_DEFINITIONS LOWDIMTYPETAG=OnePNCNILowDimTpfa + SOURCES test_facetcoupling_fv_1pnc_1pnc.cc + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzy + --files ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pncni1pncni_bulk_tpfa.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1pncni_1pncni_bulk_tpfa-00005.vtu + ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pncni1pncni_lowdim_tpfa.vtp + ${CMAKE_CURRENT_BINARY_DIR}/1pncni_1pncni_lowdim_tpfa-00005.vtp + --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pncni1pncni_tpfa facetcoupling_1pnc1pnc.input + -Bulk.Problem.Name 1pncni_1pncni_bulk_tpfa -LowDim.Problem.Name 1pncni_1pncni_lowdim_tpfa -TimeLoop.TEnd 1e5") + +dune_add_test(NAME test_facet_1pncni1pncni_box + CMAKE_GUARD "( dune-foamgrid_FOUND AND dune-alugrid_FOUND AND gmsh_FOUND AND HAVE_UMFPACK )" + COMPILE_DEFINITIONS BULKTYPETAG=OnePNCNIBulkBox + COMPILE_DEFINITIONS LOWDIMTYPETAG=OnePNCNILowDimBox + SOURCES test_facetcoupling_fv_1pnc_1pnc.cc + COMMAND ${CMAKE_SOURCE_DIR}/bin/testing/runtest.py + CMD_ARGS --script fuzzy + --files ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pncni1pncni_bulk_box.vtu + ${CMAKE_CURRENT_BINARY_DIR}/1pncni_1pncni_bulk_box-00018.vtu + ${CMAKE_SOURCE_DIR}/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtp + ${CMAKE_CURRENT_BINARY_DIR}/1pncni_1pncni_lowdim_box-00018.vtp + --command "${CMAKE_CURRENT_BINARY_DIR}/test_facet_1pncni1pncni_box facetcoupling_1pnc1pnc.input + -Bulk.Problem.Name 1pncni_1pncni_bulk_box -LowDim.Problem.Name 1pncni_1pncni_lowdim_box -TimeLoop.TEnd 1e5") set(CMAKE_BUILD_TYPE Release) diff --git a/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh b/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh index d870a30c59..582a2dd2f1 100644 --- a/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh +++ b/test/multidomain/facet/1pnc_1pnc/bulkproblem.hh @@ -45,8 +45,11 @@ template class OnePNCBulkProblem; namespace Properties { // create the type tag nodes NEW_TYPE_TAG(OnePNCBulk, INHERITS_FROM(OnePNC)); +NEW_TYPE_TAG(OnePNCBulkNI, INHERITS_FROM(OnePNCBulk, OnePNCNI)); NEW_TYPE_TAG(OnePNCBulkTpfa, INHERITS_FROM(OnePNCBulk, CCTpfaFacetCouplingModel)); NEW_TYPE_TAG(OnePNCBulkBox, INHERITS_FROM(OnePNCBulk, BoxFacetCouplingModel)); +NEW_TYPE_TAG(OnePNCNIBulkTpfa, INHERITS_FROM(OnePNCBulkNI, CCTpfaFacetCouplingModel)); +NEW_TYPE_TAG(OnePNCNIBulkBox, INHERITS_FROM(OnePNCBulkNI, BoxFacetCouplingModel)); // Set the grid type SET_TYPE_PROP(OnePNCBulk, Grid, Dune::ALUGrid<2, 2, Dune::cube, Dune::nonconforming>); @@ -103,6 +106,8 @@ class OnePNCBulkProblem : public PorousMediumFlowProblem N2Idx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::N2Idx), }; + static constexpr bool isNonIsothermal = GET_PROP_TYPE(TypeTag, ModelTraits)::enableEnergyBalance(); + public: OnePNCBulkProblem(std::shared_ptr fvGridGeometry, std::shared_ptr spatialParams, @@ -130,18 +135,49 @@ public: return values; } - //! evaluates the Dirichlet boundary condition for a given position + //! evaluates the Dirichlet boundary condition for a given position (isothermal case) + template = 0> + PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const + { + auto values = initialAtPos(globalPos); + if (globalPos[0] < 1e-6) + values[N2Idx] = boundaryMoleFraction_; + return values; + } + + //! evaluates the Dirichlet boundary condition for a given position (non-isothermal case) + template = 0> PrimaryVariables dirichletAtPos(const GlobalPosition& globalPos) const { auto values = initialAtPos(globalPos); if (globalPos[0] < 1e-6) + { values[N2Idx] = boundaryMoleFraction_; + values[Indices::temperatureIdx] += 100.0; // increase 100 K + } return values; } - //! evaluate the initial conditions + //! evaluate the initial conditions (isothermal case) + template = 0> PrimaryVariables initialAtPos(const GlobalPosition& globalPos) const - { return PrimaryVariables({1.0e5, 0.0}); } + { + PrimaryVariables values; + values[pressureIdx] = 1.0e5; + values[N2Idx] = 0.0; + return values; + } + + //! evaluate the initial conditions (non-isothermal case) + template = 0> + PrimaryVariables initialAtPos(const GlobalPosition& globalPos) const + { + PrimaryVariables values; + values[pressureIdx] = 1.0e5; + values[N2Idx] = 0.0; + values[Indices::temperatureIdx] = temperature(); + return values; + } //! returns the temperature in \f$\mathrm{[K]}\f$ in the domain Scalar temperature() const diff --git a/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh b/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh index 0391d4bbc9..8b2eb21ff6 100644 --- a/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh +++ b/test/multidomain/facet/1pnc_1pnc/lowdimproblem.hh @@ -45,8 +45,11 @@ template class OnePNCLowDimProblem; namespace Properties { // create the type tag nodes NEW_TYPE_TAG(OnePNCLowDim, INHERITS_FROM(OnePNC)); +NEW_TYPE_TAG(OnePNCNILowDim, INHERITS_FROM(OnePNCLowDim, OnePNCNI)); NEW_TYPE_TAG(OnePNCLowDimTpfa, INHERITS_FROM(CCTpfaModel, OnePNCLowDim)); NEW_TYPE_TAG(OnePNCLowDimBox, INHERITS_FROM(BoxModel, OnePNCLowDim)); +NEW_TYPE_TAG(OnePNCNILowDimTpfa, INHERITS_FROM(CCTpfaModel, OnePNCNILowDim)); +NEW_TYPE_TAG(OnePNCNILowDimBox, INHERITS_FROM(BoxModel, OnePNCNILowDim)); // Set the grid type SET_TYPE_PROP(OnePNCLowDim, Grid, Dune::FoamGrid<1, 2>); @@ -91,6 +94,21 @@ class OnePNCLowDimProblem : public PorousMediumFlowProblem using CouplingManager = typename GET_PROP_TYPE(TypeTag, CouplingManager); using NumEqVector = typename GET_PROP_TYPE(TypeTag, NumEqVector); + // copy some indices for convenience + using FluidSystem = typename GET_PROP_TYPE(TypeTag, FluidSystem); + using Indices = typename GET_PROP_TYPE(TypeTag, ModelTraits)::Indices; + enum + { + // indices of the primary variables + pressureIdx = Indices::pressureIdx, + + // component indices + H2OIdx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::H2OIdx), + N2Idx = FluidSystem::compIdx(FluidSystem::MultiPhaseFluidSystem::N2Idx), + }; + + static constexpr bool isNonIsothermal = GET_PROP_TYPE(TypeTag, ModelTraits)::enableEnergyBalance(); + public: OnePNCLowDimProblem(std::shared_ptr fvGridGeometry, std::shared_ptr spatialParams, @@ -127,9 +145,26 @@ public: Scalar extrusionFactorAtPos(const GlobalPosition& globalPos) const { return aperture_; } - //! evaluate the initial conditions + //! evaluate the initial conditions (isothermal case) + template = 0> + PrimaryVariables initialAtPos(const GlobalPosition& globalPos) const + { + PrimaryVariables values; + values[pressureIdx] = 1.0e5; + values[N2Idx] = 0.0; + return values; + } + + //! evaluate the initial conditions (non-isothermal case) + template = 0> PrimaryVariables initialAtPos(const GlobalPosition& globalPos) const - { return PrimaryVariables({1.0e5, 0.0}); } + { + PrimaryVariables values; + values[pressureIdx] = 1.0e5; + values[N2Idx] = 0.0; + values[Indices::temperatureIdx] = temperature(); + return values; + } //! returns the temperature in \f$\mathrm{[K]}\f$ in the domain Scalar temperature() const diff --git a/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc b/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc index 54e84bd271..eefdb8108e 100644 --- a/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc +++ b/test/multidomain/facet/1pnc_1pnc/test_facetcoupling_fv_1pnc_1pnc.cc @@ -71,13 +71,19 @@ namespace Properties { // set cm property for the box test using BoxTraits = TestTraits; +using BoxNITraits = TestTraits; SET_TYPE_PROP(OnePNCBulkBox, CouplingManager, typename BoxTraits::CouplingManager); SET_TYPE_PROP(OnePNCLowDimBox, CouplingManager, typename BoxTraits::CouplingManager); +SET_TYPE_PROP(OnePNCNIBulkBox, CouplingManager, typename BoxNITraits::CouplingManager); +SET_TYPE_PROP(OnePNCNILowDimBox, CouplingManager, typename BoxNITraits::CouplingManager); // set cm property for the tpfa test using TpfaTraits = TestTraits; +using TpfaNITraits = TestTraits; SET_TYPE_PROP(OnePNCBulkTpfa, CouplingManager, typename TpfaTraits::CouplingManager); SET_TYPE_PROP(OnePNCLowDimTpfa, CouplingManager, typename TpfaTraits::CouplingManager); +SET_TYPE_PROP(OnePNCNIBulkTpfa, CouplingManager, typename TpfaNITraits::CouplingManager); +SET_TYPE_PROP(OnePNCNILowDimTpfa, CouplingManager, typename TpfaNITraits::CouplingManager); } // end namespace Properties } // end namespace Dumux diff --git a/test/references/facetcoupling_1pncni1pncni_bulk_box.vtu b/test/references/facetcoupling_1pncni1pncni_bulk_box.vtu new file mode 100644 index 0000000000..adfa9a8869 --- /dev/null +++ b/test/references/facetcoupling_1pncni1pncni_bulk_box.vtu @@ -0,0 +1,510 @@ + + + + + + + 100000 100000 100000 100000 100001 100001 100000 100000 100001 100001 100001 100001 + 100000 100000 100000 100000 100001 100001 100000 100000 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100000 100000 100000 100000 + 100000 100001 100000 100000 100001 100001 100000 100000 100001 100001 100001 100001 + 100001 100001 100000 100001 100001 100001 100001 100001 100001 100001 100000 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100002 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100002 100001 100002 100001 100002 100001 100002 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100002 100001 100002 100002 100002 100002 100002 100001 100002 100001 100002 + 100001 100001 100001 100002 100002 100002 100002 100002 100002 100002 100002 100002 + 100002 100002 100002 100002 100001 100001 100001 100001 100001 100002 100002 100002 + 100001 100001 100001 100002 100001 100001 100001 100001 100001 100001 100001 100001 + 100002 100002 100002 100002 100001 100001 100002 100002 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100000 100001 100001 + 100001 100000 100001 100001 100001 100001 100001 100001 100000 100000 100001 100001 + 100000 100000 100001 100000 100000 100000 100000 100000 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100000 100000 100001 100001 + 100000 100000 100000 100000 100001 100001 100001 100001 100000 100000 100001 100001 + 100000 100000 100000 100000 + + + 964.772 965.021 950.929 950.929 976.067 976.404 964.772 965.021 984.538 984.835 976.067 976.404 + 965.021 965.902 950.929 950.929 976.404 977.533 965.021 965.902 984.835 985.766 976.404 977.533 + 990.42 990.628 984.538 984.835 994.229 994.358 990.42 990.628 990.628 991.255 984.835 985.766 + 994.358 994.737 990.628 991.255 994.737 995.333 991.255 992.279 965.902 968.018 950.929 950.929 + 968.018 973.817 950.929 950.929 977.533 979.834 965.902 968.018 985.766 987.406 977.533 979.834 + 979.834 983.609 968.018 973.817 987.406 989.687 979.834 983.609 973.817 982.84 950.929 979.692 + 983.609 988.223 973.817 982.84 989.687 992.248 983.609 988.223 991.255 992.279 985.766 987.406 + 992.279 993.605 987.406 989.687 995.333 996.078 992.279 993.605 993.605 995.036 989.687 992.248 + 996.078 996.868 993.605 995.036 996.546 996.621 994.229 994.358 997.875 997.918 996.546 996.621 + 998.591 998.617 997.875 997.918 996.621 996.837 994.358 994.737 996.837 997.172 994.737 995.333 + 997.918 998.04 996.621 996.837 998.617 998.691 997.918 998.04 998.04 998.23 996.837 997.172 + 998.691 998.806 998.04 998.23 998.935 998.953 998.591 998.617 999.036 999.052 998.935 998.953 + 998.953 999.004 998.617 998.691 999.004 999.088 998.691 998.806 999.052 999.097 998.953 999.004 + 999.097 999.172 999.004 999.088 997.172 997.583 995.333 996.078 998.23 998.462 997.172 997.583 + 998.806 998.953 998.23 998.462 997.583 998.016 996.078 996.868 998.462 998.708 997.583 998.016 + 998.953 999.112 998.462 998.708 999.088 999.2 998.806 998.953 999.172 999.276 999.088 999.2 + 999.2 999.342 998.953 999.112 999.276 999.423 999.2 999.342 982.951 990.099 979.873 989.111 + 988.275 992.314 982.951 990.099 992.279 994.569 988.275 992.314 990.099 994.054 989.111 993.641 + 992.314 995.078 990.099 994.054 994.569 996.28 992.314 995.078 995.054 996.341 992.279 994.569 + 996.878 997.59 995.054 996.341 996.341 997.345 994.569 996.28 997.59 998.159 996.341 997.345 + 994.054 996.162 993.641 995.958 996.162 997.174 995.958 997.05 995.078 996.693 994.054 996.162 + 996.28 997.367 995.078 996.693 996.693 997.504 996.162 997.174 997.174 997.472 997.05 997.37 + 997.504 997.748 997.174 997.472 997.345 998.019 996.28 997.367 997.367 997.943 996.693 997.504 + 998.019 998.392 997.367 997.943 998.159 998.555 997.345 998.019 998.555 998.782 998.019 998.392 + 997.943 998.121 997.504 997.748 998.392 998.51 997.943 998.121 998.782 998.855 998.392 998.51 + 998.022 998.413 996.878 997.59 998.711 998.932 998.022 998.413 999.114 999.258 998.711 998.932 + 998.413 998.73 997.59 998.159 998.932 999.113 998.413 998.73 999.258 999.368 998.932 999.113 + 999.113 999.24 998.73 998.956 999.345 999.476 999.114 999.258 999.426 999.701 999.345 999.476 + 999.476 999.552 999.258 999.368 999.368 999.44 999.113 999.24 999.552 999.586 999.368 999.44 + 999.701 999.701 999.476 999.552 999.701 999.701 999.552 999.586 998.73 998.956 998.159 998.555 + 998.956 999.089 998.555 998.782 999.24 999.316 998.956 999.089 999.089 999.132 998.782 998.855 + 999.316 999.34 999.089 999.132 999.44 999.48 999.24 999.316 999.586 999.603 999.44 999.48 + 999.701 999.701 999.586 999.603 999.48 999.494 999.316 999.34 999.603 999.609 999.48 999.494 + 999.701 999.701 999.603 999.609 + + + 0.000311298 0.000312602 0.000254601 0.000254601 0.000387746 0.000390745 0.000311298 0.000312602 0.000485145 0.000489677 0.000387746 0.000390745 + 0.000312602 0.000317332 0.000254601 0.000254601 0.000390745 0.00040119 0.000312602 0.000317332 0.000489677 0.000504619 0.000390745 0.00040119 + 0.000600807 0.000606259 0.000485145 0.000489677 0.000727254 0.000732887 0.000600807 0.000606259 0.000606259 0.000623454 0.000489677 0.000504619 + 0.000732887 0.000750161 0.000606259 0.000623454 0.000750161 0.000779881 0.000623454 0.000654522 0.000317332 0.000329428 0.000254601 0.000254601 + 0.000329428 0.000369067 0.000254601 0.000254601 0.00040119 0.000424717 0.000317332 0.000329428 0.000504619 0.00053388 0.00040119 0.000424717 + 0.000424717 0.000471585 0.000329428 0.000369067 0.00053388 0.000582601 0.000424717 0.000471585 0.000369067 0.000461041 0.000254601 0.000423169 + 0.000471585 0.000550123 0.000369067 0.000461041 0.000582601 0.000653515 0.000471585 0.000550123 0.000623454 0.000654522 0.000504619 0.00053388 + 0.000654522 0.000701598 0.00053388 0.000582601 0.000779881 0.000822359 0.000654522 0.000701598 0.000701598 0.000764646 0.000582601 0.000653515 + 0.000822359 0.000876129 0.000701598 0.000764646 0.000852951 0.000858154 0.000727254 0.000732887 0.000964892 0.000969334 0.000852951 0.000858154 + 0.00105187 0.00105554 0.000964892 0.000969334 0.000858154 0.000873838 0.000732887 0.000750161 0.000873838 0.000900013 0.000750161 0.000779881 + 0.000969334 0.00098261 0.000858154 0.000873838 0.00105554 0.00106651 0.000969334 0.00098261 0.00098261 0.00100444 0.000873838 0.000900013 + 0.00106651 0.00108466 0.00098261 0.00100444 0.00110646 0.00110959 0.00105187 0.00105554 0.001125 0.00112794 0.00110646 0.00110959 + 0.00110959 0.00111902 0.00105554 0.00106651 0.00111902 0.00113498 0.00106651 0.00108466 0.00112794 0.00113684 0.00110959 0.00111902 + 0.00113684 0.00115213 0.00111902 0.00113498 0.000900013 0.000936039 0.000779881 0.000822359 0.00100444 0.00103396 0.000900013 0.000936039 + 0.00108466 0.00110963 0.00100444 0.00103396 0.000936039 0.000979912 0.000822359 0.000876129 0.00103396 0.00106911 0.000936039 0.000979912 + 0.00110963 0.00113992 0.00103396 0.00106911 0.00113498 0.00115832 0.00108466 0.00110963 0.00115213 0.00117536 0.00113498 0.00115832 + 0.00115832 0.00119137 0.00110963 0.00113992 0.00117536 0.00121241 0.00115832 0.00119137 0.000462526 0.000592648 0.000425144 0.000569258 + 0.000551204 0.000655629 0.000462526 0.000592648 0.00065451 0.000742339 0.000551204 0.000655629 0.000592648 0.000719805 0.000569258 0.000703017 + 0.000655629 0.000766741 0.000592648 0.000719805 0.000742339 0.000835132 0.000655629 0.000766741 0.000765533 0.000839125 0.00065451 0.000742339 + 0.000876902 0.000936693 0.000765533 0.000839125 0.000839125 0.000914649 0.000742339 0.000835132 0.000936693 0.000996143 0.000839125 0.000914649 + 0.000719805 0.000827577 0.000703017 0.00081501 0.000827577 0.000900193 0.00081501 0.000890226 0.000766741 0.000863256 0.000719805 0.000827577 + 0.000835132 0.000916585 0.000766741 0.000863256 0.000863256 0.000928735 0.000827577 0.000900193 0.000900193 0.000925856 0.000890226 0.000916788 + 0.000928735 0.000951913 0.000900193 0.000925856 0.000914649 0.00098022 0.000835132 0.000916585 0.000916585 0.00097205 0.000863256 0.000928735 + 0.00098022 0.00102469 0.000916585 0.00097205 0.000996143 0.00104677 0.000914649 0.00098022 0.00104677 0.00108075 0.00098022 0.00102469 + 0.00097205 0.000991695 0.000928735 0.000951913 0.00102469 0.00104041 0.00097205 0.000991695 0.00108075 0.00109271 0.00102469 0.00104041 + 0.000980531 0.0010274 0.000876902 0.000936693 0.00106959 0.00110602 0.000980531 0.0010274 0.00114033 0.00117113 0.00106959 0.00110602 + 0.0010274 0.00107263 0.000936693 0.000996143 0.00110602 0.00113994 0.0010274 0.00107263 0.00117113 0.00119771 0.00110602 0.00113994 + 0.00113994 0.0011672 0.00107263 0.00111028 0.0011919 0.00122732 0.00114033 0.00117113 0.00121312 0.0013059 0.0011919 0.00122732 + 0.00122732 0.00125076 0.00117113 0.00119771 0.00119771 0.00121703 0.00113994 0.0011672 0.00125076 0.00126205 0.00119771 0.00121703 + 0.0013059 0.0013059 0.00122732 0.00125076 0.0013059 0.0013059 0.00125076 0.00126205 0.00107263 0.00111028 0.000996143 0.00104677 + 0.00111028 0.00113517 0.00104677 0.00108075 0.0011672 0.00118475 0.00111028 0.00113517 0.00113517 0.00114386 0.00108075 0.00109271 + 0.00118475 0.0011908 0.00113517 0.00114386 0.00121703 0.00122864 0.0011672 0.00118475 0.00126205 0.00126811 0.00121703 0.00122864 + 0.0013059 0.0013059 0.00126205 0.00126811 0.00122864 0.00123253 0.00118475 0.0011908 0.00126811 0.00127008 0.00122864 0.00123253 + 0.0013059 0.0013059 0.00126811 0.00127008 + + + 0.293685 0.298095 0 0 0.605368 0.611866 0.293685 0.298095 0.898391 0.902716 0.605368 0.611866 + 0.298095 0.316053 0 0 0.611866 0.63684 0.298095 0.316053 0.902716 0.918366 0.611866 0.63684 + 1.1411 1.14004 0.898391 0.902716 1.31604 1.30867 1.1411 1.14004 1.14004 1.13672 0.902716 0.918366 + 1.30867 1.28538 1.14004 1.13672 1.28538 1.24128 1.13672 1.12852 0.316053 0.369444 0 0 + 0.369444 0.564602 0 0 0.63684 0.700538 0.316053 0.369444 0.918366 0.95112 0.63684 0.700538 + 0.700538 0.83339 0.369444 0.564602 0.95112 0.998981 0.700538 0.83339 0.564602 1.01464 0 1.01167 + 0.83339 1.02155 0.564602 1.01464 0.998981 1.02873 0.83339 1.02155 1.13672 1.12852 0.918366 0.95112 + 1.12852 1.10369 0.95112 0.998981 1.24128 1.16518 1.12852 1.10369 1.10369 1.03443 0.998981 1.02873 + 1.16518 1.0374 1.10369 1.03443 1.42345 1.41076 1.31604 1.30867 1.47743 1.46108 1.42345 1.41076 + 1.4978 1.47929 1.47743 1.46108 1.41076 1.37158 1.30867 1.28538 1.37158 1.30191 1.28538 1.24128 + 1.46108 1.41138 1.41076 1.37158 1.47929 1.42361 1.46108 1.41138 1.41138 1.32612 1.37158 1.30191 + 1.42361 1.33011 1.41138 1.32612 1.50236 1.4828 1.4978 1.47929 1.5026 1.48273 1.50236 1.4828 + 1.4828 1.42427 1.47929 1.42361 1.42427 1.32716 1.42361 1.33011 1.48273 1.4234 1.4828 1.42427 + 1.4234 1.32525 1.42427 1.32716 1.30191 1.19417 1.24128 1.16518 1.32612 1.20171 1.30191 1.19417 + 1.33011 1.19839 1.32612 1.20171 1.19417 1.03716 1.16518 1.0374 1.20171 1.03427 1.19417 1.03716 + 1.19839 1.02938 1.20171 1.03427 1.32716 1.19259 1.33011 1.19839 1.32525 1.18992 1.32716 1.19259 + 1.19259 1.02375 1.19839 1.02938 1.18992 1.0209 1.19259 1.02375 1.01464 1.25171 1.01167 1.25179 + 1.02155 1.2481 1.01464 1.25171 1.02873 1.23423 1.02155 1.2481 1.25171 1.44242 1.25179 1.44844 + 1.2481 1.42237 1.25171 1.44242 1.23423 1.38336 1.2481 1.42237 1.03443 1.20487 1.02873 1.23423 + 1.0374 1.15733 1.03443 1.20487 1.20487 1.32056 1.23423 1.38336 1.15733 1.23053 1.20487 1.32056 + 1.44242 1.57562 1.44844 1.58665 1.57562 1.65189 1.58665 1.66602 1.42237 1.5416 1.44242 1.57562 + 1.38336 1.48175 1.42237 1.5416 1.5416 1.60917 1.57562 1.65189 1.65189 1.6762 1.66602 1.69133 + 1.60917 1.63063 1.65189 1.6762 1.32056 1.39276 1.38336 1.48175 1.48175 1.53633 1.5416 1.60917 + 1.39276 1.43126 1.48175 1.53633 1.23053 1.2716 1.32056 1.39276 1.2716 1.29167 1.39276 1.43126 + 1.53633 1.55352 1.60917 1.63063 1.43126 1.44316 1.53633 1.55352 1.29167 1.29758 1.43126 1.44316 + 1.03716 1.08967 1.0374 1.15733 1.03427 0.997026 1.03716 1.08967 1.02938 0.863271 1.03427 0.997026 + 1.08967 1.10984 1.15733 1.23053 0.997026 0.951386 1.08967 1.10984 0.863271 0.7365 0.997026 0.951386 + 0.951386 0.916818 1.10984 1.11487 1.02375 0.629339 1.02938 0.863271 1.0209 0 1.02375 0.629339 + 0.629339 0.423226 0.863271 0.7365 0.7365 0.667289 0.951386 0.916818 0.423226 0.357991 0.7365 0.667289 + 0 0 0.629339 0.423226 0 0 0.423226 0.357991 1.10984 1.11487 1.23053 1.2716 + 1.11487 1.1149 1.2716 1.29167 0.916818 0.897553 1.11487 1.1149 1.1149 1.1145 1.29167 1.29758 + 0.897553 0.891544 1.1149 1.1145 0.667289 0.636502 0.916818 0.897553 0.357991 0.333432 0.667289 0.636502 + 0 0 0.357991 0.333432 0.636502 0.627739 0.897553 0.891544 0.333432 0.326841 0.636502 0.627739 + 0 0 0.333432 0.326841 + + + 0.999999 0.999999 0.9999 0.9999 1 1 0.999999 0.999999 1 1 1 1 + 0.999999 0.999999 0.9999 0.9999 1 1 0.999999 0.999999 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 0.999999 0.999999 0.9999 0.9999 + 0.999999 0.999999 0.9999 0.9999 1 1 0.999999 0.999999 1 1 1 1 + 1 1 0.999999 0.999999 1 1 1 1 0.999999 1 0.9999 0.999999 + 1 1 0.999999 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 0.999999 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 + + + 1.37299e-06 1.37257e-06 0.0001 0.0001 9.68267e-09 9.67041e-09 1.37299e-06 1.37257e-06 4.59051e-11 4.57725e-11 9.68267e-09 9.67041e-09 + 1.37257e-06 1.37088e-06 0.0001 0.0001 9.67041e-09 9.61762e-09 1.37257e-06 1.37088e-06 4.57725e-11 4.46216e-11 9.67041e-09 9.61762e-09 + 1.64681e-13 1.63352e-13 4.59051e-11 4.57725e-11 4.79688e-16 4.73032e-16 1.64681e-13 1.63352e-13 1.63352e-13 1.56046e-13 4.57725e-11 4.46216e-11 + 4.73032e-16 4.44407e-16 1.63352e-13 1.56046e-13 4.44407e-16 4.20992e-16 1.56046e-13 1.34286e-13 1.37088e-06 1.36218e-06 0.0001 0.0001 + 1.36218e-06 1.01079e-06 0.0001 0.0001 9.61762e-09 8.90862e-09 1.37088e-06 1.36218e-06 4.46216e-11 3.95088e-11 9.61762e-09 8.90862e-09 + 8.90862e-09 6.30899e-09 1.36218e-06 1.01079e-06 3.95088e-11 2.76174e-11 8.90862e-09 6.30899e-09 1.01079e-06 2.97378e-07 0.0001 6.8479e-07 + 6.30899e-09 2.45241e-09 1.01079e-06 2.97378e-07 2.76174e-11 2.28048e-11 6.30899e-09 2.45241e-09 1.56046e-13 1.34286e-13 4.46216e-11 3.95088e-11 + 1.34286e-13 1.2405e-13 3.95088e-11 2.76174e-11 4.20992e-16 6.32267e-16 1.34286e-13 1.2405e-13 1.2405e-13 2.00225e-13 2.76174e-11 2.28048e-11 + 6.32267e-16 5.94052e-15 1.2405e-13 2.00225e-13 1.19768e-18 1.17526e-18 4.79688e-16 4.73032e-16 2.69607e-21 2.67322e-21 1.19768e-18 1.17526e-18 + 5.78874e-24 6.0183e-24 2.69607e-21 2.67322e-21 1.17526e-18 1.13724e-18 4.73032e-16 4.44407e-16 1.13724e-18 1.42429e-18 4.44407e-16 4.20992e-16 + 2.67322e-21 2.94441e-21 1.17526e-18 1.13724e-18 6.0183e-24 2.01308e-23 2.67322e-21 2.94441e-21 2.94441e-21 1.87427e-20 1.13724e-18 1.42429e-18 + 2.01308e-23 2.59315e-22 2.94441e-21 1.87427e-20 1.24229e-26 2.2431e-26 5.78874e-24 6.0183e-24 7.39269e-29 3.30983e-28 1.24229e-26 2.2431e-26 + 2.2431e-26 2.18884e-25 6.0183e-24 2.01308e-23 2.18884e-25 5.97748e-24 2.01308e-23 2.59315e-22 3.30983e-28 8.86781e-27 2.2431e-26 2.18884e-25 + 8.86781e-27 1.73622e-25 2.18884e-25 5.97748e-24 1.42429e-18 1.40628e-17 4.20992e-16 6.32267e-16 1.87427e-20 2.43945e-19 1.42429e-18 1.40628e-17 + 2.59315e-22 6.47211e-21 1.87427e-20 2.43945e-19 1.40628e-17 1.469e-16 6.32267e-16 5.94052e-15 2.43945e-19 4.96615e-18 1.40628e-17 1.469e-16 + 6.47211e-21 1.05415e-19 2.43945e-19 4.96615e-18 5.97748e-24 1.08336e-22 2.59315e-22 6.47211e-21 1.73622e-25 3.95904e-24 5.97748e-24 1.08336e-22 + 1.08336e-22 2.16353e-21 6.47211e-21 1.05415e-19 3.95904e-24 -7.41287e-24 1.08336e-22 2.16353e-21 2.95825e-07 1.96417e-09 6.28264e-07 3.00753e-09 + 2.44762e-09 4.75283e-10 2.95825e-07 1.96417e-09 2.27078e-11 4.08963e-12 2.44762e-09 4.75283e-10 1.96417e-09 8.07875e-12 3.00753e-09 1.08946e-11 + 4.75283e-10 3.14934e-12 1.96417e-09 8.07875e-12 4.08963e-12 5.18624e-13 4.75283e-10 3.14934e-12 2.01319e-13 4.64521e-14 2.27078e-11 4.08963e-12 + 5.85135e-15 5.52137e-16 2.01319e-13 4.64521e-14 4.64521e-14 5.10892e-15 4.08963e-12 5.18624e-13 5.52137e-16 6.33353e-17 4.64521e-14 5.10892e-15 + 8.07875e-12 2.54096e-14 1.08946e-11 3.20134e-14 2.54096e-14 6.66974e-17 3.20134e-14 8.05294e-17 3.14934e-12 1.24558e-14 8.07875e-12 2.54096e-14 + 5.18624e-13 3.48581e-15 3.14934e-12 1.24558e-14 1.24558e-14 3.75037e-17 2.54096e-14 6.66974e-17 6.66974e-17 3.07606e-19 8.05294e-17 3.6075e-19 + 3.75037e-17 1.89565e-19 6.66974e-17 3.07606e-19 5.10892e-15 4.40183e-16 5.18624e-13 3.48581e-15 3.48581e-15 1.37858e-17 1.24558e-14 3.75037e-17 + 4.40183e-16 3.02645e-18 3.48581e-15 1.37858e-17 6.33353e-17 5.0288e-18 5.10892e-15 4.40183e-16 5.0288e-18 3.13187e-19 4.40183e-16 3.02645e-18 + 1.37858e-17 8.26747e-20 3.75037e-17 1.89565e-19 3.02645e-18 2.43835e-20 1.37858e-17 8.26747e-20 3.13187e-19 4.42237e-21 3.02645e-18 2.43835e-20 + 1.528e-16 1.27147e-17 5.85135e-15 5.52137e-16 4.77049e-18 2.99674e-19 1.528e-16 1.27147e-17 1.10759e-19 6.70108e-21 4.77049e-18 2.99674e-19 + 1.27147e-17 8.62107e-19 5.52137e-16 6.33353e-17 2.99674e-19 1.69399e-20 1.27147e-17 8.62107e-19 6.70108e-21 3.69862e-22 2.99674e-19 1.69399e-20 + 1.69399e-20 9.62657e-22 8.62107e-19 6.56324e-20 1.98664e-21 1.47415e-22 1.10759e-19 6.70108e-21 5.9941e-23 0 1.98664e-21 1.47415e-22 + 1.47415e-22 7.38448e-24 6.70108e-21 3.69862e-22 3.69862e-22 1.71858e-23 1.69399e-20 9.62657e-22 7.38448e-24 3.467e-25 3.69862e-22 1.71858e-23 + 0 0 1.47415e-22 7.38448e-24 0 0 7.38448e-24 3.467e-25 8.62107e-19 6.56324e-20 6.33353e-17 5.0288e-18 + 6.56324e-20 4.1039e-21 5.0288e-18 3.13187e-19 9.62657e-22 5.60464e-23 6.56324e-20 4.1039e-21 4.1039e-21 3.91202e-22 3.13187e-19 4.42237e-21 + 5.60464e-23 5.77035e-24 4.1039e-21 3.91202e-22 1.71858e-23 8.51065e-25 9.62657e-22 5.60464e-23 3.467e-25 1.41961e-26 1.71858e-23 8.51065e-25 + 0 0 3.467e-25 1.41961e-26 8.51065e-25 8.16306e-26 5.60464e-23 5.77035e-24 1.41961e-26 1.25391e-27 8.51065e-25 8.16306e-26 + 0 0 1.41961e-26 1.25391e-27 + + + 0.999998 0.999998 0.999844 0.999844 1 1 0.999998 0.999998 1 1 1 1 + 0.999998 0.999998 0.999844 0.999844 1 1 0.999998 0.999998 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 0.999998 0.999998 0.999844 0.999844 + 0.999998 0.999998 0.999844 0.999844 1 1 0.999998 0.999998 1 1 1 1 + 1 1 0.999998 0.999998 1 1 1 1 0.999998 1 0.999844 0.999999 + 1 1 0.999998 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 0.999999 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 + + + 2.13499e-06 2.13433e-06 0.00015549 0.00015549 1.50564e-08 1.50374e-08 2.13499e-06 2.13433e-06 7.13819e-11 7.11757e-11 1.50564e-08 1.50374e-08 + 2.13433e-06 2.1317e-06 0.00015549 0.00015549 1.50374e-08 1.49553e-08 2.13433e-06 2.1317e-06 7.11757e-11 6.93861e-11 1.50374e-08 1.49553e-08 + 2.56077e-13 2.5401e-13 7.13819e-11 7.11757e-11 7.45909e-16 7.3556e-16 2.56077e-13 2.5401e-13 2.5401e-13 2.4265e-13 7.11757e-11 6.93861e-11 + 7.3556e-16 6.91048e-16 2.5401e-13 2.4265e-13 6.91048e-16 6.54638e-16 2.4265e-13 2.08814e-13 2.1317e-06 2.11818e-06 0.00015549 0.00015549 + 2.11818e-06 1.57177e-06 0.00015549 0.00015549 1.49553e-08 1.38528e-08 2.1317e-06 2.11818e-06 6.93861e-11 6.14357e-11 1.49553e-08 1.38528e-08 + 1.38528e-08 9.81041e-09 2.11818e-06 1.57177e-06 6.14357e-11 4.29447e-11 1.38528e-08 9.81041e-09 1.57177e-06 4.62419e-07 0.00015549 1.06484e-06 + 9.81041e-09 3.81346e-09 1.57177e-06 4.62419e-07 4.29447e-11 3.54612e-11 9.81041e-09 3.81346e-09 2.4265e-13 2.08814e-13 6.93861e-11 6.14357e-11 + 2.08814e-13 1.92897e-13 6.14357e-11 4.29447e-11 6.54638e-16 9.83169e-16 2.08814e-13 1.92897e-13 1.92897e-13 3.11348e-13 4.29447e-11 3.54612e-11 + 9.83169e-16 9.23745e-15 1.92897e-13 3.11348e-13 1.86237e-18 1.82752e-18 7.45909e-16 7.3556e-16 4.19236e-21 4.15683e-21 1.86237e-18 1.82752e-18 + 9.00143e-24 9.35838e-24 4.19236e-21 4.15683e-21 1.82752e-18 1.7684e-18 7.3556e-16 6.91048e-16 1.7684e-18 2.21476e-18 6.91048e-16 6.54638e-16 + 4.15683e-21 4.57852e-21 1.82752e-18 1.7684e-18 9.35838e-24 3.13032e-23 4.15683e-21 4.57852e-21 4.57852e-21 2.91446e-20 1.7684e-18 2.21476e-18 + 3.13032e-23 4.03232e-22 4.57852e-21 2.91446e-20 1.93175e-26 3.48799e-26 9.00143e-24 9.35838e-24 1.14955e-28 5.14675e-28 1.93175e-26 3.48799e-26 + 3.48799e-26 3.40362e-25 9.35838e-24 3.13032e-23 3.40362e-25 9.29491e-24 3.13032e-23 4.03232e-22 5.14675e-28 1.37894e-26 3.48799e-26 3.40362e-25 + 1.37894e-26 2.69981e-25 3.40362e-25 9.29491e-24 2.21476e-18 2.18676e-17 6.54638e-16 9.83169e-16 2.91446e-20 3.79332e-19 2.21476e-18 2.18676e-17 + 4.03232e-22 1.00641e-20 2.91446e-20 3.79332e-19 2.18676e-17 2.28427e-16 9.83169e-16 9.23745e-15 3.79332e-19 7.72231e-18 2.18676e-17 2.28427e-16 + 1.00641e-20 1.63919e-19 3.79332e-19 7.72231e-18 9.29491e-24 1.68461e-22 4.03232e-22 1.00641e-20 2.69981e-25 6.15626e-24 9.29491e-24 1.68461e-22 + 1.68461e-22 3.36426e-21 1.00641e-20 1.63919e-19 6.15626e-24 -1.15269e-23 1.68461e-22 3.36426e-21 4.60004e-07 3.05427e-09 9.76943e-07 4.67668e-09 + 3.80602e-09 7.3906e-10 4.60004e-07 3.05427e-09 3.53104e-11 6.35932e-12 3.80602e-09 7.3906e-10 3.05427e-09 1.25624e-11 4.67668e-09 1.6941e-11 + 7.3906e-10 4.89719e-12 3.05427e-09 1.25624e-11 6.35932e-12 8.06455e-13 7.3906e-10 4.89719e-12 3.13049e-13 7.22325e-14 3.53104e-11 6.35932e-12 + 9.09878e-15 8.58567e-16 3.13049e-13 7.22325e-14 7.22325e-14 7.94431e-15 6.35932e-12 8.06455e-13 8.58567e-16 9.84857e-17 7.22325e-14 7.94431e-15 + 1.25624e-11 3.95116e-14 1.6941e-11 4.97804e-14 3.95116e-14 1.03714e-16 4.97804e-14 1.25222e-16 4.89719e-12 1.93687e-14 1.25624e-11 3.95116e-14 + 8.06455e-13 5.4204e-15 4.89719e-12 1.93687e-14 1.93687e-14 5.83178e-17 3.95116e-14 1.03714e-16 1.03714e-16 4.78324e-19 1.25222e-16 5.60962e-19 + 5.83178e-17 2.94772e-19 1.03714e-16 4.78324e-19 7.94431e-15 6.84479e-16 8.06455e-13 5.4204e-15 5.4204e-15 2.14368e-17 1.93687e-14 5.83178e-17 + 6.84479e-16 4.70609e-18 5.4204e-15 2.14368e-17 9.84857e-17 7.81972e-18 7.94431e-15 6.84479e-16 7.81972e-18 4.87002e-19 6.84479e-16 4.70609e-18 + 2.14368e-17 1.28558e-19 5.83178e-17 2.94772e-19 4.70609e-18 3.79161e-20 2.14368e-17 1.28558e-19 4.87002e-19 6.87673e-21 4.70609e-18 3.79161e-20 + 2.37602e-16 1.97713e-17 9.09878e-15 8.58567e-16 7.41806e-18 4.65989e-19 2.37602e-16 1.97713e-17 1.72228e-19 1.04201e-20 7.41806e-18 4.65989e-19 + 1.97713e-17 1.34057e-18 8.58567e-16 9.84857e-17 4.65989e-19 2.63413e-20 1.97713e-17 1.34057e-18 1.04201e-20 5.75132e-22 4.65989e-19 2.63413e-20 + 2.63413e-20 1.49692e-21 1.34057e-18 1.02058e-19 3.0892e-21 2.29229e-22 1.72228e-19 1.04201e-20 9.32076e-23 0 3.0892e-21 2.29229e-22 + 2.29229e-22 1.14828e-23 1.04201e-20 5.75132e-22 5.75132e-22 2.67237e-23 2.63413e-20 1.49692e-21 1.14828e-23 5.39115e-25 5.75132e-22 2.67237e-23 + 0 0 2.29229e-22 1.14828e-23 0 0 1.14828e-23 5.39115e-25 1.34057e-18 1.02058e-19 9.84857e-17 7.81972e-18 + 1.02058e-19 6.38152e-21 7.81972e-18 4.87002e-19 1.49692e-21 8.71516e-23 1.02058e-19 6.38152e-21 6.38152e-21 6.08315e-22 4.87002e-19 6.87673e-21 + 8.71516e-23 8.97284e-24 6.38152e-21 6.08315e-22 2.67237e-23 1.3234e-24 1.49692e-21 8.71516e-23 5.39115e-25 2.20748e-26 2.67237e-23 1.3234e-24 + 0 0 5.39115e-25 2.20748e-26 1.3234e-24 1.26935e-25 8.71516e-23 8.97284e-24 2.20748e-26 1.94982e-27 1.3234e-24 1.26935e-25 + 0 0 2.20748e-26 1.94982e-27 + + + 363.959 363.591 383.15 383.15 346.107 345.53 363.959 363.591 330.529 329.932 346.107 345.53 + 363.591 362.28 383.15 383.15 345.53 343.58 363.591 362.28 329.932 328.027 345.53 343.58 + 317.677 317.172 330.529 329.932 307.589 307.207 317.677 317.172 317.172 315.627 329.932 328.027 + 307.207 306.062 317.172 315.627 306.062 304.19 315.627 313.004 362.28 359.077 383.15 383.15 + 359.077 349.876 383.15 383.15 343.58 339.487 362.28 359.077 328.027 324.555 343.58 339.487 + 339.487 332.371 359.077 349.876 324.555 319.419 339.487 332.371 349.876 333.866 383.15 339.745 + 332.371 322.76 349.876 333.866 319.419 313.086 332.371 322.76 315.627 313.004 328.027 324.555 + 313.004 309.395 324.555 319.419 304.19 301.706 313.004 309.395 309.395 305.135 319.419 313.086 + 301.706 298.844 309.395 305.135 300.042 299.768 307.589 307.207 294.692 294.5 300.042 299.768 + 291.18 291.043 294.692 294.5 299.768 298.96 307.207 306.062 298.96 297.662 306.062 304.19 + 294.5 293.936 299.768 298.96 291.043 290.635 294.5 293.936 293.936 293.034 298.96 297.662 + 290.635 289.975 293.936 293.034 289.206 289.098 291.18 291.043 288.571 288.472 289.206 289.098 + 289.098 288.774 291.043 290.635 288.774 288.236 290.635 289.975 288.472 288.174 289.098 288.774 + 288.174 287.671 288.774 288.236 297.662 295.972 304.19 301.706 293.034 291.864 297.662 295.972 + 289.975 289.096 293.034 291.864 295.972 294.05 301.706 298.844 291.864 290.539 295.972 294.05 + 289.096 288.072 291.864 290.539 288.236 287.471 289.975 289.096 287.671 286.928 288.236 287.471 + 287.471 286.429 289.096 288.072 286.928 285.789 287.471 286.429 333.652 318.447 339.416 320.754 + 322.643 312.915 333.652 318.447 313.005 306.575 322.643 312.915 318.447 308.103 320.754 309.292 + 312.915 305.003 318.447 308.103 306.575 300.999 312.915 305.003 305.079 300.782 313.005 306.575 + 298.805 295.942 305.079 300.782 300.782 296.962 306.575 300.999 295.942 293.373 300.782 296.962 + 308.103 301.415 309.292 302.121 301.415 297.653 302.121 298.14 305.003 299.503 308.103 301.415 + 300.999 296.871 305.003 299.503 299.503 296.306 301.415 297.653 297.653 296.439 298.14 296.861 + 296.306 295.26 297.653 296.439 296.962 294.037 300.999 296.871 296.871 294.384 299.503 296.306 + 294.037 292.226 296.871 294.384 293.373 291.373 296.962 294.037 291.373 290.116 294.037 292.226 + 294.384 293.557 296.306 295.26 292.226 291.616 294.384 293.557 290.116 289.689 292.226 291.616 + 294.023 292.12 298.805 295.942 290.522 289.222 294.023 292.12 288.059 287.061 290.522 289.222 + 292.12 290.411 295.942 293.373 289.222 288.071 292.12 290.411 287.061 286.234 289.222 288.071 + 288.071 287.186 290.411 289.074 286.413 285.347 288.059 287.061 285.768 283.15 286.413 285.347 + 285.347 284.668 287.061 286.234 286.234 285.651 288.071 287.186 284.668 284.349 286.234 285.651 + 283.15 283.15 285.347 284.668 283.15 283.15 284.668 284.349 290.411 289.074 293.373 291.373 + 289.074 288.23 291.373 290.116 287.186 286.634 289.074 288.23 288.23 287.942 290.116 289.689 + 286.634 286.447 288.23 287.942 285.651 285.308 287.186 286.634 284.349 284.179 285.651 285.308 + 283.15 283.15 284.349 284.179 285.308 285.194 286.634 286.447 284.179 284.124 285.308 285.194 + 283.15 283.15 284.179 284.124 + + + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + + + -0.4 -0.5 0 -0.4 -0.4 0 -0.5 -0.5 0 -0.5 -0.4 0 + -0.3 -0.5 0 -0.3 -0.4 0 -0.4 -0.5 0 -0.4 -0.4 0 + -0.2 -0.5 0 -0.2 -0.4 0 -0.3 -0.5 0 -0.3 -0.4 0 + -0.4 -0.4 0 -0.4 -0.3 0 -0.5 -0.4 0 -0.5 -0.3 0 + -0.3 -0.4 0 -0.3 -0.3 0 -0.4 -0.4 0 -0.4 -0.3 0 + -0.2 -0.4 0 -0.2 -0.3 0 -0.3 -0.4 0 -0.3 -0.3 0 + -0.1 -0.5 0 -0.1 -0.4 0 -0.2 -0.5 0 -0.2 -0.4 0 + -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 -0.1 -0.5 0 -0.1 -0.4 0 + -0.1 -0.4 0 -0.1 -0.3 0 -0.2 -0.4 0 -0.2 -0.3 0 + -1.37512e-12 -0.4 0 -1.37512e-12 -0.3 0 -0.1 -0.4 0 -0.1 -0.3 0 + -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 -0.1 -0.3 0 -0.1 -0.2 0 + -0.4 -0.3 0 -0.4 -0.2 0 -0.5 -0.3 0 -0.5 -0.2 0 + -0.4 -0.2 0 -0.4 -0.1 0 -0.5 -0.2 0 -0.5 -0.1 0 + -0.3 -0.3 0 -0.3 -0.2 0 -0.4 -0.3 0 -0.4 -0.2 0 + -0.2 -0.3 0 -0.2 -0.2 0 -0.3 -0.3 0 -0.3 -0.2 0 + -0.3 -0.2 0 -0.3 -0.1 0 -0.4 -0.2 0 -0.4 -0.1 0 + -0.2 -0.2 0 -0.2 -0.1 0 -0.3 -0.2 0 -0.3 -0.1 0 + -0.4 -0.1 0 -0.4 0 0 -0.5 -0.1 0 -0.5 0 0 + -0.3 -0.1 0 -0.3 0 0 -0.4 -0.1 0 -0.4 0 0 + -0.2 -0.1 0 -0.2 0 0 -0.3 -0.1 0 -0.3 0 0 + -0.1 -0.3 0 -0.1 -0.2 0 -0.2 -0.3 0 -0.2 -0.2 0 + -0.1 -0.2 0 -0.1 -0.1 0 -0.2 -0.2 0 -0.2 -0.1 0 + -1.37512e-12 -0.2 0 -1.37511e-12 -0.1 0 -0.1 -0.2 0 -0.1 -0.1 0 + -0.1 -0.1 0 -0.1 0 0 -0.2 -0.1 0 -0.2 0 0 + -1.37511e-12 -0.1 0 -1.37512e-12 0 0 -0.1 -0.1 0 -0.1 0 0 + 0.1 -0.5 0 0.1 -0.4 0 -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 + 0.2 -0.5 0 0.2 -0.4 0 0.1 -0.5 0 0.1 -0.4 0 + 0.3 -0.5 0 0.3 -0.4 0 0.2 -0.5 0 0.2 -0.4 0 + 0.1 -0.4 0 0.1 -0.3 0 -1.37512e-12 -0.4 0 -1.37512e-12 -0.3 0 + 0.1 -0.3 0 0.1 -0.2 0 -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 + 0.2 -0.4 0 0.2 -0.3 0 0.1 -0.4 0 0.1 -0.3 0 + 0.3 -0.4 0 0.3 -0.3 0 0.2 -0.4 0 0.2 -0.3 0 + 0.2 -0.3 0 0.2 -0.2 0 0.1 -0.3 0 0.1 -0.2 0 + 0.3 -0.3 0 0.3 -0.2 0 0.2 -0.3 0 0.2 -0.2 0 + 0.4 -0.5 0 0.4 -0.4 0 0.3 -0.5 0 0.3 -0.4 0 + 0.5 -0.5 0 0.5 -0.4 0 0.4 -0.5 0 0.4 -0.4 0 + 0.4 -0.4 0 0.4 -0.3 0 0.3 -0.4 0 0.3 -0.3 0 + 0.4 -0.3 0 0.4 -0.2 0 0.3 -0.3 0 0.3 -0.2 0 + 0.5 -0.4 0 0.5 -0.3 0 0.4 -0.4 0 0.4 -0.3 0 + 0.5 -0.3 0 0.5 -0.2 0 0.4 -0.3 0 0.4 -0.2 0 + 0.1 -0.2 0 0.1 -0.1 0 -1.37512e-12 -0.2 0 -1.37511e-12 -0.1 0 + 0.2 -0.2 0 0.2 -0.1 0 0.1 -0.2 0 0.1 -0.1 0 + 0.3 -0.2 0 0.3 -0.1 0 0.2 -0.2 0 0.2 -0.1 0 + 0.1 -0.1 0 0.1 0 0 -1.37511e-12 -0.1 0 -1.37512e-12 0 0 + 0.2 -0.1 0 0.2 0 0 0.1 -0.1 0 0.1 0 0 + 0.3 -0.1 0 0.3 0 0 0.2 -0.1 0 0.2 0 0 + 0.4 -0.2 0 0.4 -0.1 0 0.3 -0.2 0 0.3 -0.1 0 + 0.5 -0.2 0 0.5 -0.1 0 0.4 -0.2 0 0.4 -0.1 0 + 0.4 -0.1 0 0.4 0 0 0.3 -0.1 0 0.3 0 0 + 0.5 -0.1 0 0.5 0 0 0.4 -0.1 0 0.4 0 0 + -0.4 0 0 -0.4 0.1 0 -0.5 0 0 -0.5 0.1 0 + -0.3 0 0 -0.3 0.1 0 -0.4 0 0 -0.4 0.1 0 + -0.2 0 0 -0.2 0.1 0 -0.3 0 0 -0.3 0.1 0 + -0.4 0.1 0 -0.4 0.2 0 -0.5 0.1 0 -0.5 0.2 0 + -0.3 0.1 0 -0.3 0.2 0 -0.4 0.1 0 -0.4 0.2 0 + -0.2 0.1 0 -0.2 0.2 0 -0.3 0.1 0 -0.3 0.2 0 + -0.1 0 0 -0.1 0.1 0 -0.2 0 0 -0.2 0.1 0 + -1.37512e-12 0 0 -8.2509e-13 0.1 0 -0.1 0 0 -0.1 0.1 0 + -0.1 0.1 0 -0.1 0.2 0 -0.2 0.1 0 -0.2 0.2 0 + -8.2509e-13 0.1 0 -2.7503e-13 0.2 0 -0.1 0.1 0 -0.1 0.2 0 + -0.4 0.2 0 -0.4 0.3 0 -0.5 0.2 0 -0.5 0.3 0 + -0.4 0.3 0 -0.4 0.4 0 -0.5 0.3 0 -0.5 0.4 0 + -0.3 0.2 0 -0.3 0.3 0 -0.4 0.2 0 -0.4 0.3 0 + -0.2 0.2 0 -0.2 0.3 0 -0.3 0.2 0 -0.3 0.3 0 + -0.3 0.3 0 -0.3 0.4 0 -0.4 0.3 0 -0.4 0.4 0 + -0.4 0.4 0 -0.4 0.5 0 -0.5 0.4 0 -0.5 0.5 0 + -0.3 0.4 0 -0.3 0.5 0 -0.4 0.4 0 -0.4 0.5 0 + -0.1 0.2 0 -0.1 0.3 0 -0.2 0.2 0 -0.2 0.3 0 + -0.2 0.3 0 -0.2 0.4 0 -0.3 0.3 0 -0.3 0.4 0 + -0.1 0.3 0 -0.1 0.4 0 -0.2 0.3 0 -0.2 0.4 0 + -2.7503e-13 0.2 0 2.75002e-13 0.3 0 -0.1 0.2 0 -0.1 0.3 0 + 2.75002e-13 0.3 0 8.25048e-13 0.4 0 -0.1 0.3 0 -0.1 0.4 0 + -0.2 0.4 0 -0.2 0.5 0 -0.3 0.4 0 -0.3 0.5 0 + -0.1 0.4 0 -0.1 0.5 0 -0.2 0.4 0 -0.2 0.5 0 + 8.25048e-13 0.4 0 1.37512e-12 0.5 0 -0.1 0.4 0 -0.1 0.5 0 + 0.1 0 0 0.1 0.1 0 -1.37512e-12 0 0 -8.2509e-13 0.1 0 + 0.2 0 0 0.2 0.1 0 0.1 0 0 0.1 0.1 0 + 0.3 0 0 0.3 0.1 0 0.2 0 0 0.2 0.1 0 + 0.1 0.1 0 0.1 0.2 0 -8.2509e-13 0.1 0 -2.7503e-13 0.2 0 + 0.2 0.1 0 0.2 0.2 0 0.1 0.1 0 0.1 0.2 0 + 0.3 0.1 0 0.3 0.2 0 0.2 0.1 0 0.2 0.2 0 + 0.2 0.2 0 0.2 0.3 0 0.1 0.2 0 0.1 0.3 0 + 0.4 0 0 0.4 0.1 0 0.3 0 0 0.3 0.1 0 + 0.5 0 0 0.5 0.1 0 0.4 0 0 0.4 0.1 0 + 0.4 0.1 0 0.4 0.2 0 0.3 0.1 0 0.3 0.2 0 + 0.3 0.2 0 0.3 0.3 0 0.2 0.2 0 0.2 0.3 0 + 0.4 0.2 0 0.4 0.3 0 0.3 0.2 0 0.3 0.3 0 + 0.5 0.1 0 0.5 0.2 0 0.4 0.1 0 0.4 0.2 0 + 0.5 0.2 0 0.5 0.3 0 0.4 0.2 0 0.4 0.3 0 + 0.1 0.2 0 0.1 0.3 0 -2.7503e-13 0.2 0 2.75002e-13 0.3 0 + 0.1 0.3 0 0.1 0.4 0 2.75002e-13 0.3 0 8.25048e-13 0.4 0 + 0.2 0.3 0 0.2 0.4 0 0.1 0.3 0 0.1 0.4 0 + 0.1 0.4 0 0.1 0.5 0 8.25048e-13 0.4 0 1.37512e-12 0.5 0 + 0.2 0.4 0 0.2 0.5 0 0.1 0.4 0 0.1 0.5 0 + 0.3 0.3 0 0.3 0.4 0 0.2 0.3 0 0.2 0.4 0 + 0.4 0.3 0 0.4 0.4 0 0.3 0.3 0 0.3 0.4 0 + 0.5 0.3 0 0.5 0.4 0 0.4 0.3 0 0.4 0.4 0 + 0.3 0.4 0 0.3 0.5 0 0.2 0.4 0 0.2 0.5 0 + 0.4 0.4 0 0.4 0.5 0 0.3 0.4 0 0.3 0.5 0 + 0.5 0.4 0 0.5 0.5 0 0.4 0.4 0 0.4 0.5 0 + + + + + 0 1 3 2 4 5 7 6 8 9 11 10 + 12 13 15 14 16 17 19 18 20 21 23 22 + 24 25 27 26 28 29 31 30 32 33 35 34 + 36 37 39 38 40 41 43 42 44 45 47 46 + 48 49 51 50 52 53 55 54 56 57 59 58 + 60 61 63 62 64 65 67 66 68 69 71 70 + 72 73 75 74 76 77 79 78 80 81 83 82 + 84 85 87 86 88 89 91 90 92 93 95 94 + 96 97 99 98 100 101 103 102 104 105 107 106 + 108 109 111 110 112 113 115 114 116 117 119 118 + 120 121 123 122 124 125 127 126 128 129 131 130 + 132 133 135 134 136 137 139 138 140 141 143 142 + 144 145 147 146 148 149 151 150 152 153 155 154 + 156 157 159 158 160 161 163 162 164 165 167 166 + 168 169 171 170 172 173 175 174 176 177 179 178 + 180 181 183 182 184 185 187 186 188 189 191 190 + 192 193 195 194 196 197 199 198 200 201 203 202 + 204 205 207 206 208 209 211 210 212 213 215 214 + 216 217 219 218 220 221 223 222 224 225 227 226 + 228 229 231 230 232 233 235 234 236 237 239 238 + 240 241 243 242 244 245 247 246 248 249 251 250 + 252 253 255 254 256 257 259 258 260 261 263 262 + 264 265 267 266 268 269 271 270 272 273 275 274 + 276 277 279 278 280 281 283 282 284 285 287 286 + 288 289 291 290 292 293 295 294 296 297 299 298 + 300 301 303 302 304 305 307 306 308 309 311 310 + 312 313 315 314 316 317 319 318 320 321 323 322 + 324 325 327 326 328 329 331 330 332 333 335 334 + 336 337 339 338 340 341 343 342 344 345 347 346 + 348 349 351 350 352 353 355 354 356 357 359 358 + 360 361 363 362 364 365 367 366 368 369 371 370 + 372 373 375 374 376 377 379 378 380 381 383 382 + 384 385 387 386 388 389 391 390 392 393 395 394 + 396 397 399 398 + + + 4 8 12 16 20 24 28 32 36 40 44 48 + 52 56 60 64 68 72 76 80 84 88 92 96 + 100 104 108 112 116 120 124 128 132 136 140 144 + 148 152 156 160 164 168 172 176 180 184 188 192 + 196 200 204 208 212 216 220 224 228 232 236 240 + 244 248 252 256 260 264 268 272 276 280 284 288 + 292 296 300 304 308 312 316 320 324 328 332 336 + 340 344 348 352 356 360 364 368 372 376 380 384 + 388 392 396 400 + + + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 + + + + + diff --git a/test/references/facetcoupling_1pncni1pncni_bulk_tpfa.vtu b/test/references/facetcoupling_1pncni1pncni_bulk_tpfa.vtu new file mode 100644 index 0000000000..0377d3f5f5 --- /dev/null +++ b/test/references/facetcoupling_1pncni1pncni_bulk_tpfa.vtu @@ -0,0 +1,214 @@ + + + + + + + 100000 100000 100001 100000 100000 100001 100001 100001 100001 100001 100001 100000 + 100000 100000 100001 100001 100001 100000 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100002 100002 100001 100001 100001 100001 100001 + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100000 + 100001 100001 100000 100000 100000 100001 100001 100001 100001 100001 100001 100000 + 100000 100001 100000 100000 + + + 958.489 971.556 981.497 958.743 972.059 981.99 988.448 992.972 988.823 993.22 993.722 959.434 + 961.21 973.27 983.086 975.68 984.978 966.363 980.138 987.815 989.609 990.85 994.467 992.508 + 995.401 995.745 997.363 998.263 995.898 996.199 997.455 998.323 997.635 998.437 998.732 998.931 + 998.775 998.859 998.968 999.041 996.631 997.888 998.599 997.151 998.187 998.79 998.982 999.154 + 999.136 999.316 982.645 987.16 991.322 990.282 992.019 994.124 994.361 996.395 995.922 997.25 + 994.134 996.028 994.901 995.988 996.43 996.805 997.08 997.038 997.056 997.717 997.889 998.294 + 997.53 998.029 998.487 997.69 998.491 998.985 998.157 998.751 999.139 998.951 999.303 999.548 + 999.404 999.253 999.467 999.607 999.631 998.514 998.748 999.084 998.862 999.149 999.326 999.505 + 999.642 999.362 999.522 999.648 + + + 0.000282142 0.000352321 0.000443914 0.000283195 0.00035589 0.000450025 0.000554807 0.000678013 0.000562857 0.000687009 0.000706215 0.000286106 + 0.000293933 0.000364841 0.00046435 0.000384377 0.000491902 0.000319878 0.000428082 0.000541856 0.000580761 0.000612189 0.000737737 0.000662043 + 0.000783459 0.000802545 0.000916173 0.00100856 0.000811471 0.000829957 0.000924364 0.00101587 0.000940996 0.00103065 0.00107291 0.00110577 + 0.00107963 0.00109339 0.00111227 0.00112591 0.00085886 0.000966215 0.00105293 0.000898293 0.000999326 0.00108205 0.00111485 0.0011485 + 0.00114469 0.00118476 0.000458455 0.000529218 0.000625364 0.000597284 0.000646249 0.000722725 0.00073302 0.000842693 0.00081288 0.000906505 + 0.000723149 0.000819304 0.000757977 0.000816873 0.00084504 0.000871432 0.000892593 0.000889273 0.000890707 0.00094886 0.00096628 0.00101236 + 0.000931137 0.000981393 0.00103736 0.000946263 0.00103789 0.00111541 0.000995809 0.00107588 0.00114542 0.00110935 0.0011817 0.00124934 + 0.00120732 0.00116996 0.00122468 0.00126946 0.00127793 0.00104105 0.00107539 0.00113417 0.00109386 0.00114735 0.00118733 0.0012358 + 0.00128229 0.00119634 0.00124131 0.00128428 + + + 0.147755 0.475262 0.783518 0.150737 0.480128 0.78275 1.03223 1.20246 1.021 1.18016 1.13396 0.163053 + 0.209502 0.498157 0.785551 0.55159 0.799675 0.395262 0.689795 0.828963 0.998884 0.9637 1.05841 0.90294 + 0.939943 1.29756 1.33599 1.34107 1.26645 1.20248 1.29921 1.30128 1.22458 1.22161 1.33358 1.32651 + 1.29246 1.21071 1.28489 1.20244 1.10092 1.10959 1.10163 0.952444 0.950182 0.941098 1.08934 1.08084 + 0.930658 0.923358 0.952465 0.961106 0.965612 1.19208 1.1874 1.16954 0.95956 0.941285 1.13211 1.07267 + 1.36883 1.47976 1.35146 1.31267 1.45388 1.53173 1.50182 1.2486 1.40071 1.31861 1.15749 1.20685 + 1.44169 1.35083 1.22915 0.91081 0.867466 0.804926 0.990657 0.883741 0.742896 0.889849 0.697316 0.439294 + 0.543919 0.705046 0.471907 0.236511 0.176118 1.03861 1.06511 0.892241 1.07671 0.893077 0.685312 0.440087 + 0.155734 0.67708 0.427998 0.148981 + + + 0.999997 1 1 0.999997 1 1 1 1 1 1 1 0.999997 + 0.999997 1 1 1 1 0.999998 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 + + + 2.69009e-06 2.23534e-08 1.41562e-10 2.68901e-06 2.23272e-08 1.4117e-10 7.54288e-13 3.57142e-15 7.50792e-13 3.54873e-15 3.49293e-15 2.68474e-06 + 2.66704e-06 2.22426e-08 1.4008e-10 2.19605e-08 1.37171e-10 2.45269e-06 1.97892e-08 1.21892e-10 7.41795e-13 7.20658e-13 3.37475e-15 6.35398e-13 + 3.39618e-15 1.55971e-17 6.44917e-20 2.64302e-22 1.54781e-17 1.51956e-17 6.42216e-20 2.64915e-22 6.43182e-20 4.87165e-22 1.09694e-24 4.58458e-27 + 1.31725e-24 4.96778e-23 4.19089e-26 8.53376e-24 1.53514e-17 2.40946e-19 4.36221e-20 1.13759e-16 2.63425e-17 6.95084e-18 9.86814e-21 1.79737e-21 + 1.71601e-18 3.34012e-19 4.55754e-09 6.85362e-11 6.88611e-13 2.59678e-11 4.83704e-13 5.85944e-15 8.32916e-15 5.04201e-16 7.92097e-17 4.26847e-18 + 1.27486e-13 5.68686e-16 2.84255e-15 4.06237e-17 1.47706e-17 2.39367e-18 7.09787e-20 5.96005e-19 2.43421e-19 3.85608e-21 2.73337e-20 1.52282e-22 + 1.32407e-21 2.26009e-23 7.88236e-25 1.03396e-16 2.78125e-17 8.51153e-18 7.97043e-19 2.05749e-19 7.12167e-20 1.20727e-21 2.70809e-18 8.14578e-19 + 2.56059e-20 4.47466e-22 1.65291e-22 7.71603e-21 4.5139e-23 4.66887e-21 2.36384e-23 6.15424e-24 1.0989e-25 2.85757e-26 2.32821e-24 8.49889e-25 + 2.14495e-25 1.07166e-26 3.82674e-27 9.22812e-28 + + + 0.999996 1 1 0.999996 1 1 1 1 1 1 1 0.999996 + 0.999996 1 1 1 1 0.999996 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 1 1 1 1 1 1 1 1 + 1 1 1 1 + + + 4.18306e-06 3.47593e-08 2.20127e-10 4.18138e-06 3.47185e-08 2.19518e-10 1.17291e-12 5.55352e-15 1.16747e-12 5.51824e-15 5.43146e-15 4.17473e-06 + 4.14721e-06 3.4587e-08 2.17823e-10 3.41484e-08 2.133e-10 3.8139e-06 3.07719e-08 1.89541e-10 1.15348e-12 1.12061e-12 5.2477e-15 9.88037e-13 + 5.28102e-15 2.42533e-17 1.00284e-19 4.10987e-22 2.40683e-17 2.36289e-17 9.98639e-20 4.1194e-22 1.00014e-19 7.57536e-22 1.70573e-24 7.12897e-27 + 2.0483e-24 7.72484e-23 6.51679e-26 1.32699e-23 2.38712e-17 3.74668e-19 6.78318e-20 1.76894e-16 4.09623e-17 1.08085e-17 1.53448e-20 2.7949e-21 + 2.66838e-18 5.19385e-19 7.08693e-09 1.06573e-10 1.07078e-12 4.03797e-11 7.52154e-13 9.11136e-15 1.29518e-14 7.84026e-16 1.2317e-16 6.63742e-18 + 1.98239e-13 8.843e-16 4.42013e-15 6.31695e-17 2.29681e-17 3.72212e-18 1.10371e-19 9.2678e-19 3.78517e-19 5.99616e-21 4.25036e-20 2.36797e-22 + 2.05892e-21 3.51442e-23 1.2257e-24 1.6078e-16 4.32481e-17 1.32353e-17 1.23939e-18 3.19937e-19 1.10741e-19 1.8773e-21 4.21105e-18 1.26666e-18 + 3.98169e-20 6.95804e-22 2.57026e-22 1.19983e-20 7.01906e-23 7.26004e-21 3.67574e-23 9.56977e-24 1.70877e-25 4.44349e-26 3.62033e-24 1.32157e-24 + 3.33537e-25 1.66642e-26 5.95054e-27 1.43496e-27 + + + 372.962 353.544 336.42 372.608 352.738 335.49 322.258 311.152 321.412 310.471 309.062 371.642 + 369.13 350.774 333.391 346.763 329.642 361.588 338.933 323.662 319.6 316.631 306.881 312.4 + 303.972 302.838 296.89 292.868 302.322 301.283 296.508 292.575 295.747 291.993 290.4 289.23 + 290.156 289.664 289.006 288.54 299.731 294.634 291.14 297.745 293.243 290.069 288.917 287.79 + 287.915 286.633 334.242 325.087 315.46 318.007 313.683 307.9 307.198 300.589 302.242 297.349 + 307.871 301.878 305.558 302.015 300.463 299.082 298.024 298.187 298.116 295.395 294.632 292.715 + 296.195 293.987 291.733 295.511 291.713 288.898 293.387 290.292 287.891 289.106 286.729 284.709 + 285.942 287.099 285.424 284.142 283.907 291.591 290.31 288.263 289.648 287.828 286.554 285.099 + 283.787 286.276 284.939 283.733 + + + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 0 0 0 0 0 0 0 0 + 0 0 0 0 + + + + + -0.4 -0.5 0 -0.4 -0.4 0 -0.5 -0.5 0 -0.5 -0.4 0 + -0.3 -0.5 0 -0.3 -0.4 0 -0.2 -0.5 0 -0.2 -0.4 0 + -0.4 -0.3 0 -0.5 -0.3 0 -0.3 -0.3 0 -0.2 -0.3 0 + -0.1 -0.5 0 -0.1 -0.4 0 -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 + -0.1 -0.3 0 -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 -0.1 -0.2 0 + -0.4 -0.2 0 -0.5 -0.2 0 -0.4 -0.1 0 -0.5 -0.1 0 + -0.3 -0.2 0 -0.2 -0.2 0 -0.3 -0.1 0 -0.2 -0.1 0 + -0.4 0 0 -0.5 0 0 -0.3 0 0 -0.2 0 0 + -0.1 -0.1 0 -1.37511e-12 -0.1 0 -0.1 0 0 -1.37512e-12 0 0 + 0.1 -0.5 0 0.1 -0.4 0 0.2 -0.5 0 0.2 -0.4 0 + 0.3 -0.5 0 0.3 -0.4 0 0.1 -0.3 0 0.1 -0.2 0 + 0.2 -0.3 0 0.3 -0.3 0 0.2 -0.2 0 0.3 -0.2 0 + 0.4 -0.5 0 0.4 -0.4 0 0.5 -0.5 0 0.5 -0.4 0 + 0.4 -0.3 0 0.4 -0.2 0 0.5 -0.3 0 0.5 -0.2 0 + 0.1 -0.1 0 0.2 -0.1 0 0.3 -0.1 0 0.1 0 0 + 0.2 0 0 0.3 0 0 0.4 -0.1 0 0.5 -0.1 0 + 0.4 0 0 0.5 0 0 -0.4 0.1 0 -0.5 0.1 0 + -0.3 0.1 0 -0.2 0.1 0 -0.4 0.2 0 -0.5 0.2 0 + -0.3 0.2 0 -0.2 0.2 0 -0.1 0.1 0 -8.2509e-13 0.1 0 + -0.1 0.2 0 -2.7503e-13 0.2 0 -0.4 0.3 0 -0.5 0.3 0 + -0.4 0.4 0 -0.5 0.4 0 -0.3 0.3 0 -0.2 0.3 0 + -0.3 0.4 0 -0.4 0.5 0 -0.5 0.5 0 -0.3 0.5 0 + -0.1 0.3 0 -0.2 0.4 0 -0.1 0.4 0 2.75002e-13 0.3 0 + 8.25048e-13 0.4 0 -0.2 0.5 0 -0.1 0.5 0 1.37512e-12 0.5 0 + 0.1 0.1 0 0.2 0.1 0 0.3 0.1 0 0.1 0.2 0 + 0.2 0.2 0 0.3 0.2 0 0.2 0.3 0 0.1 0.3 0 + 0.4 0.1 0 0.5 0.1 0 0.4 0.2 0 0.3 0.3 0 + 0.4 0.3 0 0.5 0.2 0 0.5 0.3 0 0.1 0.4 0 + 0.2 0.4 0 0.1 0.5 0 0.2 0.5 0 0.3 0.4 0 + 0.4 0.4 0 0.5 0.4 0 0.3 0.5 0 0.4 0.5 0 + 0.5 0.5 0 + + + + + 0 1 3 2 4 5 1 0 6 7 5 4 + 1 8 9 3 5 10 8 1 7 11 10 5 + 12 13 7 6 14 15 13 12 13 16 11 7 + 15 17 16 13 17 18 19 16 8 20 21 9 + 20 22 23 21 10 24 20 8 11 25 24 10 + 24 26 22 20 25 27 26 24 22 28 29 23 + 26 30 28 22 27 31 30 26 16 19 25 11 + 19 32 27 25 18 33 32 19 32 34 31 27 + 33 35 34 32 36 37 15 14 38 39 37 36 + 40 41 39 38 37 42 17 15 42 43 18 17 + 39 44 42 37 41 45 44 39 44 46 43 42 + 45 47 46 44 48 49 41 40 50 51 49 48 + 49 52 45 41 52 53 47 45 51 54 52 49 + 54 55 53 52 43 56 33 18 46 57 56 43 + 47 58 57 46 56 59 35 33 57 60 59 56 + 58 61 60 57 53 62 58 47 55 63 62 53 + 62 64 61 58 63 65 64 62 28 66 67 29 + 30 68 66 28 31 69 68 30 66 70 71 67 + 68 72 70 66 69 73 72 68 34 74 69 31 + 35 75 74 34 74 76 73 69 75 77 76 74 + 70 78 79 71 78 80 81 79 72 82 78 70 + 73 83 82 72 82 84 80 78 80 85 86 81 + 84 87 85 80 76 88 83 73 83 89 84 82 + 88 90 89 83 77 91 88 76 91 92 90 88 + 89 93 87 84 90 94 93 89 92 95 94 90 + 59 96 75 35 60 97 96 59 61 98 97 60 + 96 99 77 75 97 100 99 96 98 101 100 97 + 100 102 103 99 64 104 98 61 65 105 104 64 + 104 106 101 98 101 107 102 100 106 108 107 101 + 105 109 106 104 109 110 108 106 99 103 91 77 + 103 111 92 91 102 112 111 103 111 113 95 92 + 112 114 113 111 107 115 112 102 108 116 115 107 + 110 117 116 108 115 118 114 112 116 119 118 115 + 117 120 119 116 + + + 4 8 12 16 20 24 28 32 36 40 44 48 + 52 56 60 64 68 72 76 80 84 88 92 96 + 100 104 108 112 116 120 124 128 132 136 140 144 + 148 152 156 160 164 168 172 176 180 184 188 192 + 196 200 204 208 212 216 220 224 228 232 236 240 + 244 248 252 256 260 264 268 272 276 280 284 288 + 292 296 300 304 308 312 316 320 324 328 332 336 + 340 344 348 352 356 360 364 368 372 376 380 384 + 388 392 396 400 + + + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 9 9 9 9 9 9 9 9 + 9 9 9 9 + + + + + diff --git a/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtp b/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtp new file mode 100644 index 0000000000..3ff46e01d9 --- /dev/null +++ b/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtp @@ -0,0 +1,57 @@ + + + + + + + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + + + 980.579 983.21 988.177 992.187 994.982 996.824 997.985 998.687 999.099 999.328 999.405 + + + 0.00043307 0.00046604 0.000549179 0.00065156 0.00076195 0.000872877 0.000976485 0.00106591 0.00113714 0.00118769 0.00120743 + + + 1.01241 1.01514 1.02158 1.02854 1.03409 1.037 1.03683 1.03402 1.02929 1.0241 1.02161 + + + 0.999999 1 1 1 1 1 1 1 1 1 1 + + + 5.65453e-07 2.9741e-07 5.78923e-09 5.66352e-11 6.95494e-13 1.61658e-14 4.46618e-16 9.16241e-18 2.25674e-19 5.28057e-21 5.40026e-22 + + + 0.999999 1 1 1 1 1 1 1 1 1 1 + + + 8.79273e-07 4.6247e-07 9.00219e-09 8.8067e-11 1.08148e-12 2.51376e-14 6.94486e-16 1.42474e-17 3.50921e-19 8.21122e-21 8.39735e-22 + + + 338.125 333.15 322.862 313.246 305.305 299.009 294.195 290.657 288.164 286.543 285.939 + + + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + diff --git a/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu b/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu new file mode 100644 index 0000000000..b3dbe06d02 --- /dev/null +++ b/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu @@ -0,0 +1,57 @@ + + + + + + + 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 + + + 966.99 968.776 972.496 976.264 979.787 983.075 986.142 988.993 991.616 993.818 994.746 + + + 0.000323415 0.000334031 0.00035906 0.000389494 0.000424204 0.000464202 0.000510981 0.000566627 0.000633937 0.000710076 0.000750566 + + + 0 0 0 1.45519e-11 1.45519e-11 1.45519e-11 0 0 1.45519e-11 1.45519e-11 1.45519e-11 + + + 0.99995 0.999956 0.999967 0.999977 0.999985 0.99999 0.999994 0.999996 0.999998 0.999999 0.999999 + + + 4.95104e-05 4.38423e-05 3.26593e-05 2.26371e-05 1.49972e-05 9.55088e-06 5.87535e-06 3.51415e-06 2.06922e-06 1.25461e-06 9.80024e-07 + + + 0.999923 0.999932 0.999949 0.999965 0.999977 0.999985 0.999991 0.999995 0.999997 0.999998 0.999998 + + + 7.69859e-05 6.81726e-05 5.07839e-05 3.52e-05 2.33203e-05 1.48514e-05 9.13607e-06 5.46445e-06 3.21761e-06 1.95091e-06 1.52393e-06 + + + 360.643 357.912 352.033 345.77 339.572 333.412 327.244 321.023 314.719 308.787 306.036 + + + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + diff --git a/test/references/facetcoupling_1pncni1pncni_lowdim_tpfa.vtp b/test/references/facetcoupling_1pncni1pncni_lowdim_tpfa.vtp new file mode 100644 index 0000000000..4b729845d1 --- /dev/null +++ b/test/references/facetcoupling_1pncni1pncni_lowdim_tpfa.vtp @@ -0,0 +1,55 @@ + + + + + + + 100001 100001 100001 100001 100001 100001 100001 100001 100001 100001 + + + 975.027 983.806 989.637 993.468 995.915 997.429 998.344 998.89 999.222 999.437 + + + 0.000378839 0.000474386 0.000581408 0.000696317 0.000812443 0.00092201 0.00101852 0.00109868 0.00116307 0.00121635 + + + 0.815163 0.822718 0.832085 0.84032 0.845687 0.847428 0.845752 0.841329 0.83525 0.829628 + + + 1 1 1 1 1 1 1 1 1 1 + + + 3.26761e-07 3.58018e-09 2.97683e-11 2.86614e-13 1.31135e-14 3.11832e-15 1.07515e-15 3.64171e-16 1.09018e-16 2.45976e-17 + + + 0.999999 1 1 1 1 1 1 1 1 1 + + + 5.0811e-07 5.56713e-09 4.62894e-11 4.45682e-13 2.03914e-14 4.84895e-15 1.67185e-15 5.66282e-16 1.69522e-16 3.8249e-17 + + + 347.864 331.983 319.536 309.78 302.267 296.617 292.47 289.478 287.318 285.672 + + + 0 0 0 0 0 0 0 0 0 0 + + + + + -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 + -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 + 0.3 0 0 0.4 0 0 0.5 0 0 + + + + + 0 1 1 2 2 3 3 4 4 5 5 6 + 6 7 7 8 8 9 9 10 + + + 2 4 6 8 10 12 14 16 18 20 + + + + + -- GitLab From f803a2520076b9e06402efbd469f5d44a14bf371 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Tue, 23 Oct 2018 11:24:03 +0200 Subject: [PATCH 11/12] [facet] use more facet-specific name for coupling data --- dumux/multidomain/facet/box/couplingmanager.hh | 14 +++++++------- .../facet/cellcentered/tpfa/couplingmanager.hh | 14 +++++++------- dumux/multidomain/facet/couplingmanager.hh | 12 ++++++------ 3 files changed, 20 insertions(+), 20 deletions(-) diff --git a/dumux/multidomain/facet/box/couplingmanager.hh b/dumux/multidomain/facet/box/couplingmanager.hh index 7e5e46e748..86940bbab7 100644 --- a/dumux/multidomain/facet/box/couplingmanager.hh +++ b/dumux/multidomain/facet/box/couplingmanager.hh @@ -332,8 +332,8 @@ public: /*! * \brief returns the coupling data of the lower-dimensional d.o.f coinciding with a bulk scvf. */ - ScvfCouplingData> getLowDimCouplingData(const Element& element, - const SubControlVolumeFace& scvf) const + ScvfFacetCouplingData> getLowDimCouplingData(const Element& element, + const SubControlVolumeFace& scvf) const { const auto eIdx = this->problem(bulkId).fvGridGeometry().elementMapper().index(element); assert(bulkContext_.isSet); @@ -364,11 +364,11 @@ public: static constexpr auto dm = FVGridGeometry::discMethod; const auto scvIdx = dm == DiscretizationMethod::box ? coupledScvIdx : lowDimElemIdx; - return ScvfCouplingData>(this->problem(lowDimId), - bulkContext_.lowDimElements[idxInContext], - bulkContext_.lowDimElemVolVars[idxInContext][scvIdx], - bulkContext_.lowDimFvGeometries[idxInContext], - bulkContext_.lowDimFvGeometries[idxInContext].scv(scvIdx)); + return ScvfFacetCouplingData>(this->problem(lowDimId), + bulkContext_.lowDimElements[idxInContext], + bulkContext_.lowDimElemVolVars[idxInContext][scvIdx], + bulkContext_.lowDimFvGeometries[idxInContext], + bulkContext_.lowDimFvGeometries[idxInContext].scv(scvIdx)); } /*! diff --git a/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh b/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh index d2b8252018..2895a962f9 100644 --- a/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh +++ b/dumux/multidomain/facet/cellcentered/tpfa/couplingmanager.hh @@ -305,8 +305,8 @@ public: /*! * \brief returns the coupling data of the lower-dimensional d.o.f coinciding with a bulk scvf. */ - ScvfCouplingData> getLowDimCouplingData(const Element& element, - const SubControlVolumeFace& scvf) const + ScvfFacetCouplingData> getLowDimCouplingData(const Element& element, + const SubControlVolumeFace& scvf) const { assert(bulkContext_.isSet); assert(bulkScvfIsCoupled_[scvf.index()]); @@ -334,11 +334,11 @@ public: static constexpr auto dm = FVGridGeometry::discMethod; const auto scvIdx = dm == DiscretizationMethod::box ? 0 : lowDimElemIdx; - return ScvfCouplingData>(this->problem(lowDimId), - bulkContext_.lowDimElements[idxInContext], - bulkContext_.lowDimVolVars[idxInContext], - bulkContext_.lowDimFvGeometries[idxInContext], - bulkContext_.lowDimFvGeometries[idxInContext].scv(scvIdx)); + return ScvfFacetCouplingData>(this->problem(lowDimId), + bulkContext_.lowDimElements[idxInContext], + bulkContext_.lowDimVolVars[idxInContext], + bulkContext_.lowDimFvGeometries[idxInContext], + bulkContext_.lowDimFvGeometries[idxInContext].scv(scvIdx)); } /*! diff --git a/dumux/multidomain/facet/couplingmanager.hh b/dumux/multidomain/facet/couplingmanager.hh index 0865a6a962..df803ad363 100644 --- a/dumux/multidomain/facet/couplingmanager.hh +++ b/dumux/multidomain/facet/couplingmanager.hh @@ -42,7 +42,7 @@ namespace Dumux { * \tparam CodimOneTypeTag The type tag of the problem that lives on the domain with codimension one. */ template -class ScvfCouplingData +class ScvfFacetCouplingData { using Problem = typename GET_PROP_TYPE(CodimOneTypeTag, Problem); using VolVars = typename GET_PROP_TYPE(CodimOneTypeTag, VolumeVariables); @@ -52,11 +52,11 @@ class ScvfCouplingData using Element = typename FVGridGeometry::GridView::template Codim<0>::Entity; public: - ScvfCouplingData(const Problem& problem, - const Element& element, - const VolVars& volVars, - const FVElementGeometry& fvGeometry, - const SubControlVolume& scv) + ScvfFacetCouplingData(const Problem& problem, + const Element& element, + const VolVars& volVars, + const FVElementGeometry& fvGeometry, + const SubControlVolume& scv) : problem_(problem) , element_(element) , volVars_(volVars) -- GitLab From fa59e4c3c8ea8cf701c9bc4211db90aca1f86649 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dennis=20Gl=C3=A4ser?= Date: Wed, 24 Oct 2018 10:48:09 +0200 Subject: [PATCH 12/12] [test][facet][1pnc] remove obsolete reference files --- .../facetcoupling_1pnc1pnc_bulk_tpfa | 203 ------------------ .../facetcoupling_1pnc1pnc_lowdim_box | 54 ----- .../facetcoupling_1pnc1pnc_lowdim_tpfa | 52 ----- .../facetcoupling_1pncni1pncni_lowdim_box.vtu | 57 ----- 4 files changed, 366 deletions(-) delete mode 100644 test/references/facetcoupling_1pnc1pnc_bulk_tpfa delete mode 100644 test/references/facetcoupling_1pnc1pnc_lowdim_box delete mode 100644 test/references/facetcoupling_1pnc1pnc_lowdim_tpfa delete mode 100644 test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu diff --git a/test/references/facetcoupling_1pnc1pnc_bulk_tpfa b/test/references/facetcoupling_1pnc1pnc_bulk_tpfa deleted file mode 100644 index d9fceb0a67..0000000000 --- a/test/references/facetcoupling_1pnc1pnc_bulk_tpfa +++ /dev/null @@ -1,203 +0,0 @@ - - - - - - - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - 100000 100000 100000 100000 - - - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - 999.701 999.701 999.701 999.701 - - - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - 0.0013059 0.0013059 0.0013059 0.0013059 - - - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - - - 0.999914 0.999939 0.99996 0.999914 0.99994 0.99996 0.999975 0.999985 0.999975 0.999985 0.999986 0.999915 - 0.999918 0.999942 0.999962 0.999945 0.999965 0.999926 0.999954 0.999971 0.999976 0.999979 0.999987 0.999982 - 0.999989 0.999991 0.999995 0.999997 0.999991 0.999992 0.999995 0.999997 0.999995 0.999997 0.999998 0.999999 - 0.999998 0.999998 0.999999 0.999999 0.999993 0.999996 0.999998 0.999994 0.999996 0.999998 0.999999 0.999999 - 0.999999 0.999999 0.999958 0.999969 0.999979 0.999976 0.99998 0.999986 0.999986 0.999992 0.99999 0.999994 - 0.999986 0.999991 0.999988 0.999991 0.999992 0.999994 0.999994 0.999994 0.999994 0.999996 0.999996 0.999997 - 0.999995 0.999997 0.999998 0.999995 0.999997 0.999998 0.999996 0.999998 0.999999 0.999998 0.999999 1 - 0.999999 0.999999 1 1 1 0.999997 0.999998 0.999999 0.999998 0.999999 0.999999 1 - 1 0.999999 1 1 - - - 8.6312e-05 6.09546e-05 4.03961e-05 8.59915e-05 6.02737e-05 3.96846e-05 2.5391e-05 1.52906e-05 2.48184e-05 1.48917e-05 1.40304e-05 8.50386e-05 - 8.23203e-05 5.84949e-05 3.79764e-05 5.45507e-05 3.46931e-05 7.36008e-05 4.63323e-05 2.9129e-05 2.35255e-05 2.12661e-05 1.26209e-05 1.78689e-05 - 1.06537e-05 8.9057e-06 5.0709e-06 2.87856e-06 8.65167e-06 8.12082e-06 4.91751e-06 2.78697e-06 4.60434e-06 2.60243e-06 1.71458e-06 1.21545e-06 - 1.65637e-06 1.53873e-06 1.17119e-06 1.08002e-06 7.29135e-06 4.13038e-06 2.32754e-06 6.18868e-06 3.52019e-06 1.97795e-06 1.36066e-06 9.34193e-07 - 1.12425e-06 7.11219e-07 4.17527e-05 3.14076e-05 2.12792e-05 2.41036e-05 1.96717e-05 1.42292e-05 1.3579e-05 8.30333e-06 9.52405e-06 6.03592e-06 - 1.40327e-05 8.60062e-06 1.19968e-05 9.1383e-06 7.57813e-06 6.23646e-06 5.59432e-06 6.40705e-06 6.0137e-06 4.39616e-06 4.22468e-06 3.01311e-06 - 4.5594e-06 3.43039e-06 2.41667e-06 4.91184e-06 2.82762e-06 1.58476e-06 3.67042e-06 2.15572e-06 1.21659e-06 1.60126e-06 8.42114e-07 3.29343e-07 - 6.27057e-07 9.18186e-07 4.71317e-07 2.0537e-07 1.46946e-07 2.6557e-06 1.95974e-06 1.21548e-06 1.61082e-06 1.01977e-06 7.11171e-07 3.68039e-07 - 1.13751e-07 6.05888e-07 3.16281e-07 9.7867e-08 - - - 0.999866 0.999905 0.999937 0.999866 0.999906 0.999938 0.999961 0.999976 0.999961 0.999977 0.999978 0.999868 - 0.999872 0.999909 0.999941 0.999915 0.999946 0.999886 0.999928 0.999955 0.999963 0.999967 0.99998 0.999972 - 0.999983 0.999986 0.999992 0.999996 0.999987 0.999987 0.999992 0.999996 0.999993 0.999996 0.999997 0.999998 - 0.999997 0.999998 0.999998 0.999998 0.999989 0.999994 0.999996 0.99999 0.999995 0.999997 0.999998 0.999999 - 0.999998 0.999999 0.999935 0.999951 0.999967 0.999963 0.999969 0.999978 0.999979 0.999987 0.999985 0.999991 - 0.999978 0.999987 0.999981 0.999986 0.999988 0.99999 0.999991 0.99999 0.999991 0.999993 0.999993 0.999995 - 0.999993 0.999995 0.999996 0.999992 0.999996 0.999998 0.999994 0.999997 0.999998 0.999997 0.999999 0.999999 - 0.999999 0.999999 0.999999 1 1 0.999996 0.999997 0.999998 0.999997 0.999998 0.999999 0.999999 - 1 0.999999 1 1 - - - 0.000134208 9.47805e-05 6.28141e-05 0.000133709 9.37219e-05 6.17077e-05 3.94822e-05 2.37765e-05 3.85918e-05 2.31562e-05 2.18169e-05 0.000132228 - 0.000128001 9.0956e-05 5.90515e-05 8.48232e-05 5.39464e-05 0.000114444 7.20444e-05 4.52945e-05 3.65814e-05 3.30681e-05 1.96252e-05 2.77857e-05 - 1.65663e-05 1.38482e-05 7.88517e-06 4.47612e-06 1.34532e-05 1.26277e-05 7.64665e-06 4.3337e-06 7.15968e-06 4.04675e-06 2.66615e-06 1.89001e-06 - 2.57563e-06 2.39271e-06 1.82119e-06 1.67942e-06 1.13379e-05 6.42268e-06 3.6193e-06 9.6233e-06 5.47384e-06 3.07569e-06 2.1158e-06 1.45266e-06 - 1.7482e-06 1.10594e-06 6.49234e-05 4.88376e-05 3.30886e-05 3.74804e-05 3.0589e-05 2.21261e-05 2.1115e-05 1.29115e-05 1.48097e-05 9.38576e-06 - 2.18205e-05 1.33738e-05 1.86547e-05 1.42099e-05 1.17838e-05 9.69759e-06 8.69907e-06 9.96285e-06 9.35121e-06 6.83597e-06 6.56932e-06 4.68535e-06 - 7.0898e-06 5.3342e-06 3.75789e-06 7.63784e-06 4.39691e-06 2.46429e-06 5.70744e-06 3.35211e-06 1.89178e-06 2.48994e-06 1.30948e-06 5.12124e-07 - 9.75066e-07 1.42777e-06 7.32893e-07 3.19348e-07 2.28499e-07 4.12957e-06 3.04737e-06 1.89005e-06 2.5048e-06 1.58574e-06 1.10586e-06 5.72297e-07 - 1.76881e-07 9.42148e-07 4.91814e-07 1.52182e-07 - - - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 0 0 0 0 0 0 0 0 - 0 0 0 0 - - - - - -0.4 -0.5 0 -0.4 -0.4 0 -0.5 -0.5 0 -0.5 -0.4 0 - -0.3 -0.5 0 -0.3 -0.4 0 -0.2 -0.5 0 -0.2 -0.4 0 - -0.4 -0.3 0 -0.5 -0.3 0 -0.3 -0.3 0 -0.2 -0.3 0 - -0.1 -0.5 0 -0.1 -0.4 0 -1.37512e-12 -0.5 0 -1.37512e-12 -0.4 0 - -0.1 -0.3 0 -1.37512e-12 -0.3 0 -1.37512e-12 -0.2 0 -0.1 -0.2 0 - -0.4 -0.2 0 -0.5 -0.2 0 -0.4 -0.1 0 -0.5 -0.1 0 - -0.3 -0.2 0 -0.2 -0.2 0 -0.3 -0.1 0 -0.2 -0.1 0 - -0.4 0 0 -0.5 0 0 -0.3 0 0 -0.2 0 0 - -0.1 -0.1 0 -1.37511e-12 -0.1 0 -0.1 0 0 -1.37512e-12 0 0 - 0.1 -0.5 0 0.1 -0.4 0 0.2 -0.5 0 0.2 -0.4 0 - 0.3 -0.5 0 0.3 -0.4 0 0.1 -0.3 0 0.1 -0.2 0 - 0.2 -0.3 0 0.3 -0.3 0 0.2 -0.2 0 0.3 -0.2 0 - 0.4 -0.5 0 0.4 -0.4 0 0.5 -0.5 0 0.5 -0.4 0 - 0.4 -0.3 0 0.4 -0.2 0 0.5 -0.3 0 0.5 -0.2 0 - 0.1 -0.1 0 0.2 -0.1 0 0.3 -0.1 0 0.1 0 0 - 0.2 0 0 0.3 0 0 0.4 -0.1 0 0.5 -0.1 0 - 0.4 0 0 0.5 0 0 -0.4 0.1 0 -0.5 0.1 0 - -0.3 0.1 0 -0.2 0.1 0 -0.4 0.2 0 -0.5 0.2 0 - -0.3 0.2 0 -0.2 0.2 0 -0.1 0.1 0 -8.2509e-13 0.1 0 - -0.1 0.2 0 -2.7503e-13 0.2 0 -0.4 0.3 0 -0.5 0.3 0 - -0.4 0.4 0 -0.5 0.4 0 -0.3 0.3 0 -0.2 0.3 0 - -0.3 0.4 0 -0.4 0.5 0 -0.5 0.5 0 -0.3 0.5 0 - -0.1 0.3 0 -0.2 0.4 0 -0.1 0.4 0 2.75002e-13 0.3 0 - 8.25048e-13 0.4 0 -0.2 0.5 0 -0.1 0.5 0 1.37512e-12 0.5 0 - 0.1 0.1 0 0.2 0.1 0 0.3 0.1 0 0.1 0.2 0 - 0.2 0.2 0 0.3 0.2 0 0.2 0.3 0 0.1 0.3 0 - 0.4 0.1 0 0.5 0.1 0 0.4 0.2 0 0.3 0.3 0 - 0.4 0.3 0 0.5 0.2 0 0.5 0.3 0 0.1 0.4 0 - 0.2 0.4 0 0.1 0.5 0 0.2 0.5 0 0.3 0.4 0 - 0.4 0.4 0 0.5 0.4 0 0.3 0.5 0 0.4 0.5 0 - 0.5 0.5 0 - - - - - 0 1 3 2 4 5 1 0 6 7 5 4 - 1 8 9 3 5 10 8 1 7 11 10 5 - 12 13 7 6 14 15 13 12 13 16 11 7 - 15 17 16 13 17 18 19 16 8 20 21 9 - 20 22 23 21 10 24 20 8 11 25 24 10 - 24 26 22 20 25 27 26 24 22 28 29 23 - 26 30 28 22 27 31 30 26 16 19 25 11 - 19 32 27 25 18 33 32 19 32 34 31 27 - 33 35 34 32 36 37 15 14 38 39 37 36 - 40 41 39 38 37 42 17 15 42 43 18 17 - 39 44 42 37 41 45 44 39 44 46 43 42 - 45 47 46 44 48 49 41 40 50 51 49 48 - 49 52 45 41 52 53 47 45 51 54 52 49 - 54 55 53 52 43 56 33 18 46 57 56 43 - 47 58 57 46 56 59 35 33 57 60 59 56 - 58 61 60 57 53 62 58 47 55 63 62 53 - 62 64 61 58 63 65 64 62 28 66 67 29 - 30 68 66 28 31 69 68 30 66 70 71 67 - 68 72 70 66 69 73 72 68 34 74 69 31 - 35 75 74 34 74 76 73 69 75 77 76 74 - 70 78 79 71 78 80 81 79 72 82 78 70 - 73 83 82 72 82 84 80 78 80 85 86 81 - 84 87 85 80 76 88 83 73 83 89 84 82 - 88 90 89 83 77 91 88 76 91 92 90 88 - 89 93 87 84 90 94 93 89 92 95 94 90 - 59 96 75 35 60 97 96 59 61 98 97 60 - 96 99 77 75 97 100 99 96 98 101 100 97 - 100 102 103 99 64 104 98 61 65 105 104 64 - 104 106 101 98 101 107 102 100 106 108 107 101 - 105 109 106 104 109 110 108 106 99 103 91 77 - 103 111 92 91 102 112 111 103 111 113 95 92 - 112 114 113 111 107 115 112 102 108 116 115 107 - 110 117 116 108 115 118 114 112 116 119 118 115 - 117 120 119 116 - - - 4 8 12 16 20 24 28 32 36 40 44 48 - 52 56 60 64 68 72 76 80 84 88 92 96 - 100 104 108 112 116 120 124 128 132 136 140 144 - 148 152 156 160 164 168 172 176 180 184 188 192 - 196 200 204 208 212 216 220 224 228 232 236 240 - 244 248 252 256 260 264 268 272 276 280 284 288 - 292 296 300 304 308 312 316 320 324 328 332 336 - 340 344 348 352 356 360 364 368 372 376 380 384 - 388 392 396 400 - - - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 9 9 9 9 9 9 9 9 - 9 9 9 9 - - - - - diff --git a/test/references/facetcoupling_1pnc1pnc_lowdim_box b/test/references/facetcoupling_1pnc1pnc_lowdim_box deleted file mode 100644 index a2fd262304..0000000000 --- a/test/references/facetcoupling_1pnc1pnc_lowdim_box +++ /dev/null @@ -1,54 +0,0 @@ - - - - - - - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - - - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - - - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - - - 0 0 0 0 0 0 0 0 0 1.45519e-11 1.45519e-11 - - - 0.999955 0.999961 0.999972 0.999982 0.999988 0.999993 0.999996 0.999998 0.999999 0.999999 0.999999 - - - 4.51651e-05 3.9379e-05 2.80334e-05 1.83831e-05 1.15156e-05 6.95753e-06 4.08406e-06 2.34719e-06 1.33738e-06 7.89683e-07 6.07223e-07 - - - 0.99993 0.999939 0.999956 0.999971 0.999982 0.999989 0.999994 0.999996 0.999998 0.999999 0.999999 - - - 7.02294e-05 6.12326e-05 4.35909e-05 2.85853e-05 1.79066e-05 1.08188e-05 6.35065e-06 3.64985e-06 2.07961e-06 1.22795e-06 9.44224e-07 - - - - - 0 0 0 0 0 0 0 0 0 0 - - - - - -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 - -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 - 0.3 0 0 0.4 0 0 0.5 0 0 - - - - - 0 1 1 2 2 3 3 4 4 5 5 6 - 6 7 7 8 8 9 9 10 - - - 2 4 6 8 10 12 14 16 18 20 - - - - - diff --git a/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa b/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa deleted file mode 100644 index e906edf6ca..0000000000 --- a/test/references/facetcoupling_1pnc1pnc_lowdim_tpfa +++ /dev/null @@ -1,52 +0,0 @@ - - - - - - - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - - - 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 999.701 - - - 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 0.0013059 - - - 0 0 0 0 0 0 0 0 0 0 - - - 0.999943 0.999961 0.999975 0.999984 0.999991 0.999994 0.999997 0.999998 0.999999 0.999999 - - - 5.73583e-05 3.89112e-05 2.52356e-05 1.57459e-05 9.49338e-06 5.55991e-06 3.17989e-06 1.78488e-06 9.85086e-07 5.25626e-07 - - - 0.999911 0.99994 0.999961 0.999976 0.999985 0.999991 0.999995 0.999997 0.999998 0.999999 - - - 8.91886e-05 6.05051e-05 3.92405e-05 2.44845e-05 1.4762e-05 8.64557e-06 4.94469e-06 2.77547e-06 1.5318e-06 8.17343e-07 - - - 0 0 0 0 0 0 0 0 0 0 - - - - - -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 - -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 - 0.3 0 0 0.4 0 0 0.5 0 0 - - - - - 0 1 1 2 2 3 3 4 4 5 5 6 - 6 7 7 8 8 9 9 10 - - - 2 4 6 8 10 12 14 16 18 20 - - - - - diff --git a/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu b/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu deleted file mode 100644 index b3dbe06d02..0000000000 --- a/test/references/facetcoupling_1pncni1pncni_lowdim_box.vtu +++ /dev/null @@ -1,57 +0,0 @@ - - - - - - - 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 100000 - - - 966.99 968.776 972.496 976.264 979.787 983.075 986.142 988.993 991.616 993.818 994.746 - - - 0.000323415 0.000334031 0.00035906 0.000389494 0.000424204 0.000464202 0.000510981 0.000566627 0.000633937 0.000710076 0.000750566 - - - 0 0 0 1.45519e-11 1.45519e-11 1.45519e-11 0 0 1.45519e-11 1.45519e-11 1.45519e-11 - - - 0.99995 0.999956 0.999967 0.999977 0.999985 0.99999 0.999994 0.999996 0.999998 0.999999 0.999999 - - - 4.95104e-05 4.38423e-05 3.26593e-05 2.26371e-05 1.49972e-05 9.55088e-06 5.87535e-06 3.51415e-06 2.06922e-06 1.25461e-06 9.80024e-07 - - - 0.999923 0.999932 0.999949 0.999965 0.999977 0.999985 0.999991 0.999995 0.999997 0.999998 0.999998 - - - 7.69859e-05 6.81726e-05 5.07839e-05 3.52e-05 2.33203e-05 1.48514e-05 9.13607e-06 5.46445e-06 3.21761e-06 1.95091e-06 1.52393e-06 - - - 360.643 357.912 352.033 345.77 339.572 333.412 327.244 321.023 314.719 308.787 306.036 - - - - - 0 0 0 0 0 0 0 0 0 0 - - - - - -0.5 0 0 -0.4 0 0 -0.3 0 0 -0.2 0 0 - -0.1 0 0 -1.37512e-12 0 0 0.1 0 0 0.2 0 0 - 0.3 0 0 0.4 0 0 0.5 0 0 - - - - - 0 1 1 2 2 3 3 4 4 5 5 6 - 6 7 7 8 8 9 9 10 - - - 2 4 6 8 10 12 14 16 18 20 - - - - - -- GitLab