From e3f6ff7a0b481a47b385c9e9d220c2be593d1552 Mon Sep 17 00:00:00 2001 From: Jean-Francois Remacle <jean-francois.remacle@uclouvain.be> Date: Tue, 24 Nov 2009 09:01:03 +0000 Subject: [PATCH] fixed transfinite edge mesh for curves that have parameters not in [0,1] : nasty ... --- Mesh/meshGEdge.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp index 02cbe26290..78b5cc06cc 100644 --- a/Mesh/meshGEdge.cpp +++ b/Mesh/meshGEdge.cpp @@ -104,7 +104,7 @@ static double F_Lc(GEdge *ge, double t) } -static double F_Transfinite(GEdge *ge, double t) +static double F_Transfinite(GEdge *ge, double t_) { double length = ge->length(); if(length == 0.0){ @@ -112,12 +112,17 @@ static double F_Transfinite(GEdge *ge, double t) return 1.; } - SVector3 der = ge->firstDer(t) ; + SVector3 der = ge->firstDer(t_) ; double d = norm(der); double coef = ge->meshAttributes.coeffTransfinite; int type = ge->meshAttributes.typeTransfinite; int nbpt = ge->meshAttributes.nbPointsTransfinite; + Range<double> bounds = ge->parBounds(0); + double t_begin = bounds.low(); + double t_end = bounds.high(); + double t = (t_ - t_begin)/(t_end-t_begin); + double val; if(coef <= 0.0 || coef == 1.0) { @@ -281,7 +286,7 @@ void meshGEdge::operator() (GEdge *ge) N = 1; } else if(ge->meshAttributes.Method == MESH_TRANSFINITE){ - a = Integration(ge, t_begin, t_end, F_Transfinite, Points, 1.e-8); + a = Integration(ge, t_begin, t_end, F_Transfinite, Points, CTX::instance()->mesh.lcIntegrationPrecision); N = ge->meshAttributes.nbPointsTransfinite; } else{ -- GitLab