Plugins
Loading...
Searching...
No Matches
st_venant_submodule.h
Go to the documentation of this file.
1
6#ifndef ST_D3F_VENANT_SUBMODULE_H
7#define ST_D3F_VENANT_SUBMODULE_H
8
10#include "../i_coupling_bridge.h"
12
13namespace ug {
14namespace d3f {
15
19template<int dim>
49
59template<typename TGridFunction, int dim = TGridFunction::dim>
60class StVenantSubmodule : public ISubmodule<TGridFunction, dim> {
61public:
62 typedef typename TGridFunction::domain_type domain_type;
64 typedef typename TGridFunction::algebra_type algebra_type;
68
69 StVenantSubmodule() = default;
70 virtual ~StVenantSubmodule() = default;
71
75 void run(number tStart, number tEnd, number dt) override;
76
80 void init(const char* filename);
81
86
90 void set_dirichlet(number A, number v) { params.dirichlet_v = v; params.dirichlet_A = A; }
91 void set_tolerance(number tol) { m_tol = tol; }
92 void interpolate_A(number A) { Interpolate(A, this->m_u, "A"); }
93 void interpolate_v(number v) { Interpolate(v, this->m_u, "v"); }
94 void set_qr(TSPNumberData qr) { params.qr = qr; }
95 void set_width(TSPNumberData b) { params.b = b; }
96 void set_ks(TSPNumberData ks) { params.ks = ks; }
97 void set_diffusion(number d) { params.diffusion = d; }
98
100
104 void set_plot(bool p) { m_plot = p; }
105
110
112
113private:
114 // --- Discretization & Geometry ---
117 // Note: m_u is inherited from ISubmodule
118
121
122 // --- Data & State ---
124 bool m_plot = false;
125 number m_tol = 0.01;
126 int m_step = 0;
127};
128
129} // namespace d3f
130} // namespace ug
131
133
134#endif // ST_D3F_VENANT_SUBMODULE_H
parameterString p
Definition Biogas.lua:1
Abstract base class for independent sub-solvers (e.g., 1D St. Venant).
Definition i_coupling_bridge.h:64
SmartPtr< TGridFunction > m_u
The internal state of the submodule.
Definition i_coupling_bridge.h:78
Factory class to construct and link the coupled St. Venant equations.
Definition st_venant_elem_disc.h:61
Element discretization for the 1D Shallow Water (St. Venant) Equations.
Definition st_venant_elem_disc.h:24
Handles the setup, assembly, and time-integration of the 1D Shallow Water Equations.
Definition st_venant_submodule.h:60
void set_diffusion(number d)
Definition st_venant_submodule.h:97
SmartPtr< CplUserData< number, dim > > TSPNumberData
Definition st_venant_submodule.h:67
number m_tol
Solver tolerance.
Definition st_venant_submodule.h:125
int m_step
Time step counter.
Definition st_venant_submodule.h:126
void set_ks(TSPNumberData ks)
Definition st_venant_submodule.h:96
ApproximationSpace< domain_type > approx_space_type
Definition st_venant_submodule.h:65
void set_tolerance(number tol)
Definition st_venant_submodule.h:91
void set_width(TSPNumberData b)
Definition st_venant_submodule.h:95
TSPNumberData m_qex
Exchange flux.
Definition st_venant_submodule.h:123
StVenantElemDiscFactory< domain_type > factory_type
Definition st_venant_submodule.h:66
void init(const char *filename)
Initializes the grid and approximation space from a UGX file.
Definition st_venant_submodule_impl.h:252
StVenantElemDisc< domain_type > elem_disc_type
Definition st_venant_submodule.h:63
void run(number tStart, number tEnd, number dt) override
Executes the simulation loop from tStart to tEnd.
Definition st_venant_submodule_impl.h:102
void interpolate_v(number v)
Definition st_venant_submodule.h:93
void set_parameters(StVenantParameters< dim > p)
Definition st_venant_submodule.h:99
StVenantParameters< dim > params
Current configuration.
Definition st_venant_submodule.h:111
void set_qr(TSPNumberData qr)
Definition st_venant_submodule.h:94
TGridFunction::algebra_type algebra_type
Definition st_venant_submodule.h:64
SmartPtr< TGridFunction > get_grid_function()
Returns the 1D grid function containing the river state.
Definition st_venant_submodule.h:109
void set_exfiltration_flux(TSPNumberData qex)
Sets the exchange flux from the 3D domain.
Definition st_venant_submodule.h:85
virtual ~StVenantSubmodule()=default
SmartPtr< elem_disc_type > m_elem_disc_A
Definition st_venant_submodule.h:119
bool m_plot
VTK output flag.
Definition st_venant_submodule.h:124
void interpolate_A(number A)
Definition st_venant_submodule.h:92
void set_plot(bool p)
Enables or disables VTK plotting during the run.
Definition st_venant_submodule.h:104
SmartPtr< approx_space_type > m_approx_space
Definition st_venant_submodule.h:116
SmartPtr< domain_type > m_domain
Definition st_venant_submodule.h:115
void set_dirichlet(number A, number v)
Convenience setters for common parameters.
Definition st_venant_submodule.h:90
TGridFunction::domain_type domain_type
Definition st_venant_submodule.h:62
SmartPtr< elem_disc_type > m_elem_disc_v
Definition st_venant_submodule.h:120
double number
void Interpolate(number val, SmartPtr< TGridFunction > spGridFct, const char *cmp)
SmartPtr< T, FreePolicy > make_sp(T *inst)
Configuration parameters for the St. Venant submodule.
Definition st_venant_submodule.h:20
std::string interface_subset
Name of the subset in the 3D domain for exchange.
Definition st_venant_submodule.h:46
std::string river_subset
Name of the subset in the 1D domain.
Definition st_venant_submodule.h:47
number dirichlet_v
Dirichlet value for velocity at inflow/outflow.
Definition st_venant_submodule.h:45
TSPNumberData b
River width [m].
Definition st_venant_submodule.h:39
number diffusion
Numerical diffusion coefficient.
Definition st_venant_submodule.h:41
TSPNumberData qr
Lateral source/sink term [m^2/s].
Definition st_venant_submodule.h:43
StVenantParameters()
Initializes parameters with standard default values.
Definition st_venant_submodule.h:24
number dirichlet_A
Dirichlet value for wetted area at inflow/outflow.
Definition st_venant_submodule.h:44
SmartPtr< CplUserData< number, dim > > TSPNumberData
Definition st_venant_submodule.h:36
TSPNumberData ks
Manning coefficient (roughness)
Definition st_venant_submodule.h:42
number gravity
Acceleration due to gravity [m/s^2].
Definition st_venant_submodule.h:40
SmartPtr< CplUserData< MathVector< dim >, dim > > TSPVectorData
Definition st_venant_submodule.h:37