Plugins
Loading...
Searching...
No Matches
ug::d3f Namespace Reference

Classes

class  ConstantSohlGradient
 Calculates a river bed profile by applying a constant slope starting from a specific boundary. More...
 
class  dd_line_sss_data
 
class  dd_point_sss_data
 
class  dd_sss_data
 class for data for all the density-driven flow sources and sinks More...
 
class  DDSingularSourcesAndSinks
 
class  DensityDrivenFlowBase
 Finite Volume Element Discretization for Density Driven Flow. More...
 
class  DensityDrivenFlowFV
 Finite Volume Element Discretization for Density Driven Flow. More...
 
class  DensityDrivenFlowFV1
 Finite Volume Element Discretization for Density Driven Flow. More...
 
class  ExfiltrationFlux
 Spatial linker that exposes exchange fluxes stored on 1D edges. More...
 
class  FlowVolStabData
 
class  FractalField
 Computation of a fractal field. More...
 
class  FractDDF_FV1
 FV-discretization of the density-driven flow in porous media with fractures. More...
 
class  FractDimadapt
 
class  FractGFEval
 
class  FractPF_FV1
 FV-discretization of the density-driven flow in porous media with fractures. More...
 
class  FractTHF_FV1
 FV-discretization of the density-driven flow in porous media with fractures. More...
 
struct  FracturedFunctionality
 
struct  Functionality
 
class  FVSingularSourcesAndSinksKD
 Manager for Singular Sources and Sinks (SSS) using a BVH for spatial optimization. More...
 
class  InOutFlowBC
 
class  ISubmodule
 Abstract base class for independent sub-solvers (e.g., 1D St. Venant). More...
 
class  ISubmoduleBridge
 Orchestrates the coupling between the main solver and a submodule. More...
 
class  ISurjectiveInterface
 Interface for mapping vertices between a subdomain and the primary domain. More...
 
struct  LevelSetFunctionality
 
class  line_sss_marker
 
struct  LineBVHNode
 Node structure for the Bounding Volume Hierarchy (BVH). More...
 
class  LineBVHTree
 A Bounding Volume Hierarchy tree for efficient spatial querying of line segments. More...
 
class  LSPositionAtPoints
 
class  LSPositionZ
 
class  LSPosZCellToVrtData
 
class  LSPosZData
 
class  LSPosZData_ElemEvalPnt
 
class  LSPosZData_ElemEvalPnt< WDim, TAAPos, RegularVertex >
 
class  ManningRoughness1d
 Calculates the river bottom friction (reaction rate) using Manning's formula. More...
 
class  OutFlowBC
 
class  OutflowIntegrationObserver
 Observer that integrates the river outflow over time. More...
 
class  point_sss_marker
 
class  PolygonalRegions
 
class  RasterID
 
class  RichardsFreeSurfaceHeight
 Computes and stores the height of the free water surface (e.g., where pressure is 0) for the Richards equation. More...
 
class  river_line_sss_data
 
class  river_point_sss_data
 
class  river_sss_data
 class for data for all the river sources and sinks More...
 
struct  RiverFunctionality
 
struct  RiverFunctionality2d3d
 
struct  RiverFunctionality3d
 
class  RiverObserver
 Handles river networks as a post-process of a flow problem. More...
 
class  RiverSingularSourcesAndSinks
 Specialization of the optimized SSS manager for river networks. More...
 
class  RiverSSSManager
 Orchestrates the mass exchange between a 1D river and a 3D subsurface. More...
 
class  SegmentNetwork
 Represents a network of segments, like, e.g. a low dimensional river network. More...
 
class  Sohle
 Reads the river bed elevation directly from the spatial z-coordinate. More...
 
class  StVenantElemDisc
 Element discretization for the 1D Shallow Water (St. Venant) Equations. More...
 
class  StVenantElemDiscFactory
 Factory class to construct and link the coupled St. Venant equations. More...
 
struct  StVenantParameters
 Configuration parameters for the St. Venant submodule. More...
 
class  StVenantSubmodule
 Handles the setup, assembly, and time-integration of the 1D Shallow Water Equations. More...
 
class  StVenantWallBndDir
 Linker to evaluate the normal component of a downstream vector at a boundary. More...
 
class  th_line_sss_data
 
class  th_point_sss_data
 
class  th_sss_data
 class for data for all the thermohaline flow sources and sinks More...
 
class  ThermohalineFlow
 Finite Volume Element Discretization for Thermohaline Flow. More...
 
class  THSingularSourcesAndSinks
 
class  TimestepObserver
 Observer that logs the time step history (time and dt) to a text file. More...
 
class  UnionsOfBoxes
 
class  ValSurfProjData
 
class  ValueById
 
class  VertexLowDimRecharge
 
class  VertexRiverRecharge
 
class  VertexWellRecharge
 

Functions

template<int dim>
bool boxes_overlap (const AABox< MathVector< dim > > &a, const AABox< MathVector< dim > > &b)
 Checks if two Axis-Aligned Bounding Boxes (AABox) overlap.
 
template<int dim>
number cone_mollifier (number d, number smooth_len)
 
template<>
number cone_mollifier< 1 > (number d, number smooth_len)
 
template<>
number cone_mollifier< 2 > (number d, number smooth_len)
 
template<typename TDomain >
void CorrectFractPositions (ConstSmartPtr< TDomain > domain, SmartPtr< DoFDistribution > dd, std::vector< typename std::pair< MathVector< TDomain::dim >, size_t > > &vPositions, DegeneratedLayerManager< TDomain::dim > *dLayerManager, number step)
 
template<typename TDomain , typename TAlgebra >
SmartPtr< LimexTimeIntegrator< TDomain, TAlgebra > > create_limex_solver (number tolerance, SmartPtr< DomainDiscretization< TDomain, TAlgebra > > domain_disc, SmartPtr< TDomain > domain, const char *cmp="")
 Creates and configures the Limex Time Integrator for the St. Venant equations.
 
template<int dim>
void expand_bbox (AABox< MathVector< dim > > &bbox, const AABox< MathVector< dim > > &other)
 Expands a bounding box to include another.
 
template<typename TDomain >
void FractOrderLex (ApproximationSpace< TDomain > &approxSpace, DegeneratedLayerManager< TDomain::dim > *dLayerManager, number step)
 orders the all DofDistributions of the ApproximationSpace using lexicographic order
 
template<typename TDomain >
void FractOrderLexForDofDist (SmartPtr< DoFDistribution > dd, ConstSmartPtr< TDomain > domain, DegeneratedLayerManager< TDomain::dim > *dLayerManager, number step)
 orders a dof distribution using lexicographic order
 
void InitUGPlugin_Submodules (ug::bridge::Registry *reg, std::string grp)
 
template<typename TGridFunction >
number IntegrateRiverOutflow (SmartPtr< CplUserData< MathVector< TGridFunction::dim >, TGridFunction::dim > > velocityField, SmartPtr< CplUserData< number, TGridFunction::dim > > scalarField, SmartPtr< TGridFunction > gridFunction, const char *bndSubsets, const char *innerSubsets="", int quadOrder=1)
 Computes the total mass/volume flux through specified river boundary subsets.
 
template<int dim>
AABox< MathVector< dim > > LineBoundingBox (const MathVector< dim > &a, const MathVector< dim > &b)
 Computes the Axis-Aligned Bounding Box for a line segment.
 
template<int dim>
int longest_axis (const AABox< MathVector< dim > > &box)
 Identifies the axis along which the bounding box has the largest extent. Used as a heuristic for splitting the BVH tree.
 
template<typename TDomain >
void project_rivers_on_terrain (SmartPtr< TDomain > river_domain, SmartPtr< TDomain > soil_domain, const char *top_subset)
 Projects a 1D river network onto the surface of a 3D terrain.
 

Function Documentation

◆ boxes_overlap()

template<int dim>
bool ug::d3f::boxes_overlap ( const AABox< MathVector< dim > > &  a,
const AABox< MathVector< dim > > &  b 
)

Checks if two Axis-Aligned Bounding Boxes (AABox) overlap.

Returns
true if there is an overlap in all dimensions.

◆ cone_mollifier()

template<int dim>
number ug::d3f::cone_mollifier ( number  d,
number  smooth_len 
)
inline

Pattern for the circular (axis-symmetric) mollifier function

Template Parameters
dimdimension of the mollifier
Parameters
ddistance from the axis
smooth_lensmoothing length

◆ cone_mollifier< 1 >()

template<>
number ug::d3f::cone_mollifier< 1 > ( number  d,
number  smooth_len 
)
inline

Specialization of the mollifier in 1d

Parameters
ddistance from the axis
smooth_lensmoothing length

◆ cone_mollifier< 2 >()

template<>
number ug::d3f::cone_mollifier< 2 > ( number  d,
number  smooth_len 
)
inline

Specialization of the mollifier in 2d

Parameters
ddistance from the axis
smooth_lensmoothing length

References ug::PI.

◆ CorrectFractPositions()

template<typename TDomain >
void ug::d3f::CorrectFractPositions ( ConstSmartPtr< TDomain >  domain,
SmartPtr< DoFDistribution dd,
std::vector< typename std::pair< MathVector< TDomain::dim >, size_t > > &  vPositions,
DegeneratedLayerManager< TDomain::dim > *  dLayerManager,
number  step 
)

Corrects the position of the 'outer fracture sides' to mimic the full-dim. fractures

Parameters
domainthe domain
ddthe dof distribution
vPositionscoordinates of the positions
dLayerManagerfracture manager to recognize the fractures
steprelative step to move the points

References element_type(), ug::ReferenceElementProvider::get(), ug::DegeneratedLayerManager< int dim >::get_layer_sides(), ug::ReferenceElement::id(), ug::ReferenceElement::num(), ug::ReferenceElement::roid(), ug::DegeneratedLayerManager< int dim >::subset_grp(), UG_ASSERT, UG_THROW, ug::VecDistanceSq(), and ug::VecLength().

Referenced by FractOrderLexForDofDist().

◆ create_limex_solver()

template<typename TDomain , typename TAlgebra >
SmartPtr< LimexTimeIntegrator< TDomain, TAlgebra > > ug::d3f::create_limex_solver ( number  tolerance,
SmartPtr< DomainDiscretization< TDomain, TAlgebra > >  domain_disc,
SmartPtr< TDomain >  domain,
const char *  cmp = "" 
)

Creates and configures the Limex Time Integrator for the St. Venant equations.

  • Sets up a BiCGStab linear solver with ILU preconditioning, wrapped in a Newton solver for the non-linear shallow water equations, which is finally managed by Limex.

References make_sp().

Referenced by ug::d3f::StVenantSubmodule< TGridFunction, dim >::run().

◆ expand_bbox()

template<int dim>
void ug::d3f::expand_bbox ( AABox< MathVector< dim > > &  bbox,
const AABox< MathVector< dim > > &  other 
)

Expands a bounding box to include another.

Parameters
bboxThe box to be expanded.
otherThe box to be included.

◆ FractOrderLex()

template<typename TDomain >
void ug::d3f::FractOrderLex ( ApproximationSpace< TDomain > &  approxSpace,
DegeneratedLayerManager< TDomain::dim > *  dLayerManager,
number  step 
)

orders the all DofDistributions of the ApproximationSpace using lexicographic order

Parameters
approxSpaceapprox. space to order in
dLayerManagerfracture manager to recognize the fractures (or NULL)
steprelative step to move the points

References ug::IApproximationSpace::dof_distributions(), and ug::ApproximationSpace< typename TDomain >::domain().

◆ FractOrderLexForDofDist()

template<typename TDomain >
void ug::d3f::FractOrderLexForDofDist ( SmartPtr< DoFDistribution dd,
ConstSmartPtr< TDomain >  domain,
DegeneratedLayerManager< TDomain::dim > *  dLayerManager,
number  step 
)

orders a dof distribution using lexicographic order

Orders a dof distribution using lexicographic order. If the fracture manager is specified then the coordinates of the vertices are corrected to simulate full-dimensional fractues.

world ('full') dimension

world ('full') dimension

Parameters
ddthe dof distribution
domainthe domain
dLayerManagerfracture manager to recognize the fractures
steprelative step to move the points

References CorrectFractPositions(), ug::LFEID::LAGRANGE, and UG_THROW.

◆ InitUGPlugin_Submodules()

void ug::d3f::InitUGPlugin_Submodules ( ug::bridge::Registry reg,
std::string  grp 
)

◆ IntegrateRiverOutflow()

template<typename TGridFunction >
number ug::d3f::IntegrateRiverOutflow ( SmartPtr< CplUserData< MathVector< TGridFunction::dim >, TGridFunction::dim > >  velocityField,
SmartPtr< CplUserData< number, TGridFunction::dim > >  scalarField,
SmartPtr< TGridFunction >  gridFunction,
const char *  bndSubsets,
const char *  innerSubsets = "",
int  quadOrder = 1 
)

Computes the total mass/volume flux through specified river boundary subsets.

This function calculates the cumulative outflow by summing nodal fluxes at the "Sink" vertices of the 1D river network. It assumes that the river network is discretized such that sink nodes represent terminal points where water leaves the domain.

The calculation is: \sum_{nodes \in \Gamma} |v * A| where v is the flow velocity and A is the wetted cross-sectional area.

Template Parameters
TGridFunctionThe grid function type (must provide access to A and v components).
Parameters
velocityField(Unused) Retained for interface compatibility with standard integrators.
scalarField(Unused) Retained for interface compatibility with standard integrators.
gridFunctionThe grid function containing river state (A and v).
bndSubsetsComma-separated string of subset names (e.g., "Sink").
innerSubsets(Unused)
quadOrder(Unused)
Returns
The total computed flux [m^3/s].

References ug::SubsetGroup::add(), ug::DoFRef(), ug::SubsetGroup::size(), and ug::TokenizeString().

◆ LineBoundingBox()

template<int dim>
AABox< MathVector< dim > > ug::d3f::LineBoundingBox ( const MathVector< dim > &  a,
const MathVector< dim > &  b 
)

Computes the Axis-Aligned Bounding Box for a line segment.

References ug::AABox< class vector_t >::max, and ug::AABox< class vector_t >::min.

◆ longest_axis()

template<int dim>
int ug::d3f::longest_axis ( const AABox< MathVector< dim > > &  box)

Identifies the axis along which the bounding box has the largest extent. Used as a heuristic for splitting the BVH tree.

◆ project_rivers_on_terrain()

template<typename TDomain >
void ug::d3f::project_rivers_on_terrain ( SmartPtr< TDomain >  river_domain,
SmartPtr< TDomain >  soil_domain,
const char *  top_subset 
)

Projects a 1D river network onto the surface of a 3D terrain.

This function adjusts the z-coordinates of the river vertices so that they lie exactly on the specified "top" subset of the 3D subsurface domain.

It uses a two-step approach:

  1. Raycasting: For each river vertex, a ray is cast in the +z direction to find the intersection with the terrain surface.
  2. Gap Filling: If a river vertex lies outside the terrain's horizontal extent, it performs a Breadth-First Search (BFS) along the river network to find the nearest successfully projected vertex and inherits its elevation.
Template Parameters
TDomainThe domain type (must support position accessors and subset handlers).
Parameters
river_domainThe domain containing the 1D river network.
soil_domainThe domain containing the 3D terrain/soil.
top_subsetThe name of the surface subset in the soil domain (e.g., "top").

References ug::PointOnRay(), pcl::ProcRank(), ug::RayElementIntersection(), ug::SaveGridToUGX(), ug::SMALL, UG_ASSERT, UG_LOG, and UG_THROW.