Feel++ 0.111.0-preview.14
Finite Element Embedded Library in C++
Feel::Localization< MeshType > Class Template Reference
+ Collaboration diagram for Feel::Localization< MeshType >:

Public Types

typedef std::list< boost::tuple< size_type, node_type > >::iterator container_output_iterator_type
 
typedef std::list< boost::tuple< size_type, node_type > > container_output_type
 
typedef container_search_type::const_iterator container_search_const_iterator_type
 
typedef container_search_type::iterator container_search_iterator_type
 
typedef std::map< size_type, container_output_type > container_search_type
 map between element id and list of node described in the reference elt typedef std::map<size_type, std::list<boost::tuple<size_type,node_type> > > container_search_type
 
typedef mpl::if_< mpl::bool_< mesh_type::element_type::is_simplex >, mpl::identity< GeoMapInverse< nDim, 1, nRealDim, value_type, Simplex > >, mpl::identity< GeoMapInverse< nDim, 1, nRealDim, value_type, Hypercube > > >::type::type gm1_inverse_type
 
typedef mpl::if_< mpl::bool_< mesh_type::element_type::is_simplex >, mpl::identity< GeoMapInverse< nDim, nOrder, nRealDim, value_type, Simplex > >, mpl::identity< GeoMapInverse< nDim, nOrder, nRealDim, value_type, Hypercube > > >::type::type gm_inverse_type
 geomap inverse
 
typedef gm1_inverse_type::gic_type gmc1_inverse_type
 
typedef gm_inverse_type::gic_type gmc_inverse_type
 
using index_type = typename MeshType::index_type
 
typedef std::shared_ptr< KDTree > kdtree_ptrtype
 
typedef KDTree kdtree_type
 
typedef std::shared_ptr< localization_type > localization_ptrtype
 
typedef Localization localization_type
 
typedef matrix_node< typenamenode_type::value_type >::type matrix_node_type
 
typedef std::weak_ptr< mesh_type > mesh_ptrtype
 
using mesh_type = MeshType
 
typedef boost::tuple< node_type, std::list< size_type > > node_elem_type
 a node x => a list of id elt which contain the node x
 
using node_type = typename MeshType::node_type
 
using range_elements_type = Range< mesh_type, MESH_ELEMENTS >
 
typedef mesh_type::gm1_type::reference_convex_type ref_convex1_type
 
typedef mesh_type::gm_type::reference_convex_type ref_convex_type
 reference convex
 
using size_type = typename MeshType::size_type
 
using value_type = typename mesh_type::value_type
 

Public Member Functions

node_type const & barycenter () const
 
std::vector< boost::tuple< bool, node_type > > const & barycentersWorld () const
 
void computeBarycenter ()
 
void computeBarycentersWorld ()
 
bool doExtrapolation () const
 
bool hasComputedBarycentersWorld ()
 
boost::tuple< bool, node_type, double > isIn (size_type _id, const node_type &_pt) const
 
boost::tuple< bool, node_type, double > isIn (size_type _id, const node_type &_pt, const matrix_node_type &setPoints, mpl::int_< 1 >) const
 
boost::tuple< uint16_type, std::vector< bool > > isIn (std::vector< size_type > _ids, const node_type &_pt)
 
bool isInit () const
 
bool isInitBoundaryFaces () const
 
kdtree_ptrtype kdtree ()
 
kdtree_ptrtype const & kdtree () const
 
 Localization ()
 
 Localization (Localization const &L)
 
mesh_ptrtype mesh ()
 
mesh_ptrtype mesh () const
 
void reset ()
 
void resetBoundaryFaces ()
 
container_search_type const & result_analysis () const
 
container_search_iterator_type result_analysis_begin ()
 
container_search_iterator_type result_analysis_end ()
 
boost::tuple< std::vector< bool >, size_type > run_analysis (const matrix_node_type &m, const size_type &eltHypothetical)
 
boost::tuple< std::vector< bool >, size_type > run_analysis (const matrix_node_type &m, const size_type &eltHypothetical, const matrix_node_type &setPoints, mpl::int_< 0 >)
 
boost::tuple< std::vector< bool >, size_type > run_analysis (const matrix_node_type &m, const size_type &eltHypothetical, const matrix_node_type &setPoints, mpl::int_< 1 >)
 
boost::tuple< bool, size_type, node_type > searchElement (const node_type &p)
 
boost::tuple< bool, size_type, node_type > searchElement (const node_type &p, const matrix_node_type &setPoints, mpl::int_< 0 >)
 
boost::tuple< bool, size_type, node_type > searchElement (const node_type &p, const matrix_node_type &setPoints, mpl::int_< 1 >)
 
boost::tuple< bool, std::list< boost::tuple< size_type, node_type > > > searchElements (const node_type &p)
 
void setExtrapolation (bool b)
 
void setMesh (std::shared_ptr< mesh_type > m, bool b=true)
 
void setMesh (std::shared_ptr< mesh_type > m, range_elements_type const &range, bool b=true)
 
void updateForUse ()
 
void updateForUseBoundaryFaces ()
 

Static Public Attributes

static const uint16_type nDim = mesh_type::nDim
 
static const uint16_type nOrder = mesh_type::nOrder
 
static const uint16_type nRealDim = mesh_type::nRealDim
 

Constructor & Destructor Documentation

◆ Localization()

template<typename MeshType >
Feel::Localization< MeshType >::Localization ( )

Constructors

Member Function Documentation

◆ isIn()

template<typename MeshType >
boost::tuple< bool, typename MeshType::node_type, double > Feel::Localization< MeshType >::isIn ( size_type  _id,
const node_type &  _pt 
) const

True if the node p is in mesh->element(id)

◆ isInit()

template<typename MeshType >
bool Feel::Localization< MeshType >::isInit ( ) const

◆ reset()

template<typename MeshType >
void Feel::Localization< MeshType >::reset ( )

Reset all data

◆ run_analysis() [1/3]

template<typename MeshType >
boost::tuple< std::vector< bool >, typename Localization< MeshType >::size_type > Feel::Localization< MeshType >::run_analysis ( const matrix_node_type &  m,
const size_type &  eltHypothetical 
)

Research the element which contains the node p, forall p in the matrix_node_type m. The result is save by this object

Referenced by Feel::Localization< MeshType >::run_analysis().

◆ run_analysis() [2/3]

template<typename MeshType >
boost::tuple< std::vector< bool >, size_type > Feel::Localization< MeshType >::run_analysis ( const matrix_node_type &  m,
const size_type &  eltHypothetical,
const matrix_node_type &  setPoints,
mpl::int_< 0 >   
)

Research the element which contains the node p, forall p in the matrix_node_type m. The result is save by this object

References Feel::Localization< MeshType >::run_analysis().

◆ run_analysis() [3/3]

template<typename MeshType >
boost::tuple< std::vector< bool >, typename Localization< MeshType >::size_type > Feel::Localization< MeshType >::run_analysis ( const matrix_node_type &  m,
const size_type &  eltHypothetical,
const matrix_node_type &  setPoints,
mpl::int_< 1 >   
)

Research the element which contains the node p, forall p in the matrix_node_type m. The result is save by this object

◆ searchElement() [1/3]

template<typename MeshType >
boost::tuple< bool, typename Localization< MeshType >::size_type, typename MeshType::node_type > Feel::Localization< MeshType >::searchElement ( const node_type &  p)

Research only one element which contains the node p

Referenced by Feel::Localization< MeshType >::searchElement().

◆ searchElement() [2/3]

template<typename MeshType >
boost::tuple< bool, size_type, node_type > Feel::Localization< MeshType >::searchElement ( const node_type &  p,
const matrix_node_type &  setPoints,
mpl::int_< 0 >   
)

Research only one element which contains the node p

References Feel::Localization< MeshType >::searchElement().

◆ searchElement() [3/3]

template<typename MeshType >
boost::tuple< bool, typename Localization< MeshType >::size_type, typename MeshType::node_type > Feel::Localization< MeshType >::searchElement ( const node_type &  p,
const matrix_node_type &  setPoints,
mpl::int_< 1 >   
)

Research only one element which contains the node p and which this elt have as geometric point contain setPoints

◆ searchElements()

template<typename MeshType >
boost::tuple< bool, std::list< boost::tuple< typename Localization< MeshType >::size_type, typename MeshType::node_type > > > Feel::Localization< MeshType >::searchElements ( const node_type &  p)

Research all elements which contains the node p

◆ setExtrapolation()

template<typename MeshType >
void Feel::Localization< MeshType >::setExtrapolation ( bool  b)

Define if necessary to use extrapolation

◆ setMesh()

template<typename MeshType >
void Feel::Localization< MeshType >::setMesh ( std::shared_ptr< mesh_type >  m,
bool  b = true 
)

Define the mesh whith or not init

References Feel::elements().

◆ updateForUse()

template<typename MeshType >
void Feel::Localization< MeshType >::updateForUse ( )

Run the init function if necessary

References Feel::elements(), and Feel::Localization< MeshType >::isInit().

◆ updateForUseBoundaryFaces()

template<typename MeshType >
void Feel::Localization< MeshType >::updateForUseBoundaryFaces ( )

Run the init function if necessary