SheafSystem  0.0.0.0
geometry::d_uniform_point_locator< DC, DB > Class Template Reference

A point location query in domains with uniform global coordinates of dimension dc and local coordinate dimension db. More...

#include <d_uniform_point_locator.h>

Inheritance diagram for geometry::d_uniform_point_locator< DC, DB >:
geometry::point_locator

Public Member Functions

template<>
SHEAF_DLL_SPEC d_uniform_point_locator (sec_ed &xcoords)
 
template<>
SHEAF_DLL_SPEC d_uniform_point_locator (sec_ed &xcoords)
 
template<>
SHEAF_DLL_SPEC d_uniform_point_locator (sec_ed &xcoords)
 
- Public Member Functions inherited from geometry::point_locator
sec_edcoordinates () const
 The coordinate section this inverts. More...
 
const block< sec_vd_value_type > & lb () const
 The lower bound of the domain defined by coordinates(). More...
 
const block< sec_vd_value_type > & ub () const
 The upper bound of the domain defined by coordinates(). More...
 
int dc () const
 The spatial dimension of the domain; the dimension of the global coordinates. More...
 
int db () const
 The intrinsic dimension of the domain; the dimension of the local coordinates. More...
 
bool domain_contains (sec_vd_value_type *xpt, size_type xpt_ub) const
 True if the domain contains xpt. More...
 
virtual ~point_locator ()
 Destructor. More...
 

SPECIALIZATIONS

template<>
 d_uniform_point_locator (sec_ed &xcoords)
 
template<>
 d_uniform_point_locator (sec_ed &xcoords)
 
template<>
 d_uniform_point_locator (sec_ed &xcoords)
 

D_UNIFORM_POINT_LOCATOR FACET

sec_vd_value_type _clipped_value [DC]
 Buffer for clipped value. More...
 
structured_block_block
 Base space of coordinates. More...
 
chart_point_block_pt
 Point in local coordinates of block. More...
 
sec_vd_dof_type_dofs
 The dof tuple of coordinates(). More...
 
size_type _dof_ct
 The number of dofs in the dof tuple of coordinates(). More...
 
section_evaluator_evaluator
 Evaluator for coordinates. More...
 
 d_uniform_point_locator (sec_ed &xcoords)
 Creates an instance for coordinate section xcoords. More...
 
virtual ~d_uniform_point_locator ()
 Destructor. More...
 
virtual bool invariant () const
 Class invariant. More...
 
 d_uniform_point_locator ()
 Default constructor; disabled. More...
 
 d_uniform_point_locator (const d_uniform_point_locator< DC, DB > &xother)
 Copy constructor; disabled. More...
 
virtual d_uniform_point_locatoroperator= (const point_locator &xother)
 Assignment operator; disabled. More...
 
d_uniform_point_locatoroperator= (const d_uniform_point_locator< DC, DB > &xother)
 Assignment operator; disabled. More...
 
sec_vd_value_type clip_component (sec_vd_value_type xcomp, sec_vd_value_type xupper_bound)
 Ensures that xcomp is strictly less than xupper_bound. More...
 

POINT_LOCATOR FACET

virtual void update ()
 Updates the search structure to the current values of coordinates(). More...
 
virtual void point_at_value (const sec_vd_value_type *xvalue, size_type xvalue_ub, chart_point &xresult)
 Finds the chart point at which coordinates() has value xvalue. More...
 
virtual void all_points_at_value (const sec_vd_value_type *xvalue, size_type xvalue_ub, block< chart_point_3d > &xresult)
 Finds all chart points at which coordinates() has value xvalue and appends them to xresult. Note that charts overlap at their boundaries and hence if xvalue lies on a boundary it is contained in more than one chart. More...
 
virtual void branch_points_at_value (const sec_vd_value_type *xvalue, size_type xvalue_ub, block< branch_point_pair > &xresult)
 Finds one chart point in each branch at which coordinates() has value xvalue and appends them to xresult. Note that uniform sections can't really have branches, so this is just a synonym for point_at_value. More...
 

Additional Inherited Members

- Protected Member Functions inherited from geometry::point_locator
 point_locator ()
 Default constructor. More...
 
 point_locator (sec_ed &xcoords)
 Create an instance for coordinate section xcoords. More...
 
void update_domain ()
 Initializes the domain bounds and dimension. More...
 
- Static Protected Member Functions inherited from geometry::point_locator
static sec_vd_value_type slightly_greater_than (sec_vd_value_type x)
 A value slightly greater then x. More...
 
static sec_vd_value_type slightly_less_than (sec_vd_value_type x)
 A value slightly less then x. More...
 
- Protected Attributes inherited from geometry::point_locator
block< sec_vd_value_type_lb
 The lower bound of the domain. More...
 
block< sec_vd_value_type_ub
 The upper bound of the domain. More...
 
int _dc
 The spatial dimension of the domain; the dimension of the global coordinates. More...
 
int _db
 The intrinsic dimension of the domain; the dimension of the local coordinates. More...
 

Detailed Description

template<int DC, int DB>
class geometry::d_uniform_point_locator< DC, DB >

A point location query in domains with uniform global coordinates of dimension dc and local coordinate dimension db.

Definition at line 49 of file d_uniform_point_locator.h.

Constructor & Destructor Documentation

◆ d_uniform_point_locator() [1/6]

template<int DC, int DB>
geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator ( sec_ed xcoords)

Creates an instance for coordinate section xcoords.

◆ ~d_uniform_point_locator()

template<int DC, int DB>
geometry::d_uniform_point_locator< DC, DB >::~d_uniform_point_locator ( )
virtual

◆ d_uniform_point_locator() [2/6]

template<int DC, int DB>
geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator ( )
inlineprotected

Default constructor; disabled.

Definition at line 80 of file d_uniform_point_locator.h.

Referenced by geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator().

◆ d_uniform_point_locator() [3/6]

template<int DC, int DB>
geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator ( const d_uniform_point_locator< DC, DB > &  xother)
inlineprotected

Copy constructor; disabled.

Definition at line 85 of file d_uniform_point_locator.h.

◆ d_uniform_point_locator() [4/6]

◆ d_uniform_point_locator() [5/6]

◆ d_uniform_point_locator() [6/6]

Member Function Documentation

◆ all_points_at_value()

template<int DC, int DB>
void geometry::d_uniform_point_locator< DC, DB >::all_points_at_value ( const sec_vd_value_type xvalue,
size_type  xvalue_ub,
block< chart_point_3d > &  xresult 
)
virtual

Finds all chart points at which coordinates() has value xvalue and appends them to xresult. Note that charts overlap at their boundaries and hence if xvalue lies on a boundary it is contained in more than one chart.

Precondition
  • xvalue != 0
  • xvalue_ub >= this->dc()
Issue:
does clipping make sense here? We've already expanded the domain slightly in update_domain(), why do we need to clip as well?
Postcondition
  • xresult.ct() >= old_xresult_ct
  • for(int i = ( old_xresult_ct ); i < ( xresult.ct() ); ++ i ) xresult[i].is_valid()

Implements geometry::point_locator.

Definition at line 248 of file d_uniform_point_locator.impl.h.

References geometry::d_uniform_point_locator< DC, DB >::branch_points_at_value(), and sheaf::auto_block< T, un_block_initialization_policy< T > >::ct().

Referenced by geometry::d_uniform_point_locator< DC, DB >::point_at_value().

◆ branch_points_at_value()

template<int DB, int DC>
void geometry::d_uniform_point_locator< DB, DC >::branch_points_at_value ( const sec_vd_value_type xvalue,
size_type  xvalue_ub,
block< branch_point_pair > &  xresult 
)
virtual

Finds one chart point in each branch at which coordinates() has value xvalue and appends them to xresult. Note that uniform sections can't really have branches, so this is just a synonym for point_at_value.

Precondition
  • xvalue != 0
  • xvalue_ub >= this->dc()
Postcondition
  • xresult.ct() == old_xresult_ct + 1
  • for(int i = ( old_xresult_ct ); i < ( xresult.ct() ); ++ i ) coordinates().host()->contains_member(xresult[i].first, false)
  • for(int i = ( old_xresult_ct ); i < ( xresult.ct() ); ++ i ) xresult[i].second.is_valid()

Implements geometry::point_locator.

Definition at line 313 of file d_uniform_point_locator.impl.h.

References sheaf::auto_block< T, S >::ct(), and sheaf::auto_block< T, S >::push_back().

Referenced by geometry::d_uniform_point_locator< DC, DB >::all_points_at_value().

◆ clip_component()

template<int DC, int DB>
sec_vd_value_type geometry::d_uniform_point_locator< DC, DB >::clip_component ( sec_vd_value_type  xcomp,
sec_vd_value_type  xupper_bound 
)
protected

Ensures that xcomp is strictly less than xupper_bound.

Definition at line 133 of file d_uniform_point_locator.impl.h.

References geometry::d_uniform_point_locator< DC, DB >::update().

Referenced by geometry::d_uniform_point_locator< DC, DB >::invariant().

◆ invariant()

template<int DC, int DB>
bool geometry::d_uniform_point_locator< DC, DB >::invariant ( ) const
virtual

◆ operator=() [1/2]

template<int DC, int DB>
virtual d_uniform_point_locator& geometry::d_uniform_point_locator< DC, DB >::operator= ( const point_locator xother)
inlineprotectedvirtual

Assignment operator; disabled.

Reimplemented from geometry::point_locator.

Definition at line 90 of file d_uniform_point_locator.h.

◆ operator=() [2/2]

template<int DC, int DB>
d_uniform_point_locator& geometry::d_uniform_point_locator< DC, DB >::operator= ( const d_uniform_point_locator< DC, DB > &  xother)
inlineprotected

Assignment operator; disabled.

Definition at line 95 of file d_uniform_point_locator.h.

◆ point_at_value()

template<int DC, int DB>
void geometry::d_uniform_point_locator< DC, DB >::point_at_value ( const sec_vd_value_type xvalue,
size_type  xvalue_ub,
chart_point xresult 
)
virtual

Finds the chart point at which coordinates() has value xvalue.

Precondition
  • xvalue != 0
  • xvalue_ub >= this->dc()
  • xresult.db() >= this->db()
Issue:
does clipping make sense here? We've already expanded the domain slightly in update_domain(), why do we need to clip as well?
Postcondition
  • -unexecutable( xresult.is_valid() ? xresult.chart() contains xvalue at xresult.local_coord() : no chart contains xvalue )

Implements geometry::point_locator.

Definition at line 182 of file d_uniform_point_locator.impl.h.

References geometry::d_uniform_point_locator< DC, DB >::all_points_at_value(), fiber_bundle::chart_point::db(), fiber_bundle::chart_point::invalidate(), fiber_bundle::chart_point::is_valid(), and fiber_bundle::chart_point::local_coord().

Referenced by geometry::d_uniform_point_locator< DC, DB >::update().

◆ update()

template<int DC, int DB>
void geometry::d_uniform_point_locator< DC, DB >::update ( )
virtual

Member Data Documentation

◆ _block

template<int DC, int DB>
structured_block* geometry::d_uniform_point_locator< DC, DB >::_block
protected

Base space of coordinates.

Definition at line 105 of file d_uniform_point_locator.h.

Referenced by geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator().

◆ _block_pt

template<int DC, int DB>
chart_point* geometry::d_uniform_point_locator< DC, DB >::_block_pt
protected

Point in local coordinates of block.

Definition at line 110 of file d_uniform_point_locator.h.

Referenced by geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator().

◆ _clipped_value

template<int DC, int DB>
sec_vd_value_type geometry::d_uniform_point_locator< DC, DB >::_clipped_value[DC]
protected

Buffer for clipped value.

Definition at line 95 of file d_uniform_point_locator.h.

◆ _dof_ct

template<int DC, int DB>
size_type geometry::d_uniform_point_locator< DC, DB >::_dof_ct
protected

The number of dofs in the dof tuple of coordinates().

Definition at line 120 of file d_uniform_point_locator.h.

◆ _dofs

template<int DC, int DB>
sec_vd_dof_type* geometry::d_uniform_point_locator< DC, DB >::_dofs
protected

The dof tuple of coordinates().

Definition at line 115 of file d_uniform_point_locator.h.

◆ _evaluator

template<int DC, int DB>
section_evaluator* geometry::d_uniform_point_locator< DC, DB >::_evaluator
protected

Evaluator for coordinates.

Definition at line 125 of file d_uniform_point_locator.h.

Referenced by geometry::d_uniform_point_locator< DC, DB >::d_uniform_point_locator().


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