12#ifndef __H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__DENSITY_DRIVEN_FLOW_FV_
13#define __H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__DENSITY_DRIVEN_FLOW_FV_
24#include "../density_driven_flow_base.h"
70template<
typename TDomain>
101 template<
typename TElem,
typename CGeom,
typename PGeom>
104 template<
typename TElem,
typename CGeom,
typename PGeom>
107 template<
typename TElem,
typename CGeom,
typename PGeom>
110 template<
typename TElem,
typename CGeom,
typename PGeom>
113 template<
typename TElem,
typename CGeom,
typename PGeom>
116 template<
typename TElem,
typename CGeom,
typename PGeom>
119 template<
typename TElem,
typename CGeom,
typename PGeom>
122 template<
typename TElem,
typename CGeom,
typename PGeom>
130 static const size_t _C_ = 0;
133 static const size_t _P_ = 1;
177 template<
typename TElem,
typename CGeom,
typename PGeom>
190 template<
typename TElem,
typename CGeom,
typename PGeom>
200 std::vector<std::vector<number> > vvvDeriv[]);
203 template<
typename TElem,
typename CGeom,
typename PGeom>
216 template<
typename TElem,
typename CGeom,
typename PGeom>
238 virtual void prepare_setting(
const std::vector<LFEID>& vLfeID,
bool bNonRegularGrid);
252 template<
typename TElem,
typename CGeom,
typename PGeom>
void register_func();
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
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
SmartPtr< DataExport< MathVector< dim >, dim > > m_exBrineGrad
Export for the gradient of brine mass fraction.
Definition density_driven_flow_base.h:239
bool m_BoussinesqTransport
flag if using boussinesq transport
Definition density_driven_flow_base.h:185
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
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
Finite Volume Element Discretization for Density Driven Flow.
Definition density_driven_flow_fv.h:73
static const size_t _P_
abbreviation for local function: pressure
Definition density_driven_flow_fv.h:133
void prep_elem_loop(const ReferenceObjectID roid, const int si)
Definition density_driven_flow_fv.cpp:619
virtual bool use_hanging() const
returns if hanging nodes are needed
Definition density_driven_flow_fv.cpp:111
virtual void set_porosity(SmartPtr< CplUserData< number, dim > > user)
Definition density_driven_flow_fv.cpp:123
void register_all_funcs(const LFEID &vLfeID, const LFEID &pLfeID)
virtual void set_density(SmartPtr< CplUserData< number, dim > > data)
Definition density_driven_flow_fv.cpp:174
DataImport< number, dim > m_imBrine_cscvf
Data import for brine mass fraction at scvf ips.
Definition density_driven_flow_fv.h:137
DataImport< MathVector< dim >, dim > m_imDarcyVel_cscvf
Data import for Darcy Velocity.
Definition density_driven_flow_fv.h:172
void add_def_M_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
Definition density_driven_flow_fv.cpp:1021
virtual void set_dispersion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > data)
Definition density_driven_flow_fv.cpp:200
void ex_brine_grad(MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
computes the value of the gradient of the brine mass fraction
Definition density_driven_flow_fv.cpp:441
DataImport< number, dim > m_imDensity_pscvf
Definition density_driven_flow_fv.h:169
DataImport< MathVector< dim >, dim > m_imPressureGrad_pscvf
Definition density_driven_flow_fv.h:142
void add_jac_M_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
Definition density_driven_flow_fv.cpp:962
DataImport< MathMatrix< dim, dim >, dim > m_imMolDiffusion_cscvf
Data import for molecular diffusion tensor.
Definition density_driven_flow_fv.h:158
virtual void set_viscosity(SmartPtr< CplUserData< number, dim > > user)
Definition density_driven_flow_fv.cpp:164
static const int dim
World dimension.
Definition density_driven_flow_fv.h:83
DataImport< number, dim > m_imViscosity_pscvf
Definition density_driven_flow_fv.h:163
DataImport< number, dim > m_imPorosity_pscvf
Definition density_driven_flow_fv.h:148
DataImport< MathVector< dim >, dim > m_imPressureGrad_cscvf
Data import for pressure gradient at scvf ips.
Definition density_driven_flow_fv.h:141
DataImport< number, dim > m_imDensity_pscv
Definition density_driven_flow_fv.h:167
void ex_pressure_grad(MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
computes the value of the gradient of the pressure
Definition density_driven_flow_fv.cpp:530
DataImport< number, dim > m_imPorosity_cscv
Data import for the reaction term.
Definition density_driven_flow_fv.h:145
DensityDrivenFlowBase< TDomain > base_type
Base class type.
Definition density_driven_flow_fv.h:76
DataImport< number, dim > m_imDensity_cscvf
Definition density_driven_flow_fv.h:168
void prep_elem(const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const MathVector< dim > vCornerCoords[])
Definition density_driven_flow_fv.cpp:706
void register_func()
Definition density_driven_flow_fv.cpp:1113
LFEID m_p_lfeID
Definition density_driven_flow_fv.h:246
virtual void set_gravity(SmartPtr< CplUserData< MathVector< dim >, dim > > user)
Definition density_driven_flow_fv.cpp:135
void fsh_elem_loop()
Definition density_driven_flow_fv.cpp:700
DataImport< number, dim > m_imPorosity_pscv
Definition density_driven_flow_fv.h:146
LFEID m_c_lfeID
current shape function set
Definition density_driven_flow_fv.h:245
DataImport< MathMatrix< dim, dim >, dim > m_imPermeability_pscvf
Definition density_driven_flow_fv.h:155
DataImport< MathVector< dim >, dim > m_imConstGravity
Data import for gravity (must be constant in current implementation)
Definition density_driven_flow_fv.h:151
void add_jac_A_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
Definition density_driven_flow_fv.cpp:757
void ex_darcy_std(MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
computes the darcy velocity using consistent gravity
Definition density_driven_flow_fv.cpp:214
void ex_brine(number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< CGeom::dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
computes the value of the brine mass fraction
Definition density_driven_flow_fv.cpp:343
DataImport< MathMatrix< dim, dim >, dim > m_imMolDiffusion_pscvf
Definition density_driven_flow_fv.h:159
DensityDrivenFlowFV< TDomain > this_type
own type
Definition density_driven_flow_fv.h:79
virtual void set_permeability(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
Definition density_driven_flow_fv.cpp:154
virtual void set_molecular_diffusion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
Definition density_driven_flow_fv.cpp:144
DataImport< number, dim > m_imViscosity_cscvf
Data import for viscosity.
Definition density_driven_flow_fv.h:162
void add_def_A_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[])
Definition density_driven_flow_fv.cpp:891
DataImport< MathMatrix< dim, dim >, dim > m_imPermeability_cscvf
Data import for permeability tensor.
Definition density_driven_flow_fv.h:154
DataImport< MathVector< dim >, dim > m_imDarcyVel_pscvf
Definition density_driven_flow_fv.h:173
DataImport< number, dim > m_imDensity_cscv
Data import for density.
Definition density_driven_flow_fv.h:166
DataImport< number, dim > m_imPorosity_cscvf
Definition density_driven_flow_fv.h:147
void add_rhs_elem(LocalVector &d, GridObject *elem, const MathVector< dim > vCornerCoords[])
Definition density_driven_flow_fv.cpp:1065
static const size_t _C_
abbreviation for local function: brine mass fraction
Definition density_driven_flow_fv.h:130
MathVector< dim > m_Gravity
constant Gravity, read in once
Definition density_driven_flow_fv.h:127
virtual void prepare_setting(const std::vector< LFEID > &vLfeID, bool bNonRegularGrid)
type of trial space for each function used
Definition density_driven_flow_fv.cpp:88
DataImport< MathVector< dim >, dim > m_imBrineGrad_cscvf
Definition density_driven_flow_fv.h:138