|
Plugins
|
Orchestrates the mass exchange between a 1D river and a 3D subsurface. More...
#include <add_river_sss.h>
Public Types | |
| typedef TGrid::template EdgeAttachmentAccessor< ANumber > | accessor_type |
| typedef TSSSManager::line_sss_type | line_sss_type |
| typedef TGridFunction::element_type | TElem |
| typedef TDomain::grid_type | TGrid |
| typedef GridFunction< TDomain, TAlgebra > | TGridFunction |
| typedef RiverSingularSourcesAndSinks< dim > | TSSSManager |
Public Member Functions | |
| void | evaluate_exchange_flux (SmartPtr< TGridFunction > u) |
| Computes the mass-conservative exchange flux [m^2/s] integrated over each river edge. | |
| SmartPtr< CplUserData< number, dim > > | get_qex () |
| void | init_line_sss () |
| Creates line SSS objects in the 3D domain for all 1D river edges. Must be called once before the simulation starts. | |
| void | push_sss_manager (SmartPtr< TSSSManager > ssmngr) |
| RiverSSSManager ()=default | |
| RiverSSSManager (SmartPtr< TGridFunction > riverU, SmartPtr< TGridFunction > ssU) | |
| Constructor. | |
| void | set_bottom_permeability (number perm) |
| void | set_bottom_thickness (number thickness) |
| void | set_density (SmartPtr< CplUserData< number, dim > > density) |
| void | set_river_width (number width) |
| void | update_line_sss (number dt) |
| Updates SSS intensities with current 1D river levels. | |
Static Public Attributes | |
| static const int | dim = TDomain::dim |
Private Member Functions | |
| void | cache_interface_elements (SmartPtr< TGridFunction > u) |
| Identifies all 3D cells that contain at least one river segment. | |
| MathVector< dim > | vAcc (Vertex *v) const |
Private Attributes | |
| accessor_type | m_aaExchangeFlux |
| ANumber | m_aExchangeFlux |
| number | m_bottom_thickness = 1.0 |
| number | m_density = 998.2 |
| number | m_gravity = 9.81 |
| std::vector< TElem * > | m_interface_elements |
| number | m_perm = 1e-10 |
| SmartPtr< CplUserData< number, dim > > | m_spDensity |
| SmartPtr< CplUserData< number, dim > > | m_spExfiltrationFlux |
| SmartPtr< GlobalGridFunctionNumberData< TGridFunction > > | m_spGlobEval |
| SmartPtr< TGridFunction > | m_spRiverU |
| SmartPtr< TGridFunction > | m_spSubsurfaceU |
| std::vector< number > | m_vflux |
| number | m_viscosity = 1e-3 |
| std::vector< SmartPtr< line_sss_type > > | m_vspLineSSS |
| std::vector< SmartPtr< TSSSManager > > | m_vspSSSManager |
| number | m_width = 1.0 |
Orchestrates the mass exchange between a 1D river and a 3D subsurface.
| TDomain | The 3D domain type. |
| TAlgebra | The algebra type. |
| typedef TGrid::template EdgeAttachmentAccessor<ANumber> ug::d3f::RiverSSSManager< TDomain, TAlgebra >::accessor_type |
| typedef TSSSManager::line_sss_type ug::d3f::RiverSSSManager< TDomain, TAlgebra >::line_sss_type |
| typedef TGridFunction::element_type ug::d3f::RiverSSSManager< TDomain, TAlgebra >::TElem |
| typedef TDomain::grid_type ug::d3f::RiverSSSManager< TDomain, TAlgebra >::TGrid |
| typedef GridFunction<TDomain, TAlgebra> ug::d3f::RiverSSSManager< TDomain, TAlgebra >::TGridFunction |
| typedef RiverSingularSourcesAndSinks<dim> ug::d3f::RiverSSSManager< TDomain, TAlgebra >::TSSSManager |
|
default |
|
inline |
Constructor.
| riverU | The 1D river grid function (Area, Velocity). |
| ssU | The 3D subsurface grid function (Pressure). |
References grid(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_aaExchangeFlux, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_aExchangeFlux, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_spExfiltrationFlux, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_spGlobEval, and make_sp().
|
inlineprivate |
Identifies all 3D cells that contain at least one river segment.
References ug::CollectCornerCoordinates(), SmartPtr< typename T, template< class TT > class FreePolicy >::get(), get(), grid(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_interface_elements, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_vspSSSManager, ug::DimFV1Geometry< int TDim, int TWorldDim >::num_scv(), ug::DimFV1Geometry< int TDim, int TWorldDim >::scv(), and ug::DimFV1Geometry< int TDim, int TWorldDim >::update().
Referenced by ug::d3f::RiverSSSManager< TDomain, TAlgebra >::evaluate_exchange_flux().
|
inline |
Computes the mass-conservative exchange flux [m^2/s] integrated over each river edge.
| u | The implicitly converged 3D subsurface grid function (pressure). |
References pcl::ProcessCommunicator::allreduce(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::cache_interface_elements(), ug::CollectCornerCoordinates(), ug::DoFRef(), SmartPtr< typename T, template< class TT > class FreePolicy >::get(), get(), grid(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_aaExchangeFlux, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_bottom_thickness, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_interface_elements, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_spRiverU, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_vflux, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_viscosity, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_vspSSSManager, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_width, ug::DimFV1Geometry< int TDim, int TWorldDim >::num_scv(), pcl::NumProcs(), PCL_RO_SUM, ug::DimFV1Geometry< int TDim, int TWorldDim >::scv(), ug::DimFV1Geometry< int TDim, int TWorldDim >::update(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::vAcc(), ug::VecDistance(), and ug::EdgeVertices::vertex().
|
inline |
|
inline |
Creates line SSS objects in the 3D domain for all 1D river edges. Must be called once before the simulation starts.
References ug::d3f::RiverSSSManager< TDomain, TAlgebra >::dim, ug::DoFRef(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_aaExchangeFlux, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_bottom_thickness, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_density, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_gravity, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_perm, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_spGlobEval, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_spRiverU, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_vspLineSSS, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_vspSSSManager, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_width, make_sp(), SPNULL, UG_LOG, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::vAcc(), and ug::EdgeVertices::vertex().
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
Updates SSS intensities with current 1D river levels.
References ug::d3f::RiverSSSManager< TDomain, TAlgebra >::dim, ug::DoFRef(), ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_bottom_thickness, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_density, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_gravity, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_perm, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_spRiverU, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_vspLineSSS, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::m_width, ug::d3f::RiverSSSManager< TDomain, TAlgebra >::vAcc(), and ug::EdgeVertices::vertex().
|
inlineprivate |
|
static |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
Referenced by ug::d3f::RiverSSSManager< TDomain, TAlgebra >::set_density().
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |