32 #ifndef BGEOT_CONVEX_STRUCTURE_H__ 
   33 #define BGEOT_CONVEX_STRUCTURE_H__ 
   52 #  define MAX_FACES_PER_CV 31 
   54   class convex_structure;
 
   59   typedef std::vector<pconvex_structure> convex_structure_faces_ct;
 
   60   typedef std::vector<short_type>               convex_ind_ct;
 
   77     convex_structure_faces_ct  faces_struct;
 
   78     std::vector<convex_ind_ct> faces;
 
   79     convex_ind_ct              dir_points_;
 
   86     mutable std::map<std::vector<short_type>, convex_ind_ct> intersection_points;
 
   93     inline dim_type  
dim()
        const { 
return Nc;   }
 
  111     const convex_ind_ct &
 
  117     { 
return dir_points_; }
 
  122     { 
return faces_struct; }
 
  141       if (pprod1) *pprod1 = prod_a;
 
  142       if (pprod2) *pprod2 = prod_b;
 
  143       return prod_a ? true : 
false;
 
  146       : auto_basic(auto_b), prod_a(0), prod_b(0)
 
  147     { DAL_STORED_OBJECT_DEBUG_CREATED(
this, 
"Convex structure"); }
 
  148     virtual ~convex_structure()
 
  149     { DAL_STORED_OBJECT_DEBUG_DESTROYED(
this, 
"Convex structure"); }
 
  151     convex_structure() : auto_basic(false), prod_a(0), prod_b(0)
 
  152     { DAL_STORED_OBJECT_DEBUG_CREATED(
this, 
"Convex structure"); }
 
  153     friend std::shared_ptr<convex_structure> new_convex_structure();
 
  173   { 
if (cv->auto_basic) 
return cv; 
else return cv->basic_pcvs; }
 
  175   inline std::shared_ptr<convex_structure> new_convex_structure()
 
  176   { 
return std::make_shared<convex_structure>(
false); }
 
  186                              const convex_structure &cv);
 
defines and typedefs for namespace bgeot
 
Multivariate polynomials.
 
tensor class, used in mat_elem computations.
 
const convex_ind_ct & ind_points_of_face(short_type i) const
Give an array of the indexes of the vertices of a face.
 
const convex_structure_faces_ct & faces_structure() const
Give a pointer array on the structures of the faces.
 
dim_type dim() const
Dimension of the convex.
 
const convex_ind_ct & ind_common_points_of_faces(const std::vector< short_type > &ftab) const
Give an array of the indexes of the vertices at the intersection of a set of faces.
 
const convex_ind_ct & ind_dir_points() const
Return "direct" points indexes.
 
friend pconvex_structure basic_structure(pconvex_structure cv)
Original structure (if concerned)
 
short_type nb_points_of_face(short_type i) const
Number of vertices of a face.
 
short_type nb_points() const
Number of vertices.
 
short_type nb_faces() const
Number of faces.
 
bool is_product(pconvex_structure *pprod1=0, pconvex_structure *pprod2=0) const
Return true if the convex structure is indeed a direct product of two convex structures.
 
ref_convex_ind_ct ind_dir_points_of_face(short_type i) const
Return "direct" points indexes for a given face.
 
base class for static stored objects
 
indexed array reference (given a container X, and a set of indexes I, this class provides a pseudo-co...
 
Stores interdependent getfem objects.
 
Provide some simple pseudo-containers.
 
pconvex_structure prism_incomplete_P2_structure()
Give a pointer on the 3D quadratic incomplete prism structure.
 
pconvex_structure pyramid_Q2_incomplete_structure()
Give a pointer on the 3D quadratic incomplete pyramid structure.
 
gmm::uint16_type short_type
used as the common short type integer in the library
 
pconvex_structure pyramid_QK_structure(dim_type k)
Give a pointer on the 3D pyramid structure for a degree k = 1 or 2.
 
std::ostream & operator<<(std::ostream &o, const convex_structure &cv)
Print the details of the convex structure cvs to the output stream o.
 
std::shared_ptr< const convex_structure > pconvex_structure
Pointer on a convex structure description.
 
pconvex_structure parallelepiped_structure(dim_type nc, dim_type k)
Give a pointer on the structures of a parallelepiped of dimension d.
 
pconvex_structure generic_dummy_structure(dim_type nc, size_type n, short_type nf)
Generic convex with n global nodes.
 
bool operator==(const pconvex_structure &p1, const pconvex_structure &p2)
Stored objects must be compared by keys, because there is a possibility that they are duplicated in s...
 
pconvex_structure Q2_incomplete_structure(dim_type nc)
Give a pointer on the structures of a incomplete Q2 quadrilateral/hexahedral of dimension d = 2 or 3.
 
pconvex_structure prism_P1_structure(dim_type nc)
Give a pointer on the structures of a prism of dimension d.
 
pconvex_structure simplex_structure(dim_type nc)
Give a pointer on the structures of a simplex of dimension d.
 
size_t size_type
used as the common size type in the library
 
pconvex_structure polygon_structure(short_type nbt)
Give a pointer on the structures of a polygon with n vertex.
 
pconvex_structure convex_product_structure(pconvex_structure a, pconvex_structure b)
Give a pointer on the structures of a convex which is the direct product of the convexes represented ...
 
pconvex_structure basic_structure(pconvex_structure cv)
Original structure (if concerned)