Select Git revision
boundaryLayersData.cpp
-
Christophe Geuzaine authoredChristophe Geuzaine authored
gmshFace.cpp 7.32 KiB
// $Id: gmshFace.cpp,v 1.24 2006-11-26 04:36:46 geuzaine Exp $
//
// Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle
//
// This program is free software; you can redistribute it and/or modify
// it under the terms of the GNU General Public License as published by
// the Free Software Foundation; either version 2 of the License, or
// (at your option) any later version.
//
// This program is distributed in the hope that it will be useful,
// but WITHOUT ANY WARRANTY; without even the implied warranty of
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
// GNU General Public License for more details.
//
// You should have received a copy of the GNU General Public License
// along with this program; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
// USA.
//
// Please report all bugs and problems to <gmsh@geuz.org>.
#include "GModel.h"
#include "gmshVertex.h"
#include "gmshEdge.h"
#include "gmshFace.h"
#include "Geo.h"
#include "GeoInterpolation.h"
#include "Numeric.h"
#include "Message.h"
extern Mesh *THEM;
gmshFace::gmshFace(GModel *m, Surface *face)
: GFace(m, face->Num), s(face)
{
for(int i = 0 ; i < List_Nbr(s->Generatrices); i++){
Curve *c;
List_Read(s->Generatrices, i, &c);
GEdge *e = m->edgeByTag(abs(c->Num));
if(!e) throw;
l_edges.push_back(e);
e->addFace(this);
if(c->Num > 0) l_dirs.push_back(1);
else l_dirs.push_back(-1);
}
// always compute and store the mean plane for plane surfaces
// (simply using the bounding vertices)
if(s->Typ == MSH_SURF_PLAN) computeMeanPlane();
if(s->EmbeddedCurves){
for(int i = 0 ; i < List_Nbr(s->EmbeddedCurves); i++){
Curve *c;
List_Read(s->EmbeddedCurves, i, &c);
GEdge *e = m->edgeByTag(abs(c->Num));
if(!e) throw;
embedded_edges.push_back(e);
}
}
if(s->EmbeddedPoints){
for(int i = 0 ; i < List_Nbr(s->EmbeddedPoints); i++){
Vertex *v;
List_Read(s->EmbeddedPoints, i, &v);
GVertex *gv = m->vertexByTag(v->Num);
if(!gv) throw;
embedded_vertices.push_back(gv);
}
}
meshAttributes.recombine = s->Recombine;
meshAttributes.recombineAngle = s->RecombineAngle;