Distance implementation details. More...
Distance implementation details.
Namespaces | |
namespace | Multithreading |
namespace | Staggered |
Typedefs | |
template<class T , class Default > | |
using | NonVoidOrDefault_t = std::conditional_t<!std::is_same_v< T, void >, T, Default > |
template<class TypeTag , class Impl , DiffMethod diffMethod, bool isImplicit> | |
using | LocalAssemblerChooser_t = typename LocalAssemblerChooser< typename GetPropType< TypeTag, Properties::GridGeometry >::DiscretizationMethod >::template type< TypeTag, Impl, diffMethod, isImplicit > |
template<class Assembler > | |
using | AssemblerVariablesType = typename Assembler::Variables |
template<class Assembler > | |
using | AssemblerVariables = typename VariablesChooser< Assembler >::Type |
template<class Vars > | |
using | SolutionVectorType = typename Vars::SolutionVector |
template<class Problem , class SubControlVolumeFace > | |
using | HasVelocityInSpatialParams = decltype(std::declval< Problem >().spatialParams().velocity(std::declval< SubControlVolumeFace >())) |
template<class Assembler , class Index > | |
using | DetectPVSwitchMultiDomain = typename Assembler::template GridVariables< Index::value >::VolumeVariables::PrimaryVariableSwitch |
template<class Assembler , std::size_t i> | |
using | GetPVSwitchMultiDomain = Dune::Std::detected_or< int, DetectPVSwitchMultiDomain, Assembler, Dune::index_constant< i > > |
template<class Assembler > | |
using | AssemblerGridVariablesType = typename Assembler::GridVariables |
template<class Assembler > | |
using | PriVarSwitchVariables = typename PriVarSwitchVariablesType< Assembler, assemblerExportsGridVariables< Assembler > >::Type |
template<class LinearSolver , class Residual > | |
using | NormDetector = decltype(std::declval< LinearSolver >().norm(std::declval< Residual >())) |
template<class C > | |
using | dynamicIndexAccess = decltype(std::declval< C >()[0]) |
template<class C > | |
using | staticIndexAccess = decltype(std::declval< C >()[Dune::Indices::_0]) |
template<class SolutionVector > | |
using | BlockType = typename BlockTypeHelper< SolutionVector, Dune::IsNumber< SolutionVector >::value >::type |
template<class Variables > | |
using | DetectPVSwitch = typename Variables::VolumeVariables::PrimaryVariableSwitch |
helper aliases to extract a primary variable switch from the VolumeVariables (if defined, yields int otherwise) More... | |
template<class Variables > | |
using | GetPVSwitch = Dune::Std::detected_or< int, DetectPVSwitch, Variables > |
template<class Variables > | |
using | PrimaryVariableSwitch = typename GetPVSwitch< Variables >::type |
template<class FluidMatrixInteraction > | |
using | AdsorptionModelDetector = decltype(std::declval< FluidMatrixInteraction >().adsorptionModel()) |
template<typename T , typename ... Ts> | |
using | RobinDerivDetector = decltype(std::declval< T >().addRobinFluxDerivatives(std::declval< Ts >()...)) |
template<typename T , typename ... Ts> | |
using | SaturationDetector = decltype(std::declval< T >().spatialParams().saturation(std::declval< Ts >()...)) |
Functions | |
template<class ElementSolution > | |
bool | allStatesEqual (const ElementSolution &elemSol, std::true_type hasState) |
returns true if all states in an element solution are the same More... | |
template<class ElementSolution > | |
bool | allStatesEqual (const ElementSolution &elemSol, std::false_type hasState) |
overload if the solution is stateless More... | |
template<class Geometry , class ElementSolution > | |
auto | minDistVertexSol (const Geometry &geometry, const typename Geometry::GlobalCoordinate &globalPos, const ElementSolution &elemSol) |
return the solution at the closest dof More... | |
template<class Matrix > | |
void | setupReducedMatrices (const Matrix &massMatrix, const Matrix &projMatrix, const std::vector< bool > &dofIsVoid, Matrix &reducedM, Matrix &reducedP, std::vector< std::size_t > &expansionMap) |
Reduces a mass matrix and projection matrix such that they are composed of only those dofs that actually take part in the projection. Simultaneously, a container with the index map into the complete target space is filled so that the entries after projection can be assigned to the corresponding dof in the overall target space. More... | |
template<bool doBidirectional, class FEBasisDomain , class FEBasisTarget , class GlueType > | |
auto | createProjectionMatrices (const FEBasisDomain &feBasisDomain, const FEBasisTarget &feBasisTarget, const GlueType &glue, bool treatDiagonalZeroes=true) |
Creates the matrices underlying l2-projections. More... | |
template<bool doBidirectional, class FEBasisDomain , class FEBasisTarget , class GlueType > | |
auto | makeProjectorPair (const FEBasisDomain &feBasisDomain, const FEBasisTarget &feBasisTarget, const GlueType &glue) |
Creates a projector class between two function space bases. More... | |
template<class ElemVolVars , class SubControlVolumeFace , class UpwindTermFunction , class Scalar > | |
Scalar | upwindSchemeMultiplier (const ElemVolVars &elemVolVars, const SubControlVolumeFace &scvf, const UpwindTermFunction &upwindTerm, Scalar flux, int phaseIdx) |
returns the upwind factor which is multiplied to the advective flux across the given scvf More... | |
template<class EntitySet , class ctype , int dimworld, typename std::enable_if_t<(EntitySet::Entity::Geometry::mydimension > 0), int > = 0> | |
void | closestEntity (const Dune::FieldVector< ctype, dimworld > &point, const BoundingBoxTree< EntitySet > &tree, std::size_t node, ctype &minSquaredDistance, std::size_t &eIdx) |
Compute the closest entity in an AABB tree (index and shortest squared distance) recursively. More... | |
template<class Geo1 , class Geo2 , class ctype , class GetFacetCornerIndices , class ComputeNormalFunction > | |
bool | computeSegmentIntersection (const Geo1 &geo1, const Geo2 &geo2, ctype baseEps, ctype &tfirst, ctype &tlast, const GetFacetCornerIndices &getFacetCornerIndices, const ComputeNormalFunction &computeNormal) |
Algorithm to find segment-like intersections of a polygon/polyhedron with a segment. The result is stored in the form of the local coordinates tfirst and tlast on the segment geo1. More... | |
template<class Function , class Range > | |
Range | evalFunctionForRange (const Function &f, const Range &range) |
template<class S , class V > | |
void | addDataSetToGnuplot (GnuplotInterface< S > &gnuplot, const V &x, const V &y, const std::string &curveName, const std::string &curveOptions, const std::string &xLabel, const std::string &yLabel) |
template<class Problem , class SubControlVolumeFace > | |
static constexpr bool | hasVelocityInSpatialParams () |
template<class... Args, std::size_t ... Is> | |
auto | toRef (const std::tuple< Args... > &v, std::index_sequence< Is... > indices) |
template<class LinearSolver , class Residual > | |
static constexpr bool | hasNorm () |
template<class V , class Scalar , class Reduce , class Transform > | |
auto | hybridInnerProduct (const V &v1, const V &v2, Scalar init, Reduce &&r, Transform &&t) -> std::enable_if_t< hasDynamicIndexAccess< V >(), Scalar > |
template<class Scalar , class V > | |
auto | maxRelativeShift (const V &v1, const V &v2) -> std::enable_if_t< Dune::IsNumber< V >::value, Scalar > |
template<class To , class From > | |
void | assign (To &to, const From &from) |
template<class T , std::enable_if_t< Dune::IsNumber< std::decay_t< T > >::value, int > = 0> | |
constexpr std::size_t | blockSize () |
template<class FluidMatrixInteraction > | |
static constexpr bool | hasAdsorptionModel () |
template<class FluidMatrixInteraction > | |
static constexpr bool | hasAdsorptionModel () |
template<class T , typename ... Args> | |
static constexpr bool | hasAddRobinFluxDerivatives () |
template<class T , typename ... Args> | |
static constexpr bool | hasSaturation () |
Variables | |
template<class Grid , int dofCodim> | |
static constexpr bool | canCommunicate |
template<class Assembler > | |
constexpr bool | exportsVariables = Dune::Std::is_detected_v<AssemblerVariablesType, Assembler> |
template<class Assembler > | |
constexpr bool | assemblerExportsGridVariables = Dune::Std::is_detected_v<AssemblerGridVariablesType, Assembler> |
template<class C > | |
static constexpr auto | hasDynamicIndexAccess = Dune::Std::is_detected<dynamicIndexAccess, C>{} |
template<class C > | |
static constexpr auto | hasStaticIndexAccess = Dune::Std::is_detected<staticIndexAccess, C>{} |
using Dumux::Detail::AdsorptionModelDetector = typedef decltype(std::declval<FluidMatrixInteraction>().adsorptionModel()) |
using Dumux::Detail::AssemblerGridVariablesType = typedef typename Assembler::GridVariables |
using Dumux::Detail::AssemblerVariables = typedef typename VariablesChooser<Assembler>::Type |
using Dumux::Detail::AssemblerVariablesType = typedef typename Assembler::Variables |
using Dumux::Detail::BlockType = typedef typename BlockTypeHelper<SolutionVector, Dune::IsNumber<SolutionVector>::value>::type |
using Dumux::Detail::DetectPVSwitch = typedef typename Variables::VolumeVariables::PrimaryVariableSwitch |
helper aliases to extract a primary variable switch from the VolumeVariables (if defined, yields int otherwise)
using Dumux::Detail::DetectPVSwitchMultiDomain = typedef typename Assembler::template GridVariables<Index::value>::VolumeVariables::PrimaryVariableSwitch |
using Dumux::Detail::dynamicIndexAccess = typedef decltype(std::declval<C>()[0]) |
using Dumux::Detail::GetPVSwitch = typedef Dune::Std::detected_or<int, DetectPVSwitch, Variables> |
using Dumux::Detail::GetPVSwitchMultiDomain = typedef Dune::Std::detected_or<int, DetectPVSwitchMultiDomain, Assembler, Dune::index_constant<i> > |
using Dumux::Detail::HasVelocityInSpatialParams = typedef decltype(std::declval<Problem>().spatialParams().velocity(std::declval<SubControlVolumeFace>())) |
using Dumux::Detail::LocalAssemblerChooser_t = typedef typename LocalAssemblerChooser< typename GetPropType<TypeTag, Properties::GridGeometry>::DiscretizationMethod >::template type<TypeTag, Impl, diffMethod, isImplicit> |
using Dumux::Detail::NonVoidOrDefault_t = typedef std::conditional_t<!std::is_same_v<T, void>, T, Default> |
using Dumux::Detail::NormDetector = typedef decltype(std::declval<LinearSolver>().norm(std::declval<Residual>())) |
using Dumux::Detail::PrimaryVariableSwitch = typedef typename GetPVSwitch<Variables>::type |
using Dumux::Detail::PriVarSwitchVariables = typedef typename PriVarSwitchVariablesType<Assembler, assemblerExportsGridVariables<Assembler> >::Type |
using Dumux::Detail::RobinDerivDetector = typedef decltype(std::declval<T>().addRobinFluxDerivatives(std::declval<Ts>()...)) |
using Dumux::Detail::SaturationDetector = typedef decltype(std::declval<T>().spatialParams().saturation(std::declval<Ts>()...)) |
using Dumux::Detail::SolutionVectorType = typedef typename Vars::SolutionVector |
using Dumux::Detail::staticIndexAccess = typedef decltype(std::declval<C>()[Dune::Indices::_0]) |
void Dumux::Detail::addDataSetToGnuplot | ( | GnuplotInterface< S > & | gnuplot, |
const V & | x, | ||
const V & | y, | ||
const std::string & | curveName, | ||
const std::string & | curveOptions, | ||
const std::string & | xLabel, | ||
const std::string & | yLabel | ||
) |
bool Dumux::Detail::allStatesEqual | ( | const ElementSolution & | elemSol, |
std::false_type | hasState | ||
) |
overload if the solution is stateless
bool Dumux::Detail::allStatesEqual | ( | const ElementSolution & | elemSol, |
std::true_type | hasState | ||
) |
returns true if all states in an element solution are the same
void Dumux::Detail::assign | ( | To & | to, |
const From & | from | ||
) |
|
constexpr |
auto Dumux::Detail::createProjectionMatrices | ( | const FEBasisDomain & | feBasisDomain, |
const FEBasisTarget & | feBasisTarget, | ||
const GlueType & | glue, | ||
bool | treatDiagonalZeroes = true |
||
) |
Creates the matrices underlying l2-projections.
doBidirectional | If false, the backward projection matrix is not assembled |
feBasisDomain | The basis to the domain finite element space |
feBasisTarget | The basis to the target finite element space |
glue | The glue object containing the intersections between the two grids |
treatDiagonalZeroes | If true, zero entries on the diagonal of the matrices that appear if the two domains occupy different geometric regions (and some dofs to not take part in the projection as a result) are substituted by ones. This substitution will lead to those dofs being mapped to zeroes in the target space. |
Range Dumux::Detail::evalFunctionForRange | ( | const Function & | f, |
const Range & | range | ||
) |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
|
staticconstexpr |
auto Dumux::Detail::hybridInnerProduct | ( | const V & | v1, |
const V & | v2, | ||
Scalar | init, | ||
Reduce && | r, | ||
Transform && | t | ||
) | -> std::enable_if_t<hasDynamicIndexAccess<V>(), Scalar> |
auto Dumux::Detail::makeProjectorPair | ( | const FEBasisDomain & | feBasisDomain, |
const FEBasisTarget & | feBasisTarget, | ||
const GlueType & | glue | ||
) |
Creates a projector class between two function space bases.
doBidirectional | If false, the backward projection matrix is not assembled |
auto Dumux::Detail::maxRelativeShift | ( | const V & | v1, |
const V & | v2 | ||
) | -> std::enable_if_t<Dune::IsNumber<V>::value, Scalar> |
auto Dumux::Detail::minDistVertexSol | ( | const Geometry & | geometry, |
const typename Geometry::GlobalCoordinate & | globalPos, | ||
const ElementSolution & | elemSol | ||
) |
return the solution at the closest dof
void Dumux::Detail::setupReducedMatrices | ( | const Matrix & | massMatrix, |
const Matrix & | projMatrix, | ||
const std::vector< bool > & | dofIsVoid, | ||
Matrix & | reducedM, | ||
Matrix & | reducedP, | ||
std::vector< std::size_t > & | expansionMap | ||
) |
Reduces a mass matrix and projection matrix such that they are composed of only those dofs that actually take part in the projection. Simultaneously, a container with the index map into the complete target space is filled so that the entries after projection can be assigned to the corresponding dof in the overall target space.
auto Dumux::Detail::toRef | ( | const std::tuple< Args... > & | v, |
std::index_sequence< Is... > | indices | ||
) |
Scalar Dumux::Detail::upwindSchemeMultiplier | ( | const ElemVolVars & | elemVolVars, |
const SubControlVolumeFace & | scvf, | ||
const UpwindTermFunction & | upwindTerm, | ||
Scalar | flux, | ||
int | phaseIdx | ||
) |
returns the upwind factor which is multiplied to the advective flux across the given scvf
|
inlineconstexpr |
|
staticconstexpr |
|
inlineconstexpr |
|
staticconstexpr |
|
staticconstexpr |