Plugins
Loading...
Searching...
No Matches
ug::d3f::FractDimadapt< TDomain, TAlgebra > Class Template Reference

#include <fract_dimadapt.h>

Public Types

typedef TDomain domain_type
 domain type
 
typedef domain_traits< dim >::grid_base_object element_type
 base grid element object type
 
typedef DegeneratedLayerManager< TDomain::dim > fract_manager_type
 fracture manager type
 
typedef Attachment< signed char > mark_attachment_type
 type of the attachment for the marks and the shift
 
typedef domain_type::position_accessor_type position_accessor_type
 get position accessor
 
typedef Attachment< MathVector< dim > > shift_attachment_type
 
typedef domain_traits< dim >::side_type side_type
 grid element's side base object type
 
typedef domain_type::subset_handler_type subset_handler_type
 subset handler type
 
enum  t_grid_object_mark {
  F_NONE = -1 , F_OUTER = 0 , F_INNER = 1 , F_MID = 2 ,
  F_BND = 3 , F_VERT = 4 , F_CORNER = 5
}
 Marks for the grid (vertices, edges) More...
 
typedef DimFV1Geometry< low_dim, dimTFractFVGeom
 FV geometry for the fractures.
 

Public Member Functions

void add_density (number rho_pw, number rho_pb, const char *density_type)
 Add specifics for the density function.
 
void add_gravity (const std::vector< number > gravity)
 Add parameters.
 
void add_permeability (number perm_f, number perm_m)
 
void add_viscosity (number zero_viscosity, const char *viscosity_type)
 Add specifics for the viscosity function.
 
template<typename TGridFunction >
void check_transfer (TGridFunction &u, DegeneratedLayerManager< TDomain::dim > *fractManager, number omega_theta, number delta, number time)
 Checks if the criterion suggests the change of the grid.
 
void convert_end_quadris_to_triangles (DegeneratedLayerManager< TDomain::dim > *fractManager)
 this function converts degenerated end quadrilaterals to traingles
 
template<typename TGridFunction >
void convert_end_triangles_to_quadris (TGridFunction &u, DegeneratedLayerManager< TDomain::dim > *fractManager)
 
template<typename TGridFunction >
number evaluate_criterion (TGridFunction &u, DegeneratedLayerManager< TDomain::dim > *fractManager, number omega_theta, number time)
 Computes the criterion (Dissertation Stichel Section 7.2.1)
 
 FractDimadapt (SmartPtr< domain_type > domain, const char *ss_name, const std::vector< number > normal, number aperture, bool shift)
 Constructor.
 
template<typename TGridFunction >
void get_ave_val (const std::vector< number > eval_point, TGridFunction &u, number time)
 Computes average over fracture width at given point.
 
void grid_transfer_full_to_low ()
 grid transfer
 
void grid_transfer_low_to_full ()
 grid transfer
 
template<typename TGridFunction >
void transfer_full_to_low (TGridFunction &u)
 transfer of solution
 
template<typename TGridFunction >
void transfer_low_to_full (TGridFunction &u)
 transfer of solution
 
virtual ~FractDimadapt ()
 Destructor.
 

Static Public Attributes

static const int dim = domain_type::dim
 world dimension
 
static const int low_dim = dim - 1
 manifold ('low') dimension
 
static const size_t maxElemCorners = domain_traits<dim>::MaxNumVerticesOfElem
 max. number of corners of the elements
 
static const size_t maxLayerSideCorners = maxElemCorners / 2
 max. number of corners of non-degenerated sides
 

Protected Member Functions

void calculate_interpolation (double bnd[2][2], double mid[2], MathVector< dim > bndpoint[2], number param[2][3])
 Help function for transfer_low_to_full (calculate quadratic behaviour of unknowns in fracture)
 
void density_func (number c, number &rho, number &d_rho)
 Calculates the density and its derivative dependent on mass fraction.
 
int edge_mark (Edge *edge)
 Returs the mark of an edge.
 
void grid_adaption_callback (const GridMessage_Adaption &msg)
 Called when a grid adaption has been performed.
 
void grid_distribution_callback (const GridMessage_Distribution &msg)
 Called when a grid has been distributed between different processes.
 
void mark_vertices ()
 Marks the inner fracture vertices.
 
int vert_mark (Vertex *vrt)
 Returs the mark of a vertex.
 
MathVector< dimvert_shift (Vertex *vrt)
 Returs the shift of the fracture bnd vertex.
 
void viscosity_func (number c, number &mu, number &d_mu)
 Calculates the viscosity and its derivative dependent on mass fraction.
 

Private Attributes

element_typeCornerTriangleList [max_number_levels][4]
 
VertexFractNode [max_number_levels][max_number_fracture_midnodes][max_number_fracture_layers]
 
MultiGrid::AttachmentAccessor< Edge, mark_attachment_typem_aaEdgeAuxMarks
 
MultiGrid::AttachmentAccessor< Vertex, mark_attachment_typem_aaVertAuxMarks
 Attachment accessor.
 
MultiGrid::AttachmentAccessor< Vertex, shift_attachment_typem_aaVertexShift
 
mark_attachment_type m_aEdgeAuxMarks
 
number m_aperture
 
mark_attachment_type m_aVertexAuxMarks
 
shift_attachment_type m_aVertexShift
 Attachment keeping the fracture width even for low-dim fracture.
 
const char * m_density_type
 
SmartPtr< domain_typem_dom
 
int m_FirstFullLevel
 
MathVector< dimm_fractNormal
 Parameters.
 
SubsetGroup m_fractSsGrp
 Subset group of the fractures.
 
int m_FractureIsFullDimensional
 
MathVector< dimm_Gravity
 
int m_NumberLevels
 
number m_permeability_f
 
number m_permeability_m
 
SmartPtr< position_accessor_typem_posAcc
 PositionAccessor.
 
number m_rho_pb
 
number m_rho_pw
 
bool m_shift
 Shift nodes (if true: low-dimensional fracture has width 0 - nodes need to be shifted)
 
MessageHub::SPCallbackId m_spGridAdaptionCallbackID
 
MessageHub::SPCallbackId m_spGridDistributionCallbackID
 
SmartPtr< subset_handler_typem_spSH
 Subset handler to use.
 
const char * m_viscosity_type
 
number m_zero_viscosity
 
int NumberFractNodes [max_number_levels]
 Fracture Node List.
 
int NumberFractVertNodes [max_number_levels][max_number_fracture_midnodes]
 

Static Private Attributes

static const size_t max_number_fracture_layers = 100
 
static const size_t max_number_fracture_midnodes = 10000
 
static const size_t max_number_levels = 100
 Help for decalaration.
 

Member Typedef Documentation

◆ domain_type

template<typename TDomain , typename TAlgebra >
typedef TDomain ug::d3f::FractDimadapt< TDomain, TAlgebra >::domain_type

domain type

◆ element_type

template<typename TDomain , typename TAlgebra >
typedef domain_traits<dim>::grid_base_object ug::d3f::FractDimadapt< TDomain, TAlgebra >::element_type

base grid element object type

◆ fract_manager_type

template<typename TDomain , typename TAlgebra >
typedef DegeneratedLayerManager<TDomain::dim> ug::d3f::FractDimadapt< TDomain, TAlgebra >::fract_manager_type

fracture manager type

◆ mark_attachment_type

template<typename TDomain , typename TAlgebra >
typedef Attachment<signed char> ug::d3f::FractDimadapt< TDomain, TAlgebra >::mark_attachment_type

type of the attachment for the marks and the shift

◆ position_accessor_type

template<typename TDomain , typename TAlgebra >
typedef domain_type::position_accessor_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::position_accessor_type

get position accessor

◆ shift_attachment_type

template<typename TDomain , typename TAlgebra >
typedef Attachment<MathVector<dim> > ug::d3f::FractDimadapt< TDomain, TAlgebra >::shift_attachment_type

◆ side_type

template<typename TDomain , typename TAlgebra >
typedef domain_traits<dim>::side_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::side_type

grid element's side base object type

◆ subset_handler_type

template<typename TDomain , typename TAlgebra >
typedef domain_type::subset_handler_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::subset_handler_type

subset handler type

◆ TFractFVGeom

template<typename TDomain , typename TAlgebra >
typedef DimFV1Geometry<low_dim, dim> ug::d3f::FractDimadapt< TDomain, TAlgebra >::TFractFVGeom

FV geometry for the fractures.

Member Enumeration Documentation

◆ t_grid_object_mark

template<typename TDomain , typename TAlgebra >
enum ug::d3f::FractDimadapt::t_grid_object_mark

Marks for the grid (vertices, edges)

Enumerator
F_NONE 
F_OUTER 
F_INNER 
F_MID 
F_BND 
F_VERT 
F_CORNER 

Constructor & Destructor Documentation

◆ FractDimadapt()

template<typename TDomain , typename TAlgebra >
ug::d3f::FractDimadapt< TDomain, TAlgebra >::FractDimadapt ( SmartPtr< domain_type domain,
const char *  ss_name,
const std::vector< number normal,
number  aperture,
bool  shift 
)

Constructor.

Class constructor: Parses the subset names, attaches itself to the grid to be updated if the grid is refined, and writes itself to the properties of the subsets. Be shure to start with a full-dim fracture. Updates and all methods work for both full and low

Parameters
[in]domaindomain of the problem
[in]ss_namesubset name of the fracture
[in]normalnormals to the fracture
[in]apertureaperture of the fracture
[in]shiftshift nodes

References SmartPtr< typename T, template< class TT > class FreePolicy >::invalid(), ug::Grid::message_hub(), and UG_THROW.

◆ ~FractDimadapt()

template<typename TDomain , typename TAlgebra >
ug::d3f::FractDimadapt< TDomain, TAlgebra >::~FractDimadapt ( )
virtual

Destructor.

Class destructor: Detaches the attachment.

Member Function Documentation

◆ add_density()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_density ( number  rho_pw,
number  rho_pb,
const char *  density_type 
)
inline

◆ add_gravity()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_gravity ( const std::vector< number gravity)
inline

◆ add_permeability()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_permeability ( number  perm_f,
number  perm_m 
)
inline

◆ add_viscosity()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_viscosity ( number  zero_viscosity,
const char *  viscosity_type 
)
inline

◆ calculate_interpolation()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::calculate_interpolation ( double  bnd[2][2],
double  mid[2],
MathVector< dim bndpoint[2],
number  param[2][3] 
)
protected

Help function for transfer_low_to_full (calculate quadratic behaviour of unknowns in fracture)

Help function for transfer_low_to_full (calculate quadratic behaviour of unknowns in fracture) calculates the extrapolation inside the fracture boundary values bnd and mean mid are known a quadratic behaviour is assumed. cf. Dissertation Stichel (Section 5.2.3)

References p, ug::VecLength(), and ug::VecSubtract().

◆ check_transfer()

template<typename TDomain , typename TAlgebra >
template<typename TGridFunction >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::check_transfer ( TGridFunction &  u,
DegeneratedLayerManager< TDomain::dim > *  fractManager,
number  omega_theta,
number  delta,
number  time 
)

Checks if the criterion suggests the change of the grid.

Checks if the criterion suggests the change of the grid

References ug::DegeneratedLayerManager< int dim >::add(), ug::DegeneratedLayerManager< int dim >::close(), ug::DegeneratedLayerManager< int dim >::contains(), ug::DegeneratedLayerManager< int dim >::remove(), and UG_LOG.

◆ convert_end_quadris_to_triangles()

◆ convert_end_triangles_to_quadris()

◆ density_func()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::density_func ( number  c,
number rho,
number d_rho 
)
protected

Calculates the density and its derivative dependent on mass fraction.

Calculates the density dependent on mass fraction

Parameters
[in]c
[out]rho
[out]d_rho

References UG_COND_THROW, and UG_THROW.

◆ edge_mark()

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::edge_mark ( Edge edge)
inlineprotected

Returs the mark of an edge.

References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaEdgeAuxMarks.

◆ evaluate_criterion()

◆ get_ave_val()

template<typename TDomain , typename TAlgebra >
template<typename TGridFunction >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::get_ave_val ( const std::vector< number pnt,
TGridFunction &  u,
number  time 
)

Computes average over fracture width at given point.

Computes average over fracture width at given point

position accessor

Parameters
[in]pntevaluation point
[in]ugrid function
[in]timetime

References ug::DoFRef(), UG_LOG, UG_THROW, ug::VecDistance(), and ug::VecSubtract().

◆ grid_adaption_callback()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::grid_adaption_callback ( const GridMessage_Adaption msg)
protected

Called when a grid adaption has been performed.

The grid adaption callback: Catches the messages about grid refinements, ...

Parameters
msgthe message from the message hub

References ug::GridMessage_Adaption::adaption_ends().

◆ grid_distribution_callback()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::grid_distribution_callback ( const GridMessage_Distribution msg)
protected

Called when a grid has been distributed between different processes.

The grid adaption callback: Catches the messages about the distribution of the grid

Parameters
msgthe message from the message hub

References ug::GMDT_DISTRIBUTION_STOPS, and ug::GridMessage_Distribution::msg().

◆ grid_transfer_full_to_low()

◆ grid_transfer_low_to_full()

◆ mark_vertices()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::mark_vertices ( )
protected

◆ transfer_full_to_low()

template<typename TDomain , typename TAlgebra >
template<typename TGridFunction >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::transfer_full_to_low ( TGridFunction &  u)

transfer of solution

Transfer of solution (from full-dim. fracture to low-dim fracture) This has to be done before grid_transfer_full_to_low otherwise all full-dim fracture information will be lost

Parameters
[in]ugrid function

References ug::DoFRef(), and UG_LOG.

◆ transfer_low_to_full()

template<typename TDomain , typename TAlgebra >
template<typename TGridFunction >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::transfer_low_to_full ( TGridFunction &  u)

transfer of solution

Transfer of solution (from low-dim. fracture to full-dim fracture) this has to be done after grid_transfer_low_to_full otherwise not all nodes in the grid have correct solution

position accessor

Parameters
[in]ugrid function

References ug::DoFRef(), UG_LOG, ug::VecLength(), and ug::VecSubtract().

◆ vert_mark()

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::vert_mark ( Vertex vrt)
inlineprotected

Returs the mark of a vertex.

References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaVertAuxMarks.

◆ vert_shift()

template<typename TDomain , typename TAlgebra >
MathVector< dim > ug::d3f::FractDimadapt< TDomain, TAlgebra >::vert_shift ( Vertex vrt)
inlineprotected

Returs the shift of the fracture bnd vertex.

References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaVertexShift.

◆ viscosity_func()

template<typename TDomain , typename TAlgebra >
void ug::d3f::FractDimadapt< TDomain, TAlgebra >::viscosity_func ( number  c,
number mu,
number d_mu 
)
protected

Calculates the viscosity and its derivative dependent on mass fraction.

Calculates the viscosity dependent on mass fraction

Parameters
[in]c
[out]mu
[out]d_mu

References UG_COND_THROW, and UG_THROW.

Member Data Documentation

◆ CornerTriangleList

template<typename TDomain , typename TAlgebra >
element_type* ug::d3f::FractDimadapt< TDomain, TAlgebra >::CornerTriangleList[max_number_levels][4]
private

◆ dim

template<typename TDomain , typename TAlgebra >
const int ug::d3f::FractDimadapt< TDomain, TAlgebra >::dim = domain_type::dim
static

◆ FractNode

template<typename TDomain , typename TAlgebra >
Vertex* ug::d3f::FractDimadapt< TDomain, TAlgebra >::FractNode[max_number_levels][max_number_fracture_midnodes][max_number_fracture_layers]
private

◆ low_dim

template<typename TDomain , typename TAlgebra >
const int ug::d3f::FractDimadapt< TDomain, TAlgebra >::low_dim = dim - 1
static

manifold ('low') dimension

◆ m_aaEdgeAuxMarks

template<typename TDomain , typename TAlgebra >
MultiGrid::AttachmentAccessor<Edge, mark_attachment_type> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaEdgeAuxMarks
private

◆ m_aaVertAuxMarks

template<typename TDomain , typename TAlgebra >
MultiGrid::AttachmentAccessor<Vertex, mark_attachment_type> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaVertAuxMarks
private

◆ m_aaVertexShift

template<typename TDomain , typename TAlgebra >
MultiGrid::AttachmentAccessor<Vertex, shift_attachment_type> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaVertexShift
private

◆ m_aEdgeAuxMarks

template<typename TDomain , typename TAlgebra >
mark_attachment_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aEdgeAuxMarks
private

◆ m_aperture

template<typename TDomain , typename TAlgebra >
number ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aperture
private

◆ m_aVertexAuxMarks

template<typename TDomain , typename TAlgebra >
mark_attachment_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aVertexAuxMarks
private

Attachment keeping the grid object marks for the vertices and sides to mark kind of fracture node (mid, bnd etc)

◆ m_aVertexShift

template<typename TDomain , typename TAlgebra >
shift_attachment_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aVertexShift
private

Attachment keeping the fracture width even for low-dim fracture.

◆ m_density_type

template<typename TDomain , typename TAlgebra >
const char* ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_density_type
private

◆ m_dom

template<typename TDomain , typename TAlgebra >
SmartPtr<domain_type> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_dom
private

◆ m_FirstFullLevel

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_FirstFullLevel
private

◆ m_fractNormal

template<typename TDomain , typename TAlgebra >
MathVector<dim> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_fractNormal
private

Parameters.

◆ m_fractSsGrp

template<typename TDomain , typename TAlgebra >
SubsetGroup ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_fractSsGrp
private

Subset group of the fractures.

◆ m_FractureIsFullDimensional

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_FractureIsFullDimensional
private

◆ m_Gravity

template<typename TDomain , typename TAlgebra >
MathVector<dim> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_Gravity
private

◆ m_NumberLevels

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_NumberLevels
private

◆ m_permeability_f

template<typename TDomain , typename TAlgebra >
number ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_permeability_f
private

◆ m_permeability_m

template<typename TDomain , typename TAlgebra >
number ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_permeability_m
private

◆ m_posAcc

template<typename TDomain , typename TAlgebra >
SmartPtr<position_accessor_type> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_posAcc
private

PositionAccessor.

◆ m_rho_pb

template<typename TDomain , typename TAlgebra >
number ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_rho_pb
private

◆ m_rho_pw

template<typename TDomain , typename TAlgebra >
number ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_rho_pw
private

◆ m_shift

template<typename TDomain , typename TAlgebra >
bool ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_shift
private

Shift nodes (if true: low-dimensional fracture has width 0 - nodes need to be shifted)

◆ m_spGridAdaptionCallbackID

template<typename TDomain , typename TAlgebra >
MessageHub::SPCallbackId ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_spGridAdaptionCallbackID
private

◆ m_spGridDistributionCallbackID

template<typename TDomain , typename TAlgebra >
MessageHub::SPCallbackId ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_spGridDistributionCallbackID
private

◆ m_spSH

template<typename TDomain , typename TAlgebra >
SmartPtr<subset_handler_type> ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_spSH
private

Subset handler to use.

◆ m_viscosity_type

template<typename TDomain , typename TAlgebra >
const char* ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_viscosity_type
private

◆ m_zero_viscosity

template<typename TDomain , typename TAlgebra >
number ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_zero_viscosity
private

◆ max_number_fracture_layers

template<typename TDomain , typename TAlgebra >
const size_t ug::d3f::FractDimadapt< TDomain, TAlgebra >::max_number_fracture_layers = 100
staticprivate

◆ max_number_fracture_midnodes

template<typename TDomain , typename TAlgebra >
const size_t ug::d3f::FractDimadapt< TDomain, TAlgebra >::max_number_fracture_midnodes = 10000
staticprivate

◆ max_number_levels

template<typename TDomain , typename TAlgebra >
const size_t ug::d3f::FractDimadapt< TDomain, TAlgebra >::max_number_levels = 100
staticprivate

Help for decalaration.

◆ maxElemCorners

template<typename TDomain , typename TAlgebra >
const size_t ug::d3f::FractDimadapt< TDomain, TAlgebra >::maxElemCorners = domain_traits<dim>::MaxNumVerticesOfElem
static

max. number of corners of the elements

◆ maxLayerSideCorners

template<typename TDomain , typename TAlgebra >
const size_t ug::d3f::FractDimadapt< TDomain, TAlgebra >::maxLayerSideCorners = maxElemCorners / 2
static

max. number of corners of non-degenerated sides

◆ NumberFractNodes

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::NumberFractNodes[max_number_levels]
private

Fracture Node List.

◆ NumberFractVertNodes

template<typename TDomain , typename TAlgebra >
int ug::d3f::FractDimadapt< TDomain, TAlgebra >::NumberFractVertNodes[max_number_levels][max_number_fracture_midnodes]
private

The documentation for this class was generated from the following files: