diff --git a/Common/CommandLine.cpp b/Common/CommandLine.cpp index 73011a72e12b1bbda025caff409cdd0a5dcb6c05..e8d8c1fae94f86f40caff3a37257d206c0632a48 100644 --- a/Common/CommandLine.cpp +++ b/Common/CommandLine.cpp @@ -36,6 +36,10 @@ #include "periodical.h" #endif +#if defined(HAVE_PARSER) +#include "Parser.h" +#endif + int GetGmshMajorVersion(){ return GMSH_MAJOR_VERSION; } int GetGmshMinorVersion(){ return GMSH_MINOR_VERSION; } int GetGmshPatchVersion(){ return GMSH_PATCH_VERSION; } @@ -123,7 +127,9 @@ std::vector<std::pair<std::string, std::string> > GetUsage() s.push_back(mp("-watch pattern", "Pattern of files to merge as they become available")); s.push_back(mp("-v int", "Set verbosity level")); s.push_back(mp("-nopopup", "Don't popup dialog windows in scripts")); - s.push_back(mp("-string \"string\"", "Parse option string at startup")); + s.push_back(mp("-string \"string\"", "Parse command string at startup")); + s.push_back(mp("-setnumber name value", "Set constant number name=value")); + s.push_back(mp("-setstring name value", "Set constant string name=value")); s.push_back(mp("-option file", "Parse option file at startup")); s.push_back(mp("-convert files", "Convert files into latest binary formats, then exit")); s.push_back(mp("-version", "Show version number")); @@ -542,6 +548,27 @@ void GetOptions(int argc, char *argv[]) else Msg::Fatal("Missing string"); } +#if defined(HAVE_PARSER) + else if(!strcmp(argv[i] + 1, "setstring")) { + i++; + if (i + 1 < argc && argv[i][0] != '-' && argv[i + 1][0] != '-') { + gmsh_yystringsymbols[argv[i]] = argv[i + 1]; + i += 2; + } + else + Msg::Fatal("Missing name and/or value for string definition"); + } + else if (!strcmp(argv[i]+1, "setnumber")) { + i++; + if (i + 1 < argc && argv[i][0] != '-' && argv[i + 1][0] != '-') { + std::vector<double> val(1, atof(argv[i + 1])); + gmsh_yysymbols[argv[i]].value = val; + i += 2; + } + else + Msg::Error("Missing name and/or value for number definition"); + } +#endif else if(!strcmp(argv[i] + 1, "option")) { i++; if(argv[i]) diff --git a/Common/OpenFile.cpp b/Common/OpenFile.cpp index 1ae820e65e1b9fa15ddc8849e21d143dcfdcb5f7..8f0729c94adee1a46a04d49c9877b0257bfa7d72 100644 --- a/Common/OpenFile.cpp +++ b/Common/OpenFile.cpp @@ -595,6 +595,7 @@ void ClearProject() #endif #if defined(HAVE_PARSER) gmsh_yysymbols.clear(); + gmsh_yystringsymbols.clear(); #endif for(int i = GModel::list.size() - 1; i >= 0; i--) delete GModel::list[i]; @@ -638,11 +639,15 @@ void OpenProject(const std::string &fileName, bool setWindowTitle) GModel::current()->destroy(); GModel::current()->getGEOInternals()->destroy(); // don't clear the parser variables if we just launched gmsh with the - // -string command line option + // -string, -setstring or -setnumber command line options #if defined(HAVE_PARSER) std::string c = Msg::GetCommandLineArgs(); - if(c.find("-string") == std::string::npos) + if(c.find("-string") == std::string::npos && + c.find("-setstring") == std::string::npos && + c.find("-setnumber") == std::string::npos){ gmsh_yysymbols.clear(); + gmsh_yystringsymbols.clear(); + } #endif } else{ @@ -650,6 +655,7 @@ void OpenProject(const std::string &fileName, bool setWindowTitle) // variables and add a new model #if defined(HAVE_PARSER) gmsh_yysymbols.clear(); + gmsh_yystringsymbols.clear(); #endif new GModel(); GModel::current(GModel::list.size() - 1); diff --git a/Parser/Gmsh.tab.cpp b/Parser/Gmsh.tab.cpp index ccb96bd4a5055d16464a19dac85c07b93bbc63d5..58e08c8290fe4b7dc99846a52cb093dd9c5f8aca 100644 --- a/Parser/Gmsh.tab.cpp +++ b/Parser/Gmsh.tab.cpp @@ -457,9 +457,9 @@ std::string gmsh_yyname; int gmsh_yyerrorstate = 0; int gmsh_yyviewindex = 0; std::map<std::string, gmsh_yysymbol> gmsh_yysymbols; +std::map<std::string, std::string> gmsh_yystringsymbols; // Static parser variables (accessible only in this file) -static std::map<std::string, std::string> gmsh_yystringsymbols; #if defined(HAVE_POST) static PViewDataList *ViewData; #endif diff --git a/Parser/Gmsh.y b/Parser/Gmsh.y index 62984d3820ffff45705100daae3bcdaa5be6ca3b..d3f0314008432f44ecf5fe751195e3a46f83e5aa 100644 --- a/Parser/Gmsh.y +++ b/Parser/Gmsh.y @@ -56,9 +56,9 @@ std::string gmsh_yyname; int gmsh_yyerrorstate = 0; int gmsh_yyviewindex = 0; std::map<std::string, gmsh_yysymbol> gmsh_yysymbols; +std::map<std::string, std::string> gmsh_yystringsymbols; // Static parser variables (accessible only in this file) -static std::map<std::string, std::string> gmsh_yystringsymbols; #if defined(HAVE_POST) static PViewDataList *ViewData; #endif diff --git a/Parser/Parser.h b/Parser/Parser.h index 9a9dc7a50a0a691f3f18bd02a575a035c6a9526d..d3e312eb00f24fe704c3e8e4454e0897028fe593 100644 --- a/Parser/Parser.h +++ b/Parser/Parser.h @@ -29,5 +29,6 @@ extern int gmsh_yyviewindex; extern std::string gmsh_yyname; extern int gmsh_yyerrorstate; extern std::map<std::string, gmsh_yysymbol> gmsh_yysymbols; +extern std::map<std::string, std::string> gmsh_yystringsymbols; #endif diff --git a/doc/texinfo/commandline.texi b/doc/texinfo/commandline.texi index b73a7d56eead560af70d827d531589d3e5e07dff..99be7c084c61edbe2834f3e03fdcdd4605c78e71 100644 --- a/doc/texinfo/commandline.texi +++ b/doc/texinfo/commandline.texi @@ -126,7 +126,11 @@ Set verbosity level @item -nopopup Don't popup dialog windows in scripts @item -string "string" -Parse option string at startup +Parse command string at startup +@item -setnumber name value +Set constant number name=value +@item -setstring name value +Set constant string name=value @item -option file Parse option file at startup @item -convert files diff --git a/doc/texinfo/opt_fields.texi b/doc/texinfo/opt_fields.texi index 44e86d2a4db95547fd1316d800a321ecb5cfaa8d..35f445cdd946afced5aa004c2d151c0bc86791ff 100644 --- a/doc/texinfo/opt_fields.texi +++ b/doc/texinfo/opt_fields.texi @@ -92,6 +92,14 @@ default value: @code{@{@}} Indices of faces in the geometric model for which a boundary layer is needed@* type: list@* default value: @code{@{@}} +@item FanNodesList +Indices of vertices in the geometric model for which a fan is created@* +type: list@* +default value: @code{@{@}} +@item FansList +Indices of edges in the geometric model for which a fan is created@* +type: list@* +default value: @code{@{@}} @item IntersectMetrics Intersect metrics of all faces@* type: integer@* @@ -104,10 +112,6 @@ default value: @code{@{@}} Generate recombined elements in the boundary layer@* type: integer@* default value: @code{0} -@item fan_angle -Threshold angle for creating a mesh fan in the boundary layer@* -type: float@* -default value: @code{30} @item hfar Element size far from the wall@* type: float@* @@ -347,7 +351,7 @@ default value: @code{1} @item Z2 Z coordinate of endpoint 2@* type: float@* -default value: @code{5.98152627002258e-154} +default value: @code{2.26338226046034e+146} @end table @item Gradient diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi index 79d6a0fc81634b3ce52952fb85628a7b8b318d18..0861c0fd837bf5e5f543dcaf87d48ddcf5407b00 100644 --- a/doc/texinfo/opt_mesh.texi +++ b/doc/texinfo/opt_mesh.texi @@ -209,6 +209,11 @@ Allow transfinite contraints to be modified for Blossom or by global mesh size f Default value: @code{0}@* Saved in: @code{General.OptionsFileName} +@item Mesh.NewtonConvergenceTestXYZ +Force inverse surface mapping algorithm (Newton-Raphson) to converge in real coordinates (experimental)@* +Default value: @code{0}@* +Saved in: @code{General.OptionsFileName} + @item Mesh.Format Mesh output format (1=msh, 2=unv, 10=automatic, 19=vrml, 27=stl, 30=mesh, 31=bdf, 32=cgns, 33=med, 40=ply2)@* Default value: @code{10}@* diff --git a/doc/texinfo/opt_plugin.texi b/doc/texinfo/opt_plugin.texi index 49975f1dbc8d20bb0dbd5829a945595cdbf16716..1b3b5ae20ab7590c8c69e952917f84305dc9b51f 100644 --- a/doc/texinfo/opt_plugin.texi +++ b/doc/texinfo/opt_plugin.texi @@ -417,6 +417,27 @@ Default value: @code{-1} Default value: @code{-1} @end table +@item Plugin(FaultZone) +Plugin(FaultZone) convert all the embedded lines of an existing surfacic mesh to flat quadrangles. Flat quadrangles represent joint elements suitable to model a fault zone with Code_Aster. + +`SurfaceTag' must be an existing plane surface containing embedded lines. Embedded lines must have been added to the surface via the command Line {} In Surface {}. The surface must be meshed with quadratic incomplete elements. + +`Thickness' is the thichness of the flat quadrangles. Set a value different to zero can be helpfull to check the connectivity. + +`Prefix' is the prefix of the name of physicals containing the new embedded. All physicals containing embedded lines are replaced by physicals containing the coresponding joint elements. +String options: +@table @code +@item Prefix +Default value: @code{"FAMI_"} +@end table +Numeric options: +@table @code +@item SurfaceTag +Default value: @code{1} +@item Thickness +Default value: @code{0} +@end table + @item Plugin(FieldFromAmplitudePhase) Plugin(FieldFromAmplitudePhase) builds a complex field 'u' from amplitude 'a' (complex) and phase 'phi' given in two different 'Views' u = a * exp(k*phi), with k the wavenumber. diff --git a/doc/texinfo/opt_solver.texi b/doc/texinfo/opt_solver.texi index 69294e6948f00d4dcd8ec7db9a7b2fd9722f37b7..f219e2637f461f3db871eabd7ff6fd05499f3359 100644 --- a/doc/texinfo/opt_solver.texi +++ b/doc/texinfo/opt_solver.texi @@ -204,6 +204,11 @@ Enable default solver plugins?@* Default value: @code{0}@* Saved in: @code{General.OptionsFileName} +@item Solver.ShowInvisibleParameters +Show all parameters, even those marked invisible@* +Default value: @code{0}@* +Saved in: @code{General.OptionsFileName} + @item Solver.Timeout Time (in seconds) before closing the socket if no connection is happening@* Default value: @code{5}@*