|
Plugins
|
#include <level_set_pos.h>
Classes | |
| struct | elem_intersect_data |
| a structure to get the intersection points of an element More... | |
Public Types | |
| typedef TGridFunction::algebra_type | algebra_type |
| algebra type | |
| typedef TGridFunction::domain_type | domain_type |
| domain type | |
| typedef TGridFunction::element_type | elem_type |
| generic element type | |
| typedef TGridFunction | grid_func_type |
| grid function type | |
Public Member Functions | |
| void | get_height (const MathVector< dim-1 > &xy, std::vector< number > &z, number small_z=1e-12) |
| get the z-coordinates | |
| bool | get_height_at (const MathVector< dim-1 > &xy, number &height) |
| gets the largest z-coordinate (returns false if no intersections found) | |
| number | height_at_dv (const MathVector< dim-1 > &xy, number default_height) |
| returns the largest z-coordinate or the default value (if no intersections found) | |
| number | level_set_zero () |
| returns the value for the level set (the s.c. "level set zero") | |
| SmartPtr< grid_func_type > | lsf () |
| returns the level-set function | |
| size_t | lsf_fct () |
| returns the component of the grid function | |
| LSPositionZ (SmartPtr< grid_func_type > spLSF) | |
| class constructor for the simplest (and historically standard) case | |
| LSPositionZ (SmartPtr< grid_func_type > spLSF, const char *lsf_cmp_name, number ls_value=0) | |
| class constructor | |
| LSPositionZ (SmartPtr< grid_func_type > spLSF, size_t lsf_fct, number ls_value=0) | |
| the most general class constructor | |
| void | reinit () |
| initialize the object: find the intersected elements and prepare the tree | |
| void | set_transform_tol (number tol, size_t nIter) |
| sets the tolerance for the inverce transformation of the elements (for non-linear transformations) | |
Static Public Attributes | |
| static const int | dim = TGridFunction::dim |
| world dimension | |
| static const size_t | maxNumCorners |
| max. number of the corners of the elements in the domain | |
Private Types | |
| typedef RayElemIntersectionRecord< elem_type * > | intersect_rec_type |
| intersection record type | |
| typedef lg_ntree< dim-1, dim, elem_type > | tree_type |
| quad- or octtree type to search the elements | |
Private Member Functions | |
| void | fill_cut () |
| get the elements cut by the level set | |
| bool | get_intersected (const MathVector< dim-1 > &xy) |
| get the elements intersected by the ray | |
| void | get_z (std::vector< number > &z, number small_z=1e-12) |
| get the point at the level set | |
| int | lsf_sign (size_t noc, number lsf[]) |
| sign of the LSF in the element | |
Static Private Member Functions | |
| static number | lsf_threshold () |
| threshold for the level-set-function | |
Private Attributes | |
| std::vector< intersect_rec_type > | m_intersectionRecords |
| intersection recorder | |
| std::vector< elem_intersect_data > | m_intersections |
| set of the intersections | |
| number | m_level_set_zero |
| value of the level set (standardly 0) | |
| size_t | m_lsf_fct |
| component for the level-set function (0 if the grid function is scalar) | |
| SmartPtr< grid_func_type > | m_spLSF |
| level-set function | |
| size_t | m_traNI |
| number of iterations for the inverse transformation of the coordinates (for non-linear transformations) | |
| number | m_traTol |
| tolerance for the inverse transformation of the coordinates (for non-linear transformations) | |
| tree_type | m_tree |
| the quad- or octtree: | |
| std::vector< elem_type * > | m_vpCut |
| array of the intersected elements | |
Class for measuring the z-coordinates of the level set.
REMARK: This class is not parallalized! The measure can fail to find the level set if it is in a different process. The parallalization should be implemented in the classes that use this measurer!
| typedef TGridFunction::algebra_type ug::d3f::LSPositionZ< TGridFunction >::algebra_type |
algebra type
| typedef TGridFunction::domain_type ug::d3f::LSPositionZ< TGridFunction >::domain_type |
domain type
| typedef TGridFunction::element_type ug::d3f::LSPositionZ< TGridFunction >::elem_type |
generic element type
| typedef TGridFunction ug::d3f::LSPositionZ< TGridFunction >::grid_func_type |
grid function type
|
private |
intersection record type
|
private |
quad- or octtree type to search the elements
|
inline |
the most general class constructor
| spLSF | the level-set function |
| lsf_fct | the index of the component in the grid function |
| ls_value | the value for the level set |
References ug::ntree< int tree_dim, int world_dim, class TElem, class TCommonData >::enable_warnings(), and ug::d3f::LSPositionZ< TGridFunction >::m_tree.
|
inline |
class constructor
| spLSF | the level-set function |
| lsf_cmp_name | the component in the grid function |
| ls_value | the value for the level set |
|
inline |
class constructor for the simplest (and historically standard) case
| spLSF | the level-set function |
|
private |
get the elements cut by the level set
Find the cut elements.
grid element iterator
References ug::GetLocalVector(), and ug::LocalVector::resize().
Referenced by ug::d3f::LSPositionZ< TGridFunction >::reinit().
|
inline |
get the z-coordinates
| xy | the first coordinates (x, y) |
| z | to save the last coordinates (of all the intersections) |
| small_z | a threshold for the coordinates |
References ug::d3f::LSPositionZ< TGridFunction >::get_intersected(), and ug::d3f::LSPositionZ< TGridFunction >::get_z().
Referenced by ug::d3f::LSPositionZ< TGridFunction >::get_height_at().
|
inline |
gets the largest z-coordinate (returns false if no intersections found)
| xy | the first coordinates (x, y) |
| height | the largest 'z'-coordinate |
References ug::d3f::LSPositionZ< TGridFunction >::get_height().
Referenced by ug::d3f::VertexLowDimRecharge< TGridFunction >::get_ls_height_at(), and ug::d3f::LSPositionZ< TGridFunction >::height_at_dv().
|
private |
get the elements intersected by the ray
Find the elements intersected by the straight line.
| xy | the first coordinates of the points of the line |
References ug::RayElemIntersectionRecord< class TElem >::elem, ug::PointOnRay(), ug::RayElementIntersections(), ug::RayElemIntersectionRecord< class TElem >::smax, ug::RayElemIntersectionRecord< class TElem >::smin, and ug::VecSet().
Referenced by ug::d3f::LSPositionZ< TGridFunction >::get_height().
|
private |
get the point at the level set
Compute the coordinates of the intersection with the level set.
| z | the z-coordinates of the intersections |
| small_z | a threshold for the coordinates |
References ug::CollectCornerCoordinates(), ug::d3f::LSPositionZ< TGridFunction >::elem_intersect_data::elem, ug::GetLocalVector(), ug::DimReferenceMapping< int TDim, int TWorldDim >::global_to_local(), ug::d3f::LSPositionZ< TGridFunction >::elem_intersect_data::pnt, ug::LocalVector::resize(), ug::LocalShapeFunctionSet< int TDim, typename TShape, typename TGrad >::shapes(), and ug::VecSet().
Referenced by ug::d3f::LSPositionZ< TGridFunction >::get_height().
|
inline |
returns the largest z-coordinate or the default value (if no intersections found)
| xy | the first coordinates (x, y) |
| default_height | the default value |
References ug::d3f::LSPositionZ< TGridFunction >::get_height_at().
|
inline |
returns the value for the level set (the s.c. "level set zero")
References ug::d3f::LSPositionZ< TGridFunction >::m_level_set_zero.
|
inline |
returns the level-set function
References ug::d3f::LSPositionZ< TGridFunction >::m_spLSF.
|
inline |
returns the component of the grid function
References ug::d3f::LSPositionZ< TGridFunction >::m_lsf_fct.
|
inlineprivate |
sign of the LSF in the element
get the sign of the LSF in an element: 0 if there both the signes, -1 if negative at all the corners 1 if positive at all the corners
| noc | number of corners |
| lsf | corner values of the LSF |
|
inlinestaticprivate |
threshold for the level-set-function
|
inline |
initialize the object: find the intersected elements and prepare the tree
References ug::lg_ntree< int tree_dim, int world_dim, class grid_elem_t >::create_tree(), ug::d3f::LSPositionZ< TGridFunction >::fill_cut(), ug::d3f::LSPositionZ< TGridFunction >::m_tree, and ug::d3f::LSPositionZ< TGridFunction >::m_vpCut.
Referenced by ug::d3f::VertexLowDimRecharge< TGridFunction >::prepare_ls_height(), and ug::d3f::RichardsFreeSurfaceHeight< TGridFunction >::RichardsFreeSurfaceHeight().
|
inline |
sets the tolerance for the inverce transformation of the elements (for non-linear transformations)
| tol | the tolerance |
| nIter | number of iterations |
References ug::d3f::LSPositionZ< TGridFunction >::m_traNI, and ug::d3f::LSPositionZ< TGridFunction >::m_traTol.
|
static |
world dimension
|
private |
intersection recorder
|
private |
set of the intersections
|
private |
value of the level set (standardly 0)
Referenced by ug::d3f::LSPositionZ< TGridFunction >::level_set_zero().
|
private |
component for the level-set function (0 if the grid function is scalar)
Referenced by ug::d3f::LSPositionZ< TGridFunction >::lsf_fct().
|
private |
level-set function
Referenced by ug::d3f::LSPositionZ< TGridFunction >::lsf().
|
private |
number of iterations for the inverse transformation of the coordinates (for non-linear transformations)
Referenced by ug::d3f::LSPositionZ< TGridFunction >::set_transform_tol().
|
private |
tolerance for the inverse transformation of the coordinates (for non-linear transformations)
Referenced by ug::d3f::LSPositionZ< TGridFunction >::set_transform_tol().
|
private |
the quad- or octtree:
Referenced by ug::d3f::LSPositionZ< TGridFunction >::LSPositionZ(), and ug::d3f::LSPositionZ< TGridFunction >::reinit().
|
private |
array of the intersected elements
Referenced by ug::d3f::LSPositionZ< TGridFunction >::reinit().
|
static |
max. number of the corners of the elements in the domain