From: Christian Van Wambeke Date: Fri, 11 Jul 2014 14:25:32 +0000 (+0200) Subject: mg-hybrid.exe_Linux_64_juillet2014 et maj doc X-Git-Tag: CASSIS_V1.0^0 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=3fa4a41965d61a9309b9a7c0e84f7bd0e6650a8b;p=plugins%2Fhybridplugin.git mg-hybrid.exe_Linux_64_juillet2014 et maj doc --- diff --git a/bin/CMakeLists.txt b/bin/CMakeLists.txt index a3e5fd4..96b328d 100755 --- a/bin/CMakeLists.txt +++ b/bin/CMakeLists.txt @@ -24,8 +24,9 @@ SALOME_CONFIGURE_FILE(VERSION.in VERSION INSTALL ${SALOME_INSTALL_BINS}) # temporary standalone project version of mg-hybrid.exe SET(_bin_SCRIPTS essai.bash - mg-hybrid.exe + mg-hybrid.bash mg-hybrid.exe_Linux_64_avril2014 + mg-hybrid.exe_Linux_64_juillet2014 ) diff --git a/bin/mg-hybrid.bash b/bin/mg-hybrid.bash new file mode 100755 index 0000000..2d8db9a --- /dev/null +++ b/bin/mg-hybrid.bash @@ -0,0 +1,45 @@ +#!/bin/bash + +#bash script mg-hybrid.bash +#we have renamed binary executable mg-hybrid.exe V1.3.0 as mg-hybrid.exe_Linux_64_juillet2014 +#to assume call of other beta-versions of distene mg-hybrid.exe code in standalone plugin HYBRIDPLUGIN sources +#and also assume licence file set to overriding licence file of other distene products ( HEXOTIC, GHS3D, etc... ) +#all that for for only one call of mg-hybrid.bash from salome plugin HYBRIDPLUGIN + +#echo "mg-hybrid.bash initial parameters are:" $1 $2 $3 $4 +echo "mg-hybrid.bash initial parameters are:" $* +#$0 is ignored + +if [[ $HOSTNAME == *hpcspot* ]] + then + HOST="hpcspot" + else + HOST="STANDART_CentOs6" #CentOs6 default +fi +echo "HOST" $HOST + +#we need to licence for mg-hybrid.exe +if [ $HOST == "hpcspot" ] + then + #env openmpi centos6.5 hpcspot.com + export DISTENE_LICENSE_FILE="Use global envvar: DLIM8VAR" + export DLIM8VAR="dlim8 1:1:29030@10.27.51.1/002590c96d98::8fbdc02cde090ca0369ad028e839065b97709e3c33e640eb6a3c2c7e40fe3985" + else + export DISTENE_LICENSE_FILE="Use global envvar: DLIM8VAR" + export DLIM8VAR="dlim8 1:1:29030@132.166.151.49/84c419b8::87af196ab2a936ab31363624539bff8096fbe1f3c83028c8f6b399b0a904ef85" +fi + +echo "mg-hybrid.bash juillet2014 assume licence file set:" +env | grep DLIM + +#mg-hybrid.exe_Linux_64_avril2014 --help +#mg-hybrid.exe_Linux_64_avril2014 $* +mg-hybrid.exe_Linux_64_juillet2014 $* + +#ldd `which mg-hybrid.exe_Linux_64_avril2014` +# linux-vdso.so.1 => (0x00007fff3bfff000) +# libpthread.so.0 => /lib64/libpthread.so.0 (0x000000358b400000) +# libm.so.6 => /lib64/libm.so.6 (0x000000358a800000) +# libc.so.6 => /lib64/libc.so.6 (0x000000358ac00000) +# /lib64/ld-linux-x86-64.so.2 (0x000000358a400000) + diff --git a/bin/mg-hybrid.exe b/bin/mg-hybrid.exe deleted file mode 100755 index 596ecc3..0000000 --- a/bin/mg-hybrid.exe +++ /dev/null @@ -1,21 +0,0 @@ -#!/bin/bash - -#bash script mg-hybrid.exe -#we have renamed binary executable mg-hybrid.exe V1.3.0 as mg-hybrid.exe_Linux_64_avril2014 -#to assume call of other beta-versions of distene mg-hybrid.exe code in standalone plugin HYBRIDPLUGIN sources -#and also assume licence file set to overriding licence file of other distene products ( HEXOTIC, GHS3D, etc... ) -#all that for for only one call of mg-hybrid.exe from salome plugin HYBRIDPLUGIN - -#echo "mg-hybrid.exe initial parameters are:" $1 $2 $3 $4 -echo "mg-hybrid.exe initial parameters are:" $* -#$0 is ignored - -export DISTENE_LICENSE_FILE="Use global envvar: DLIM8VAR" -export DLIM8VAR="dlim8 1:1:29030@132.166.151.49/84c419b8::87af196ab2a936ab31363624539bff8096fbe1f3c83028c8f6b399b0a904ef85" - -echo "mg-hybrid.exe assume licence file set:" -env | grep DLIM - -#mg-hybrid.exe_Linux_64_avril2014 --help -mg-hybrid.exe_Linux_64_avril2014 $* - diff --git a/bin/mg-hybrid.exe_Linux_64_juillet2014 b/bin/mg-hybrid.exe_Linux_64_juillet2014 new file mode 100755 index 0000000..8960612 Binary files /dev/null and b/bin/mg-hybrid.exe_Linux_64_juillet2014 differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle2.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle2.png new file mode 100644 index 0000000..ad7ffbe Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle2.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle4.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle4.png new file mode 100644 index 0000000..f080dfd Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle4.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle7.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle7.png new file mode 100644 index 0000000..4a5d56f Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_cylinder_couvercle7.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_enforced_meshes.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_enforced_meshes.png deleted file mode 100644 index 050152e..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_enforced_meshes.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_enforced_vertices.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_enforced_vertices.png deleted file mode 100644 index 3632608..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_enforced_vertices.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder1.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder1.png new file mode 100644 index 0000000..213aed1 Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder1.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all1.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all1.png new file mode 100644 index 0000000..32bd0cf Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all1.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all_layers_and_tetra.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all_layers_and_tetra.png new file mode 100644 index 0000000..0433b6d Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all_layers_and_tetra.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all_layers_and_tetra2.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all_layers_and_tetra2.png new file mode 100644 index 0000000..e8aa887 Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_all_layers_and_tetra2.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_pyramids.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_pyramids.png new file mode 100644 index 0000000..94a48fa Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_example_cylinder_pyramids.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_advanced.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_advanced.png new file mode 100644 index 0000000..4775dc8 Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_advanced.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_arguments.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_arguments.png new file mode 100644 index 0000000..175ab08 Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_arguments.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_layers.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_layers.png new file mode 100644 index 0000000..bee06f9 Binary files /dev/null and b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_hypothesis_layers.png differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_parameters_advanced.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_parameters_advanced.png deleted file mode 100644 index 6ad5f89..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_parameters_advanced.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_parameters_basic.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_parameters_basic.png deleted file mode 100644 index 450a4a1..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_parameters_basic.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot.png deleted file mode 100644 index a9e7b97..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf1.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf1.png deleted file mode 100644 index 8923f00..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf1.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf2.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf2.png deleted file mode 100644 index 5daf8a2..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf2.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf3.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf3.png deleted file mode 100644 index f6911ce..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf3.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf4.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf4.png deleted file mode 100644 index 46f12d8..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf4.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf5.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf5.png deleted file mode 100644 index 531b812..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf5.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf6.png b/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf6.png deleted file mode 100644 index 003f89f..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/hybrid_screenshot_enf6.png and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/images/image2.gif b/doc/salome/gui/HYBRIDPLUGIN/images/image2.gif deleted file mode 100755 index 1983513..0000000 Binary files a/doc/salome/gui/HYBRIDPLUGIN/images/image2.gif and /dev/null differ diff --git a/doc/salome/gui/HYBRIDPLUGIN/input/additional_hypo.doc b/doc/salome/gui/HYBRIDPLUGIN/input/additional_hypo.doc index 6500392..814c56b 100644 --- a/doc/salome/gui/HYBRIDPLUGIN/input/additional_hypo.doc +++ b/doc/salome/gui/HYBRIDPLUGIN/input/additional_hypo.doc @@ -1,18 +1,29 @@ /*! -\page additional_hypo_page Additional Hypotheses +\page additional_hypo_page Layers Meshes -\n Additional Hypotheses can be applied as a supplement to the -main hypotheses, introducing additional concepts to mesh creation. +\n Layers Meshes be used to set layers mesh generation. + +
  • +This hypothesis allows creation of layers of highly stretched hexahedra, prisms, and tetrahedra) near +mesh boundary (onto the wrap), which is beneficial for high quality viscous +computations. The elements constructed on the layer mesh faces are +actually hexahedra or prisms or tetraheda. +
  • + +For more detailed description of the this additional hypothesis please refer Distene MG-hybrid User's Guide +(not yet!, waiting for first official release). + + +\image html hybrid_cylinder_couvercle2.png "Example of a Hybrid 3D mesh with a layer (on top couvercle)" +\image html hybrid_cylinder_couvercle4.png "Example of a Hybrid 3D mesh with a layer (on top couvercle)" +\image html hybrid_cylinder_couvercle7.png "Example of a Hybrid 3D mesh with a layer (zoom on top couvercle)" + +\image html hybrid_example_cylinder_all1.png "Example of a Hybrid 3D mesh with a layer (blue sky at all wrap)" +\image html hybrid_example_cylinder_all_layers_and_tetra.png "Example of a Hybrid 3D mesh with a layer (at all wrap, zoom on top)" +\image html hybrid_example_cylinder_all_layers_and_tetra2.png "Example of a Hybrid 3D mesh with a layer (at all wrap, another zoom on top)" + +\image html hybrid_example_cylinder_pyramids.png "Example of a Hybrid 3D mesh with hexa_dominant (only visualize pyramids and hexahedra)" -One additional hypotheses can be used together with HYBRID algoritm: - -For more detailed description of the this additional hypothesis please refer SALOME Mesh User's Guide. */ diff --git a/doc/salome/gui/HYBRIDPLUGIN/input/hybrid_hypo.doc b/doc/salome/gui/HYBRIDPLUGIN/input/hybrid_hypo.doc index 4d7252d..36f1c37 100644 --- a/doc/salome/gui/HYBRIDPLUGIN/input/hybrid_hypo.doc +++ b/doc/salome/gui/HYBRIDPLUGIN/input/hybrid_hypo.doc @@ -6,57 +6,160 @@ HYBRID Parameters hypothesis works only with MeshGems-Hybrid algorithm. This algorithm is a commercial software. -To get a licence, visit http://www.distene.com/en/corp/eval-distene.html +To get a licence, visit http://www.distene.com and http://www.meshgems.com/ \tableofcontents \section hybrid_general_parameters General parameters -\image html hybrid_parameters_basic.png - -- Name - allows to define the name of the hypothesis (HYBRID -Parameters by default). - -This section is obsolete... TODO!!!... - -- Mesh holes - if checked, the algorithm will -create mesh in the holes inside a solid shape, else only the outermost -shape will be meshed. Volumic elements created within holes are bound -to the solid. - -- Make groups of domains - if checked, the algorithm will -create groups of just generated elements corresponding to each mesh -domain.
    - -- Optimization level - allows choosing the required -optimization level (higher level of optimisation provides better mesh, -but can be time-consuming): - - - none - - - light - - - medium (standard) - - - standard+ - - - strong +\image html hybrid_hypothesis_arguments.png + +- hybrid parameters - MeshGems-Hybrid is actually a project, waiting for a distene documentation. +See MeshGems-Hybrid help command: + +\verbatim + +$> mg-hybrid.exe_Linux_64_juillet2014 --help + + ============================================= + MG-Hybrid (b8) -- MeshGems 1.3-5 (July, 2014) + ============================================= + + Distene SAS + Campus Teratec + 2, rue de la Piquetterie + 91680 Bruyeres le Chatel + FRANCE + Phone: +33(0)970-650-219 Fax: +33(0)169-269-033 + EMail: + + Running MG-Hybrid (b8) (Copyright 2014 by Distene SAS) + date of run: 10-Jul-2014 AT 13:46:28 + running on : Linux 2.6.32-431.11.2.el6.centos.plus.x86_64 x86_64 + using modules: + MeshGems-Core 1.3-4 + + MeshGems is a Registered Trademark of Distene SAS + + + +MeshGems-Hybrid USAGE + mg-hybrid.exe_Linux_64_juillet2014 [-h] [-v ] [-i ] \ + [-o ] [--max_number_of_threads ] \ + [--boundary_layers_surface_ids ] \ + [--boundary_layers_imprint_ids ] \ + [--boundary_layers_subdomain_direction ] \ + [--height_of_the_first_layer ] \ + [--number_of_boundary_layers ] \ + [--boundary_layers_geometric_progression ] [--gradation ] \ + [--element_generation ] [--collision_mode ] \ + [--add_multinormals ] \ + [--multinormals_angle_threshold ] [--smooth_normals ] + + -h --help + prints this help. + + -v --verbose + Sets the verbosity level parameter. + The parameter must be in the range 0 to 10: + 0 : no detail + 10 : very detailed + Default: 3 + + -i --in + Sets the input file. + (MANDATORY) + + -o --out + Sets the output file. + If unset, _hybrid is appended to the input file basename. + Using an existing file is forbidden. + Using the same file as --in is forbidden. + + --max_number_of_threads + Sets the maximum number of threads to be used in parallel. + Default: 4 + + --boundary_layers_surface_ids + Comma separated list of surface references to be used to grow layer. + + --boundary_layers_imprint_ids + Comma separated list of surface references that are imprinted by + boundary layers. + + --boundary_layers_subdomain_direction + Describes whether the layers grow inwards or outwards. + if is: + 1 : means the layers grow inward + -1 : means the layers grow outward + Default: 1 + + --height_of_the_first_layer + Sets the height of the first layer. + + --number_of_boundary_layers + Sets the number of boundary layers. + Default: 1 + + --boundary_layers_geometric_progression + Sets the geometric progression for the boundary layer growth (layer + number i position is i * h * g^i). + Default: 1.0 + + --gradation + Sets the gradation for the boundary layer height. + Default: 2.0 + + --element_generation + Sets the element type for the mesh generation. + If is: + tetra-dominant : prismatic or hexahedral elements in the boundary + layers, tetrahedra in the remaining volume + hexa-dominant : prismatic or hexahedral elements in the boundary + layers, hexcore in the remaining volume + Default: tetra-dominant + + --collision_mode + Sets the behavior in case of collision between layers. + If is: + decrease : keep the number of desired layer but decrease the height + of the layers to avoid collision + stop : stop locally the layers generation; the number of desired + layer may not be respected + Default: skip + + --add_multinormals + Add extra normals at opening ridges and corners. + Default: no + + --multinormals_angle_threshold + Set the maximum angle between the multiple normals at opening ridges + . + Default: 30 + + --smooth_normals + Smooth normals at closed ridges and corners. + Default: no + + + ============================================================================== + MeshGems-Hybrid SOFTWARE 1.3-5 (July, 2014) + compiled Jul 4 2014 14:33:45 GMT + END OF SESSION + Copyright 2014 by Distene SAS All Rights Reserved + ============================================================================== + ( Distene SAS + Phone: +33(0)164-908-596 Fax: +33(0)169-269-033 + EMail: ) + +\endverbatim +\n \ref hybrid_top "Back to top" \section hybrid_advanced_parameters Advanced parameters -\image html hybrid_parameters_advanced.png - -\subsection memory_settings Memory settings - -- Maximum memory size - launches hybrid software with -work space limited to the specified amount of RAM, in Mbytes. If this option is -checked off, the software will be launched with 7O% of the total RAM space. - -- Initial memory size - starts hybrid software with -the specified amount of work space, in Mbytes. If this option is checked off, the -software will be started with 100 Megabytes of working space. +\image html hybrid_hypothesis_advanced.png \subsection log Logs and debug @@ -90,85 +193,22 @@ launch of the mesher. The log file (if any) is also kept if this option is check \subsection advanced_meshing_options Advanced meshing options -- Create new nodes - if this option is checked off, hybrid -tries to create tetrahedrons using only the nodes of the 2D mesh. - -- Remove the initial central point TetMesh-HYBRID adds an internal point -at the gravity centre of the bounding box to speed up and to simplify -the meshing process. However, it is possible to refrain from creating -this point by using the command line option -no initial central point. This can be -particularly useful to generate a volume mesh without internal points at all and in some rare cases -at the boundary regeneration phase when it is impossible to proceed -with the standard options -(for example, when one dimension of the domain is more than 20 times greater than the other two). -Use this option if the boundary regeneration has failed with the standard parameters and before using -the recovery version (command line option -C). -Note: when using this option, the speed of the meshing process may -decrease, and the quality may change. -Note: the boundary regeneration may fail with this option, in some rare cases. - -- Use boundary recovery version - enables using a -boundary recovery module which tries to -create volume meshes starting from very poor quality surface meshes -(almost flat triangles on the surface, high density propagation, -extreme aspect ratios, etc.) which fails with the standard version. The -resulting volume mesh will however most likely have a very poor -quality (poor aspect ratio of elements, tetrahedra with a very small -positive volume). - -- Use FEM correction - Applies finite-element correction by -replacing overconstrained elements where it is possible. At first the process -slices the overconstrained edges and at second the overconstrained -facets. This ensures that there are no edges with two boundary -vertices and that there are no facets with three boundary vertices. TetMesh-HYBRID gives the initial -and final overconstrained edges and facets. It also gives the facets -which have three edges on the boundary. -Note: when using this option, the speed of the meshing process may -decrease, quality may change, and the smallest volume may be smaller. -By default, the FEM correction is not used. - -- Volumic gradation - Defines the volumic ratio between 2 consecutive elements. -WARNING: Changing the default value of this parameter may dramatically decrease the quality of the resulting mesh. - - Option as text - allows to input in the command line any text -for hybrid, for example, advanced options. +for hybrid argument from "mg-hybrid.exe help", and future advanced options... \ref hybrid_top "Back to top" -\section hybrid_enforced_vertices Enforced vertices - -\image html hybrid_enforced_vertices.png - -HYBRID algorithm can locally make the mesh finer. It is possible to -define enforced vertices in the volume where the mesh will be detailed. -A node will be created at the enforced vertex coordinates. - -An enforced vertex is defined by: -- A vertex - - from GEOM (Vertex, Compound) - only avaible on meshes with no - geometry attached - - or from (x,y,z) cartesian coordinates -- A constant physical size -- If a group name is given, the created node will be added to the -group. If the group does not exist, it is created. - -\ref hybrid_top "Back to top" +\section hybrid_layers_meshes Layers meshes -\section hybrid_enforced_meshes Enforced Meshes +\image html hybrid_hypothesis_layers.png -\image html hybrid_enforced_meshes.png +HYBRID algorithm mesh layers on groups of faces. Pay attention: theses groups should be defined +into the shell mesh from a previous group defined in the geometry. -HYBRID algorithm can be forced by other meshes, sub-meshes or -groups. The constraint elements should be contained -entirely into the solid mesh. -- The constraint element types are: - - NODE - - EDGE - - FACE -- If a group name is given, the enforced elements will be added to -the group. If the group does not exist, it is created. +- If a group is added, their faces will be source to generate layers +the group. -
    See Also a sample TUI Script of the \ref tui_hybrid "creation of a MG-Hybrid hypothesis", including enforced vertices and meshes. +
    See Also a sample TUI Script of the \ref tui_hybrid "creation of a MG-Hybrid hypothesis". \ref hybrid_top "Back to top" diff --git a/doc/salome/gui/HYBRIDPLUGIN/input/hybridplugin_python_interface.doc b/doc/salome/gui/HYBRIDPLUGIN/input/hybridplugin_python_interface.doc index dd43d17..66bed12 100644 --- a/doc/salome/gui/HYBRIDPLUGIN/input/hybridplugin_python_interface.doc +++ b/doc/salome/gui/HYBRIDPLUGIN/input/hybridplugin_python_interface.doc @@ -11,8 +11,6 @@ Below you can see an example of usage of the HYBRIDPluginBuilder Python API for \anchor tui_hybrid -# \ref tui_hybrid_basic --# \ref tui_hybrid_enforced_vertices --# \ref tui_hybrid_enforced_meshes \section tui_hybrid_basic Construction of Mesh using MG-Hybrid algorithm @@ -21,31 +19,6 @@ Below you can see an example of usage of the HYBRIDPluginBuilder Python API for \tui_script{hybriddemo.py} -\image html hybrid_screenshot.png Hybrid mesh without hypothesis - -\ref tui_hybrid "Back to top" - -\section tui_hybrid_enforced_vertices Adding enforced vertices - -

    Example of enforced vertices with HYBRID algorithm:

    -\tui_script{hybrid_enfvert.py} - - -\image html hybrid_screenshot_enf1.png Hybrid mesh with enforced vertex -\image html hybrid_screenshot_enf2.png Hybrid mesh with enforced vertex from GEOM vertex - -\ref tui_hybrid "Back to top" - -\section tui_hybrid_enforced_meshes Adding enforced mesh - -

    Example of enforced meshes with HYBRID algorithm:

    -\tui_script{hybrid_enfmesh.py} - -\image html hybrid_screenshot_enf3.png -\image html hybrid_screenshot_enf4.png -\image html hybrid_screenshot_enf5.png -\image html hybrid_screenshot_enf6.png - \ref tui_hybrid "Back to top" */ diff --git a/doc/salome/gui/HYBRIDPLUGIN/input/index.doc b/doc/salome/gui/HYBRIDPLUGIN/input/index.doc index 47b61c4..3a81751 100644 --- a/doc/salome/gui/HYBRIDPLUGIN/input/index.doc +++ b/doc/salome/gui/HYBRIDPLUGIN/input/index.doc @@ -2,11 +2,14 @@ \mainpage Introduction to HYBRIDPLUGIN -\b HYBRIDPLUGIN plugin is destined for: -- Meshing 3D geometric entities: volumes are split into tetrahedral and hexaheral elements. -- Generating 3D meshes from 2D meshes (triangles and quadrangles), working without geometrical objects. - -\note HYBRIDPLUGIN plugin used MeshGems-Hybrid commercial mesher and require a +\b HYBRIDPLUGIN plugin is designed for: +- Meshing 3D geometric closed entities: volumes are split into tetrahedra, +pyramids, prisms and hexahedra elements. +- Generating 3D meshes from 2D meshes of a wrap (triangles and quadrangles), +working with geometrical objects for setting and meshing layers. + +\note HYBRIDPLUGIN plugin used MeshGems-Hybrid commercial mesher, +which is a project in 2014, and require a license to be used within the Mesh module. To manage parameters of the HYBRIDPLUGIN use \subpage hybrid_hypo_page and \subpage additional_hypo_page @@ -15,7 +18,7 @@ Also all HYBRIDPLUGIN functionalities are accessible via \subpage hybridplugin_python_interface_page "HYBRIDPLUGIN Python interface". -\image html image2.gif "Example of a tetrahedral 3D mesh" +\image html hybrid_example_cylinder_all1.png "Example of a Hybrid 3D mesh with a layer (sky blue on all wrap, clipped for view)" */ diff --git a/src/GUI/HYBRIDPluginGUI_HypothesisCreator.cxx b/src/GUI/HYBRIDPluginGUI_HypothesisCreator.cxx index f905e21..4e2b814 100644 --- a/src/GUI/HYBRIDPluginGUI_HypothesisCreator.cxx +++ b/src/GUI/HYBRIDPluginGUI_HypothesisCreator.cxx @@ -1245,9 +1245,8 @@ void HYBRIDPluginGUI_HypothesisCreator::onAddEnforcedMesh() // groupName = myGlobalGroupName->text().toStdString(); if (boost::trim_copy(groupName).empty()) - groupName = ""; + groupName = "LayersGroup"; //have to be not empty until non used - int elementType = myEnfMeshConstraint->currentIndex(); diff --git a/src/HYBRIDPlugin/HYBRIDPlugin_HYBRID.cxx b/src/HYBRIDPlugin/HYBRIDPlugin_HYBRID.cxx index 769bea3..eb34543 100644 --- a/src/HYBRIDPlugin/HYBRIDPlugin_HYBRID.cxx +++ b/src/HYBRIDPlugin/HYBRIDPlugin_HYBRID.cxx @@ -862,7 +862,7 @@ static bool readGMFFile(const char* theFile, &id[iElem*tabRef[token]+4], &id[iElem*tabRef[token]+5], &id[iElem*tabRef[token]+6], &id[iElem*tabRef[token]+7], &domainID[iElem]); } std::cout << tmpStr << std::endl; - std::cout << std::endl; + //std::cout << std::endl; switch (token) { case GmfCorners: @@ -1105,8 +1105,8 @@ static bool writeGMFFile(const char* theMesh std::map, std::string> & enfVerticesWithGroup, HYBRIDPlugin_Hypothesis::THYBRIDEnforcedVertexCoordsValues & theEnforcedVertices) { - MESSAGE("writeGMFFile w/o geometry"); - std::cout << "!!!!!!!!!!!writeGMFFile w/o geometry..." << std::endl; + //MESSAGE("writeGMFFile w/o geometry"); + std::cout << "!!!!!!!!!!!writeGMFFile w/o geometry for HYBRIDPLUGIN..." << std::endl; std::string tmpStr; int idx, idxRequired = 0, idxSol = 0; //tabg each dummyint @@ -1489,17 +1489,17 @@ static bool writeGMFFile(const char* theMesh // GmfVertices - std::cout << "Begin writting required nodes in GmfVertices" << std::endl; + std::cout << "Begin writing required nodes in GmfVertices" << std::endl; std::cout << "Nb vertices: " << theOrderedNodes.size() << std::endl; GmfSetKwd(idx, GmfVertices, theOrderedNodes.size()); //theOrderedNodes.size()+solSize) for (hybridNodeIt = theOrderedNodes.begin();hybridNodeIt != theOrderedNodes.end();++hybridNodeIt) { GmfSetLin(idx, GmfVertices, (*hybridNodeIt)->X(), (*hybridNodeIt)->Y(), (*hybridNodeIt)->Z(), dummyint1); } - std::cout << "End writting required nodes in GmfVertices" << std::endl; + std::cout << "End writing required nodes in GmfVertices" << std::endl; if (requiredNodes + solSize) { - std::cout << "Begin writting in req and sol file" << std::endl; + std::cout << "Begin writing in req and sol file" << std::endl; aNodeGroupByHybridId.resize( requiredNodes + solSize ); idxRequired = GmfOpenMesh(theRequiredFileName, GmfWrite, GMFVERSION, GMFDIMENSION); if (!idxRequired) { @@ -1542,7 +1542,7 @@ static bool writeGMFFile(const char* theMesh #endif usedEnforcedNodes++; } - std::cout << "End writting in req and sol file" << std::endl; + std::cout << "End writing in req and sol file" << std::endl; } int nedge[2], ntri[3]; @@ -1611,8 +1611,9 @@ static bool writeGMFFile(const char* theMesh GmfSetLin(idx, GmfTriangles, ntri[0], ntri[1], ntri[2], dummyint5); aFaceGroupByHybridId[k] = ""; } - if ( !theHelper.GetMesh()->HasShapeToMesh() ) - SMESHUtils::FreeVector( theFaceByHybridId ); + + if ( !theHelper.GetMesh()->HasShapeToMesh() ) SMESHUtils::FreeVector( theFaceByHybridId ); + std::cout << "Enforced triangles size " << theKeptEnforcedTriangles.size() << std::endl; if (theKeptEnforcedTriangles.size()) { for(elemSetIt = theKeptEnforcedTriangles.begin() ; elemSetIt != theKeptEnforcedTriangles.end() ; ++elemSetIt,++k) { elem = (*elemSetIt); @@ -3092,7 +3093,7 @@ bool HYBRIDPlugin_HYBRID::Compute(SMESH_Mesh& theMesh, // cmd += TCollection_AsciiString(" --required_vertices ") + aGenericNameRequired; cmd += TCollection_AsciiString(" --out ") + aResultFileName; if ( !_logInStandardOutput ) - cmd += TCollection_AsciiString(" &>" ) + aLogFileName; // dump into file + cmd += TCollection_AsciiString(" 1>" ) + aLogFileName; // dump into file std::cout << std::endl; std::cout << "Hybrid execution with geometry..." << std::endl; @@ -3359,7 +3360,7 @@ bool HYBRIDPlugin_HYBRID::Compute(SMESH_Mesh& theMesh, // cmd += TCollection_AsciiString(" --required_vertices ") + aGenericNameRequired; cmd += TCollection_AsciiString(" --out ") + aResultFileName; if ( !_logInStandardOutput ) - cmd += TCollection_AsciiString(" &>" ) + aLogFileName; // dump into file + cmd += TCollection_AsciiString(" 1> " ) + aLogFileName; // dump into file std::cout << std::endl; std::cout << "Hybrid execution w/o geometry..." << std::endl; diff --git a/src/HYBRIDPlugin/HYBRIDPlugin_Hypothesis.cxx b/src/HYBRIDPlugin/HYBRIDPlugin_Hypothesis.cxx index 3f9f83b..6354f5f 100644 --- a/src/HYBRIDPlugin/HYBRIDPlugin_Hypothesis.cxx +++ b/src/HYBRIDPlugin/HYBRIDPlugin_Hypothesis.cxx @@ -1742,6 +1742,8 @@ std::string HYBRIDPlugin_Hypothesis::CommandToRun(const HYBRIDPlugin_Hypothesis* bool p_mat = ( hyp->myTextOption.find("--multinormals_angle_threshold ") != std::string::npos ); bool p_sn = ( hyp->myTextOption.find("--smooth_normals ") != std::string::npos ); + bool nolayers = false; + //help mode if ( p_h ) { cmd += " --help "; @@ -1772,8 +1774,14 @@ std::string HYBRIDPlugin_Hypothesis::CommandToRun(const HYBRIDPlugin_Hypothesis* // cmd += 0; //TODO hyp->my; //} - cmd += " --boundary_layers_surface_ids 6 "; //as triangles of enforced mesh - + //no layers? + if ( !p_nobl && hyp ) { + if ( hyp->myNbOfBoundaryLayers < 1 ) nolayers = true; + } + if ( !p_hotfl && hyp ) { + if ( hyp->myHeightFirstLayer < 1e-50 ) nolayers = true; + } + if ( !p_blsd && hyp ) { if ( hyp->myBoundaryLayersGrowth >= 0 && hyp->myBoundaryLayersGrowth <= 1 ) { const char* value[] = { "1" , "-1" }; @@ -1789,13 +1797,21 @@ std::string HYBRIDPlugin_Hypothesis::CommandToRun(const HYBRIDPlugin_Hypothesis* if ( !p_nobl && hyp ) { cmd += " --number_of_boundary_layers "; - cmd += hyp->myNbOfBoundaryLayers; + if ( nolayers ) + cmd += 0; + else + cmd += hyp->myNbOfBoundaryLayers; } if ( !p_blgp && hyp ) { cmd += " --boundary_layers_geometric_progression "; cmd += hyp->myBoundaryLayersProgression; } + + //--boundary_layers_surface_ids 5 #for all wrap shell + //--boundary_layers_surface_ids 6 #for all enfMeshList + //TODO if ( !nolayers ) cmd += " --boundary_layers_surface_ids 5,6 "; //as all wrap shell and triangles of enforced mesh + if ( !nolayers ) cmd += " --boundary_layers_surface_ids 6 "; //as triangles of enforced mesh if ( !p_eg && hyp ) { if ( hyp->myElementGeneration >= 0 && hyp->myElementGeneration <= 1 ) { @@ -1873,7 +1889,8 @@ std::string HYBRIDPlugin_Hypothesis::GetFileName(const HYBRIDPlugin_Hypothesis* std::string HYBRIDPlugin_Hypothesis::GetExeName() { - return "mg-hybrid.exe"; + //call mg-hybrid.bash is script which assumes new project version(s) mg-hybrid.exe_Linux_64_avril2014 and special? licence. + return "mg-hybrid.bash"; } //================================================================================