19#ifndef __H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__FRACT_DDF_FV1_
20#define __H__UG__LIB_DISC__DENSITY_DRIVEN_FLOW__FRACT_DDF_FV1_
40#include "../../extravol.h"
41#include "../../d3f_sss.h"
63template <
typename TDomain>
102 static const size_t _C_ = 0;
105 static const size_t _P_ = 1;
112 const char* functions,
117 const std::vector<std::string>& vFct,
118 const std::vector<std::string>& vSubset
408 const std::vector<LFEID> & vLfeID,
417 template <
typename TElem>
420 template <
typename TElem>
423 template <
typename TElem>
426 template <
typename TElem>
429 template <
typename TElem>
432 template <
typename TElem>
435 template <
typename TElem>
438 template <
typename TElem>
441 template <
typename TElem>
444 template <
typename TElem>
455 template <
typename TElem>
458 template <
typename TElem>
461 template <
typename TElem>
464 template <
typename TElem>
467 template <
typename TElem>
470 template <
typename TElem>
473 template <
typename TElem>
479 template <
typename TElem>
482 template <
typename TElem>
485 template <
typename TElem>
488 template <
typename TElem>
491 template <
typename TElem>
494 template <
typename TElem>
497 template <
typename TElem>
500 template <
typename TElem>
503 template <
typename TElem>
509 template<
typename TFVGeom,
typename TConsGravity>
514 const TFVGeom& bulk_geo,
515 TConsGravity& ConsGravityMethod,
521 template<
typename TFVGeom,
typename TConsGravity,
size_t maxCorners>
529 TConsGravity& ConsGravityMethod,
538 template <
typename TElem>
550 std::vector<std::vector<number> > vvvDeriv[]
553 template <
typename TElem>
565 std::vector<std::vector<number> > vvvDeriv[]
568 template <
typename TElem>
583 template <
typename TElem>
595 std::vector<std::vector<number> > vvvDeriv[]
608 template <
typename TElem>
void set_data(SmartPtr< CplUserData< TData, dim > > spData)
SmartPtr< ICplUserData< dim > > data()
SmartPtr< CplUserData< TData, dim > > user_data()
static const size_t maxLayerSideCorners
grid_dim_traits< dim >::side_type side_type
static const size_t maxNumSCVF
TDomain::position_type position_type
FV-discretization of the density-driven flow in porous media with fractures.
Definition fract_ddf_fv1.h:66
virtual void prep_assemble_loop()
called once bevore assembling
Definition fract_ddf_fv1_impl.h:64
SmartPtr< IConvectionShapes< dim > > m_spUpwind
upwind method
Definition fract_ddf_fv1.h:642
void set_permeability(number val)
Definition fract_ddf_fv1.h:246
void ex_darcy_ortho_fract(number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
export parameter for the orthogonal Darcy velocity
Definition fract_ddf_fv1_impl.h:2147
static const size_t _P_
abbreviation for local function: pressure
Definition fract_ddf_fv1.h:105
void set_molecular_diffusion(number val)
Definition fract_ddf_fv1.h:265
void fract_ass_JM_elem(LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the mass matrix of a time-dependent problem on a fracture element
Definition fract_ddf_fv1_impl.h:1840
void bulk_ass_dM_elem(LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the mass part of the defect of a time-dependent problem on a bulk element
Definition fract_ddf_fv1_impl.h:1653
SmartPtr< CplUserData< number, dim > > OrthoDarcyVel()
returns the export parameter of the orthogonal Darcy velocity in fracture
Definition fract_ddf_fv1.h:400
void ass_JA_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
computes the local stiffness matrix
Definition fract_ddf_fv1_impl.h:890
virtual void prepare_setting(const std::vector< LFEID > &vLfeID, bool bNonRegular)
check type of the grid and the trial space
Definition fract_ddf_fv1_impl.h:39
DataImport< number, dim > m_imPorosity
porosity (constant per element)
Definition fract_ddf_fv1.h:622
void set_viscosity(SmartPtr< CplUserData< number, dim > > user)
Definition fract_ddf_fv1.h:182
void set_fract_manager(SmartPtr< fract_manager_type > fract_manager)
sets the fracture manager
Definition fract_ddf_fv1.h:126
void bulk_ass_dA_elem(LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the stiffness part of the local defect on a bulk element
Definition fract_ddf_fv1_impl.h:466
DataImport< number, dim > m_imOldDensityCo
old density of the fluid phase (at the corners)
Definition fract_ddf_fv1.h:619
void register_loc_discr_func()
registers the local assembler functions for a given element
Definition fract_ddf_fv1_impl.h:2259
void set_boussinesq(bool bUse)
whether to use boussinesq approximation in both the equations
Definition fract_ddf_fv1.h:138
void ass_dA_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
computes the stiffness part of the local defect
Definition fract_ddf_fv1_impl.h:441
void fract_bulk_ass_JA_elem(LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the local stiffness matrix of the fracture-bulk interaction terms on a fracture element
Definition fract_ddf_fv1_impl.h:1379
void ex_brine(number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
export parameter for the concentration (to compute density and viscosity)
Definition fract_ddf_fv1_impl.h:1920
DataImport< number, dim > m_imDensityCo
density of the fluid phase (at the corners)
Definition fract_ddf_fv1.h:614
MathVector< dim > m_elem_loc_scvf[TFractFVGeom::maxNumSCVF]
local ip's in a fracture element
Definition fract_ddf_fv1.h:681
void bulk_prepare_element(const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
prepares a given bulk element for assembling
Definition fract_ddf_fv1_impl.h:255
void bulk_ass_JA_elem(LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the local stiffness matrix on a bulk element
Definition fract_ddf_fv1_impl.h:913
DataImport< MathVector< dim >, dim > m_imConstGravity
gravity (must be constant)
Definition fract_ddf_fv1.h:618
void set_orthofract_molecular_diffusion(number val)
Definition fract_ddf_fv1.h:362
SmartPtr< DataExport< number, dim > > m_exPressure
Export parameter for the pressure.
Definition fract_ddf_fv1.h:651
SmartPtr< CplUserData< number, dim > > brine()
returns the export parameter of the brine mass fraction
Definition fract_ddf_fv1.h:391
void fract_prepare_element_loop(ReferenceObjectID roid, int si)
prepares the loop over the elements: the 'fracture' version
Definition fract_ddf_fv1_impl.h:183
void bulk_prepare_element_loop(ReferenceObjectID roid, int si)
prepares the loop over the elements: the 'bulk' version
Definition fract_ddf_fv1_impl.h:133
SmartPtr< CplUserData< MathVector< dim >, dim > > DarcyVel()
returns the export parameter of the Darcy velocity in fracture
Definition fract_ddf_fv1.h:397
void set_upwind(SmartPtr< IConvectionShapes< dim > > upwind)
sets the upwind for the transport equation
Definition fract_ddf_fv1.h:141
void bulk_ass_JM_elem(LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the mass matrix of a time-dependent problem on a bulk element
Definition fract_ddf_fv1_impl.h:1772
DataImport< MathMatrix< dim, dim >, dim > m_imDiffusion
molecular diffusion times tortuosity in the fluid phase (constant per element)
Definition fract_ddf_fv1.h:626
size_t m_innerSideCo[maxFractSideCorners]
inner side corner idx -> elem. corner idx
Definition fract_ddf_fv1.h:675
void set_boussinesq_flow(bool bUse)
whether to use boussinesq approximation for flow equation
Definition fract_ddf_fv1.h:135
void compute_ip_Darcy_velocity(MathVector< dim > &Vel, size_t ip, const TFVGeom &bulk_geo, TConsGravity &ConsGravityMethod, MathVector< TFVGeom::dim > vConsGravity[], number vPressure[], number Viscosity)
computes the Darcy velocity (not scaled with the permeability)
Definition fract_ddf_fv1_impl.h:413
SmartPtr< CplUserData< number, dim > > pressure()
returns the export parameter of the pressure
Definition fract_ddf_fv1.h:394
DataImport< MathVector< dim >, dim > m_imFractDarcyVelIP
Data import for Darcy Velocity.
Definition fract_ddf_fv1.h:645
void set_orthofract_molecular_diffusion(SmartPtr< CplUserData< number, dim > > user)
Definition fract_ddf_fv1.h:358
void set_sss_manager(SmartPtr< DDSingularSourcesAndSinks< dim > > sss_mngr)
set singular sources and sinks
Definition fract_ddf_fv1.h:378
static const int dim
world ('full') dimension
Definition fract_ddf_fv1.h:81
void fract_bulk_ass_dA_elem(LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the stiffness fracture-bulk interaction terms of the local defect on a fracture element
Definition fract_ddf_fv1_impl.h:758
void finish_element_loop()
finalizes the loop over the elements
Definition fract_ddf_fv1_impl.h:227
MathVector< dim > m_elem_loc_coe
local coordinates of the mass center of a fracture element
Definition fract_ddf_fv1.h:680
SmartPtr< DataExport< MathVector< dim >, dim > > m_exFractDarcyVel
Export parameter for the Darcy velocity in the fracture.
Definition fract_ddf_fv1.h:654
DataImport< number, dim > m_imViscosityCo
viscosity of the fluid phase (at the corners)
Definition fract_ddf_fv1.h:616
virtual bool requests_local_time_series()
Definition fract_ddf_fv1.h:447
void set_viscosity(number val)
Definition fract_ddf_fv1.h:207
void set_orthofract_permeability(number val)
Definition fract_ddf_fv1.h:324
bool m_isFracture
if the current subset is registered in the fracture manager
Definition fract_ddf_fv1.h:667
void set_molecular_diffusion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
Definition fract_ddf_fv1.h:261
void set_boussinesq_transport(bool bUse)
whether to use boussinesq approximation for transport equation
Definition fract_ddf_fv1.h:132
SmartPtr< DataExport< number, dim > > m_exBrine
Export parameter for the brine mass fraction.
Definition fract_ddf_fv1.h:648
size_t m_outerSideCo[maxFractSideCorners]
outer side corner idx -> elem. corner idx
Definition fract_ddf_fv1.h:676
DataImport< MathMatrix< dim, dim >, dim > m_imPermeability
permeability (constant per element)
Definition fract_ddf_fv1.h:625
size_t m_innerFractSideIdx
index of the inner side in the ref. elem.
Definition fract_ddf_fv1.h:673
side_type * m_innerFractSide
inner side of the fracture element
Definition fract_ddf_fv1.h:671
void fract_ass_JA_elem(LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the local stiffness matrix on a fracture element
Definition fract_ddf_fv1_impl.h:1166
void ass_sss_JA_elem(LocalMatrix &J, const LocalVector &u, TElem *pElem, size_t co, number intensity, number concentration)
assembles a singular source or sink in the jacobian
Definition fract_ddf_fv1_impl.h:1589
void compute_J_ip_Darcy_velocity(MathVector< dim > &Vel, MathVector< dim > Vel_c[], MathVector< dim > Vel_p[], size_t ip, const TFVGeom &geo, TConsGravity &ConsGravityMethod, MathVector< TFVGeom::dim > vConsGravity_c[][maxCorners], number vPressure[], number Viscosity, number Viscosity_c[])
computes the derivatives of the Darcy velocity (not scaled with the permeability)
Definition fract_ddf_fv1_impl.h:852
void set_fract_molecular_diffusion(number val)
Definition fract_ddf_fv1.h:343
void ass_rhs_elem(LocalVector &d, GridObject *elem, const position_type vCornerCoords[])
computes the right-hand side due to the sources
Definition fract_ddf_fv1_impl.h:1903
SmartPtr< DDSingularSourcesAndSinks< dim > > sss_manager()
get singular sources and sinks
Definition fract_ddf_fv1.h:381
void fract_ass_dA_elem(LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the stiffness part of the local defect on a fracture element
Definition fract_ddf_fv1_impl.h:627
static const int low_dim
manifold ('low') dimension
Definition fract_ddf_fv1.h:84
void set_density(number val)
Definition fract_ddf_fv1.h:178
SmartPtr< DataExport< number, dim > > m_exOrthoFractDarcyVel
Export parameter for the Darcy velocity orthogonal to the fracture.
Definition fract_ddf_fv1.h:657
MathVector< dim > m_unitOuterNormal
unit outer normal to the fracture
Definition fract_ddf_fv1.h:679
DegeneratedLayerManager< dim > fract_manager_type
fracture manager type
Definition fract_ddf_fv1.h:93
void set_gravity(const std::vector< number > &vGravity)
Definition fract_ddf_fv1.h:215
void prepare_element_loop(ReferenceObjectID roid, int si)
prepares the loop over the elements: checks whether the parameters are set, ...
Definition fract_ddf_fv1_impl.h:82
void set_fract_permeability(SmartPtr< CplUserData< number, dim > > user)
Definition fract_ddf_fv1.h:301
base_type::position_type position_type
position type
Definition fract_ddf_fv1.h:78
SmartPtr< fract_manager_type > m_spFractManager
degenerated fracture manager (may be SPNULL)
Definition fract_ddf_fv1.h:639
FractDDF_FV1< TDomain > this_type
own type
Definition fract_ddf_fv1.h:72
fract_manager_type::side_type side_type
type of the sides of elements (als low-dimensional fracture elements)
Definition fract_ddf_fv1.h:96
side_type * m_outerFractSide
outer side of the fracture element
Definition fract_ddf_fv1.h:672
void ass_JM_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
computes the mass matrix of a time-dependent problem
Definition fract_ddf_fv1_impl.h:1752
static const size_t _C_
abbreviation for local function: brine mass fraction
Definition fract_ddf_fv1.h:102
number m_orthGravity
projection of the gravity to the outer normal of the fracture element
Definition fract_ddf_fv1.h:678
size_t m_outerFractSideIdx
index of the outer side in the ref. elem.
Definition fract_ddf_fv1.h:674
DimFV1Geometry< low_dim, dim > TFractFVGeom
FV geometry for the fractures.
Definition fract_ddf_fv1.h:87
domain_traits< dim >::DimElemList AssembleElemList
list of element types for assembling
Definition fract_ddf_fv1.h:90
void ex_darcy_fract(MathVector< dim > vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< MathVector< dim > > > vvvDeriv[])
export parameter for the Darcy velocity in the fracture
Definition fract_ddf_fv1_impl.h:2022
DataImport< number, dim > m_imAperture
the fracture width (constant per element)
Definition fract_ddf_fv1.h:629
void ass_dM_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
computes the mass part of the defect of a time-dependent problem
Definition fract_ddf_fv1_impl.h:1633
void set_volume_stabilization(SmartPtr< FlowVolStabData< TDomain > > volStabData)
set volume stabilization
Definition fract_ddf_fv1.h:384
SmartPtr< DDSingularSourcesAndSinks< dim > > m_sss_mngr
singular sources and sinks manager
Definition fract_ddf_fv1.h:636
IElemDisc< TDomain > base_type
base class type
Definition fract_ddf_fv1.h:69
void ex_pressure(number vValue[], const MathVector< dim > vGlobIP[], number time, int si, const LocalVector &u, GridObject *elem, const MathVector< dim > vCornerCoords[], const MathVector< dim > vLocIP[], const size_t nip, bool bDeriv, std::vector< std::vector< number > > vvvDeriv[])
export parameter for the pressure
Definition fract_ddf_fv1_impl.h:1971
bool m_BoussinesqFlow
whether to use the Boussinesq approximation in the flow eq.
Definition fract_ddf_fv1.h:640
MathVector< dim > m_Gravity
the gravity vector
Definition fract_ddf_fv1.h:664
bool m_bVolStabDataActive
Whether the volume stabilization is active (i.e. m_spVolStabData is not SPNULL and active)
Definition fract_ddf_fv1.h:662
void init()
Definition fract_ddf_fv1_impl.h:2307
void fract_ass_rhs_elem(LocalVector &d, TElem *elem, const position_type vCornerCoords[])
void set_orthofract_permeability(SmartPtr< CplUserData< number, dim > > user)
Definition fract_ddf_fv1.h:320
void bulk_ass_rhs_elem(LocalVector &d, TElem *elem, const position_type vCornerCoords[])
bool m_BoussinesqTransport
whether to use the Boussinesq approximation in the transport eq.
Definition fract_ddf_fv1.h:641
base_type::domain_type domain_type
domain type
Definition fract_ddf_fv1.h:75
void fract_prepare_element(const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
prepares a given fracture element for assembling
Definition fract_ddf_fv1_impl.h:294
size_t m_assCo[2 *maxFractSideCorners]
correspondence of the corners of the sides
Definition fract_ddf_fv1.h:677
void fract_ass_dM_elem(LocalVector &d, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the mass part of the defect of a time-dependent problem on a fracture element
Definition fract_ddf_fv1_impl.h:1705
DataImport< number, dim > m_imDensityIP
density of the fluid phase (at the ip's)
Definition fract_ddf_fv1.h:615
DataImport< number, dim > m_imOrthoDiffusion
molecular diffusion times tortuosity at the fracture-bulk interface (constant per element)
Definition fract_ddf_fv1.h:633
DataImport< number, dim > m_imFractDiffusion
molecular diffusion times tortuosity along the fracture (constant per element)
Definition fract_ddf_fv1.h:632
void prepare_element(const LocalVector &u, GridObject *elem, ReferenceObjectID roid, const position_type vCornerCoords[])
prepares a given element for assembling
Definition fract_ddf_fv1_impl.h:235
DataImport< number, dim > m_imOrthoPermeability
scalar permeability at the fracture-bulk interface (constant per element)
Definition fract_ddf_fv1.h:631
static const size_t maxFractSideCorners
max. number of corners of non-degenerated sides
Definition fract_ddf_fv1.h:99
SmartPtr< FlowVolStabData< TDomain > > m_spVolStabData
Volume stabilization.
Definition fract_ddf_fv1.h:660
void ass_sss_dA_elem(LocalVector &d, const LocalVector &u, TElem *pElem, size_t co, number intensity, number concentration)
assembles a singular source or sink in the defect
Definition fract_ddf_fv1_impl.h:1556
DataImport< number, dim > m_imViscosityIP
viscosity of the fluid phase (at the ip's)
Definition fract_ddf_fv1.h:617
void set_aperture(number val)
Definition fract_ddf_fv1.h:286
void set_porosity(SmartPtr< CplUserData< number, dim > > user)
set Specific parameters of subdomains:
Definition fract_ddf_fv1.h:221
void set_fract_permeability(number val)
Definition fract_ddf_fv1.h:305
void set_gravity(SmartPtr< CplUserData< MathVector< dim >, dim > > user)
Definition fract_ddf_fv1.h:211
void set_fract_molecular_diffusion(SmartPtr< CplUserData< number, dim > > user)
Definition fract_ddf_fv1.h:339
TFractFVGeom * m_pFractGeo
FV geometry object of fracture elements.
Definition fract_ddf_fv1.h:669
void set_density(SmartPtr< CplUserData< number, dim > > data)
set the Global parameters (for all subdomains):
Definition fract_ddf_fv1.h:147
DataImport< number, dim > m_imFractPermeability
scalar permeability along the fracture (constant per element)
Definition fract_ddf_fv1.h:630
void set_porosity(number val)
Definition fract_ddf_fv1.h:225
void set_aperture(SmartPtr< CplUserData< number, dim > > user)
set Specific parameters for low-dimensional subdomains (fractures):
Definition fract_ddf_fv1.h:282
void set_permeability(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
set Specific parameters for full-dimensional subdomains (bulk medium):
Definition fract_ddf_fv1.h:242
size_t m_numFractCo
number of corners of the fracture side
Definition fract_ddf_fv1.h:670
function util d3f parse Viscosity(ViscosityDesc, w)
const NullSmartPtr SPNULL
SmartPtr< T, FreePolicy > make_sp(T *inst)
Definition fract_ddf_fv1.h:601
this_type * m_pThis
Definition fract_ddf_fv1.h:603
void operator()(TElem &)
Definition fract_ddf_fv1.h:604
RegisterLocalDiscr(this_type *pThis)
Definition fract_ddf_fv1.h:602