OpenFPM_pdata  4.1.0
Project that contain the implementation of distributed structures
 
Loading...
Searching...
No Matches
SpaceBox< dim, T > Class Template Reference

This class represent an N-dimensional box. More...

Detailed Description

template<unsigned int dim, typename T>
class SpaceBox< dim, T >

This class represent an N-dimensional box.

Parameters
Ttype of space ... double float int size_t
Ndimensionality of the Box

Definition of a spacebox and rescale

Definition of a spaceboxes and intersection between them

Create random points inside the SpaceBox

Definition at line 26 of file SpaceBox.hpp.

#include <SpaceBox.hpp>

+ Inheritance diagram for SpaceBox< dim, T >:

Public Member Functions

SpaceBox< dim, T > & operator= (const Box< dim, T > &b)
 Define the box from a box shape.
 
template<typename S >
 SpaceBox (const Box< dim, S > &b)
 constructor from a Box of different type
 
 SpaceBox (const SpaceBox< dim, T > &b)
 constructor from a SpaceBox
 
 SpaceBox (const Box< dim, T > &b)
 constructor from a box
 
template<unsigned int dim_s, typename Mem >
 SpaceBox (const encapc< dim_s, Box< dim, T >, Mem > &box)
 Constructor from a Box.
 
template<unsigned int dim_s, typename Mem >
 SpaceBox (const encapc< dim_s, SpaceBox< dim, T >, Mem > &box)
 Constructor from a Box.
 
 SpaceBox (std::initializer_list< T > p1, std::initializer_list< T > p2)
 Constructor from initializer list.
 
void rescale (T(&sp)[dim])
 Re-scale the space box with the coefficient defined in sp.
 
template<typename S >
void rescale (S(&sp)[dim])
 Re-scale the space box with the coefficient defined in sp.
 
void mul (T(&sp)[dim])
 multiply the space box with the coefficient defined in sp
 
template<typename S >
void mul (S(&sp)[dim])
 multiply the space box with the coefficient defined in sp
 
Point< dim, T > rnd ()
 Generate a random point inside the box.
 
 SpaceBox ()
 Default constructor.
 
- Public Member Functions inherited from Box< dim, T >
__device__ __host__ bool Intersect (const Box< dim, T > &b, Box< dim, T > &b_out) const
 Intersect.
 
template<typename Mem >
__device__ __host__ bool Intersect (const encapc< 1, Box< dim, T >, Mem > &e_b, Box< dim, T > &b_out) const
 Intersect.
 
template<typename distance >
bool Intersect (Sphere< dim, T > &sphere)
 Check if the sphere intersect the box.
 
min_distance (Box< dim, T > &b) const
 
template<unsigned int b>
getBase (const unsigned int i) const
 Get the coordinate of the bounding point.
 
Box< dim-1, T > getSubBox ()
 Get the the box of dimensionality dim-1 (it eliminate the last dimension)
 
__device__ __host__ Box< dim, T > & operator= (const Box< dim, T > &box)
 Operator= between boxes.
 
__device__ __host__ Box ()
 default constructor
 
 Box (const Point< dim, T > &p1, const Point< dim, T > &p2)
 Constructor from two points.
 
 Box (std::initializer_list< T > p1, std::initializer_list< T > p2)
 Constructor from initializer list.
 
 Box (T *low, T *high)
 Box constructor from a box.
 
__device__ __host__ Box (const Box< dim, T > &box)
 Box constructor from a box.
 
 Box (type box_data)
 Box constructor from vector::fusion.
 
 Box (T(&box_data)[dim])
 Box constructor from an array reference.
 
 Box (const grid_key_dx< dim > &key1, const grid_key_dx< dim > &key2)
 constructor from 2 grid_key_dx
 
template<unsigned int dimS>
__device__ __host__ Box (boost::fusion::vector< T[dimS], T[dimS]> &box_data)
 Box constructor from vector::fusion of higher dimension.
 
template<typename Mem >
__device__ __host__ Box (const encapc< 1, Box< dim, T >, Mem > &b)
 Box constructor from encapsulated box.
 
template<typename S >
__device__ __host__ Box (const Box< dim, S > &b)
 constructor from a Box of different type
 
Box< dim, T > & operator/= (const Point< dim, T > &p)
 Divide component wise each box points with a point.
 
Box< dim, T > operator* (const Point< dim, T > &p)
 Multiply component wise each box points with a point.
 
void set (std::initializer_list< T > p1, std::initializer_list< T > p2)
 Constructor from initializer list.
 
__device__ __host__ void setLow (int i, T val)
 set the low interval of the box
 
__device__ __host__ void setHigh (int i, T val)
 set the high interval of the box
 
__device__ __host__ T getLow (int i) const
 get the i-coordinate of the low bound interval of the box
 
__device__ __host__ T getHigh (int i) const
 get the high interval of the box
 
void setP1 (const grid_key_dx< dim > &p1)
 Set the point P1 of the box.
 
void setP2 (const grid_key_dx< dim > &p2)
 Set the point P2 of the box.
 
void setP1 (const Point< dim, T > &p1)
 Set the point P1 of the box.
 
void setP2 (const Point< dim, T > &p2)
 Set the point P2 of the box.
 
Box< dim, T > & getBox ()
 Get the box enclosing this Box.
 
const Box< dim, T > & getBox () const
 Get the box enclosing this Box.
 
typegetVector ()
 Get the internal boost::fusion::vector that store the data.
 
grid_key_dx< dim > getKP1 () const
 Get the point p1 as grid_key_dx.
 
grid_key_dx< dim > getKP2 () const
 Get the point p12 as grid_key_dx.
 
grid_key_dx< dim, int > getKP1int () const
 Get the point p1 as grid_key_dx.
 
grid_key_dx< dim, int > getKP2int () const
 Get the point p12 as grid_key_dx.
 
Point< dim, T > getP1 () const
 Get the point p1.
 
Point< dim, T > getP2 () const
 Get the point p2.
 
Box< dim, T > & operator-= (const Point< dim, T > &p)
 Translate the box.
 
Box< dim, T > & operator+= (const Point< dim, T > &p)
 Translate the box.
 
Box< dim, T > operator+ (const Point< dim, T > &p)
 Translate the box.
 
void expand (T(&exp)[dim])
 expand the box by a vector
 
void enlarge (const Box< dim, T > &gh)
 Enlarge the box with ghost margin.
 
template<typename S >
void enlarge_fix_P1 (Box< dim, S > &gh)
 Enlarge the box with ghost margin keeping fix the point P1.
 
void invalidate ()
 Invalidate the box.
 
void magnify (T mg)
 Magnify the box.
 
void magnify_fix_P1 (T mg)
 Magnify the box by a factor keeping fix the point P1.
 
void shrinkP2 (T sh)
 Shrink moving p2 of sh quantity (on each direction)
 
void enclose (const Box< dim, T > &en)
 Refine the box to enclose the given box and itself.
 
void contained (const Box< dim, T > &en, const bool reset_p1=true)
 Refine the box to be contained in the given box and itself.
 
void zero ()
 Set p1 and p2 to 0.
 
bool isContained (const Box< dim, T > &b) const
 Check if the box is contained.
 
__host__ __device__ bool isInside (const Point< dim, T > &p) const
 Check if the point is inside the box.
 
__device__ __host__ bool isInsideNP (const Point< dim, T > &p) const
 Check if the point is inside the region excluding the positive part.
 
template<typename bc_type >
__device__ __host__ bool isInsideNP_with_border (const Point< dim, T > &p, const Box< dim, T > &border, const bc_type(&bc)[dim]) const
 Check if the point is inside the region excluding the positive part.
 
bool isInsideNB (const Point< dim, T > &p) const
 Check if the point is inside the region excluding the borders.
 
bool isInside (const T(&p)[dim]) const
 Check if the point is inside the region (Border included)
 
template<typename KeyType >
__device__ __host__ bool isInsideKey (const KeyType &k) const
 Check if the point is inside the region (Border included)
 
bool isValid () const
 Check if the Box is a valid box P2 >= P1.
 
bool isValidN () const
 Check if the Box is a valid box P2 > P1.
 
void floorP1 ()
 Apply the ceil operation to the point P1.
 
void floorP2 ()
 Apply the ceil operation to the point P2.
 
void ceilP1 ()
 Apply the ceil operation to the point P1.
 
void ceilP2 ()
 Apply the ceil operation to the point P2.
 
void shrinkP2 (const Point< dim, T > &p)
 Shrink the point P2 by one vector.
 
void swap (Box< dim, T > &b)
 exchange the data of two boxes
 
template<typename Mem >
bool isInside (const encapc< 1, Point< dim, T >, Mem > &p)
 Check if the point is inside the region.
 
getRcut () const
 Get the worst extension.
 
getVolume () const
 Get the volume of the box.
 
getVolumeKey () const
 Get the volume spanned by the Box P1 and P2 interpreted as grid key.
 
Point< dim, T > middle () const
 Return the middle point of the box.
 
std::string toString () const
 Produce a string from the object.
 
bool operator== (const Box< dim, T > &b) const
 Compare two boxes.
 
bool operator!= (const Box< dim, T > &b) const
 Compare two boxes.
 

Additional Inherited Members

- Public Types inherited from Box< dim, T >
typedef boost::fusion::vector< T[dim], T[dim]> type
 boost fusion that store the point
 
typedef T btype
 type of the box
 
typedef int yes_is_box
 Indicate that this is a box.
 
- Static Public Member Functions inherited from Box< dim, T >
static T getVolumeKey (const T(&p1)[dim], const T(&p2)[dim])
 Get the volume spanned by the Box as grid_key_dx_iterator_sub.
 
static bool noPointers ()
 This structure has no internal pointers.
 
- Data Fields inherited from Box< dim, T >
type data
 It store the two point bounding the box.
 
- Static Public Attributes inherited from Box< dim, T >
static const unsigned int p1 = 0
 Low point.
 
static const unsigned int p2 = 1
 High point.
 
static const unsigned int max_prop = 2
 Maximum number of properties.
 
static const unsigned int dims = dim
 dimensionality of the box
 

Constructor & Destructor Documentation

◆ SpaceBox() [1/7]

template<unsigned int dim, typename T >
template<typename S >
SpaceBox< dim, T >::SpaceBox ( const Box< dim, S > &  b)
inline

constructor from a Box of different type

Parameters
bbox

Definition at line 57 of file SpaceBox.hpp.

◆ SpaceBox() [2/7]

template<unsigned int dim, typename T >
SpaceBox< dim, T >::SpaceBox ( const SpaceBox< dim, T > &  b)
inline

constructor from a SpaceBox

constructor from a SpaceBox

Parameters
bis the SpaceBox

Definition at line 73 of file SpaceBox.hpp.

◆ SpaceBox() [3/7]

template<unsigned int dim, typename T >
SpaceBox< dim, T >::SpaceBox ( const Box< dim, T > &  b)
inlineexplicit

constructor from a box

constructor from a box

Parameters
bis the box

Definition at line 86 of file SpaceBox.hpp.

◆ SpaceBox() [4/7]

template<unsigned int dim, typename T >
template<unsigned int dim_s, typename Mem >
SpaceBox< dim, T >::SpaceBox ( const encapc< dim_s, Box< dim, T >, Mem > &  box)
inline

Constructor from a Box.

Parameters
boxBox (Encapsulated)

Definition at line 97 of file SpaceBox.hpp.

◆ SpaceBox() [5/7]

template<unsigned int dim, typename T >
template<unsigned int dim_s, typename Mem >
SpaceBox< dim, T >::SpaceBox ( const encapc< dim_s, SpaceBox< dim, T >, Mem > &  box)
inline

Constructor from a Box.

Parameters
boxbox (Encapsulated)

Definition at line 113 of file SpaceBox.hpp.

◆ SpaceBox() [6/7]

template<unsigned int dim, typename T >
SpaceBox< dim, T >::SpaceBox ( std::initializer_list< T >  p1,
std::initializer_list< T >  p2 
)
inline

Constructor from initializer list.

Constructor from initializer list

Parameters
p1Low point, initialize as a list example {0.0,0.0,0.0}
p2High point, initialized as a list example {1.0,1.0,1.0}

Definition at line 133 of file SpaceBox.hpp.

◆ SpaceBox() [7/7]

template<unsigned int dim, typename T >
SpaceBox< dim, T >::SpaceBox ( )
inline

Default constructor.

Definition at line 209 of file SpaceBox.hpp.

Member Function Documentation

◆ mul() [1/2]

template<unsigned int dim, typename T >
template<typename S >
void SpaceBox< dim, T >::mul ( S(&)  sp[dim])
inline

multiply the space box with the coefficient defined in sp

It rescale the domain where the space box live

Parameters
spcoefficents

Definition at line 195 of file SpaceBox.hpp.

◆ mul() [2/2]

template<unsigned int dim, typename T >
void SpaceBox< dim, T >::mul ( T(&)  sp[dim])
inline

multiply the space box with the coefficient defined in sp

It rescale the domain where the space box live

Parameters
spcoefficents

Definition at line 178 of file SpaceBox.hpp.

◆ operator=()

template<unsigned int dim, typename T >
SpaceBox< dim, T > & SpaceBox< dim, T >::operator= ( const Box< dim, T > &  b)
inline

Define the box from a box shape.

Define the box from a box shape

Parameters
bis the box
Returns
itself

Definition at line 39 of file SpaceBox.hpp.

◆ rescale() [1/2]

template<unsigned int dim, typename T >
template<typename S >
void SpaceBox< dim, T >::rescale ( S(&)  sp[dim])
inline

Re-scale the space box with the coefficient defined in sp.

Parameters
sp

Definition at line 164 of file SpaceBox.hpp.

◆ rescale() [2/2]

template<unsigned int dim, typename T >
void SpaceBox< dim, T >::rescale ( T(&)  sp[dim])
inline

Re-scale the space box with the coefficient defined in sp.

Parameters
sp

Definition at line 152 of file SpaceBox.hpp.

◆ rnd()

template<unsigned int dim, typename T >
Point< dim, T > SpaceBox< dim, T >::rnd ( )
inline

Generate a random point inside the box.

Returns
a random point inside the box

Definition at line 209 of file SpaceBox.hpp.


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