diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp index 089cb8067e9948d474f1d52509cd70d351240e58..1bc78152c28895afa3096c66ff50b01392cc7ec9 100644 --- a/Mesh/meshGRegion.cpp +++ b/Mesh/meshGRegion.cpp @@ -1,4 +1,4 @@ -// $Id: meshGRegion.cpp,v 1.51 2008-06-12 10:04:23 geuzaine Exp $ +// $Id: meshGRegion.cpp,v 1.52 2008-06-12 12:23:29 geuzaine Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -607,10 +607,11 @@ void optimizeMeshGRegionNetgen::operator() (GRegion *gr) { if(gr->geomType() == GEntity::DiscreteVolume) return; - // don't optimize extruded meshes + // don't optimize transfinite or extruded meshes + if(gr->meshAttributes.Method == TRANSFINI) return; ExtrudeParams *ep = gr->meshAttributes.extrude; if(ep && ep->mesh.ExtrudeMesh && ep->geo.Mode == EXTRUDED_ENTITY) return; - + #if !defined(HAVE_NETGEN) Msg::Error("Netgen is not compiled in this version of Gmsh"); #else @@ -634,6 +635,7 @@ void optimizeMeshGRegionGmsh::operator() (GRegion *gr) if(gr->geomType() == GEntity::DiscreteVolume) return; // don't optimize extruded meshes + if(gr->meshAttributes.Method == TRANSFINI) return; ExtrudeParams *ep = gr->meshAttributes.extrude; if(ep && ep->mesh.ExtrudeMesh && ep->geo.Mode == EXTRUDED_ENTITY) return; diff --git a/Mesh/meshGRegionTransfinite.cpp b/Mesh/meshGRegionTransfinite.cpp index e3b75993d04ec0f77b29e1d094a14aa78845485c..b1a31ed09b5e520c1395be1040ece18327a2f9df 100644 --- a/Mesh/meshGRegionTransfinite.cpp +++ b/Mesh/meshGRegionTransfinite.cpp @@ -1,4 +1,4 @@ -// $Id: meshGRegionTransfinite.cpp,v 1.11 2008-05-06 21:11:48 geuzaine Exp $ +// $Id: meshGRegionTransfinite.cpp,v 1.12 2008-06-12 12:23:29 geuzaine Exp $ // // Copyright (C) 1997-2008 C. Geuzaine, J.-F. Remacle // @@ -129,7 +129,8 @@ double transfiniteHex(double f1, double f2, double f3, double f4, (1-u)*(1-v)*w*s5 + u*(1-v)*w*s6 + u*v*w*s7 + (1-u)*v*w*s8; } -MVertex *transfiniteHex(MVertex *f1, MVertex *f2, MVertex *f3, MVertex *f4, +MVertex *transfiniteHex(GRegion *gr, + MVertex *f1, MVertex *f2, MVertex *f3, MVertex *f4, MVertex *f5, MVertex *f6, MVertex *c1, MVertex *c2, MVertex *c3, MVertex *c4, MVertex *c5, MVertex *c6, MVertex *c7, MVertex *c8, @@ -156,7 +157,7 @@ MVertex *transfiniteHex(MVertex *f1, MVertex *f2, MVertex *f3, MVertex *f4, s1->z(), s2->z(), s3->z(), s4->z(), s5->z(), s6->z(), s7->z(), s8->z(), u, v, w); - return new MVertex(x, y, z); + return new MVertex(x, y, z, gr); } class GOrientedTransfiniteFace { @@ -385,7 +386,7 @@ int MeshTransfiniteVolume(GRegion *gr) f3 = c8; if(i && j && k && i != N_i - 1 && j != N_j - 1 && k != N_k - 1) { - MVertex *newv = transfiniteHex(f0, f1, f2, f3, f4, f5, + MVertex *newv = transfiniteHex(gr, f0, f1, f2, f3, f4, f5, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, c10, c11, s0, s1, s2, s3, s4, s5, s6, s7, u, v, w);