Select Git revision
Forked from
gmsh / gmsh
Source project has a limited visibility.
GFace.h 12.68 KiB
// Gmsh - Copyright (C) 1997-2015 C. Geuzaine, J.-F. Remacle
//
// See the LICENSE.txt file for license information. Please report all
// bugs and problems to the public mailing list <gmsh@geuz.org>.
#ifndef _GFACE_H_
#define _GFACE_H_
#include <list>
#include <string>
#include <vector>
#include <map>
#include "GEntity.h"
#include "GPoint.h"
#include "GEdgeLoop.h"
#include "SPoint2.h"
#include "SVector3.h"
#include "Pair.h"
#include "Numeric.h"
#include "boundaryLayersData.h"
class MElement;
class MTriangle;
class MQuadrangle;
class MPolygon;
class ExtrudeParams;
class GFaceCompound;
struct surface_params
{
double radius, radius2, height, cx, cy, cz;
};
class GRegion;
// A model face.
class GFace : public GEntity
{
protected:
// edge loops might replace what follows (list of all the edges of
// the face + directions)
std::list<GEdge *> l_edges;
std::list<int> l_dirs;
GRegion *r1, *r2;
mean_plane meanPlane;
std::list<GEdge *> embedded_edges;
std::list<GVertex *> embedded_vertices;
GFaceCompound *compound; // this model edge belongs to a compound
// replace edges (for gluing) for specific modelers, we have to
// re-create internal data
virtual void replaceEdgesInternal(std::list<GEdge*> &){}
BoundaryLayerColumns _columns;
public: // this will become protected or private
std::list<GEdgeLoop> edgeLoops;
// periodic counterparts of edges
std::map<int,int> edgeCounterparts;
// encoding of an explicit affine transformation for period meshing
std::vector<double> affineTransform;
// an array with additional vertices that are supposed to exist in
// the final mesh of the model face. This can be used for boundary
// layer meshes or when using Lloyd-like smoothing algorithms those
// vertices are classifed on this GFace, their type is MFaceVertex.
// After mesh generation, those are moved to the mesh_vertices array
std::vector<MVertex*> additionalVertices;