Select Git revision
fourierEdge.cpp
Forked from
gmsh / gmsh
Source project has a limited visibility.
GRegion.cpp 13.91 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>.
#include <sstream>
#include "GModel.h"
#include "GRegion.h"
#include "GFace.h"
#include "MTetrahedron.h"
#include "MHexahedron.h"
#include "MPrism.h"
#include "MPyramid.h"
#include "MTrihedron.h"
#include "MElementCut.h"
#include "GmshMessage.h"
#include "VertexArray.h"
#include "boundaryLayersData.h"
#include "GmshDefines.h"
GRegion::GRegion(GModel *model, int tag)
: GEntity (model, tag), compound(0)
{
resetMeshAttributes();
}
GRegion::~GRegion()
{
std::list<GFace*>::iterator it = l_faces.begin();
while(it != l_faces.end()){
(*it)->delRegion(this);
++it;
}
deleteMesh();
}
void GRegion::deleteMesh()
{
for(unsigned int i = 0; i < mesh_vertices.size(); i++) delete mesh_vertices[i];
mesh_vertices.clear();
transfinite_vertices.clear();
for(unsigned int i = 0; i < tetrahedra.size(); i++) delete tetrahedra[i];
tetrahedra.clear();
for(unsigned int i = 0; i < hexahedra.size(); i++) delete hexahedra[i];
hexahedra.clear();
for(unsigned int i = 0; i < prisms.size(); i++) delete prisms[i];
prisms.clear();
for(unsigned int i = 0; i < pyramids.size(); i++) delete pyramids[i];
pyramids.clear();
for(unsigned int i = 0; i < trihedra.size(); i++) delete trihedra[i];
trihedra.clear();
for(unsigned int i = 0; i < polyhedra.size(); i++) delete polyhedra[i];
polyhedra.clear();
deleteVertexArrays();
model()->destroyMeshCaches();
}
unsigned int GRegion::getNumMeshElements()
{
return tetrahedra.size() + hexahedra.size() + prisms.size() + pyramids.size() +
trihedra.size() + polyhedra.size();
}
unsigned int GRegion::getNumMeshParentElements()
{
unsigned int n = 0;
for(unsigned int i = 0; i < polyhedra.size(); i++)
if(polyhedra[i]->ownsParent())
n++;