diff --git a/Common/Context.h b/Common/Context.h index 6dcb7ff5844d6d051587d32ea1e300da9f70b973..858fc3e8e9ed06ea62f754ac3052e7cbbddd27a6 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -181,7 +181,7 @@ public : int format, nb_smoothing, algo2d, algo3d, algo_recombine; int order, second_order_linear, second_order_incomplete; int smooth_internal_edges, c1_continuity; - int min_circ_points; + int min_circ_points, min_curv_points; int constrained_bgmesh, lc_from_curvature; double normals, tangents, explode; int color_carousel; diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index 21571b2c14d5564688b945f88e4de670fddd8f28..0a9c4d0476b2aff17bc67823dc29bb288ba19561 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -956,6 +956,8 @@ StringXNumber MeshOptions_Number[] = { { F|O, "MinimumCirclePoints" , opt_mesh_min_circ_points, 7. , "Minimum number of points used to mesh a circle" }, + { F|O, "MinimumCurvePoints" , opt_mesh_min_curv_points, 3. , + "Minimum number of points used to mesh a (non-straight) curve" }, { F|O, "MshBinary" , opt_mesh_msh_binary , 0. , "Write MSH files in binary format?" }, { F|O, "MshFileVersion" , opt_mesh_msh_file_version , 2.0 , diff --git a/Common/Options.cpp b/Common/Options.cpp index 8fe9d671d17b79112b9ac2b98ac6cd306b4a8889..7a53f9232e51574f78a410e54e7df3f0836481dc 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -1,4 +1,4 @@ -// $Id: Options.cpp,v 1.364 2007-10-03 19:40:40 geuzaine Exp $ +// $Id: Options.cpp,v 1.365 2007-10-14 09:51:17 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -4865,6 +4865,13 @@ double opt_mesh_min_circ_points(OPT_ARGS_NUM) return CTX.mesh.min_circ_points; } +double opt_mesh_min_curv_points(OPT_ARGS_NUM) +{ + if(action & GMSH_SET) + CTX.mesh.min_curv_points = (int)val; + return CTX.mesh.min_curv_points; +} + double opt_mesh_constrained_bgmesh(OPT_ARGS_NUM) { if(action & GMSH_SET) diff --git a/Common/Options.h b/Common/Options.h index e99a647f6027ca2b15435fe8661bddee3979cd22..2449d31589e8292e8114541ef6897c64aaedf995 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -476,6 +476,7 @@ double opt_mesh_algo3d(OPT_ARGS_NUM); double opt_mesh_lc_integration_precision(OPT_ARGS_NUM); double opt_mesh_recombine_algo(OPT_ARGS_NUM); double opt_mesh_min_circ_points(OPT_ARGS_NUM); +double opt_mesh_min_curv_points(OPT_ARGS_NUM); double opt_mesh_constrained_bgmesh(OPT_ARGS_NUM); double opt_mesh_order(OPT_ARGS_NUM); double opt_mesh_c1(OPT_ARGS_NUM); diff --git a/Geo/GModelIO_F.cpp b/Geo/GModelIO_F.cpp index 5c5b75550fff12989c50f47555133b8490c8a7d8..42dfd8acfb4f756568fbf3e4d66217546c0c599d 100644 --- a/Geo/GModelIO_F.cpp +++ b/Geo/GModelIO_F.cpp @@ -93,7 +93,7 @@ int GModel::readF(const std::string &filename) int GModel::readF(const std::string &fn) { - Msg(GERROR,"Gmsh has to be compiled with Fourier Model support to load %s", + Msg(GERROR,"Gmsh has to be compiled with Fourier Model support to load '%s'", fn.c_str()); return 0; } diff --git a/Geo/GModelIO_MED.cpp b/Geo/GModelIO_MED.cpp index bd8f39cbc34f24565c0ce99b49ce317256adf840..c7b1f4f8fccdc25d2b4d35f27ffde7ee70f2e712 100644 --- a/Geo/GModelIO_MED.cpp +++ b/Geo/GModelIO_MED.cpp @@ -1,4 +1,4 @@ -// $Id: GModelIO_MED.cpp,v 1.5 2007-05-03 09:07:07 geuzaine Exp $ +// $Id: GModelIO_MED.cpp,v 1.6 2007-10-14 09:51:17 geuzaine Exp $ // // Copyright (C) 1997-2006 C. Geuzaine, J.-F. Remacle // @@ -381,7 +381,7 @@ int GModel::writeMED(const std::string &name) int GModel::writeMED(const std::string &name) { - Msg(GERROR,"Gmsh has to be compiled with MED support to write %s", + Msg(GERROR,"Gmsh has to be compiled with MED support to write '%s'", name.c_str()); return 0; } diff --git a/Geo/GModelIO_OCC.cpp b/Geo/GModelIO_OCC.cpp index c061d4673f404edc1e6f3ca2a4628e748930d10e..02638bef6203e9420256e6896d06d7f57b1f2069 100644 --- a/Geo/GModelIO_OCC.cpp +++ b/Geo/GModelIO_OCC.cpp @@ -1,4 +1,4 @@ -// $Id: GModelIO_OCC.cpp,v 1.21 2007-09-04 13:47:01 remacle Exp $ +// $Id: GModelIO_OCC.cpp,v 1.22 2007-10-14 09:51:17 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -467,21 +467,21 @@ void GModel::deleteOCCInternals() int GModel::readOCCSTEP(const std::string &fn) { - Msg(GERROR,"Gmsh has to be compiled with OpenCascade support to load %s", + Msg(GERROR,"Gmsh has to be compiled with OpenCascade support to load '%s'", fn.c_str()); return 0; } int GModel::readOCCIGES(const std::string &fn) { - Msg(GERROR,"Gmsh has to be compiled with OpenCascade support to load %s", + Msg(GERROR,"Gmsh has to be compiled with OpenCascade support to load '%s'", fn.c_str()); return 0; } int GModel::readOCCBREP(const std::string &fn) { - Msg(GERROR,"Gmsh has to be compiled with OpenCascade support to load %s", + Msg(GERROR,"Gmsh has to be compiled with OpenCascade support to load '%s'", fn.c_str()); return 0; } diff --git a/Geo/OCCEdge.cpp b/Geo/OCCEdge.cpp index 2e077ae935bd32aa3b766f3a24924f48fecd79b1..67e1e0072854befcb0c393886d51cd15a56ba52f 100644 --- a/Geo/OCCEdge.cpp +++ b/Geo/OCCEdge.cpp @@ -1,4 +1,4 @@ -// $Id: OCCEdge.cpp,v 1.23 2007-10-08 13:13:23 geuzaine Exp $ +// $Id: OCCEdge.cpp,v 1.24 2007-10-14 09:51:17 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -186,22 +186,20 @@ GEntity::GeomType OCCEdge::geomType() const int OCCEdge::minimumMeshSegments() const { - if(geomType() == Line || geomType() == Unknown) + if(geomType() == Line) return GEdge::minimumMeshSegments(); else - return 2; // always put at least one mid-point on non-straight lines + return CTX.mesh.min_curv_points - 1; } int OCCEdge::minimumDrawSegments() const { - int n = GEdge::minimumDrawSegments(); - if(geomType() == Line) - return n; + return GEdge::minimumDrawSegments(); else if(geomType() == Circle || geomType() == Ellipse) return CTX.geom.circle_points; else - return 20 * n; + return 20 * GEdge::minimumDrawSegments(); } double OCCEdge::curvature(double par) const diff --git a/Geo/gmshEdge.cpp b/Geo/gmshEdge.cpp index 502b5cde33531a060626fefc208bc817ff0935ce..630467e2207847f6fc6c6ff598cdb3945c6f8314 100644 --- a/Geo/gmshEdge.cpp +++ b/Geo/gmshEdge.cpp @@ -1,4 +1,4 @@ -// $Id: gmshEdge.cpp,v 1.39 2007-10-08 13:13:23 geuzaine Exp $ +// $Id: gmshEdge.cpp,v 1.40 2007-10-14 09:51:17 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -120,11 +120,13 @@ GEntity::GeomType gmshEdge::geomType() const int gmshEdge::minimumMeshSegments () const { - if(geomType() == Circle || geomType() == Ellipse) + if(geomType() == Line) + return GEdge::minimumMeshSegments(); + else if(geomType() == Circle || geomType() == Ellipse) return (int)(fabs(c->Circle.t1 - c->Circle.t2) * (double)CTX.mesh.min_circ_points / Pi) - 1; else - return GEdge::minimumMeshSegments(); + return CTX.mesh.min_curv_points - 1; } int gmshEdge::minimumDrawSegments () const @@ -132,7 +134,7 @@ int gmshEdge::minimumDrawSegments () const int n = List_Nbr(c->Control_Points) - 1; if(!n) n = GEdge::minimumDrawSegments(); - if(geomType() == Line && ! c->geometry) + if(geomType() == Line && !c->geometry) return n; else if(geomType() == Circle || geomType() == Ellipse) return CTX.geom.circle_points; diff --git a/benchmarks/2d/tresse2.geo b/benchmarks/2d/tresse2.geo index c10a3f035620131faacc558be23b0ac70172e1d2..88949293cde0067851e13999422a1e1317482606 100644 --- a/benchmarks/2d/tresse2.geo +++ b/benchmarks/2d/tresse2.geo @@ -42,11 +42,11 @@ For jj In {1:nn} num = (2*jj-1)*10000+ii; Spline(num) = tab1[]; - Extrude Line { num , {0,0,1}, {0,0,0}, nw*angm }{Layers{5,num,1};Recombine;} ; + Extrude Line { num , {0,0,1}, {0,0,0}, nw*angm }{Layers{5};Recombine;} ; num = (2*jj)*10000+ii; Spline(num) = tab2[]; - Extrude Line { num , {0,0,1}, {0,0,0}, nw*angm }{Layers{5,num,1};Recombine;} ; + Extrude Line { num , {0,0,1}, {0,0,0}, nw*angm }{Layers{5};Recombine;} ; EndFor diff --git a/doc/TODO b/doc/TODO index 77facc8a916f5d12519ee5a62cfca9ade2e4f6b0..73c1ebd7b4659aeb38b92b7633baa07ba94be8d1 100644 --- a/doc/TODO +++ b/doc/TODO @@ -1,4 +1,10 @@ -$Id: TODO,v 1.64 2007-10-02 19:26:42 geuzaine Exp $ +$Id: TODO,v 1.65 2007-10-14 09:51:17 geuzaine Exp $ + +******************************************************************** + +Add a global "transparency slider" for the mesh; if value != 1, fill a +global triangle vertex array in GModel instead of in each separate +entity, and sort like in post-processing. ******************************************************************** @@ -6,6 +12,10 @@ add way to invert element orientation (per element or per surface) ******************************************************************** +add "make uninstall" + +******************************************************************** + Add list of recently loaded files in the GUI ******************************************************************** diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi index 683a1309b20c70e8220503ef748efd6d16dfc71d..7322f75f1bb8b14231f8142c1d7e19cf6ba4f0ea 100644 --- a/doc/texinfo/opt_mesh.texi +++ b/doc/texinfo/opt_mesh.texi @@ -174,6 +174,11 @@ Minimum number of points used to mesh a circle@* Default value: @code{7}@* Saved in: @code{General.OptionsFileName} +@item Mesh.MinimumCurvePoints +Minimum number of points used to mesh a (non-straight) curve@* +Default value: @code{3}@* +Saved in: @code{General.OptionsFileName} + @item Mesh.MshBinary Write MSH files in binary format?@* Default value: @code{0}@*