TrioCFD 1.9.8
TrioCFD documentation
Loading...
Searching...
No Matches
Octree_Double_32_64< _SIZE_ > Class Template Reference

: Un octree permettant de chercher dans l'espace des elements ou des points decrits par des coordonnees reeles. More...

#include <Octree_Double.h>

Collaboration diagram for Octree_Double_32_64< _SIZE_ >:
[legend]

Public Types

using int_t = _SIZE_
using ArrOfInt_t = ArrOfInt_T<_SIZE_>
using IntTab_t = IntTab_T<_SIZE_>
using ArrOfDouble_t = ArrOfDouble_T<_SIZE_>
using DoubleTab_t = DoubleTab_T<_SIZE_>

Public Member Functions

void reset ()
template<class _TAB_TYPE_>
void build_elements (const _TAB_TYPE_ &coords, const IntTab_t &elements, const double epsilon, const bool include_virtual)
 Construit un octree a partir d'elements volumiques decrits par des ensembles de sommets.
void build_nodes (const DoubleTab_t &coords, const bool include_virtual, const double epsilon=0.)
 construit un octree contenant les points de coordonnees coords.
int_t search_elements (double x, double y, double z, int_t &index) const
 cherche les elements ou les points contenus dans l'octree_floor qui contient le point (x,y,z).
int_t search_elements_box (double xmin, double ymin, double zmin, double xmax, double ymax, double zmax, ArrOfInt_t &elements) const
 cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee.
int_t search_elements_box (const ArrOfDouble &center, const double radius, ArrOfInt_t &elements) const
 cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee (centre + ou - radius dans chaque direction)
int dimension () const
const ArrOfInt_tfloor_elements () const

Static Public Member Functions

static int_t search_nodes_close_to (double x, double y, double z, const DoubleTab_t &coords, ArrOfInt_t &node_list, double epsilon)
 Methode hors classe Cherche parmi les sommets de la liste node_list ceux qui sont a une.
static int_t search_nodes_close_to (const ArrOfDouble &point, const DoubleTab_t &coords, ArrOfInt_t &node_list, double epsilon)
 Idem que search_nodes_close_to(double x, double y, double z, .

Protected Member Functions

bool integer_position (double x, int direction, int &ix) const
 Convertit une coordonnee reelle en coordonnee entiere pour l'octree_int.
bool integer_position_clip (double xmin, double xmax, int &x0, int &x1, int direction) const
template<class _TAB_TYPE_>
void compute_origin_factors (const _TAB_TYPE_ &coords, const double epsilon, const int include_virtual)
 methode outil pour build_nodes et build_elements (calcul des facteurs de conversion entre reels et entiers pour Octree_Int

Protected Attributes

Octree_Int_32_64< _SIZE_ > octree_int_
ArrOfDouble origin_
ArrOfDouble factor_
int dim_ = 0

Detailed Description

template<typename _SIZE_>
class Octree_Double_32_64< _SIZE_ >

: Un octree permettant de chercher dans l'espace des elements ou des points decrits par des coordonnees reeles.

Cet objet est base sur Octree_Int. Astuces: Pour chercher des points a epsilon pres on peut faire: 1) build_nodes(coord, include_virt, 0.) suivi de search_elements_box(center, epsilon, elements);

2) build_nodes(coord, include_virt, epsilon) suivi de search_elements(x,y,z,...) La premiere solution prend plus de temps pour construire l'octree mais la recherche est plus rapide La deuxieme, c'est inverse... et on peut choisir epsilon pour chaque point.

Definition at line 39 of file Octree_Double.h.

Member Typedef Documentation

◆ ArrOfDouble_t

template<typename _SIZE_>
using Octree_Double_32_64< _SIZE_ >::ArrOfDouble_t = ArrOfDouble_T<_SIZE_>

Definition at line 45 of file Octree_Double.h.

◆ ArrOfInt_t

template<typename _SIZE_>
using Octree_Double_32_64< _SIZE_ >::ArrOfInt_t = ArrOfInt_T<_SIZE_>

Definition at line 43 of file Octree_Double.h.

◆ DoubleTab_t

template<typename _SIZE_>
using Octree_Double_32_64< _SIZE_ >::DoubleTab_t = DoubleTab_T<_SIZE_>

Definition at line 46 of file Octree_Double.h.

◆ int_t

template<typename _SIZE_>
using Octree_Double_32_64< _SIZE_ >::int_t = _SIZE_

Definition at line 42 of file Octree_Double.h.

◆ IntTab_t

template<typename _SIZE_>
using Octree_Double_32_64< _SIZE_ >::IntTab_t = IntTab_T<_SIZE_>

Definition at line 44 of file Octree_Double.h.

Member Function Documentation

◆ build_elements()

template<typename _SIZE_>
template<class _TAB_TYPE_>
void Octree_Double_32_64< _SIZE_ >::build_elements ( const _TAB_TYPE_ & coords,
const IntTab_t & elements,
const double epsilon,
const bool include_virtual )

Construit un octree a partir d'elements volumiques decrits par des ensembles de sommets.

On stocke dans l'octree les parallelipipdes englobant chaque element (contenant tous les sommets de l'element) plus une marge de epsilon. Si include_virtual=1, on stocke elements.dimension_tot(0) elements, sinon on en stocke elements.dimension(0)

Template car on a besoin de la version float pour lata tools.

Definition at line 31 of file Octree_Double.tpp.

◆ build_nodes()

template<typename _SIZE_>
void Octree_Double_32_64< _SIZE_ >::build_nodes ( const DoubleTab_t & coords,
const bool include_virtual,
const double epsilon = 0. )

construit un octree contenant les points de coordonnees coords.

Si include_virtual=1, on stocke coords.dimension_tot(0) elements, sinon on en stocke coords.dimension(0) Si epsilon = 0, on construit un octree de points de taille nulle (chaque point se trouve dans un seul octree_floor) Sinon, on construit un octree d'elements cubiques centres sur les coords, de demie-largeur epsilon. Un point peut alors se trouver dans plusieurs octree_floor.

Definition at line 56 of file Octree_Double.cpp.

◆ compute_origin_factors()

template<typename _SIZE_>
template<class _TAB_TYPE_>
void Octree_Double_32_64< _SIZE_ >::compute_origin_factors ( const _TAB_TYPE_ & coords,
const double epsilon,
const int include_virtual )
protected

methode outil pour build_nodes et build_elements (calcul des facteurs de conversion entre reels et entiers pour Octree_Int

epsilon est ajoute aux coordonnees min et max pour la bounding box de l'octree.

Template car on a besoin de la version float pour lata tools.

Definition at line 77 of file Octree_Double.tpp.

◆ dimension()

template<typename _SIZE_>
int Octree_Double_32_64< _SIZE_ >::dimension ( ) const
inline

Definition at line 59 of file Octree_Double.h.

◆ floor_elements()

template<typename _SIZE_>
const ArrOfInt_t & Octree_Double_32_64< _SIZE_ >::floor_elements ( ) const
inline

Definition at line 64 of file Octree_Double.h.

◆ integer_position()

template<typename _SIZE_>
bool Octree_Double_32_64< _SIZE_ >::integer_position ( double x,
int direction,
int & ix ) const
inlineprotected

Convertit une coordonnee reelle en coordonnee entiere pour l'octree_int.

Valeur de retour: 1 si ok, 0 si coordonnee hors de l'octree

Definition at line 86 of file Octree_Double.h.

◆ integer_position_clip()

template<typename _SIZE_>
bool Octree_Double_32_64< _SIZE_ >::integer_position_clip ( double xmin,
double xmax,
int & x0,
int & x1,
int direction ) const
inlineprotected

Definition at line 103 of file Octree_Double.h.

◆ reset()

template<typename _SIZE_>
void Octree_Double_32_64< _SIZE_ >::reset ( )

Definition at line 19 of file Octree_Double.cpp.

◆ search_elements()

template<typename _SIZE_>
Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_elements ( double x,
double y,
double z,
int_t & index ) const

cherche les elements ou les points contenus dans l'octree_floor qui contient le point (x,y,z).

Renvoie le nombre n de ces elements. Les indices des elements sont dans floor_elements()[index+i] pour 0 <= i < n

Definition at line 34 of file Octree_Double.cpp.

◆ search_elements_box() [1/2]

template<typename _SIZE_>
Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_elements_box ( const ArrOfDouble & center,
const double radius,
ArrOfInt_t & elements ) const

cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee (centre + ou - radius dans chaque direction)

Definition at line 134 of file Octree_Double.cpp.

◆ search_elements_box() [2/2]

template<typename _SIZE_>
Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_elements_box ( double xmin,
double ymin,
double zmin,
double xmax,
double ymax,
double zmax,
ArrOfInt_t & elements ) const

cherche tous les elements ou points ayant potentiellement une intersection non vide avec la boite donnee.

Definition at line 104 of file Octree_Double.cpp.

◆ search_nodes_close_to() [1/2]

template<typename _SIZE_>
Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_nodes_close_to ( const ArrOfDouble & point,
const DoubleTab_t & coords,
ArrOfInt_t & node_list,
double epsilon )
static

Idem que search_nodes_close_to(double x, double y, double z, .

..)

Definition at line 193 of file Octree_Double.cpp.

◆ search_nodes_close_to() [2/2]

template<typename _SIZE_>
Octree_Double_32_64< _SIZE_ >::int_t Octree_Double_32_64< _SIZE_ >::search_nodes_close_to ( double x,
double y,
double z,
const DoubleTab_t & coords,
ArrOfInt_t & node_list,
double epsilon )
static

Methode hors classe Cherche parmi les sommets de la liste node_list ceux qui sont a une.

distance inferieure a epsilon du point (x,y,z). node_list contient des indices de sommets dans le tableau coords. La liste des noeuds verifiant le critere est mise dans node_list. On renvoie l'indice dans le tableau coords du sommet le plus proche.

Definition at line 155 of file Octree_Double.cpp.

Member Data Documentation

◆ dim_

template<typename _SIZE_>
int Octree_Double_32_64< _SIZE_ >::dim_ = 0
protected

Definition at line 76 of file Octree_Double.h.

◆ factor_

template<typename _SIZE_>
ArrOfDouble Octree_Double_32_64< _SIZE_ >::factor_
protected

Definition at line 75 of file Octree_Double.h.

◆ octree_int_

template<typename _SIZE_>
Octree_Int_32_64<_SIZE_> Octree_Double_32_64< _SIZE_ >::octree_int_
protected

Definition at line 73 of file Octree_Double.h.

◆ origin_

template<typename _SIZE_>
ArrOfDouble Octree_Double_32_64< _SIZE_ >::origin_
protected

Definition at line 75 of file Octree_Double.h.


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