34 #ifndef __H__UG__LIB_DISC__CONVECTION_DIFFUSION__CONVECTION_DIFFUSION_FRACT_FV1__
35 #define __H__UG__LIB_DISC__CONVECTION_DIFFUSION__CONVECTION_DIFFUSION_FRACT_FV1__
42 #include "../convection_diffusion_base.h"
43 #include "../convection_diffusion_sss.h"
46 namespace ConvectionDiffusionPlugin{
60 template<
typename TDomain>
98 static const size_t _C_ = 0;
213 virtual void prepare_setting(
const std::vector<LFEID>& vLfeID,
bool bNonRegularGrid);
221 template <
typename TElem>
225 template <
typename TElem>
229 template <
typename TElem>
233 template <
typename TElem>
237 template <
typename TElem>
241 template <
typename TElem>
245 template <
typename TElem>
249 template <
typename TElem>
253 template <
typename TElem>
257 template <
typename TElem>
263 template <
typename TElem>
265 std::vector<std::vector<number> > vvvLinDef[],
269 template <
typename TElem>
275 template <
typename TElem>
277 std::vector<std::vector<number> > vvvLinDef[],
281 template <
typename TElem>
287 template <
typename TElem>
289 std::vector<std::vector<number> > vvvLinDef[],
293 template <
typename TElem>
295 std::vector<std::vector<number> > vvvLinDef[],
299 template <
typename TElem>
301 std::vector<std::vector<number> > vvvLinDef[],
305 template <
typename TElem>
307 std::vector<std::vector<number> > vvvLinDef[],
311 template <
typename TElem>
317 template <
typename TElem>
319 std::vector<std::vector<number> > vvvLinDef[],
323 template <
typename TElem>
325 std::vector<std::vector<number> > vvvLinDef[],
329 template <
typename TElem>
331 std::vector<std::vector<number> > vvvLinDef[],
336 template <
typename TElem>
339 template <
typename TElem>
342 template <
typename TElem>
345 template <
typename TElem>
348 template <
typename TElem>
351 template <
typename TElem>
354 template <
typename TElem>
357 template <
typename TElem>
360 template <
typename TElem>
363 template <
typename TElem>
Definition: convection_diffusion_sss.h:194
Discretization for the Convection-Diffusion Equation.
Definition: convection_diffusion_base.h:79
DataImport< number, dim > m_imReactionRate
Data import for the reaction term.
Definition: convection_diffusion_base.h:246
DataImport< number, dim > m_imSource
Data import for the right-hand side (volume)
Definition: convection_diffusion_base.h:261
DataImport< number, dim > m_imReactionExpl
Data import for the reaction term explicit.
Definition: convection_diffusion_base.h:255
DataImport< number, dim > m_imSourceExpl
Data import for the source term explicit.
Definition: convection_diffusion_base.h:258
DataImport< number, dim > m_imMass
Data import for the mass scale.
Definition: convection_diffusion_base.h:270
DataImport< MathVector< dim >, dim > m_imVectorSource
Data import for the right-hand side (vector)
Definition: convection_diffusion_base.h:264
SmartPtr< DataExport< number, dim > > m_exValue
Export for the concentration.
Definition: convection_diffusion_base.h:288
DataImport< MathVector< dim >, dim > m_imFlux
Data import for the Flux.
Definition: convection_diffusion_base.h:243
DataImport< MathMatrix< dim, dim >, dim > m_imDiffusion
Data import for Diffusion.
Definition: convection_diffusion_base.h:237
DataImport< MathVector< dim >, dim > m_imVelocity
Data import for the Velocity field.
Definition: convection_diffusion_base.h:240
DataImport< number, dim > m_imMassScale
Data import for the mass scale.
Definition: convection_diffusion_base.h:267
DataImport< number, dim > m_imReaction
Data import for the reaction term.
Definition: convection_diffusion_base.h:249
SmartPtr< DataExport< MathVector< dim >, dim > > m_exGrad
Export for the gradient of concentration.
Definition: convection_diffusion_base.h:291
DataImport< number, dim > m_imReactionRateExpl
Data import for the reaction_rate term explicit.
Definition: convection_diffusion_base.h:252
static const int dim
World dimension.
Definition: convection_diffusion_base.h:86
Discretization for the Convection-Diffusion Equation in fractures.
Definition: convection_diffusion_fractfv1.h:62
void set_ortho_velocity(number val)
Definition: convection_diffusion_fractfv1.h:147
void fract_bulk_add_def_A_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: convection_diffusion_fractfv1.cpp:706
static const size_t maxFractSideCorners
max. number of corners of non-degenerated sides
Definition: convection_diffusion_fractfv1.h:95
void set_aperture(number val)
Definition: convection_diffusion_fractfv1.h:128
void lin_def_flux(const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the fracture flux
Definition: convection_diffusion_fractfv1.cpp:1141
void lin_def_vector_source(const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t to the vector source term
Definition: convection_diffusion_fractfv1.cpp:1296
void fract_add_rhs_elem(LocalVector &b, TElem *elem, const position_type vCornerCoords[])
computes the right-hand side due to the sources on a fracture element
Definition: convection_diffusion_fractfv1.cpp:907
base_type::position_type position_type
position type
Definition: convection_diffusion_fractfv1.h:75
virtual void prepare_setting(const std::vector< LFEID > &vLfeID, bool bNonRegularGrid)
check the grid and the type of trial space for each function used
Definition: convection_diffusion_fractfv1.cpp:75
const conv_shape_type & get_updated_conv_shapes(bool computeDeriv)
returns the updated convection shapes
Definition: convection_diffusion_fractfv1.cpp:102
void register_all_funcs()
registers the interface function
Definition: convection_diffusion_fractfv1.cpp:1441
base_type::domain_type domain_type
domain type
Definition: convection_diffusion_fractfv1.h:72
size_t m_innerSideCo[maxFractSideCorners]
inner side corner idx -> elem. corner idx
Definition: convection_diffusion_fractfv1.h:416
TFractFVGeom * m_pFractGeo
FV geometry object of fracture elements.
Definition: convection_diffusion_fractfv1.h:410
IConvectionShapes< dim > conv_shape_type
convection shapes type (for the upwind)
Definition: convection_diffusion_fractfv1.h:101
void add_jac_M_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
assembles the local mass matrix using a finite volume scheme
Definition: convection_diffusion_fractfv1.cpp:485
DataImport< number, dim > m_imOrthoFlux
flux through the fracture-bulk interface
Definition: convection_diffusion_fractfv1.h:393
side_type * m_outerFractSide
outer side of the fracture element
Definition: convection_diffusion_fractfv1.h:413
SmartPtr< CDSingularSourcesAndSinks< dim > > m_sss_mngr
Definition: convection_diffusion_fractfv1.h:399
void lin_def_source(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t to the source term
Definition: convection_diffusion_fractfv1.cpp:1264
void lin_def_ortho_flux(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the orthogonal flux
Definition: convection_diffusion_fractfv1.cpp:1169
size_t m_assCo[2 *maxFractSideCorners]
correspondence of the corners of the sides
Definition: convection_diffusion_fractfv1.h:418
DataImport< number, dim > m_imOrthoVelocity
convection velocity through the fracture-bulk interface
Definition: convection_diffusion_fractfv1.h:392
void set_ortho_diffusion(number val)
Definition: convection_diffusion_fractfv1.h:166
void lin_def_reaction_rate(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the reaction
Definition: convection_diffusion_fractfv1.cpp:1232
void fract_add_def_A_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: convection_diffusion_fractfv1.cpp:553
size_t m_outerSideCo[maxFractSideCorners]
outer side corner idx -> elem. corner idx
Definition: convection_diffusion_fractfv1.h:417
void add_sss_jac_elem(LocalMatrix &J, const LocalVector &u, TElem *pElem, size_t co, number flux)
assembles a singular source or sink in the jacobian
Definition: convection_diffusion_fractfv1.cpp:297
void register_func()
registers the interface function for one element type
Definition: convection_diffusion_fractfv1.cpp:1406
void lin_def_velocity(const LocalVector &u, std::vector< std::vector< MathVector< dim > > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the fracture velocity
Definition: convection_diffusion_fractfv1.cpp:975
SmartPtr< conv_shape_type > m_spConvShape
method to compute the upwind shapes
Definition: convection_diffusion_fractfv1.h:405
void fract_add_jac_A_elem(LocalMatrix &J, const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
computes the local stiffness matrix on a fracture element
Definition: convection_diffusion_fractfv1.cpp:314
void lin_def_mass(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t to the mass scale term
Definition: convection_diffusion_fractfv1.cpp:1381
void lin_def_diffusion(const LocalVector &u, std::vector< std::vector< MathMatrix< dim, dim > > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the fracture diffusion
Definition: convection_diffusion_fractfv1.cpp:1049
DegeneratedLayerManager< dim > fract_manager_type
fracture manager type
Definition: convection_diffusion_fractfv1.h:84
void set_sss_manager(SmartPtr< CDSingularSourcesAndSinks< dim > > sss_mngr)
set singular sources and sinks
Definition: convection_diffusion_fractfv1.h:182
void lin_def_ortho_velocity(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the orthogonal velocity
Definition: convection_diffusion_fractfv1.cpp:1012
static const int low_dim
Manifold ('low') dimension.
Definition: convection_diffusion_fractfv1.h:81
size_t m_numFractCo
number of corners of the fracture side
Definition: convection_diffusion_fractfv1.h:411
void add_rhs_elem(LocalVector &d, GridObject *elem, const position_type vCornerCoords[])
assembles the local right hand side
Definition: convection_diffusion_fractfv1.cpp:891
DataImport< number, dim > m_imOrthoDiffusion
diffusion through the fracture-bulk interface
Definition: convection_diffusion_fractfv1.h:391
ConvectionDiffusionFractFV1(const char *functions, const char *subsets)
Constructor.
Definition: convection_diffusion_fractfv1.cpp:50
void fract_bulk_add_def_A_expl_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: convection_diffusion_fractfv1.cpp:838
void fract_add_def_A_expl_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: convection_diffusion_fractfv1.cpp:773
void add_sss_def_elem(LocalVector &d, const LocalVector &u, TElem *pElem, size_t co, number flux)
assembles a singular source or sink in the defect
Definition: convection_diffusion_fractfv1.cpp:533
void set_aperture(SmartPtr< CplUserData< number, dim > > user)
Definition: convection_diffusion_fractfv1.h:124
ConvectionDiffusionFractFV1< TDomain > this_type
Own type.
Definition: convection_diffusion_fractfv1.h:64
void lin_def_ortho_diffusion(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the orthogonal diffusion
Definition: convection_diffusion_fractfv1.cpp:1100
size_t m_outerFractSideIdx
index of the outer side in the ref. elem.
Definition: convection_diffusion_fractfv1.h:415
void set_fract_manager(SmartPtr< fract_manager_type > fract_manager)
sets the fracture manager
Definition: convection_diffusion_fractfv1.h:111
void add_def_M_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
assembles the mass part of the local defect
Definition: convection_diffusion_fractfv1.cpp:851
virtual bool use_hanging() const
hanging nodes are not allowed in this discretization
Definition: convection_diffusion_fractfv1.h:188
DataImport< number, dim > m_imOrthoVectorSource
vector through the fracture-bulk interface
Definition: convection_diffusion_fractfv1.h:394
void prep_elem_loop(const ReferenceObjectID roid, const int si)
prepares the loop over all elements
Definition: convection_diffusion_fractfv1.cpp:128
void fract_bulk_add_rhs_elem(LocalVector &b, TElem *elem, const position_type vCornerCoords[])
computes the fracture-bulk interaction terms of the local rhs on a fracture element
Definition: convection_diffusion_fractfv1.cpp:949
DimFV1Geometry< low_dim, dim > TFractFVGeom
FV geometry for the fractures.
Definition: convection_diffusion_fractfv1.h:89
ConvectionDiffusionBase< TDomain > base_type
Base class type.
Definition: convection_diffusion_fractfv1.h:69
static const size_t _C_
abbreviation for local function: brine mass fraction
Definition: convection_diffusion_fractfv1.h:98
DataImport< number, dim > m_imAperture
the fracture width (constant per element)
Definition: convection_diffusion_fractfv1.h:390
void set_ortho_velocity(SmartPtr< CplUserData< number, dim > > user)
Definition: convection_diffusion_fractfv1.h:143
void lin_def_reaction(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t. to the reaction
Definition: convection_diffusion_fractfv1.cpp:1200
fract_manager_type::side_type side_type
type of the sides of elements (als low-dimensional fracture elements)
Definition: convection_diffusion_fractfv1.h:92
void set_ortho_diffusion(SmartPtr< CplUserData< number, dim > > user)
Definition: convection_diffusion_fractfv1.h:162
void add_jac_A_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
assembles the local stiffness matrix using a finite volume scheme
Definition: convection_diffusion_fractfv1.cpp:280
void lin_def_mass_scale(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t to the mass scale term
Definition: convection_diffusion_fractfv1.cpp:1355
side_type * m_innerFractSide
inner side of the fracture element
Definition: convection_diffusion_fractfv1.h:412
void add_def_A_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
assembles the stiffness part of the local defect
Definition: convection_diffusion_fractfv1.cpp:516
void add_def_A_expl_elem(LocalVector &d, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
assembles the stiffness part of the local defect explicit reaction, reaction_rate and source
Definition: convection_diffusion_fractfv1.cpp:756
void fract_bulk_add_jac_A_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: convection_diffusion_fractfv1.cpp:435
void fsh_elem_loop()
finishes the loop over all elements
Definition: convection_diffusion_fractfv1.cpp:163
SmartPtr< CDSingularSourcesAndSinks< dim > > sss_manager()
get singular sources and sinks
Definition: convection_diffusion_fractfv1.h:185
static const int dim
World ('full') dimension.
Definition: convection_diffusion_fractfv1.h:78
void set_upwind(SmartPtr< conv_shape_type > shapes)
set the upwind method along the fracture
Definition: convection_diffusion_fractfv1.h:120
SmartPtr< fract_manager_type > m_spFractManager
degenerated fracture manager (may be SPNULL)
Definition: convection_diffusion_fractfv1.h:404
void lin_def_ortho_vector_source(const LocalVector &u, std::vector< std::vector< number > > vvvLinDef[], const size_t nip)
computes the linearized defect w.r.t to the vector source term
Definition: convection_diffusion_fractfv1.cpp:1324
size_t m_innerFractSideIdx
index of the inner side in the ref. elem.
Definition: convection_diffusion_fractfv1.h:414
void prep_elem(const LocalVector &u, GridObject *elem, const ReferenceObjectID roid, const position_type vCornerCoords[])
prepares the element for assembling
Definition: convection_diffusion_fractfv1.cpp:169
void set_data(SmartPtr< CplUserData< number, dim > > spData)
static const size_t maxLayerSideCorners
grid_dim_traits< dim >::side_type side_type
TDomain::position_type position_type
SmartPtr< T, FreePolicy > make_sp(T *inst)
auxiliary class for registering functions
Definition: convection_diffusion_fractfv1.h:197
this_type * m_pThis
Definition: convection_diffusion_fractfv1.h:198
void operator()(TElem &)
Definition: convection_diffusion_fractfv1.h:202
RegisterLocalDiscr(this_type *pThis)
Definition: convection_diffusion_fractfv1.h:200