Plugins
Loading...
Searching...
No Matches
ug::d3f::RiverObserver< TDomain, TAlgebra > Class Template Reference

Handles river networks as a post-process of a flow problem. More...

#include <river_observer.h>

+ Inheritance diagram for ug::d3f::RiverObserver< TDomain, TAlgebra >:

Public Types

typedef GridFunction< TDomain, TAlgebra > grid_function_type
 
typedef ITimeIntegratorObserver< TDomain, TAlgebra > TBase
 
typedef SmartPtr< RiverSSSManager< TDomain, TAlgebra > > TRiverSSSMngr
 
typedef RiverSingularSourcesAndSinks< TDomain::dim > TSSSManager
 
typedef SmartPtr< StVenantSubmodule< grid_function_type > > TSubModule
 
- Public Types inherited from ug::ITimeIntegratorObserver< TDomain, TAlgebra >
typedef GridFunction< TDomain, TAlgebra > grid_function_type
 

Public Member Functions

bool finalize_action (SmartPtr< grid_function_type > u, int step, number time, number dt) override
 Called at the end of each stage (if applicable).
 
SmartPtr< grid_function_typeget_river_u ()
 Returns the 1D river grid function.
 
void init ()
 Initializes the SSS managers and performs an initial submodule run.
 
void push_sss_manager (SmartPtr< TSSSManager > ssmngr)
 Attaches a singular source/sink manager to the observer.
 
 RiverObserver (const char *filename, SmartPtr< grid_function_type > u)
 Constructor.
 
void set_bottom_permeability (number perm)
 
void set_bottom_thickness (number thickness)
 
void set_density (SmartPtr< CplUserData< number, dim > > density)
 Setters for coupling and physical parameters.
 
void set_rainfall_rate (number qr)
 
void set_river_width (number width)
 
bool step_process (SmartPtr< grid_function_type > u, int step, number time, number dt) override
 Called after each successful time step.
 
virtual ~RiverObserver ()=default
 
- Public Member Functions inherited from ug::ITimeIntegratorObserver< TDomain, TAlgebra >
virtual ~ITimeIntegratorObserver ()
 

Static Public Attributes

static const int dim = TDomain::dim
 

Private Member Functions

bool solve_submodule (SmartPtr< grid_function_type > u, number time, number dt, const char *context)
 Unified logic for updating exchange fluxes and running the 1D solver.
 

Private Attributes

TRiverSSSMngr m_sp_sss_mngr
 
TSubModule m_sp_submodule
 

Detailed Description

template<typename TDomain, typename TAlgebra>
class ug::d3f::RiverObserver< TDomain, TAlgebra >

Handles river networks as a post-process of a flow problem.

This class can be attached to a time integrator. It manages the computation of a 1D surface flow sub-problem (St. Venant) and maps exchange fluxes between the surface and subsurface domains using line singular sources/sinks.

Template Parameters
TDomainThe primary (subsurface) domain type.
TAlgebraThe algebra type.

Member Typedef Documentation

◆ grid_function_type

template<typename TDomain , typename TAlgebra >
typedef GridFunction<TDomain, TAlgebra> ug::d3f::RiverObserver< TDomain, TAlgebra >::grid_function_type

◆ TBase

template<typename TDomain , typename TAlgebra >
typedef ITimeIntegratorObserver<TDomain, TAlgebra> ug::d3f::RiverObserver< TDomain, TAlgebra >::TBase

◆ TRiverSSSMngr

template<typename TDomain , typename TAlgebra >
typedef SmartPtr<RiverSSSManager<TDomain, TAlgebra> > ug::d3f::RiverObserver< TDomain, TAlgebra >::TRiverSSSMngr

◆ TSSSManager

template<typename TDomain , typename TAlgebra >
typedef RiverSingularSourcesAndSinks<TDomain::dim> ug::d3f::RiverObserver< TDomain, TAlgebra >::TSSSManager

◆ TSubModule

template<typename TDomain , typename TAlgebra >
typedef SmartPtr<StVenantSubmodule<grid_function_type> > ug::d3f::RiverObserver< TDomain, TAlgebra >::TSubModule

Constructor & Destructor Documentation

◆ RiverObserver()

template<typename TDomain , typename TAlgebra >
ug::d3f::RiverObserver< TDomain, TAlgebra >::RiverObserver ( const char *  filename,
SmartPtr< grid_function_type u 
)
inline

Constructor.

Parameters
filenamePath to the 1D river grid file (*.ugx).
uThe primary domain's grid function (for coupling).

References ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_sss_mngr, ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_submodule, and make_sp().

◆ ~RiverObserver()

template<typename TDomain , typename TAlgebra >
virtual ug::d3f::RiverObserver< TDomain, TAlgebra >::~RiverObserver ( )
virtualdefault

Member Function Documentation

◆ finalize_action()

template<typename TDomain , typename TAlgebra >
bool ug::d3f::RiverObserver< TDomain, TAlgebra >::finalize_action ( SmartPtr< grid_function_type u,
int  step,
number  time,
number  dt 
)
inlineoverride

Called at the end of each stage (if applicable).

References ug::d3f::RiverObserver< TDomain, TAlgebra >::solve_submodule().

◆ get_river_u()

template<typename TDomain , typename TAlgebra >
SmartPtr< grid_function_type > ug::d3f::RiverObserver< TDomain, TAlgebra >::get_river_u ( )
inline

Returns the 1D river grid function.

References ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_submodule.

◆ init()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::init ( )
inline

Initializes the SSS managers and performs an initial submodule run.

References ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_sss_mngr, and ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_submodule.

◆ push_sss_manager()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::push_sss_manager ( SmartPtr< TSSSManager ssmngr)
inline

Attaches a singular source/sink manager to the observer.

References ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_sss_mngr.

◆ set_bottom_permeability()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::set_bottom_permeability ( number  perm)
inline

◆ set_bottom_thickness()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::set_bottom_thickness ( number  thickness)
inline

◆ set_density()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::set_density ( SmartPtr< CplUserData< number, dim > >  density)
inline

Setters for coupling and physical parameters.

References ug::d3f::RiverObserver< TDomain, TAlgebra >::m_sp_sss_mngr.

◆ set_rainfall_rate()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::set_rainfall_rate ( number  qr)
inline

◆ set_river_width()

template<typename TDomain , typename TAlgebra >
void ug::d3f::RiverObserver< TDomain, TAlgebra >::set_river_width ( number  width)
inline

◆ solve_submodule()

template<typename TDomain , typename TAlgebra >
bool ug::d3f::RiverObserver< TDomain, TAlgebra >::solve_submodule ( SmartPtr< grid_function_type u,
number  time,
number  dt,
const char *  context 
)
inlineprivate

◆ step_process()

template<typename TDomain , typename TAlgebra >
bool ug::d3f::RiverObserver< TDomain, TAlgebra >::step_process ( SmartPtr< grid_function_type u,
int  step,
number  time,
number  dt 
)
inlineoverridevirtual

Member Data Documentation

◆ dim

template<typename TDomain , typename TAlgebra >
const int ug::d3f::RiverObserver< TDomain, TAlgebra >::dim = TDomain::dim
static

◆ m_sp_sss_mngr

◆ m_sp_submodule


The documentation for this class was generated from the following file: