Plugins
Loading...
Searching...
No Matches
fract_thf_fv1.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: Dmitry Logashenko, Sabine Stichel
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/*
14 * fract_thf_fv1.h - discretization of the thermohaline flow in porous media
15 * with fractures.
16 *
17 * Based on the modules by A. Vogel.
18 */
19
20#ifndef __H__UG__LIB_DISC__THERMOHALINE_FLOW__FRACT_THF_FV1_
21#define __H__UG__LIB_DISC__THERMOHALINE_FLOW__FRACT_THF_FV1_
22
23// other ug4 modules
24#include "common/common.h"
25#include "lib_grid/lg_base.h"
27
32#ifdef UG_FOR_LUA
34#endif
35
38
39// d3f headers
40#include "../extravol.h"
41#include "../d3f_sss.h"
42
43namespace ug{
44namespace d3f{
45
48
50
63template <typename TDomain>
65 : public IElemDisc<TDomain>
66{
67private:
70
73
76
79
81 static const int dim = base_type::dim;
82
84 static const int low_dim = dim - 1;
85
88
91
94
97
100
102 static const size_t _C_ = 0;
103
105 static const size_t _P_ = 1;
106
108 static const size_t _T_ = 2;
109
110public:
111
114 (
115 const char* functions,
116 const char* subsets
117 );
119 (
120 const std::vector<std::string>& vFct,
121 const std::vector<std::string>& vSubset
122 );
123 void init();
124
125//---- Settings: ----
126public:
127
130 {
131 m_spFractManager = fract_manager;
132 }
133
136
138 void set_boussinesq_flow (bool bUse) {m_BoussinesqFlow = bUse;}
139
141 void set_boussinesq_energy (bool bUse) {m_BoussinesqEnergy = bUse;}
142
144
147 {
148 m_spUpwind = upwind;
149 }
150
153 {
154 m_spUpwindEnergy = upwind;
155 }
156
159 {
160 // remove old data
162 if (oldData.valid())
163 {
164 m_exFractDarcyVel->remove_needed_data(oldData);
165 m_exOrthoFractDarcyVel->remove_needed_data(oldData);
166 }
167 oldData = m_imDensityIP.data();
168 if (oldData.valid())
169 {
170 m_exFractDarcyVel->remove_needed_data(oldData);
171 m_exOrthoFractDarcyVel->remove_needed_data(oldData);
172 }
173
174 // connect to import
177 if (m_spVolStabData.valid())
179 else
181
182 // reset the data in the old density
184
185 // darcy velocity depends on density
186 m_exFractDarcyVel->add_needed_data(data);
187 m_exOrthoFractDarcyVel->add_needed_data(data);
188 }
190 {
192 }
194 {
195 // remove old data
197 if (oldData.valid())
198 {
199 m_exFractDarcyVel->remove_needed_data(oldData);
200 m_exOrthoFractDarcyVel->remove_needed_data(oldData);
201 }
202 oldData = m_imViscosityIP.data();
203 if (oldData.valid())
204 {
205 m_exFractDarcyVel->remove_needed_data(oldData);
206 m_exOrthoFractDarcyVel->remove_needed_data(oldData);
207 }
208
209 // connect to import
212
213 // darcy velocity depends on viscosity
214 m_exFractDarcyVel->add_needed_data(user);
215 m_exOrthoFractDarcyVel->add_needed_data(user);
216
217 }
219 {
221 }
223 {
224 m_imConstGravity.set_data(user);
225 }
226 void set_gravity(const std::vector<number>& vGravity)
227 {
229 }
230
237 {
239 }
240#ifdef UG_FOR_LUA
241 void set_porosity(const char* fctName)
242 {
244 }
245#endif
246
248
250 {
251 m_imPermeability.set_data(user);
252 }
257#ifdef UG_FOR_LUA
258 void set_permeability(const char* fctName)
259 {
261 }
263 {
265 }
266#endif
267
276#ifdef UG_FOR_LUA
277 void set_molecular_diffusion(const char* fctName)
278 {
280 }
281#endif
282
287
292
293 #ifdef UG_FOR_LUA
294 void set_thermal_conductivity(const char* fctName)
295 {
297 }
298 #endif
299
301 {
303 }
304
306 {
308 }
309
311 {
313 }
314
316 {
318 m_BoussinesqEnergy = true;
319 }
320
322
328 {
330 }
331#ifdef UG_FOR_LUA
332 void set_aperture(const char* fctName)
333 {
335 }
336#endif
337
346#ifdef UG_FOR_LUA
347 void set_fract_permeability(const char* fctName)
348 {
350 }
351#endif
352
361#ifdef UG_FOR_LUA
362 void set_orth_permeability(const char* fctName)
363 {
365 }
366#endif
367
376#ifdef UG_FOR_LUA
377 void set_fract_molecular_diffusion(const char* fctName)
378 {
380 }
381#endif
382
391#ifdef UG_FOR_LUA
392 void set_orth_molecular_diffusion(const char* fctName)
393 {
395 }
396#endif
397
402
407
408 #ifdef UG_FOR_LUA
409 void set_fract_thermal_conductivity(const char* fctName)
410 {
412 }
413 #endif
414
419
424
425 #ifdef UG_FOR_LUA
426 void set_orth_thermal_conductivity(const char* fctName)
427 {
429 }
430 #endif
431
434
437
440 {
441 m_imOldDensityCo.set_data (volStabData.valid()? m_imDensityCo.user_data() : SPNULL);
442 m_spVolStabData = volStabData;
443 }
444
447
450
453
456
459
460//---- Local discretization interface: ----
461protected:
462
464 virtual void prepare_setting
465 (
466 const std::vector<LFEID> & vLfeID,
467 bool bNonRegular
468 );
469
470//---- Assembling functions: ----
471protected:
472
473 template <typename TElem>
474 void prepare_element_loop(ReferenceObjectID roid, int si);
475
476 template <typename TElem>
477 void prepare_element(const LocalVector& u, GridObject* elem, ReferenceObjectID roid, const position_type vCornerCoords[]);
478
479 template <typename TElem>
480 void finish_element_loop();
481
482 template <typename TElem>
483 void ass_JA_elem(LocalMatrix& J, const LocalVector& u, GridObject* elem, const position_type vCornerCoords[]);
484
485 template <typename TElem>
486 void ass_JM_elem(LocalMatrix& J, const LocalVector& u, GridObject* elem, const position_type vCornerCoords[]);
487
488 template <typename TElem>
489 void ass_dA_elem(LocalVector& d, const LocalVector& u, GridObject* elem, const position_type vCornerCoords[]);
490
491 template <typename TElem>
492 void ass_dM_elem(LocalVector& d, const LocalVector& u, GridObject* elem, const position_type vCornerCoords[]);
493
494 template <typename TElem>
495 void ass_rhs_elem(LocalVector& d, GridObject* elem, const position_type vCornerCoords[]);
496
497 template <typename TElem>
498 void ass_sss_dA_elem(LocalVector& d, const LocalVector& u, TElem* pElem, size_t co, number intensity, number concentration, number temperature, number factor = 1);
499
500 template <typename TElem>
501 void ass_sss_JA_elem(LocalMatrix& J, const LocalVector& u, TElem* pElem, size_t co, number intensity, number concentration, number temperature, number factor = 1);
502
504 {
505 return m_spVolStabData.valid (); // the stabilization requires the old solution
506 }
507
508//---- Assembling functions for bulk medium: ----
509private:
510
511 virtual void prep_assemble_loop();
512
513 template <typename TElem>
514 inline void bulk_prepare_element_loop(ReferenceObjectID roid, int si);
515
516 template <typename TElem>
517 inline void bulk_prepare_element(const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
518
519 template <typename TElem>
520 inline void bulk_ass_JA_elem(LocalMatrix& J, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
521
522 template <typename TElem>
523 inline void bulk_ass_JM_elem(LocalMatrix& J, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
524
525 template <typename TElem>
526 inline void bulk_ass_dA_elem(LocalVector& d, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
527
528 template <typename TElem>
529 inline void bulk_ass_dM_elem(LocalVector& d, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
530
531 template <typename TElem>
532 inline void bulk_ass_rhs_elem(LocalVector& d, TElem* elem, const position_type vCornerCoords[]);
533
534//---- Assembling functions for fractures: ----
535private:
536
537 template <typename TElem>
538 inline void fract_prepare_element_loop(ReferenceObjectID roid, int si);
539
540 template <typename TElem>
541 inline void fract_prepare_element(const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
542
543 template <typename TElem>
544 inline void fract_ass_JA_elem(LocalMatrix& J, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
545
546 template <typename TElem>
547 inline void fract_bulk_ass_JA_elem(LocalMatrix& J, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
548
549 template <typename TElem>
550 inline void fract_ass_JM_elem(LocalMatrix& J, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
551
552 template <typename TElem>
553 inline void fract_ass_dA_elem(LocalVector& d, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
554
555 template <typename TElem>
556 inline void fract_bulk_ass_dA_elem(LocalVector& d, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
557
558 template <typename TElem>
559 inline void fract_ass_dM_elem(LocalVector& d, const LocalVector& u, TElem* elem, const position_type vCornerCoords[]);
560
561 template <typename TElem>
562 inline void fract_ass_rhs_elem(LocalVector& d, TElem* elem, const position_type vCornerCoords[]);
563
564//---- Computation of the Darcy velocity: ----
565protected:
566
567 template<typename TFVGeom, typename TConsGravity>
568 inline void compute_ip_Darcy_velocity
569 (
570 MathVector<dim>& Vel,
571 size_t ip,
572 const TFVGeom& bulk_geo,
573 TConsGravity& ConsGravityMethod,
574 MathVector<TFVGeom::dim> vConsGravity[],
575 number vPressure[],
577 );
578
579 template<typename TFVGeom, typename TConsGravity, size_t maxCorners>
581 (
582 MathVector<dim>& Vel,
583 MathVector<dim> Vel_c[],
584 MathVector<dim> Vel_p[],
585 MathVector<dim> Vel_T[],
586 size_t ip,
587 const TFVGeom& geo,
588 TConsGravity& ConsGravityMethod,
589 MathVector<TFVGeom::dim> vConsGravity_c[][maxCorners],
590 MathVector<TFVGeom::dim> vConsGravity_T[][maxCorners],
591 number vPressure[],
593 number Viscosity_c[],
594 number Viscosity_T[]
595 );
596
597//---- Export parameters: ----
598private:
599 template <typename TElem>
600 void ex_brine
601 (
602 number vValue[],
603 const MathVector<dim> vGlobIP[],
604 number time, int si,
605 const LocalVector& u,
606 GridObject* elem,
607 const MathVector<dim> vCornerCoords[],
608 const MathVector<dim> vLocIP[],
609 const size_t nip,
610 bool bDeriv,
611 std::vector<std::vector<number> > vvvDeriv[]
612 );
613
614 template <typename TElem>
615 void ex_pressure
616 (
617 number vValue[],
618 const MathVector<dim> vGlobIP[],
619 number time, int si,
620 const LocalVector& u,
621 GridObject* elem,
622 const MathVector<dim> vCornerCoords[],
623 const MathVector<dim> vLocIP[],
624 const size_t nip,
625 bool bDeriv,
626 std::vector<std::vector<number> > vvvDeriv[]
627 );
628
629 template <typename TElem>
630 void ex_temperature
631 (
632 number vValue[],
633 const MathVector<dim> vGlobIP[],
634 number time, int si,
635 const LocalVector& u,
636 GridObject* elem,
637 const MathVector<dim> vCornerCoords[],
638 const MathVector<dim> vLocIP[],
639 const size_t nip,
640 bool bDeriv,
641 std::vector<std::vector<number> > vvvDeriv[]
642 );
643
644 template <typename TElem>
645 void ex_darcy_fract
646 (
647 MathVector<dim> vValue[],
648 const MathVector<dim> vGlobIP[],
649 number time, int si,
650 const LocalVector& u,
651 GridObject* elem,
652 const MathVector<dim> vCornerCoords[],
653 const MathVector<dim> vLocIP[],
654 const size_t nip,
655 bool bDeriv,
656 std::vector<std::vector<MathVector<dim> > > vvvDeriv[]
657 );
658
659 template <typename TElem>
661 (
662 number vValue[],
663 const MathVector<dim> vGlobIP[],
664 number time, int si,
665 const LocalVector& u,
666 GridObject* elem,
667 const MathVector<dim> vCornerCoords[],
668 const MathVector<dim> vLocIP[],
669 const size_t nip,
670 bool bDeriv,
671 std::vector<std::vector<number> > vvvDeriv[]
672 );
673
674//---- Registration of the template functions: ----
675private:
676
680 template< typename TElem > void operator() (TElem &)
681 {m_pThis->register_loc_discr_func<TElem> ();}
682 };
683
684 template <typename TElem>
686
687private:
688
689// Global parameters (for all subdomains):
696
697// Specific parameters of subdomains:
699
700// Specific parameters for full-dimensional subdomains:
704
708
711
714
715
716// Specific parameters for low-dimensional subdomains (fractures):
724
727
728// Parameters of the numerical methods of the discretization:
735
738
741
744
747
750
753
758
760
761// Temporary data used in the assembling
763
776};
777
779
780} // namespace d3f
781} // end namespace ug
782
783#include "fract_thf_fv1_impl.h"
784
785#endif /* __H__UG__LIB_DISC__THERMOHALINE_FLOW__FRACT_THF_FV1_ */
786
787/* End of File */
bool valid() const
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
number time() const
TDomain::position_type position_type
static const int dim
Definition extravol.h:27
FV-discretization of the density-driven flow in porous media with fractures.
Definition fract_thf_fv1.h:66
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_thf_fv1_impl.h:2109
void fract_ass_rhs_elem(LocalVector &d, TElem *elem, const position_type vCornerCoords[])
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_thf_fv1_impl.h:670
SmartPtr< IConvectionShapes< dim > > m_spUpwindEnergy
upwind method for the energy equation
Definition fract_thf_fv1.h:734
bool m_isFracture
if the current subset is registered in the fracture manager
Definition fract_thf_fv1.h:762
static const size_t _T_
abbreviation for local function: temperature
Definition fract_thf_fv1.h:108
void set_thermal_conductivity(number val)
Definition fract_thf_fv1.h:288
DataImport< number, dim > m_imViscosityCo
viscosity of the fluid phase (at the corners)
Definition fract_thf_fv1.h:692
void set_gravity(SmartPtr< CplUserData< MathVector< dim >, dim > > user)
Definition fract_thf_fv1.h:222
base_type::position_type position_type
position type
Definition fract_thf_fv1.h:78
SmartPtr< CplUserData< number, dim > > OrthoDarcyVel()
returns the export parameter of the orthogonal Darcy velocity in fracture
Definition fract_thf_fv1.h:458
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_thf_fv1_impl.h:2089
number m_imMassDensitySolid
Data import for mass density of solid-phase.
Definition fract_thf_fv1.h:710
void prepare_element(const LocalVector &u, GridObject *elem, ReferenceObjectID roid, const position_type vCornerCoords[])
prepares a given element for assembling
Definition fract_thf_fv1_impl.h:249
size_t m_numFractCo
number of corners of the fracture side
Definition fract_thf_fv1.h:765
fract_manager_type::side_type side_type
type of the sides of elements (als low-dimensional fracture elements)
Definition fract_thf_fv1.h:96
virtual void prep_assemble_loop()
called once bevore assembling
Definition fract_thf_fv1_impl.h:65
DataImport< MathVector< dim >, dim > m_imConstGravity
gravity (must be constant)
Definition fract_thf_fv1.h:694
void fract_prepare_element(const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
prepares a given fracture element for assembling
Definition fract_thf_fv1_impl.h:311
number m_BoussinesqDensity
Reference Density for the Boussinesq flow case (needed in Energy eq)
Definition fract_thf_fv1.h:713
void set_orth_thermal_conductivity(number val)
Definition fract_thf_fv1.h:420
void set_orth_molecular_diffusion(number val)
Definition fract_thf_fv1.h:387
DegeneratedLayerManager< dim > fract_manager_type
fracture manager type
Definition fract_thf_fv1.h:93
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_thf_fv1_impl.h:841
void set_orth_permeability(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:353
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_thf_fv1_impl.h:2172
DataImport< MathMatrix< dim, dim >, dim > m_imDiffusion
molecular diffusion times tortuosity in the fluid phase (constant per element)
Definition fract_thf_fv1.h:702
DataImport< MathMatrix< dim, dim >, dim > m_imThermalConductivity
thermal (heat) conductivity (constant per element)
Definition fract_thf_fv1.h:703
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_thf_fv1_impl.h:2336
bool m_BoussinesqTransport
whether to use the Boussinesq approximation in the transport eq.
Definition fract_thf_fv1.h:731
void set_heat_capacity_fluid(number data)
Definition fract_thf_fv1.h:305
void register_loc_discr_func()
registers the local assembler functions for a given element
Definition fract_thf_fv1_impl.h:2865
DataImport< number, dim > m_imPorosity
porosity (constant per element)
Definition fract_thf_fv1.h:698
size_t m_assCo[2 *maxFractSideCorners]
correspondence of the corners of the sides
Definition fract_thf_fv1.h:772
void ass_rhs_elem(LocalVector &d, GridObject *elem, const position_type vCornerCoords[])
computes the right-hand side due to the sources
Definition fract_thf_fv1_impl.h:2430
DataImport< number, dim > m_imOrthoDiffusion
molecular diffusion times tortuosity at the fracture-bulk interface (constant per element)
Definition fract_thf_fv1.h:721
void set_orth_molecular_diffusion(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:383
SmartPtr< CplUserData< number, dim > > temperature()
returns the export of temperature
Definition fract_thf_fv1.h:452
void set_fract_molecular_diffusion(number val)
Definition fract_thf_fv1.h:372
DataImport< number, dim > m_imFractPermeability
scalar permeability along the fracture (constant per element)
Definition fract_thf_fv1.h:718
DataImport< number, dim > m_imAperture
the fracture width (constant per element)
Definition fract_thf_fv1.h:717
size_t m_outerFractSideIdx
index of the outer side in the ref. elem.
Definition fract_thf_fv1.h:769
MathVector< dim > m_elem_loc_scvf[TFractFVGeom::maxNumSCVF]
local ip's in a fracture element
Definition fract_thf_fv1.h:775
void bulk_prepare_element_loop(ReferenceObjectID roid, int si)
prepares the loop over the elements: the 'bulk' version
Definition fract_thf_fv1_impl.h:134
void set_molecular_diffusion(number val)
Definition fract_thf_fv1.h:272
size_t m_innerFractSideIdx
index of the inner side in the ref. elem.
Definition fract_thf_fv1.h:768
DataImport< number, dim > m_imDensityIP
density of the fluid phase (at the ip's)
Definition fract_thf_fv1.h:691
void set_fract_molecular_diffusion(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:368
DataImport< number, dim > m_imOldDensityCo
old density of the fluid phase (at the corners)
Definition fract_thf_fv1.h:695
DataImport< number, dim > m_imOrthoThermCond
thermal (heat) conductivity at the fracture-bulk interface (constant per element)
Definition fract_thf_fv1.h:723
void set_porosity(SmartPtr< CplUserData< number, dim > > user)
set Specific parameters of subdomains:
Definition fract_thf_fv1.h:232
void set_boussinesq_density(number den)
Definition fract_thf_fv1.h:315
DataImport< number, dim > m_imOrthoPermeability
scalar permeability at the fracture-bulk interface (constant per element)
Definition fract_thf_fv1.h:719
SmartPtr< DataExport< number, dim > > m_exOrthoFractDarcyVel
Export parameter for the Darcy velocity orthogonal to the fracture.
Definition fract_thf_fv1.h:752
side_type * m_outerFractSide
outer side of the fracture element
Definition fract_thf_fv1.h:767
DataImport< number, dim > m_imFractDiffusion
molecular diffusion times tortuosity along the fracture (constant per element)
Definition fract_thf_fv1.h:720
void ex_temperature(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 temperature (to compute density and viscosity)
Definition fract_thf_fv1_impl.h:2544
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_thf_fv1_impl.h:2252
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_thf_fv1_impl.h:1001
static const size_t _C_
abbreviation for local function: brine mass fraction
Definition fract_thf_fv1.h:102
SmartPtr< CplUserData< number, dim > > brine()
returns the export parameter of brine mass fracture
Definition fract_thf_fv1.h:446
SmartPtr< THSingularSourcesAndSinks< dim > > sss_manager()
get singular sources and sinks
Definition fract_thf_fv1.h:436
void set_density(SmartPtr< CplUserData< number, dim > > data)
set the Global parameters (for all subdomains):
Definition fract_thf_fv1.h:158
void set_molecular_diffusion(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
Definition fract_thf_fv1.h:268
void set_sss_manager(SmartPtr< THSingularSourcesAndSinks< dim > > sss_mngr)
set singular sources and sinks
Definition fract_thf_fv1.h:433
void set_permeability(number val)
Definition fract_thf_fv1.h:253
static const int dim
world ('full') dimension
Definition fract_thf_fv1.h:81
SmartPtr< DataExport< number, dim > > m_exTemperature
Export parameter for the temperature.
Definition fract_thf_fv1.h:746
void set_fract_manager(SmartPtr< fract_manager_type > fract_manager)
sets the fracture manager
Definition fract_thf_fv1.h:129
void set_viscosity(number val)
Definition fract_thf_fv1.h:218
void set_fract_permeability(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:338
void set_boussinesq_flow(bool bUse)
whether to use boussinesq approximation for flow equation
Definition fract_thf_fv1.h:138
void set_heat_capacity_solid(number data)
Definition fract_thf_fv1.h:300
void set_thermal_conductivity(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
Definition fract_thf_fv1.h:283
FractTHF_FV1< TDomain > this_type
own type
Definition fract_thf_fv1.h:72
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_thf_fv1_impl.h:2594
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_thf_fv1_impl.h:2232
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_thf_fv1_impl.h:471
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_thf_fv1_impl.h:446
SmartPtr< DataExport< number, dim > > m_exBrine
Export parameter for the brine mass fraction.
Definition fract_thf_fv1.h:740
void set_gravity(const std::vector< number > &vGravity)
Definition fract_thf_fv1.h:226
static const size_t maxFractSideCorners
max. number of corners of non-degenerated sides
Definition fract_thf_fv1.h:99
SmartPtr< FlowVolStabData< TDomain > > m_spVolStabData
Volume stabilization.
Definition fract_thf_fv1.h:755
void bulk_prepare_element(const LocalVector &u, TElem *elem, const position_type vCornerCoords[])
prepares a given bulk element for assembling
Definition fract_thf_fv1_impl.h:269
MathVector< dim > m_Gravity
the gravity vector
Definition fract_thf_fv1.h:759
IElemDisc< TDomain > base_type
base class type
Definition fract_thf_fv1.h:69
DataImport< MathVector< dim >, dim > m_imFractDarcyVelIP
Data import for Darcy Velocity.
Definition fract_thf_fv1.h:737
bool m_BoussinesqFlow
whether to use the Boussinesq approximation in the flow eq.
Definition fract_thf_fv1.h:730
void init()
Definition fract_thf_fv1_impl.h:2914
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_thf_fv1_impl.h:2495
void set_aperture(number val)
Definition fract_thf_fv1.h:327
void set_volume_stabilization(SmartPtr< FlowVolStabData< TDomain > > volStabData)
set volume stabilization
Definition fract_thf_fv1.h:439
size_t m_innerSideCo[maxFractSideCorners]
inner side corner idx -> elem. corner idx
Definition fract_thf_fv1.h:770
void bulk_ass_rhs_elem(LocalVector &d, TElem *elem, const position_type vCornerCoords[])
void ass_sss_JA_elem(LocalMatrix &J, const LocalVector &u, TElem *pElem, size_t co, number intensity, number concentration, number temperature, number factor=1)
assembles a singular source or sink in the jacobian
Definition fract_thf_fv1_impl.h:2012
void set_boussinesq(bool bUse)
Definition fract_thf_fv1.h:143
base_type::domain_type domain_type
domain type
Definition fract_thf_fv1.h:75
SmartPtr< CplUserData< MathVector< dim >, dim > > DarcyVel()
returns the export parameter of Darcy velocity in fracture
Definition fract_thf_fv1.h:455
size_t m_outerSideCo[maxFractSideCorners]
outer side corner idx -> elem. corner idx
Definition fract_thf_fv1.h:771
side_type * m_innerFractSide
inner side of the fracture element
Definition fract_thf_fv1.h:766
void set_viscosity(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:193
static const int low_dim
manifold ('low') dimension
Definition fract_thf_fv1.h:84
void fract_prepare_element_loop(ReferenceObjectID roid, int si)
prepares the loop over the elements: the 'fracture' version
Definition fract_thf_fv1_impl.h:191
void set_orth_thermal_conductivity(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:415
static const size_t _P_
abbreviation for local function: pressure
Definition fract_thf_fv1.h:105
virtual bool requests_local_time_series()
Definition fract_thf_fv1.h:503
SmartPtr< CplUserData< number, dim > > pressure()
returns the export parameter of the pressure
Definition fract_thf_fv1.h:449
void set_fract_permeability(number val)
Definition fract_thf_fv1.h:342
void set_aperture(SmartPtr< CplUserData< number, dim > > user)
set Specific parameters for low-dimensional subdomains (fractures):
Definition fract_thf_fv1.h:323
void set_fract_thermal_conductivity(number val)
Definition fract_thf_fv1.h:403
number m_orthGravity
projection of the gravity to the outer normal of the fracture element
Definition fract_thf_fv1.h:773
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_thf_fv1_impl.h:2742
TFractFVGeom * m_pFractGeo
FV geometry object of fracture elements.
Definition fract_thf_fv1.h:764
void set_boussinesq_energy(bool bUse)
whether to use boussinesq approximation for flow equation
Definition fract_thf_fv1.h:141
void set_fract_thermal_conductivity(SmartPtr< CplUserData< number, dim > > user)
Definition fract_thf_fv1.h:398
domain_traits< dim >::DimElemList AssembleElemList
list of element types for assembling
Definition fract_thf_fv1.h:90
bool m_bVolStabDataActive
Whether the volume stabilization is active (i.e. m_spVolStabData is not SPNULL and active)
Definition fract_thf_fv1.h:757
void compute_J_ip_Darcy_velocity(MathVector< dim > &Vel, MathVector< dim > Vel_c[], MathVector< dim > Vel_p[], MathVector< dim > Vel_T[], size_t ip, const TFVGeom &geo, TConsGravity &ConsGravityMethod, MathVector< TFVGeom::dim > vConsGravity_c[][maxCorners], MathVector< TFVGeom::dim > vConsGravity_T[][maxCorners], number vPressure[], number Viscosity, number Viscosity_c[], number Viscosity_T[])
computes the derivatives of the Darcy velocity (not scaled with the permeability)
Definition fract_thf_fv1_impl.h:927
void set_permeability(SmartPtr< CplUserData< MathMatrix< dim, dim >, dim > > user)
set Specific parameters for full-dimensional subdomains (bulk medium):
Definition fract_thf_fv1.h:249
void set_orth_permeability(number val)
Definition fract_thf_fv1.h:357
DataImport< MathMatrix< dim, dim >, dim > m_imPermeability
permeability (constant per element)
Definition fract_thf_fv1.h:701
SmartPtr< IConvectionShapes< dim > > m_spUpwind
upwind method for the transport equation
Definition fract_thf_fv1.h:733
void set_boussinesq_transport(bool bUse)
whether to use boussinesq approximation for transport equation
Definition fract_thf_fv1.h:135
void ass_sss_dA_elem(LocalVector &d, const LocalVector &u, TElem *pElem, size_t co, number intensity, number concentration, number temperature, number factor=1)
assembles a singular source or sink in the defect
Definition fract_thf_fv1_impl.h:1965
bool m_BoussinesqEnergy
whether to use the Boussinesq approximation in the energy transport eq.
Definition fract_thf_fv1.h:732
number m_imHeatCapacitySolid
Data import for Heat capacities.
Definition fract_thf_fv1.h:706
void prepare_element_loop(ReferenceObjectID roid, int si)
prepares the loop over the elements: checks whether the parameters are set, ...
Definition fract_thf_fv1_impl.h:83
number m_imHeatCapacityFluid
Definition fract_thf_fv1.h:707
DataImport< number, dim > m_imDensityCo
density of the fluid phase (at the corners)
Definition fract_thf_fv1.h:690
void set_upwind(SmartPtr< IConvectionShapes< dim > > upwind)
sets the upwind for the transport equation
Definition fract_thf_fv1.h:146
SmartPtr< fract_manager_type > m_spFractManager
degenerated fracture manager (may be SPNULL)
Definition fract_thf_fv1.h:729
DataImport< number, dim > m_imViscosityIP
viscosity of the fluid phase (at the ip's)
Definition fract_thf_fv1.h:693
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_thf_fv1_impl.h:2446
void ass_JA_elem(LocalMatrix &J, const LocalVector &u, GridObject *elem, const position_type vCornerCoords[])
computes the local stiffness matrix
Definition fract_thf_fv1_impl.h:978
DimFV1Geometry< low_dim, dim > TFractFVGeom
FV geometry for the fractures.
Definition fract_thf_fv1.h:87
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_thf_fv1_impl.h:418
virtual void prepare_setting(const std::vector< LFEID > &vLfeID, bool bNonRegular)
check type of the grid and the trial space
Definition fract_thf_fv1_impl.h:39
DataImport< number, dim > m_imFractThermCond
thermal (heat) conductivity along the fracture (constant per element)
Definition fract_thf_fv1.h:722
void set_mass_density_solid(number data)
Definition fract_thf_fv1.h:310
MathVector< dim > m_elem_loc_coe
local coordinates of the mass center of a fracture element
Definition fract_thf_fv1.h:774
void set_porosity(number val)
Definition fract_thf_fv1.h:236
void finish_element_loop()
finalizes the loop over the elements
Definition fract_thf_fv1_impl.h:241
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_thf_fv1_impl.h:1372
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_thf_fv1_impl.h:1700
void set_upwind_energy(SmartPtr< IConvectionShapes< dim > > upwind)
sets the upwind for the energy equation
Definition fract_thf_fv1.h:152
SmartPtr< DataExport< MathVector< dim >, dim > > m_exFractDarcyVel
Export parameter for the Darcy velocity in the fracture.
Definition fract_thf_fv1.h:749
SmartPtr< THSingularSourcesAndSinks< dim > > m_sss_mngr
singular sources and sinks manager
Definition fract_thf_fv1.h:726
void set_density(number val)
Definition fract_thf_fv1.h:189
SmartPtr< DataExport< number, dim > > m_exPressure
Export parameter for the pressure.
Definition fract_thf_fv1.h:743
Definition d3f_sss.h:324
function util d3f parse Viscosity(ViscosityDesc, w)
const NullSmartPtr SPNULL
double number
ReferenceObjectID
SmartPtr< T, FreePolicy > make_sp(T *inst)
Definition fract_thf_fv1.h:677
void operator()(TElem &)
Definition fract_thf_fv1.h:680
this_type * m_pThis
Definition fract_thf_fv1.h:679
RegisterLocalDiscr(this_type *pThis)
Definition fract_thf_fv1.h:678