diff --git a/Common/Context.cpp b/Common/Context.cpp index a705736136a4207a7fcb7f63b873ddb1ccc2534d..2fbfe7d5b762d5e770c5791b295402134278acb7 100644 --- a/Common/Context.cpp +++ b/Common/Context.cpp @@ -108,6 +108,7 @@ CTX::CTX() : gamepad(0) mesh.minCircPoints = mesh.order = 0; mesh.secondOrderLinear = mesh.secondOrderIncomplete = 0; mesh.preserveNumberingMsh2 = 1; + mesh.ignorePeriodicity= 1; mesh.lightLines = 2; } diff --git a/Common/Context.h b/Common/Context.h index 94b93e8be2ce7c5ab44e94135733e59a3ee6a91b..79db244c1561a833cee67b8450bc84dbf47cc45d 100644 --- a/Common/Context.h +++ b/Common/Context.h @@ -60,6 +60,7 @@ struct contextMeshOptions { int ignorePartBound; int NewtonConvergenceTestXYZ; int preserveNumberingMsh2; + int ignorePeriodicity; }; struct contextGeometryOptions { diff --git a/Common/DefaultOptions.h b/Common/DefaultOptions.h index bce2c93adf1d9981dda324788d6ec5750ebddf53..bab4d50592c36abae36c2089f268e95b03265db1 100644 --- a/Common/DefaultOptions.h +++ b/Common/DefaultOptions.h @@ -1197,6 +1197,9 @@ StringXNumber MeshOptions_Number[] = { { F|O, "PreserveNumberingMsh2" , opt_mesh_preserve_numbering_msh2 , 0. , "Preserve element numbering in MSH2 format (will break meshes with multiple " "physical groups for a single elementary entity)"}, + { F|O, "IgnorePeriodicity" , opt_mesh_ignore_periodicity , 0. , + "Ignore alignement of periodic boundaries when reading the mesh " + "(used by ParaView plugin)"}, #if defined(HAVE_BLOSSOM) { F|O, "RecombinationAlgorithm" , opt_mesh_algo_recombine , 1 , #else diff --git a/Common/Options.cpp b/Common/Options.cpp index 8b0ac7c3c724705226937dcc7c1ed6b84808509a..f46a3b78c1fbbe74bb4aeb317056c2399407fdf5 100644 --- a/Common/Options.cpp +++ b/Common/Options.cpp @@ -6547,6 +6547,14 @@ double opt_mesh_preserve_numbering_msh2(OPT_ARGS_NUM) return CTX::instance()->mesh.preserveNumberingMsh2; } +double opt_mesh_ignore_periodicity(OPT_ARGS_NUM) +{ + if(action & GMSH_SET) + CTX::instance()->mesh.ignorePeriodicity = (int) val; + return CTX::instance()->mesh.ignorePeriodicity; +} + + double opt_solver_listen(OPT_ARGS_NUM) { if(action & GMSH_SET) diff --git a/Common/Options.h b/Common/Options.h index f0555d2db9147444032c07ba80ff255f23e97a1b..e4c9568d86d9090ff83198bf3d28619fbf6fceb0 100644 --- a/Common/Options.h +++ b/Common/Options.h @@ -541,6 +541,7 @@ double opt_mesh_partition_metis_edge_matching(OPT_ARGS_NUM); double opt_mesh_partition_metis_refine_algorithm(OPT_ARGS_NUM); double opt_mesh_clip(OPT_ARGS_NUM); double opt_mesh_ignore_part_bound(OPT_ARGS_NUM); +double opt_mesh_ignore_periodicity(OPT_ARGS_NUM); double opt_mesh_preserve_numbering_msh2(OPT_ARGS_NUM); double opt_solver_listen(OPT_ARGS_NUM); double opt_solver_timeout(OPT_ARGS_NUM); diff --git a/Geo/GModelIO_MSH2.cpp b/Geo/GModelIO_MSH2.cpp index 304fc3cdb8cfc6bc8770aa1cb8ebe051665c723a..2ed71d51eb6f95657d71e9eb40bc143563bffe68 100644 --- a/Geo/GModelIO_MSH2.cpp +++ b/Geo/GModelIO_MSH2.cpp @@ -719,7 +719,7 @@ int GModel::_readMSH2(const std::string &name) fclose(fp); - alignPeriodicBoundaries(); + if(!CTX::instance()->mesh.ignorePeriodicity) alignPeriodicBoundaries(); return postpro ? 2 : 1; } diff --git a/doc/texinfo/opt_mesh.texi b/doc/texinfo/opt_mesh.texi index 0ba66946b08f1d18df018f60ccaefa40e25e6dad..0174e07b41c8cd9253b36e0c29a66a72ffd68e75 100644 --- a/doc/texinfo/opt_mesh.texi +++ b/doc/texinfo/opt_mesh.texi @@ -524,6 +524,11 @@ Preserve element numbering in MSH2 format (will break meshes with multiple physi Default value: @code{0}@* Saved in: @code{General.OptionsFileName} +@item Mesh.IgnorePeriodicity +Ignore alignement of periodic boundaries when reading the mesh (used by ParaView plugin)@* +Default value: @code{0}@* +Saved in: @code{General.OptionsFileName} + @item Mesh.RecombinationAlgorithm Mesh recombination algorithm (0=standard, 1=blossom)@* Default value: @code{1}@*