Plugins
Loading...
Searching...
No Matches
density_driven_flow_base.h
Go to the documentation of this file.
1/*
2 * SPDX-FileCopyrightText: 2025 Gesellschaft fuer Anlagen- und Reaktorsicherheit gGmbH
3 * SPDX-License-Identifier: EUPL-1.2
4 * SPDX-FileContributor: Andreas Vogel
5 * SPDX-FileContributor: Goethe Universität Frankfurt
6 * SPDX-FileType: SOURCE
7 *
8 * This file is part of d3f++.
9 * d3f++ is an extension for UG4. Licensing information and citation requirements of UG4 are provided in LICENSES/UG4-LGPL_2.1
10 */
11
12
13#ifndef __H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__FV1__DENSITY_DRIVEN_FLOW_BASE_
14#define __H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__FV1__DENSITY_DRIVEN_FLOW_BASE_
15
16// other ug4 modules
17#include "common/common.h"
18#include "lib_grid/lg_base.h"
19
20// library intern headers
24
25namespace ug{
26namespace d3f{
27
30
32
69template<typename TDomain>
71 : public IElemDisc<TDomain>
72{
73 private:
76
79
80 public:
82 static const int dim = base_type::dim;
83
84 public:
86 DensityDrivenFlowBase(const char* functions, const char* subsets);
87 DensityDrivenFlowBase(const std::vector<std::string>& vFct, const std::vector<std::string>& vSubset);
88
91
93 void set_boussinesq_flow(bool bUse) {m_BoussinesqFlow = bUse;}
94
96
101 void set_porosity(number val);
102#ifdef UG_FOR_LUA
103 void set_porosity(const char* fctName);
105#endif
107
109
114 void set_gravity(const std::vector<number>& vVel);
115#ifdef UG_FOR_LUA
116 void set_gravity(const char* fctName);
118#endif
120
122
128#ifdef UG_FOR_LUA
129 void set_molecular_diffusion(const char* fctName);
131#endif
133
135
140 void set_permeability(number val);
141#ifdef UG_FOR_LUA
142 void set_permeability(const char* fctName);
144#endif
146
148
153 void set_viscosity(number val);
154#ifdef UG_FOR_LUA
155 void set_viscosity(const char* fctName);
157#endif
159
161
166 void set_density(number val);
167#ifdef UG_FOR_LUA
168 void set_density(const char* fctName);
170#endif
172
175
176 protected:
178 void init(const char* functions);
179
181 virtual bool requests_local_time_series() {return false;}
182
183 protected:
186
189
192
193 public:
196
199
202
205
208
211
214
215 protected:
218 MathVector<dim>& DarcyVel,
219 const MathMatrix<dim, dim>& Permeability,
221 const MathVector<dim>& DensityTimesGravity,
222 const MathVector<dim>& PressureGrad,
223 bool compDeriv = false,
224 MathVector<dim>* DarcyVel_c = NULL,
225 MathVector<dim>* DarcyVel_p = NULL,
226 const MathVector<dim>* DensityTimesGravity_c = NULL,
227 const number* Viscosity_c = NULL,
228 const MathVector<dim>* PressureGrad_p = NULL,
229 size_t numSh = 0);
230
231 protected:
234
237
240
243
246
249
252};
253
255
256} // namespace d3f
257} // end namespace ug
258
259#endif /*__H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__FV1__DENSITY_DRIVEN_FLOW_BASE_*/
static const int dim
Finite Volume Element Discretization for Density Driven Flow.
Definition density_driven_flow_base.h:72
SmartPtr< DataExport< MathVector< dim >, dim > > m_exPressureGrad
Export for the gradient of brine mass fraction.
Definition density_driven_flow_base.h:245
virtual void set_dispersion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)=0
set dispersion
void compute_ip_darcy_velocity_std(MathVector< dim > &DarcyVel, const MathMatrix< dim, dim > &Permeability, number Viscosity, const MathVector< dim > &DensityTimesGravity, const MathVector< dim > &PressureGrad, bool compDeriv=false, MathVector< dim > *DarcyVel_c=NULL, MathVector< dim > *DarcyVel_p=NULL, const MathVector< dim > *DensityTimesGravity_c=NULL, const number *Viscosity_c=NULL, const MathVector< dim > *PressureGrad_p=NULL, size_t numSh=0)
compute darcy velocity at one ip
Definition density_driven_flow_base.cpp:216
void set_boussinesq_transport(bool bUse)
sets usage of boussinesq approximation for transport equation
Definition density_driven_flow_base.h:90
SmartPtr< CplUserData< MathVector< dim >, dim > > pressure_grad()
returns the export of brine mass fracture
Definition density_driven_flow_base.h:207
SmartPtr< DataExport< MathMatrix< dim, dim >, dim > > m_exPressureTensor
Export for the pressure related tensor.
Definition density_driven_flow_base.h:251
SmartPtr< CplUserData< MathVector< dim >, dim > > brine_grad()
returns the export of brine mass fracture
Definition density_driven_flow_base.h:204
IElemDisc< TDomain > base_type
Base class type.
Definition density_driven_flow_base.h:75
virtual void set_density(SmartPtr< CplUserData< number, dim > > data)=0
sets the density
SmartPtr< CplUserData< number, dim > > brine()
returns the export of brine mass fracture
Definition density_driven_flow_base.h:198
virtual bool requests_local_time_series()
returns if local time series is needed
Definition density_driven_flow_base.h:181
virtual void set_molecular_diffusion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)=0
sets the molecular diffusion tensor
virtual void set_gravity(SmartPtr< CplUserData< MathVector< dim >, dim > > user)=0
sets the gravity vector
DensityDrivenFlowBase< TDomain > this_type
own type
Definition density_driven_flow_base.h:78
SmartPtr< DataExport< MathVector< dim >, dim > > m_exBrineGrad
Export for the gradient of brine mass fraction.
Definition density_driven_flow_base.h:239
virtual void set_permeability(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)=0
sets the permeability tensor
SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > brine_tensor()
returns the export of brine tensor
Definition density_driven_flow_base.h:210
bool m_BoussinesqTransport
flag if using boussinesq transport
Definition density_driven_flow_base.h:185
SmartPtr< CplUserData< MathVector< dim >, dim > > darcy_velocity()
returns the export of the darcy velocity
Definition density_driven_flow_base.h:195
void set_boussinesq_flow(bool bUse)
sets usage of boussinesq approximation for flow equation
Definition density_driven_flow_base.h:93
SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > pressure_tensor()
returns the export of brine tensor
Definition density_driven_flow_base.h:213
virtual void set_viscosity(SmartPtr< CplUserData< number, dim > > user)=0
sets the viscosity tensor
SmartPtr< DataExport< MathMatrix< dim, dim >, dim > > m_exBrineTensor
Export for the brine related tensor.
Definition density_driven_flow_base.h:248
void init(const char *functions)
standard initialization
Definition density_driven_flow_base.cpp:192
SmartPtr< CplUserData< number, dim > > pressure()
returns the export of pressure
Definition density_driven_flow_base.h:201
virtual void set_porosity(SmartPtr< CplUserData< number, dim > > user)=0
sets the porosity
SmartPtr< DataExport< number, dim > > m_exPressure
Export for the brine mass fraction.
Definition density_driven_flow_base.h:242
SmartPtr< DataExport< MathVector< dim >, dim > > m_exDarcyVel
Export for the Darcy velocity.
Definition density_driven_flow_base.h:233
SmartPtr< DataExport< number, dim > > m_exBrine
Export for the brine mass fraction.
Definition density_driven_flow_base.h:236
MathVector< dim > m_Gravity
constant Gravity, read in once
Definition density_driven_flow_base.h:191
bool m_BoussinesqFlow
flag if using boussinesq flow
Definition density_driven_flow_base.h:188
static const int dim
World dimension.
Definition density_driven_flow_base.h:82
function util d3f parse Viscosity(ViscosityDesc, w)
double number