libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim > Class Template Reference

#include <meshfree_interpolation.h>

Public Types

typedef Real coord_t
 

Public Member Functions

 PointListAdaptor (const std::vector< Point > &pts)
 
size_t kdtree_get_point_count () const
 
coord_t kdtree_distance (const coord_t *p1, const size_t idx_p2, size_t size) const
 
coord_t kdtree_get_pt (const size_t idx, int dim) const
 
template<class BBOX >
bool kdtree_get_bbox (BBOX &) const
 

Private Attributes

const std::vector< Point > & _pts
 

Detailed Description

template<unsigned int KDDim>
template<unsigned int PLDim>
class libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >

This class adapts list of libMesh Point types for use in a nanoflann KD-Tree. For more on the basic idea see examples/pointcloud_adaptor_example.cpp in the nanoflann source tree.

Definition at line 186 of file meshfree_interpolation.h.

Member Typedef Documentation

template<unsigned int KDDim>
template<unsigned int PLDim>
typedef Real libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >::coord_t

libMesh Point coordinate type

Definition at line 199 of file meshfree_interpolation.h.

Constructor & Destructor Documentation

template<unsigned int KDDim>
template<unsigned int PLDim>
libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >::PointListAdaptor ( const std::vector< Point > &  pts)
inline

Definition at line 192 of file meshfree_interpolation.h.

192  :
193  _pts(pts)
194  {}

Member Function Documentation

template<unsigned int KDDim>
template<unsigned int PLDim>
coord_t libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >::kdtree_distance ( const coord_t p1,
const size_t  idx_p2,
size_t  size 
) const
inline

Returns the distance between the vector "p1[0:size-1]" and the data point with index "idx_p2" stored in the class

Definition at line 210 of file meshfree_interpolation.h.

211  {
212  libmesh_assert_equal_to (size, PLDim);
213  libmesh_assert_less (idx_p2, _pts.size());
214 
215  const Point &p2(_pts[idx_p2]);
216 
217  switch (size)
218  {
219  case 3:
220  {
221  const coord_t d0=p1[0] - p2(0);
222  const coord_t d1=p1[1] - p2(1);
223  const coord_t d2=p1[2] - p2(2);
224 
225  return d0*d0 + d1*d1 + d2*d2;
226  }
227 
228  case 2:
229  {
230  const coord_t d0=p1[0] - p2(0);
231  const coord_t d1=p1[1] - p2(1);
232 
233  return d0*d0 + d1*d1;
234  }
235 
236  case 1:
237  {
238  const coord_t d0=p1[0] - p2(0);
239 
240  return d0*d0;
241  }
242 
243  default:
244  libMesh::err << "ERROR: unknown size " << size << std::endl;
245  libmesh_error();
246  }
247 
248  return -1.;
249  }
template<unsigned int KDDim>
template<unsigned int PLDim>
template<class BBOX >
bool libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >::kdtree_get_bbox ( BBOX &  ) const
inline

Optional bounding-box computation: return false to default to a standard bbox computation loop. Return true if the BBOX was already computed by the class and returned in "bb" so it can be avoided to redo it again. Look at bb.size() to find out the expected dimensionality (e.g. 2 or 3 for point clouds)

Definition at line 276 of file meshfree_interpolation.h.

276 { return false; }
template<unsigned int KDDim>
template<unsigned int PLDim>
size_t libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >::kdtree_get_point_count ( ) const
inline

Must return the number of data points

Definition at line 204 of file meshfree_interpolation.h.

204 { return _pts.size(); }
template<unsigned int KDDim>
template<unsigned int PLDim>
coord_t libMesh::InverseDistanceInterpolation< KDDim >::PointListAdaptor< PLDim >::kdtree_get_pt ( const size_t  idx,
int  dim 
) const
inline

Returns the dim'th component of the idx'th point in the class: Since this is inlined and the "dim" argument is typically an immediate value, the "if's" are actually solved at compile time.

Definition at line 256 of file meshfree_interpolation.h.

257  {
258  libmesh_assert_less (dim, (int) PLDim);
259  libmesh_assert_less (idx, _pts.size());
260  libmesh_assert_less (dim, 3);
261 
262  const Point &p(_pts[idx]);
263 
264  if (dim==0) return p(0);
265  if (dim==1) return p(1);
266  return p(2);
267  }

Member Data Documentation


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

Site Created By: libMesh Developers
Last modified: February 07 2014 16:57:27 UTC

Hosted By:
SourceForge.net Logo