Forked from
gmsh / gmsh
8437 commits behind the upstream repository.
-
PA Beaufort authoredPA Beaufort authored
discreteFace.h 2.93 KiB
// Gmsh - Copyright (C) 1997-2016 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@onelab.info>.
#ifndef _DISCRETE_FACE_H_
#define _DISCRETE_FACE_H_
#include "GModel.h"
#include "GFace.h"
#include "discreteEdge.h"
#include "MEdge.h"
#include "meshPartitionObjects.h"
#include "meshPartitionOptions.h"
#include "meshPartition.h"
#include "MTriangle.h"
#include "MEdge.h"
#include "MLine.h"
#include <stdlib.h>
class discreteDiskFace;
class triangulation;
class discreteFace : public GFace {
// FIXME we should at the end use a
// mesh() function that is specific to
// discreteFace
// we should also SAVE those data's
public:
discreteFace(GModel *model, int num);
virtual ~discreteFace() {}
void checkAndFixOrientation();
void setupDiscreteVertex(GVertex*,MVertex*,std::set<MVertex*>*);
void setupDiscreteEdge(discreteEdge*,std::vector<MLine*>,std::set<MVertex*>*);
void splitDiscreteEdge(GEdge*,GVertex*,discreteEdge*[2]);
void updateTopology(std::vector<triangulation*>&);
void split(triangulation*,std::vector<triangulation*>&,int);
void fillHoles(triangulation*);
void bisectionEdg(triangulation*);
bool checkEdges(triangulation*,std::map<double,std::vector<MEdge> >&,std::map<MEdge,double,Less_Edge>&);
bool checkEdgesBis(triangulation*,std::map<double,std::vector<MEdge> >&,std::map<MEdge,double,Less_Edge>&);
MEdge lepp(triangulation*,MEdge);
void refineTriangles(triangulation*,MEdge,std::vector<MEdge>&);
void updateEd2refine(triangulation*,std::map<MEdge,double,Less_Edge>&,std::vector<MEdge>&,std::map<double,std::vector<MEdge> >&);
void updateEd2refineBis(triangulation*,std::map<MEdge,double,Less_Edge>&,std::vector<MEdge>&,std::map<double,std::vector<MEdge> >&);
void addTriangle(triangulation*,MTriangle*);
GPoint point(double par1, double par2) const;
SPoint2 parFromPoint(const SPoint3 &p, bool onSurface=true) const;
SVector3 normal(const SPoint2 ¶m) const;
double curvatureMax(const SPoint2 ¶m) const;
double curvatures(const SPoint2 ¶m, SVector3 *dirMax, SVector3 *dirMin,
double *curvMax, double *curvMin) const;
virtual bool haveParametrization() { return getCompound(); }
GEntity::GeomType geomType() const { return DiscreteSurface; }
virtual Pair<SVector3, SVector3> firstDer(const SPoint2 ¶m) const;
virtual void secondDer(const SPoint2 ¶m,
SVector3 *dudu, SVector3 *dvdv, SVector3 *dudv) const;
void setBoundEdges(GModel *gm, std::vector<int> tagEdges);
void findEdges(std::map<MEdge, std::vector<int>, Less_Edge > &map_edges);
void writeGEO(FILE *fp);
void createGeometry();
void gatherMeshes();
virtual void mesh (bool verbose);
void printAtlasMesh(std::vector<MElement*>, int);
void printAtlasMesh(discreteDiskFace*, int);
std::vector<discreteDiskFace*> _atlas;
std::vector<GFace*> _CAD;
};
#endif