|
Plugins
|
#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, dim > | TFractFVGeom |
| 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< dim > | vert_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. | |
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. | |
| typedef TDomain ug::d3f::FractDimadapt< TDomain, TAlgebra >::domain_type |
domain type
| typedef domain_traits<dim>::grid_base_object ug::d3f::FractDimadapt< TDomain, TAlgebra >::element_type |
base grid element object type
| typedef DegeneratedLayerManager<TDomain::dim> ug::d3f::FractDimadapt< TDomain, TAlgebra >::fract_manager_type |
fracture manager type
| typedef Attachment<signed char> ug::d3f::FractDimadapt< TDomain, TAlgebra >::mark_attachment_type |
type of the attachment for the marks and the shift
| typedef domain_type::position_accessor_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::position_accessor_type |
get position accessor
| typedef Attachment<MathVector<dim> > ug::d3f::FractDimadapt< TDomain, TAlgebra >::shift_attachment_type |
| typedef domain_traits<dim>::side_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::side_type |
grid element's side base object type
| typedef domain_type::subset_handler_type ug::d3f::FractDimadapt< TDomain, TAlgebra >::subset_handler_type |
subset handler type
| typedef DimFV1Geometry<low_dim, dim> ug::d3f::FractDimadapt< TDomain, TAlgebra >::TFractFVGeom |
FV geometry for the fractures.
| enum ug::d3f::FractDimadapt::t_grid_object_mark |
| 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
| [in] | domain | domain of the problem |
| [in] | ss_name | subset name of the fracture |
| [in] | normal | normals to the fracture |
| [in] | aperture | aperture of the fracture |
| [in] | shift | shift nodes |
References SmartPtr< typename T, template< class TT > class FreePolicy >::invalid(), ug::Grid::message_hub(), and UG_THROW.
|
virtual |
Destructor.
Class destructor: Detaches the attachment.
|
inline |
Add specifics for the density function.
References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_density_type, ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_rho_pb, and ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_rho_pw.
|
inline |
Add parameters.
References ug::d3f::FractDimadapt< TDomain, TAlgebra >::dim, and ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_Gravity.
|
inline |
|
inline |
Add specifics for the viscosity function.
References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_viscosity_type, and ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_zero_viscosity.
|
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().
| 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.
| void ug::d3f::FractDimadapt< TDomain, TAlgebra >::convert_end_quadris_to_triangles | ( | DegeneratedLayerManager< TDomain::dim > * | fractManager | ) |
this function converts degenerated end quadrilaterals to traingles
full-dim fractures may end with triangles low-dim fractures end with quadrilaterals where 3 points are on one line this function converts these end quadrilaterals to triangles
References ug::Grid::AttachmentAccessor< class TElem, class TAttachment >::access(), ug::MultiGrid::associate_parent(), ug::Grid::associated_elements_sorted(), ug::DegeneratedLayerManager< int dim >::close(), ug::MultiGrid::create(), ug::MultiGrid::enable_hierarchical_insertion(), ug::Grid::erase(), ug::MultiGrid::get_child_edge(), ug::MultiGrid::get_child_face(), ug::MultiGrid::get_child_vertex(), ug::MultiGrid::get_parent(), ug::GetAssociatedFaces(), ug::GMAT_HNODE_ADAPTION_BEGINS, ug::GMAT_HNODE_ADAPTION_ENDS, ug::Grid::message_hub(), ug::MultiGrid::num_child_edges(), ug::MultiGrid::num_child_faces(), ug::MultiGrid::num_child_vertices(), ug::FaceVertices::num_vertices(), ug::PointerConstArray< class TPtr >::size(), UG_LOG, UG_THROW, ug::EdgeVertices::vertex(), and ug::FaceVertices::vertex().
| void ug::d3f::FractDimadapt< TDomain, TAlgebra >::convert_end_triangles_to_quadris | ( | TGridFunction & | u, |
| DegeneratedLayerManager< TDomain::dim > * | fractManager | ||
| ) |
full-dim fractures may end with triangles low-dim fractures end with quadrilaterals where 3 points are on one line this function converts end triangles to these quadrilaterals
| [in] | u | grid function |
References ug::Grid::AttachmentAccessor< class TElem, class TAttachment >::access(), ug::MultiGrid::associate_parent(), ug::Grid::associated_elements_sorted(), ug::DegeneratedLayerManager< int dim >::close(), ug::MultiGrid::create(), ug::DoFRef(), ug::MultiGrid::enable_hierarchical_insertion(), ug::Grid::erase(), ug::MultiGrid::get_child_edge(), ug::MultiGrid::get_child_face(), ug::MultiGrid::get_child_vertex(), ug::MultiGrid::get_parent(), ug::GetAssociatedFaces(), ug::GMAT_HNODE_ADAPTION_BEGINS, ug::GMAT_HNODE_ADAPTION_ENDS, ug::Grid::message_hub(), ug::MultiGrid::num_child_edges(), ug::MultiGrid::num_child_faces(), ug::MultiGrid::num_child_vertices(), ug::FaceVertices::num_vertices(), p, resize(), s, ug::PointerConstArray< class TPtr >::size(), UG_LOG, UG_THROW, ug::EdgeVertices::vertex(), and ug::FaceVertices::vertex().
|
protected |
Calculates the density and its derivative dependent on mass fraction.
Calculates the density dependent on mass fraction
| [in] | c | |
| [out] | rho | |
| [out] | d_rho |
References UG_COND_THROW, and UG_THROW.
|
inlineprotected |
Returs the mark of an edge.
References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaEdgeAuxMarks.
| number ug::d3f::FractDimadapt< TDomain, TAlgebra >::evaluate_criterion | ( | TGridFunction & | u, |
| DegeneratedLayerManager< TDomain::dim > * | fractManager, | ||
| number | omega_theta, | ||
| number | time | ||
| ) |
Computes the criterion (Dissertation Stichel Section 7.2.1)
Computes the criterion (Dissertation Stichel Section 7.2.1)
iterator
position accessor
References ug::DegeneratedLayerManager< int dim >::contains(), ug::DimFV1Geometry< int TDim, int TWorldDim >::corners(), ug::DoFRef(), ug::GeomProvider< typename TGeom >::get(), ug::DegeneratedLayerManager< int dim >::get_layer_sides(), ug::DimFV1Geometry::SCVF::global_grad(), ug::DegeneratedLayerManager< int dim >::is_closed(), ug::DimFV1Geometry::SCVF::JTInv(), ug::LFEID::LAGRANGE, ug::DimFV1Geometry::SCVF::local_grad_vector(), ug::DimFV1Geometry::SCVF::local_ip(), ug::DimFV1Geometry< int TDim, int TWorldDim >::num_scvf(), ug::DimFV1Geometry< int TDim, int TWorldDim >::num_sh(), ug::DimFV1Geometry::SCVF::num_sh(), ug::DimFV1Geometry< int TDim, int TWorldDim >::scvf(), ug::DimFV1Geometry::SCVF::shape(), UG_CATCH_THROW, UG_LOG, UG_THROW, ug::DimFV1Geometry< int TDim, int TWorldDim >::update(), ug::VecLength(), ug::VecScale(), ug::VecScaleAppend(), ug::VecSet(), and ug::vorticity().
| 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
| [in] | pnt | evaluation point |
| [in] | u | grid function |
| [in] | time | time |
References ug::DoFRef(), UG_LOG, UG_THROW, ug::VecDistance(), and ug::VecSubtract().
|
protected |
Called when a grid adaption has been performed.
The grid adaption callback: Catches the messages about grid refinements, ...
| msg | the message from the message hub |
References ug::GridMessage_Adaption::adaption_ends().
|
protected |
Called when a grid has been distributed between different processes.
The grid adaption callback: Catches the messages about the distribution of the grid
| msg | the message from the message hub |
References ug::GMDT_DISTRIBUTION_STOPS, and ug::GridMessage_Distribution::msg().
| void ug::d3f::FractDimadapt< TDomain, TAlgebra >::grid_transfer_full_to_low | ( | ) |
grid transfer
Grid transfer
References ug::Grid::AttachmentAccessor< class TElem, class TAttachment >::access(), ug::Grid::associated_elements_sorted(), ug::MultiGrid::create(), ug::Grid::erase(), ug::MultiGrid::get_child_vertex(), ug::GMAT_HNODE_ADAPTION_BEGINS, ug::GMAT_HNODE_ADAPTION_ENDS, ug::Grid::message_hub(), ug::MultiGrid::num_child_vertices(), ug::PointerConstArray< class TPtr >::size(), UG_LOG, UG_THROW, ug::VecAdd(), and ug::EdgeVertices::vertex().
| void ug::d3f::FractDimadapt< TDomain, TAlgebra >::grid_transfer_low_to_full | ( | ) |
grid transfer
Grid transfer
References ug::Grid::AttachmentAccessor< class TElem, class TAttachment >::access(), ug::Grid::associated_elements_sorted(), ug::CalculateCenter(), ug::MultiGrid::create(), ug::Grid::erase(), ug::MultiGrid::get_child_vertex(), ug::GMAT_HNODE_ADAPTION_BEGINS, ug::GMAT_HNODE_ADAPTION_ENDS, ug::Grid::message_hub(), ug::MultiGrid::num_child_vertices(), ug::PointerConstArray< class TPtr >::size(), UG_LOG, UG_THROW, ug::VecSubtract(), and ug::EdgeVertices::vertex().
|
protected |
Marks the inner fracture vertices.
Marks the vertices
position accessor
References ug::Grid::associated_elements_sorted(), ug::DimensionOfSubset(), ug::GridObject::is_constrained(), ug::MultiGrid::num_levels(), ug::EdgeVertices::num_vertices(), ug::PointerConstArray< class TPtr >::size(), UG_LOG, UG_THROW, ug::VecDot(), ug::VecLength(), ug::VecSubtract(), and ug::EdgeVertices::vertex().
| 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
| [in] | u | grid function |
References ug::DoFRef(), and UG_LOG.
| 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
| [in] | u | grid function |
References ug::DoFRef(), UG_LOG, ug::VecLength(), and ug::VecSubtract().
|
inlineprotected |
Returs the mark of a vertex.
References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaVertAuxMarks.
|
inlineprotected |
Returs the shift of the fracture bnd vertex.
References ug::d3f::FractDimadapt< TDomain, TAlgebra >::m_aaVertexShift.
|
protected |
Calculates the viscosity and its derivative dependent on mass fraction.
Calculates the viscosity dependent on mass fraction
| [in] | c | |
| [out] | mu | |
| [out] | d_mu |
References UG_COND_THROW, and UG_THROW.
|
private |
|
static |
world dimension
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_gravity().
|
private |
|
static |
manifold ('low') dimension
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::edge_mark().
|
private |
Attachment accessor.
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::vert_mark().
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::vert_shift().
|
private |
|
private |
|
private |
Attachment keeping the grid object marks for the vertices and sides to mark kind of fracture node (mid, bnd etc)
|
private |
Attachment keeping the fracture width even for low-dim fracture.
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_density().
|
private |
|
private |
|
private |
Parameters.
|
private |
Subset group of the fractures.
|
private |
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_gravity().
|
private |
|
private |
|
private |
|
private |
PositionAccessor.
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_density().
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_density().
|
private |
Shift nodes (if true: low-dimensional fracture has width 0 - nodes need to be shifted)
|
private |
|
private |
|
private |
Subset handler to use.
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_viscosity().
|
private |
Referenced by ug::d3f::FractDimadapt< TDomain, TAlgebra >::add_viscosity().
|
staticprivate |
|
staticprivate |
|
staticprivate |
Help for decalaration.
|
static |
max. number of corners of the elements
|
static |
max. number of corners of non-degenerated sides
|
private |
Fracture Node List.
|
private |