From: nicolas Date: Thu, 20 Jun 2013 15:32:31 +0000 (+0000) Subject: Introduction de la doculmentation en anglais - phase 3 X-Git-Tag: V7_3_0a1~76 X-Git-Url: http://git.salome-platform.org/gitweb/?a=commitdiff_plain;h=f5e49913942af634c4cddfe20dc791666db625a8;p=modules%2Fhomard.git Introduction de la doculmentation en anglais - phase 3 --- diff --git a/configure.ac b/configure.ac index b4bab8aa..d13a49d8 100644 --- a/configure.ac +++ b/configure.ac @@ -412,9 +412,12 @@ AC_OUTPUT([ \ bin/Makefile \ bin/VERSION \ doc/Makefile \ - doc/conf.py \ - HOMARD_version.h \ - src/Makefile \ + doc/en/conf.py \ + doc/en/Makefile \ + doc/fr/conf.py \ + doc/fr/Makefile \ + HOMARD_version.h \ + src/Makefile \ src/HOMARD_I/Makefile \ src/HOMARD/Makefile \ src/HOMARDGUI/Makefile \ diff --git a/doc/Makefile.am b/doc/Makefile.am index 4dd8283c..afc1c8be 100644 --- a/doc/Makefile.am +++ b/doc/Makefile.am @@ -17,108 +17,4 @@ # See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com # -# File : Makefile.in -# Author : Vasily Rusyaev (Open Cascade NN) -# Module : doc -# -include $(top_srcdir)/adm_local/unix/make_common_starter.am - -if SPHINX_IS_OK - -homarddoc_DATA=html/index.html html/index_en.html -html/index.html:$(RSTFILES) dummy -html/index_en.html:$(RSTFILES_EN) dummy - -dummy: - make htm - make latex - -endif - -homarddocdir=$(docdir)/gui/HOMARD - -SPHINXOPTS = -SOURCEDIR = $(srcdir) -SPHINXBUILD = sphinx-build -PAPEROPT_a4 = -D latex_paper_size=a4 -ALLSPHINXOPTS = -d doctrees $(PAPEROPT_a4) $(SPHINXOPTS) $(SOURCEDIR) - -htm: - mkdir -p html doctrees - $(SPHINXBUILD) -c $(top_builddir)/doc -b html $(ALLSPHINXOPTS) html - @echo - @echo "Build finished. The HTML pages are in html." - -latex: - mkdir -p latex doctrees - $(SPHINXBUILD) -c $(top_builddir)/doc -b latex $(ALLSPHINXOPTS) latex - @echo - @echo "Build finished. The pages are in latex." - @echo "Go into latex and apply twice : pdflatex HOMARD.tex to produce HOMARD.pdf" - -RSTFILES= \ -index.rst \ -glossaire.rst \ -gui_create_boundary.rst \ -gui_create_case.rst \ -gui_create_hypothese.rst \ -gui_create_iteration.rst \ -gui_create_zone.rst \ -gui_homard.rst \ -gui_usage.rst \ -gui_mesh_info.rst \ -intro.rst \ -tui_create_boundary.rst \ -tui_create_case.rst \ -tui_create_hypothese.rst \ -tui_create_iteration.rst \ -tui_create_zone.rst \ -tui_homard.rst \ -tui_usage.rst \ -tutorials.rst - -RSTFILES_EN= \ -index_en.rst \ -glossaire_en.rst \ -gui_create_boundary_en.rst \ -gui_create_case_en.rst \ -gui_create_hypothese_en.rst \ -gui_create_iteration_en.rst \ -gui_create_zone_en.rst \ -gui_homard_en.rst \ -gui_usage_en.rst \ -gui_mesh_info_en.rst \ -intro_en.rst \ -tui_create_boundary_en.rst \ -tui_create_case_en.rst \ -tui_create_hypothese_en.rst \ -tui_create_iteration_en.rst \ -tui_create_zone_en.rst \ -tui_homard_en.rst \ -tui_usage_en.rst \ -tutorials_en.rst - -EXTRA_DIST+= $(RSTFILES) images files - -usr_docs: - make install-data-local - -docs: usr_docs - -install-data-local: - $(INSTALL) -d $(DESTDIR)$(homarddocdir) - if test -d "html"; then b=; else b="$(srcdir)/"; fi; \ - if test -d $$b"html"; then cp -rf $$b"html"/* $(DESTDIR)$(homarddocdir); fi; - -uninstall-local: - chmod -R +w $(DESTDIR)$(homarddocdir) - rm -rf $(DESTDIR)$(homarddocdir)/* - -clean-local: - -rm -rf doctrees - if test -d "html"; then rm -rf html ; fi - if test -d "latex"; then rm -rf latex ; fi - -dist-hook: - if test -d "html"; then b=; else b="$(srcdir)/"; fi; \ - if test -d $$b"html"; then cp -rf $$b"html" $(distdir) ; fi +SUBDIRS = en fr diff --git a/doc/conf.py.in b/doc/conf.py.in deleted file mode 100644 index c2d218e5..00000000 --- a/doc/conf.py.in +++ /dev/null @@ -1,198 +0,0 @@ -# -*- coding: iso-8859-1 -*- -# -# HOMARD documentation build configuration file, created by -# sphinx-quickstart on Tue Jan 5 08:51:14 2010. -# -# This file is execfile()d with the current directory set to its containing dir. -# -# Note that not all possible configuration values are present in this -# autogenerated file. -# -# All configuration values have a default; values that are commented out -# serve to show the default. - -import sys, os - -# If extensions (or modules to document with autodoc) are in another directory, -# add these directories to sys.path here. If the directory is relative to the -# documentation root, use os.path.abspath to make it absolute, like shown here. -#sys.path.append(os.path.abspath('.')) - -# -- General configuration ----------------------------------------------------- - -# Add any Sphinx extension module names here, as strings. They can be extensions -# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. -extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig'] - -# Add any paths that contain templates here, relative to this directory. -templates_path = ['_templates'] - -# The suffix of source filenames. -source_suffix = '.rst' - -# The encoding of source files. -source_encoding = 'iso-8859-1' - -# The master toctree document. -master_doc = 'index' - -# General information about the project. -project = u'HOMARD' -copyright = u'1996, 2011, 2013, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' - -# The version info for the project you're documenting, acts as replacement for -# |version| and |release|, also used in various other places throughout the -# built documents. -# -# The short X.Y version. -version = '@SHORT_VERSION@' -# The full version, including alpha/beta/rc tags. -release = '@VERSION@' - -# The language for content autogenerated by Sphinx. Refer to documentation -# for a list of supported languages. -#language = None - -# There are two options for replacing |today|: either, you set today to some -# non-false value, then it is used: -#today = '' -# Else, today_fmt is used as the format for a strftime call. -#today_fmt = '%B %d, %Y' - -# List of documents that shouldn't be included in the build. -#unused_docs = [] - -# List of directories, relative to source directory, that shouldn't be searched -# for source files. -exclude_trees = ['_build'] - -# The reST default role (used for this markup: `text`) to use for all documents. -#default_role = None - -# If true, '()' will be appended to :func: etc. cross-reference text. -#add_function_parentheses = True - -# If true, the current module name will be prepended to all description -# unit titles (such as .. function::). -#add_module_names = True - -# If true, sectionauthor and moduleauthor directives will be shown in the -# output. They are ignored by default. -#show_authors = False - -# The name of the Pygments (syntax highlighting) style to use. -pygments_style = 'sphinx' - -# A list of ignored prefixes for module index sorting. -#modindex_common_prefix = [] - - -# -- Options for HTML output --------------------------------------------------- - -# The theme to use for HTML and HTML Help pages. Major themes that come with -# Sphinx are currently 'default' and 'sphinxdoc'. -html_theme = 'default' - -# Theme options are theme-specific and customize the look and feel of a theme -# further. For a list of options available for each theme, see the -# documentation. -#html_theme_options = {} - -# Add any paths that contain custom themes here, relative to this directory. -#html_theme_path = [] - -# The name for this set of Sphinx documents. If None, it defaults to -# " v documentation". -#html_title = None - -# A shorter title for the navigation bar. Default is the same as html_title. -#html_short_title = None - -# The name of an image file (relative to this directory) to place at the top -# of the sidebar. -#html_logo = None - -# The name of an image file (within the static path) to use as favicon of the -# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 -# pixels large. -#html_favicon = None - -# Add any paths that contain custom static files (such as style sheets) here, -# relative to this directory. They are copied after the builtin static files, -# so a file named "default.css" will overwrite the builtin "default.css". -html_static_path = ['_static'] - -# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, -# using the given strftime format. -#html_last_updated_fmt = '%b %d, %Y' - -# If true, SmartyPants will be used to convert quotes and dashes to -# typographically correct entities. -#html_use_smartypants = True - -# Custom sidebar templates, maps document names to template names. -#html_sidebars = {} - -# Additional templates that should be rendered to pages, maps page names to -# template names. -#html_additional_pages = {} - -# If false, no module index is generated. -#html_use_modindex = True - -# If false, no index is generated. -#html_use_index = True - -# If true, the index is split into individual pages for each letter. -#html_split_index = False - -# If true, links to the reST sources are added to the pages. -#html_show_sourcelink = True - -# If true, an OpenSearch description file will be output, and all pages will -# contain a tag referring to it. The value of this option must be the -# base URL from which the finished HTML is served. -#html_use_opensearch = '' - -# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). -#html_file_suffix = '' - -# Output file base name for HTML help builder. -htmlhelp_basename = 'HOMARDdoc' - - -# -- Options for LaTeX output -------------------------------------------------- - -# The paper size ('letter' or 'a4'). -#latex_paper_size = 'letter' - -# The font size ('10pt', '11pt' or '12pt'). -#latex_font_size = '10pt' - -# Grouping the document tree into LaTeX files. List of tuples -# (source start file, target name, title, author, documentclass [howto/manual]). -latex_documents = [ - ('index', 'HOMARD.tex', u'HOMARD Documentation', - u'G. NICOLAS et T. FOUQUET', 'manual'), -] - -# The name of an image file (relative to this directory) to place at the top of -# the title page. -#latex_logo = None - -# For "manual" documents, if this is true, then toplevel headings are parts, -# not chapters. -#latex_use_parts = False - -# Additional stuff for the LaTeX preamble. -#latex_preamble = '' - -# Documents to append as an appendix to all manuals. -#latex_appendices = [] - -# If false, no module index is generated. -#latex_use_modindex = True - - -# Example configuration for intersphinx: refer to the Python standard library. -intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/en/Makefile.am b/doc/en/Makefile.am new file mode 100644 index 00000000..ae1dfb85 --- /dev/null +++ b/doc/en/Makefile.am @@ -0,0 +1,100 @@ +# Copyright (C) 2011-2013 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +homarddoc_langue=en +# +include $(top_srcdir)/adm_local/unix/make_common_starter.am + +if SPHINX_IS_OK + +homarddoc_DATA=html/index.html +html/index.html:$(RSTFILES) dummy + +dummy: + make htm + make latex + +endif + +homarddocdir=$(docdir)/gui/HOMARD/$(homarddoc_langue) + +SPHINXOPTS = +SOURCEDIR = $(srcdir) +SPHINXBUILD = sphinx-build +PAPEROPT_a4 = -D latex_paper_size=a4 +ALLSPHINXOPTS = -d doctrees $(PAPEROPT_a4) $(SPHINXOPTS) $(SOURCEDIR) + +htm: + mkdir -p html doctrees + $(SPHINXBUILD) -c $(top_builddir)/doc/$(homarddoc_langue) -b html $(ALLSPHINXOPTS) html + @echo + @echo "Build finished. The HTML pages are in html." + +latex: + mkdir -p latex doctrees + $(SPHINXBUILD) -c $(top_builddir)/doc/$(homarddoc_langue) -b latex $(ALLSPHINXOPTS) latex + @echo + @echo "Build finished. The pages are in latex." + @echo "Go into latex and apply twice : pdflatex HOMARD.tex to produce HOMARD.pdf" + +RSTFILES= \ +index.rst \ +glossaire.rst \ +gui_create_boundary.rst \ +gui_create_case.rst \ +gui_create_hypothese.rst \ +gui_create_iteration.rst \ +gui_create_zone.rst \ +gui_homard.rst \ +gui_usage.rst \ +gui_mesh_info.rst \ +intro.rst \ +tui_create_boundary.rst \ +tui_create_case.rst \ +tui_create_hypothese.rst \ +tui_create_iteration.rst \ +tui_create_zone.rst \ +tui_homard.rst \ +tui_usage.rst \ +tutorials.rst + +EXTRA_DIST += $(RSTFILES) images ../images ../files + +usr_docs: + make install-data-local + +docs: usr_docs + +install-data-local: + $(INSTALL) -d $(DESTDIR)$(homarddocdir) + if test -d "html"; then b=; else b="$(srcdir)/"; fi; \ + if test -d $$b"html"; then cp -rf $$b"html"/* $(DESTDIR)$(homarddocdir); fi; + +uninstall-local: + chmod -R +w $(DESTDIR)$(homarddocdir) + rm -rf $(DESTDIR)$(homarddocdir)/* + +clean-local: + -rm -rf doctrees + if test -d "html"; then rm -rf html ; fi + if test -d "latex"; then rm -rf latex ; fi + +dist-hook: + if test -d "html"; then b=; else b="$(srcdir)/"; fi; \ + if test -d $$b"html"; then cp -rf $$b"html" $(distdir) ; fi diff --git a/doc/en/conf.py.in b/doc/en/conf.py.in new file mode 100644 index 00000000..9926940a --- /dev/null +++ b/doc/en/conf.py.in @@ -0,0 +1,201 @@ +# -*- coding: iso-8859-1 -*- +# +# HOMARD documentation build configuration file, created by +# sphinx-quickstart on Tue Jan 5 08:51:14 2010. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.append(os.path.abspath('.')) + +# -- General configuration ----------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +source_encoding = 'iso-8859-1' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'HOMARD' +copyright = u'1996, 2011, 2013, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '@SHORT_VERSION@' +# The full version, including alpha/beta/rc tags. +release = '@VERSION@' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +language = 'en' + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# List of directories, relative to source directory, that shouldn't be searched +# for source files. +exclude_trees = ['_build','ref','images','CVS'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. Major themes that come with +# Sphinx are currently 'default' and 'sphinxdoc'. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +html_use_modindex = True + +# If false, no index is generated. +html_use_index = True + +# If true, the index is split into individual pages for each letter. +html_split_index = False + +# If true, the reST sources are included in the HTML build as _sources/. +html_copy_source = True + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'HOMARDdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +# The paper size ('letter' or 'a4'). +latex_paper_size = 'a4' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'HOMARD.tex', u'HOMARD Documentation', + u'G. NICOLAS et T. FOUQUET', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +latex_use_modindex = True + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/en/glossaire.rst b/doc/en/glossaire.rst new file mode 100644 index 00000000..61804066 --- /dev/null +++ b/doc/en/glossaire.rst @@ -0,0 +1,34 @@ +.. _glossaire: + +Glossary +======== + +.. glossary:: + :sorted: + + refinement + The refinement is an operation that consists in splitting the selected elements. + + level + The level of an element corresponds to the number of splitting that were done to obtain it. The levem of the elements in the initial mesh is 0. + + unrefinement + The unrefinement is an operation that consists in removing the selected elements. In fact, the objective is to cancel a previous splitting: a 'higher' level than the initial mesh cannot be obtained. + + zone + A zone is a region that may govern the adaptation: every element with at least 2 nodes inside the zone is split or removed, depending on the choice. + + case + A case is defined with an initial mesh and a list of adaptations. + + iteration + An iteration is the process that transform a mesh to another one into a case. An iteration implies refinement and/or unrefinement, following the associated hypothesis. + + hypothesis + An hypothesis describes the conditions that governs the modification from a mesh to another one: refinement and/or unrefinement, etc. An hypothesis is referenced by 1 or more iterations. + + field + A field is expressed over a mesh, onto node or element, with 1 or more components. + + MED + It is the excange format for the meshes and the fields in SALOME. diff --git a/doc/en/gui_create_boundary.rst b/doc/en/gui_create_boundary.rst new file mode 100644 index 00000000..b962f747 --- /dev/null +++ b/doc/en/gui_create_boundary.rst @@ -0,0 +1,132 @@ +.. _gui_create_boundary: + +The boundary +============ +.. index:: single: boundary +.. index:: single: frontière + +L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre. + +Il existe deux modes de description d'une frontière : + + - Discrète : ce mode est utilisé pour décrire une courbe 1D + - Analytique : ce mode est utilisé pour décrire une surface + + +Discrete boundary +================= + +Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes. + +Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : + +.. image:: images/create_boundary_di_1.png + :align: center + +La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +.. image:: images/create_boundary_di_2.png + :align: center + +.. note:: + Le fichier ne doit contenir qu'un seul maillage. + +Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton "*Nouveau*", comme expliqué précédemment. + +.. image:: images/create_boundary_di_3.png + :align: center + + + +Analytical boundary +=================== +Au démarrage, SALOME affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas. + +.. image:: images/create_boundary_an_1.png + :align: center + +Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre ou sphère. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne. + +.. image:: images/create_boundary_an_2.png + :align: center + +Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière. + +.. image:: images/create_boundary_an_3.png + :align: center + +Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe : + +.. image:: images/create_boundary_an_4.png + :align: center + +.. note:: + + Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites. + + Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. + + Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes. + + Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition. + + +Il existe trois types de frontière analytique : + + - Cylindre + - Sphère + - Cône, décrit par un axe et un angle ou par deux rayons + +.. note:: + Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. + + +Cylindre +"""""""" +.. index:: single: cylindre + +Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +.. image:: images/create_boundary_an_cy.png + :align: center + +Sphere +"""""" +.. index:: single: sphere + +La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +.. image:: images/create_boundary_an_sp.png + :align: center + +Cone +"""" +.. index:: single: cone + +Un cône est défini de deux manières différentes : le centre, l'axe et l'angle d'ouverture en degré ou par deux points centrés sur l'axe et le rayon associé. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +Création par une origine, un axe et un angle d'ouverture : + +.. image:: images/create_boundary_an_co_1.png + :align: center + +Création par deux points centrés sur l'axe et le rayon associé : + +.. image:: images/create_boundary_an_co_2.png + :align: center + +.. index:: single: object browser + +Object browser +"""""""""""""" +A l'issue de cette création de frontières, l'arbre d'études a été enrichi. On y trouve toutes les frontières créées, identifiées par leur nom, avec la possibilité de les éditer. + +.. image:: images/create_boundary_1.png + :align: center + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_boundary` + + + diff --git a/doc/en/gui_create_case.rst b/doc/en/gui_create_case.rst new file mode 100644 index 00000000..6399728d --- /dev/null +++ b/doc/en/gui_create_case.rst @@ -0,0 +1,153 @@ +.. _gui_create_case: + +The creation of a case +====================== +.. index:: single: case + +La définition du cas se fait par la donnée des informations suivantes : + + - Un nom + - Un répertoire + - Le fichier du maillage initial + - Le type de conformité pour la série d'adaptations envisagées + - Les éventuelles frontières courbes à respecter + +.. image:: images/create_case_1.png + :align: center + + +Name of the case +"""""""""""""""" +Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. + +The directory +""""""""""""" +Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement. Ces fichiers seront visibles dans l'arbre d'études. + +.. image:: images/create_case_2.png + :align: center + +.. index:: single: mesh;initial +.. index:: single: MED + +The initial mesh +"""""""""""""""" +Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. + +.. image:: images/create_case_3.png + :align: center + +.. note:: + Le fichier ne doit contenir qu'un seul maillage. + +.. warning:: + Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement + +.. index:: single: conformity + +Type of conformity +"""""""""""""""""" +Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. + +L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. + +Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités : + +.. image:: images/create_case_4.png + :align: center + +* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines. +* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit. +* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre. + +.. index:: single: boundary + +The boundaries +"""""""""""""" +Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine. + +Deux cas de figure sont présents : + +* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète. +* surface : une surface à suivre est décrite de manière analytique. + +On cochera le ou les boutons voulus : + +.. image:: images/create_case_5.png + :align: center + +La définition des frontières est décrite dans :ref:`gui_create_boundary`. + +.. index:: single: pyramid + +Advanced options +"""""""""""""""" +Par défaut, aucune option avancée n'est active. + +Néanmoins, on peut définir une oprion avancée : + +.. image:: images/create_case_7.png + :align: center + +Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : + - mailles-points + - segments + - triangles + - quadrangles + - tétraèdres + - hexaèdres + - prismes + +Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. + + +The pursuit of a case +===================== +.. index:: single: pursuit +.. index:: single: yacs + +La poursuite d'un cas correspond à la situation suivante : +Une série d'adaptations ont été conduites sur un cas puis SALOME est fermé. On a gardé les répertoires de travail de ces itérations. On souhaite ensuite reprendre ces itérations pour les poursuivre là où on s'est arrêté. Cette fonctionnalité est particulièrement utile dans le cas de schémas YACS pour lesquels on scinde en plusieurs parties une longue série d'adaptations. + +La condition pour reprendre une itération est d'avoir conservé dans un même répertoire deux fichiers : + - le fichier de configuration qui a servi de données au module exécutable de HOMARD ; ce fichier se présente sous la forme ``HOMARD.Configuration.(n).vers.(n+1)`` + - le fichier au format MED qui conserve l'historique des adaptations réalisées ; ce fichier se présente sous la forme ``maill.(n).hom.med`` + +On peut choisir de partir d'une itération archivée désignée explicitement par son répertoire ou d'une itération repérée dans le répertoire archivant un cas. + +Pour poursuivre une itération connue par son répertoire d'archive, la définition du cas se fait par la donnée des informations suivantes : + + - Un nom + - Un répertoire + - Le répertoire qui contient les archives + +.. image:: images/pursue_case_1.png + :align: center + +On peut choisir de partir d'un cas déjà calculé ; par défaut, le nouveau cas sera créé en partant de la dernière itération précédemment calculée. + +.. image:: images/pursue_case_2.png + :align: center + +Si on souhaite partir d'une itération qui ne soit pas la dernière, il suffit de le préciser : + +.. image:: images/pursue_case_3.png + :align: center + +.. note:: + Les paramétrages du cas ainsi créé sont ceux de l'itération poursuivie : mode de conformité identique par exemple. + + +Object browser +"""""""""""""" +A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni. + +.. image:: images/create_case_6.png + :align: center + + + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_case` + diff --git a/doc/en/gui_create_hypothese.rst b/doc/en/gui_create_hypothese.rst new file mode 100644 index 00000000..cc58ed3e --- /dev/null +++ b/doc/en/gui_create_hypothese.rst @@ -0,0 +1,137 @@ +.. _gui_create_hypothese: + +The hypothesis +============== +.. index:: single: hypothesis + +L'hypothesis contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée. + +Il existe trois classes d'hypotheses : + + - Uniforme sur tout le maillage, + - Selon un champ, + - En fonction de zone géométrique. + +.. image:: images/create_hypothese_1.png + :align: center + + +Name of the hypothesis +"""""""""""""""""""""" +Un nom de l'hypothesis est proposé automatiquement : Hypo_1, Hypo_2, etc. Ce nom peut être modifié. Il ne doit pas asee été utilisé pour une hypothesis précédente. + +Uniform adaptation +"""""""""""""""""" +Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites. + +Adaptation by a field +""""""""""""""""""""" + +.. note:: + Pour pousee adapter le maillage selon un champ il faut asee au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (see :ref:`gui_create_iteration`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici : + +.. image:: images/create_hypothese_ch_1.png + :align: center + +Le champ voulu est à choisir dans la liste des champs contenus dans le fichier. +Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. + +Si l'on choisit une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes). + +On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*". + +.. image:: images/create_hypothese_ch_2.png + :align: center + + +Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquelles l'indicateur est supérieur à ce critère seront raffinées. +Pour le choix du critère, quatre variantes sont possible : + + - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ. + - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi]. + - au dela d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + - au dela d'une valeur absolue valant la moyenne de la répartition du champ augmentée de n fois son écart-type ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + +La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc. + +.. image:: images/create_hypothese_ch_3.png + :align: center + + +Adaptation by a zone +"""""""""""""""""""" +.. index:: single: zone + +Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (see :ref:`gui_create_zone`) : + +.. image:: images/create_hypothese_zo_1.png + :align: center + +Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre, ce qui permet de sélectionner les zones voulues. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothesis. + +.. image:: images/create_hypothese_zo_2.png + :align: center + + +Filtering by the groups +""""""""""""""""""""""" +.. index:: single: group + +On peut restreindre l'application de l'hypothesis d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modidiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final. +On coche le bouton associé : + +.. image:: images/create_hypothese_gr_1.png + :align: center + +La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothesis d'adaptation. + +.. image:: images/create_hypothese_gr_2.png + :align: center + + +Interpolation of fields +""""""""""""""""""""""" +.. index:: single: interpolation + +.. note:: + Pour pousee interpoler un champ de l'ancien vers le nouveau maillage, il faut asee au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (see :ref:`gui_create_iteration`). + +Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni : + +.. image:: images/create_hypothese_ch_4.png + :align: center + +Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni : + +.. image:: images/create_hypothese_ch_5.png + :align: center + + +Advanced options +"""""""""""""""" +Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie. +Si la case est cochée, on définira les options avancées. + +Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer. + +La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement. + +Le dernier choix porte sur une sortie supplémentaire de l'adaptation. Si la case est cochée, le fichier MED en sortie contiendra un champ contenant le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Par défaut, la case n'est pas cochée et le champ n'est pas produit. + +.. image:: images/create_hypothese_av_1.png + :align: center + +Object browser +"""""""""""""" +.. index:: single: object browser + +L'arbre d'études contient les hypotheses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente. + +.. image:: images/create_hypothese_2.png + :align: center + + + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_hypothese` diff --git a/doc/en/gui_create_iteration.rst b/doc/en/gui_create_iteration.rst new file mode 100644 index 00000000..71493bbe --- /dev/null +++ b/doc/en/gui_create_iteration.rst @@ -0,0 +1,83 @@ +.. _gui_create_iteration: + +The iteration +============= +.. index:: single: iteration + +La définition d'une iteration se fait par la donnée des informations suivantes : + + - L'iteration précédente + - Le nom du maillage résultat + - L'hypothesis utilisée + - Eventuellement, le fichier du champ d'indicateurs d'erreur + +.. image:: images/create_iteration_1.png + :align: center + +Name of the iteration +""""""""""""""""""""" +Un nom de cas est proposé automatiquement : Iter_1, Iter_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une iteration précédente. + +The previous iteration +"""""""""""""""""""""" +L'iteration précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. + +.. index:: single: mesh;result + +The name of the resulting mesh +"""""""""""""""""""""""""""""" +L'iteration en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'iteration précédente. + +.. index:: single: field +.. index:: single: MED + +The field +""""""""" +Pour créer ou utiliser une hypothesis d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. + + +.. image:: images/create_iteration_2.png + :align: center + +Dans le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "*Pas de temps choisi*". Les valeurs de 'Pas de temps' et de 'Numéro d'ordre' sont celles correspondant à la convention MED (time step / rank). Ces valeurs dépendent de la logique qui a été retenue par le logiciel qui a écrit le fichier. Souvent ces deux valeurs sont identiques mais il arrive que l'on disjoigne les pas de temps et les intervalles d'archivage. + +.. image:: images/create_iteration_3.png + :align: center + +.. index:: single: hypothesis + +The hypothesis +"""""""""""""" +L'iteration en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothesis. Celle-ci est choisie dans la liste des hypothesiss existantes. + +Au démarrage, il faut créer une première hypothesis par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese`) : + +.. image:: images/create_iteration_4.png + :align: center + +Ensuite, si une hypothesis précédemment définie convient, il suffit de la sélectionner dans la liste proposée. Sinon, il faut créer une nouvelle hypothesis par activation du bouton "*Nouveau*", puis la sélectionner dans la liste proposée : + +.. image:: images/create_iteration_5.png + :align: center + + +.. note:: + Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothesis. + +.. index:: single: object browser + +Object browser +"""""""""""""" +A l'issue de cette création d'iteration, l'arbre d'études a été enrichi. On y trouve l'iteration initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'iteration courante, identifiée par son nom. On trouve aussi l'hypothesis qui lui est attachée. L'icône en regard de l'iteration permet de différencier les iterations calculées ou non. + +.. image:: images/create_iteration_6.png + :align: center + +Quand plusieurs iterations s'enchaînent, leur hypothesis est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux iterations peuvent partager la même hypothesis. + +.. image:: images/create_iteration_7.png + :align: center + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_iteration` diff --git a/doc/en/gui_create_zone.rst b/doc/en/gui_create_zone.rst new file mode 100644 index 00000000..2d2f7d24 --- /dev/null +++ b/doc/en/gui_create_zone.rst @@ -0,0 +1,101 @@ +.. _gui_create_zone: + +The zone +======== +.. index:: single: zone +.. index:: single: 2D + +L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner. + +En 3D, il existe quatre types de zone : + + - Parallélépipède + - Cylindre + - Tuyau + - Sphère + +Leurs analogues en 2D sont : + + - Rectangle + - Disque + - Disque percé + +Le principe du raffinement selon des zones est le suivant. Chaque arête de maille dont les deux extrémités +sont incluses dans une même zone sera coupée. Ensuite HOMARD applique l'algorithme de traitement de la +conformité pour produire un maillage correct. + +.. note:: + Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. + +Name of the zone +"""""""""""""""" +Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone. + +Box +""" +.. index:: single: box + +Le parallélépipède est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction. + +.. image:: images/create_zone_1.png + :align: center + +Cylindre +"""""""" +.. index:: single: cylindre + +Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et son rayon. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. + +.. image:: images/create_zone_2.png + :align: center + +Pipe +"""" +.. index:: single: pipe + +Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et ses rayons interne et externe. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. + +.. image:: images/create_zone_3.png + :align: center + +Sphere +"""""" +.. index:: single: sphere + +La sphère est définie par son centre et son rayon. + +.. image:: images/create_zone_4.png + :align: center + +Rectangle +""""""""" +.. index:: single: rectangle + +Le rectangle est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chacune des directions valides. La coordonnée constante est affichée pour information, mais n'est pas modifiable. + +.. image:: images/create_zone_21.png + :align: center + +Disk +"""" +.. index:: single: disk + +Le disque est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et son rayon. La coordonnée constante est affichée pour information, mais n'est pas modifiable. + +.. image:: images/create_zone_22.png + :align: center + +Disk with a hole +"""""""""""""""" +.. index:: single: disk with a hole + +Le disque avec trou est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et ses rayons externe et interne. La coordonnée constante est affichée pour information, mais n'est pas modifiable. + +.. image:: images/create_zone_23.png + :align: center + + + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_zone` diff --git a/doc/en/gui_homard.rst b/doc/en/gui_homard.rst new file mode 100644 index 00000000..e5762f2e --- /dev/null +++ b/doc/en/gui_homard.rst @@ -0,0 +1,50 @@ +.. _gui_homard: + +The computation +=============== +.. index:: single: iteration +.. index:: single: computation + +To cumpute an iteration +""""""""""""""""""""""" +Lancer une adaptation s'obtient en sélectionnant l'iteration à calculer. Elle est repérée par une icone "en attente". On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. + +.. image:: images/lancement_1.png + :align: center + +.. index:: single: object browser + +Object browser +"""""""""""""" + +A l'issue de ce calcul, l'arbre d'études a été enrichi. L'icone devant l'iteration est validée. Sous l'iteration, on trouve la référence aux fichiers de résultats créés, identifiés par leur nom dans le répertoire *rep* qui a été défini à la création du cas : + + - *rep*/I(n+1)/Liste.n.vers.(n+1).log + - *rep*/I(n+1)/apad.n.vers.(n+1).bilan + - *rep*/maill.(n+1).med + +Les deux premiers fichiers sont des fichiers de texte, éditables. Liste.n.vers.(n+1).log contient des informations sur le déroulement de l'adaptation : récapitulatif du mode d'adaptation, pourcentage de mailles concernées, etc. Le fichier apad.n.vers.(n+1).bilan est un résumé des caractéristiques du maillage obtenu. + +Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. On retrouve ce maillage dans la section de l'arbre d'études du module SMESH. Il est alors visible dans ce module et utilisable ensuite comme tout autre maillage. + + +.. image:: images/lancement_2.png + :align: center + +To consult the result of an adaptation +"""""""""""""""""""""""""""""""""""""" +Les deux fichiers de texte, Liste.n.vers.(n+1).log et apad.n.vers.(n+1).bilan, sont visibles en les sélectionnant. On choisit ensuite "*Afficher le fichier*" dans le menu HOMARD ou à la souris. + +.. image:: images/lancement_3.png + :align: center + + +.. note:: + Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec SALOME. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. + "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. + "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_iteration` + diff --git a/doc/en/gui_mesh_info.rst b/doc/en/gui_mesh_info.rst new file mode 100644 index 00000000..ac92c9b9 --- /dev/null +++ b/doc/en/gui_mesh_info.rst @@ -0,0 +1,92 @@ +.. _gui_mesh_info: + +Mesh analysis +============= +.. index:: single: analysis +.. index:: single: information + +La demande d'analysis d'un maillage se fait par la donnée des informations suivantes : + + - Un répertoire + - Le fichier du maillage + +Si le maillage fait partie d'un cas enregistré, son analysis est faite à partir de son itération dans l'arbre d'études. Voir plus loin. + + +Importation of the mesh +""""""""""""""""""""""" +La sélection de la fonction d'analysis est faite par le menu de la barre supérieure de la fenêtre : + +.. image:: images/mesh_info_1.png + :align: center + +La fenêtre de choix s'affiche. + +.. image:: images/mesh_info_2.png + :align: center + +Name of the case +---------------- +Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. + +The directory +------------- +Le répertoire est celui qui contiendra les fichiers produits par l'information. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. Ces fichiers seront visibles dans l'arbre d'études. + +.. image:: images/create_case_2.png + :align: center + +.. index:: single: mesh;initial +.. index:: single: MED + +Mesh to be analysed +------------------- +Le maillage à analysisr doit se trouver dans un fichier au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. + +.. image:: images/create_case_3.png + :align: center + +.. note:: + Le fichier ne doit contenir qu'un seul maillage. + +.. warning:: + Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre l'analysis des différents niveaux de raffinement/déraffinement + +Options for the analysis +------------------------ +L'analysis est faite selon les options cochées. + - qualité des mailles + - diamètre des mailles + - connexité du domaine ; en un seul morceau, combien de trous, etc. + - tailles des constituants du domaine, groupe par groupe + - interpénétration des mailles, par dimension + +Le résultat de l'analysis est contenu dans le fichier ``info_av.00.bilan`` ; ce fichier est à consulter en l'affichant après sa désignation avec "*Afficher le fichier*" dans le menu HOMARD ou à la souris. + +Object browser +-------------- +A l'issue de cette demande d'information, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, et les deux fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. + +.. image:: images/mesh_info_3.png + :align: center + + +Computed iteration +"""""""""""""""""" + +Pour analysisr le maillage produit par une itération d'adaptation de maillage, on désigne à la souris cette itération dans l'arbre d'études et on lance l'analysis. On retrouve le menu similaire au cas initial : + +.. image:: images/mesh_info_4.png + :align: center + +Comme pour un maillage importé, l'arbre d'études a été enrichi avec les deux fichiers d'information de nom ``Liste.log`` et ``info_ap.xx.bilan``, où xx est le numéro de l'itération dans le cas. + +.. image:: ../images/mesh_info_5.png + :align: center + + + +Corresponding python functions +"""""""""""""""""""""""""""""" +Look :ref:`tui_create_case` and :ref:`tui_create_iteration` + diff --git a/doc/en/gui_usage.rst b/doc/en/gui_usage.rst new file mode 100644 index 00000000..16b14ae9 --- /dev/null +++ b/doc/en/gui_usage.rst @@ -0,0 +1,39 @@ +.. _gui_usage: + +User's guide of the graphical interface +======================================= +.. index:: single: case +.. index:: single: iteration + +Activation of the module HOMARD +""""""""""""""""""""""""""""""" +Pour utiliser le module HOMARD, deux façons existent : + +#. en activant l'onglet HOMARD dans la liste des modules, +#. en cliquant sur le bouton HOMARD dans la barre d'outils. + +L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée, selon le principe qui a été retenu pour tous les autres modules de SALOME. + +.. image:: images/homard_1.png + :align: center + +Definition of an adaptation +""""""""""""""""""""""""""" + +Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`). Les adaptations sont lancées tel que décrit dans :ref:`gui_homard`. + + +User's guide of the graphical interface +""""""""""""""""""""""""""""""""""""""" + +.. toctree:: + :maxdepth: 2 + + gui_create_case + gui_create_iteration + gui_create_hypothese + gui_create_zone + gui_create_boundary + gui_homard + gui_mesh_info + diff --git a/doc/en/images/HOMARD.png b/doc/en/images/HOMARD.png new file mode 100644 index 00000000..9d70b474 Binary files /dev/null and b/doc/en/images/HOMARD.png differ diff --git a/doc/en/images/create_boundary_1.png b/doc/en/images/create_boundary_1.png new file mode 100644 index 00000000..0460d485 Binary files /dev/null and b/doc/en/images/create_boundary_1.png differ diff --git a/doc/en/images/create_boundary_an_1.png b/doc/en/images/create_boundary_an_1.png new file mode 100644 index 00000000..09630eb8 Binary files /dev/null and b/doc/en/images/create_boundary_an_1.png differ diff --git a/doc/en/images/create_boundary_an_2.png b/doc/en/images/create_boundary_an_2.png new file mode 100644 index 00000000..25c6e9b1 Binary files /dev/null and b/doc/en/images/create_boundary_an_2.png differ diff --git a/doc/en/images/create_boundary_an_3.png b/doc/en/images/create_boundary_an_3.png new file mode 100644 index 00000000..6f38d9f8 Binary files /dev/null and b/doc/en/images/create_boundary_an_3.png differ diff --git a/doc/en/images/create_boundary_an_4.png b/doc/en/images/create_boundary_an_4.png new file mode 100644 index 00000000..abf10421 Binary files /dev/null and b/doc/en/images/create_boundary_an_4.png differ diff --git a/doc/en/images/create_boundary_an_co_1.png b/doc/en/images/create_boundary_an_co_1.png new file mode 100644 index 00000000..7212cba3 Binary files /dev/null and b/doc/en/images/create_boundary_an_co_1.png differ diff --git a/doc/en/images/create_boundary_an_co_2.png b/doc/en/images/create_boundary_an_co_2.png new file mode 100644 index 00000000..017b56d9 Binary files /dev/null and b/doc/en/images/create_boundary_an_co_2.png differ diff --git a/doc/en/images/create_boundary_an_cy.png b/doc/en/images/create_boundary_an_cy.png new file mode 100644 index 00000000..2efc3fdc Binary files /dev/null and b/doc/en/images/create_boundary_an_cy.png differ diff --git a/doc/en/images/create_boundary_an_sp.png b/doc/en/images/create_boundary_an_sp.png new file mode 100644 index 00000000..be7b28b7 Binary files /dev/null and b/doc/en/images/create_boundary_an_sp.png differ diff --git a/doc/en/images/create_boundary_di_1.png b/doc/en/images/create_boundary_di_1.png new file mode 100644 index 00000000..8f80605d Binary files /dev/null and b/doc/en/images/create_boundary_di_1.png differ diff --git a/doc/en/images/create_boundary_di_2.png b/doc/en/images/create_boundary_di_2.png new file mode 100644 index 00000000..d952edab Binary files /dev/null and b/doc/en/images/create_boundary_di_2.png differ diff --git a/doc/en/images/create_boundary_di_3.png b/doc/en/images/create_boundary_di_3.png new file mode 100644 index 00000000..01195a12 Binary files /dev/null and b/doc/en/images/create_boundary_di_3.png differ diff --git a/doc/en/images/create_case_1.png b/doc/en/images/create_case_1.png new file mode 100644 index 00000000..ddef5000 Binary files /dev/null and b/doc/en/images/create_case_1.png differ diff --git a/doc/en/images/create_case_2.png b/doc/en/images/create_case_2.png new file mode 100644 index 00000000..435a5186 Binary files /dev/null and b/doc/en/images/create_case_2.png differ diff --git a/doc/en/images/create_case_3.png b/doc/en/images/create_case_3.png new file mode 100644 index 00000000..eba31971 Binary files /dev/null and b/doc/en/images/create_case_3.png differ diff --git a/doc/en/images/create_case_4.png b/doc/en/images/create_case_4.png new file mode 100644 index 00000000..3429fd65 Binary files /dev/null and b/doc/en/images/create_case_4.png differ diff --git a/doc/en/images/create_case_5.png b/doc/en/images/create_case_5.png new file mode 100644 index 00000000..418535b5 Binary files /dev/null and b/doc/en/images/create_case_5.png differ diff --git a/doc/en/images/create_case_6.png b/doc/en/images/create_case_6.png new file mode 100644 index 00000000..c5987297 Binary files /dev/null and b/doc/en/images/create_case_6.png differ diff --git a/doc/en/images/create_case_7.png b/doc/en/images/create_case_7.png new file mode 100644 index 00000000..766430fe Binary files /dev/null and b/doc/en/images/create_case_7.png differ diff --git a/doc/en/images/create_hypothese_1.png b/doc/en/images/create_hypothese_1.png new file mode 100644 index 00000000..73b7d548 Binary files /dev/null and b/doc/en/images/create_hypothese_1.png differ diff --git a/doc/en/images/create_hypothese_2.png b/doc/en/images/create_hypothese_2.png new file mode 100644 index 00000000..fbb434b2 Binary files /dev/null and b/doc/en/images/create_hypothese_2.png differ diff --git a/doc/en/images/create_hypothese_av_1.png b/doc/en/images/create_hypothese_av_1.png new file mode 100644 index 00000000..0950d138 Binary files /dev/null and b/doc/en/images/create_hypothese_av_1.png differ diff --git a/doc/en/images/create_hypothese_ch_1.png b/doc/en/images/create_hypothese_ch_1.png new file mode 100644 index 00000000..392ef7b7 Binary files /dev/null and b/doc/en/images/create_hypothese_ch_1.png differ diff --git a/doc/en/images/create_hypothese_ch_2.png b/doc/en/images/create_hypothese_ch_2.png new file mode 100644 index 00000000..ce3d9441 Binary files /dev/null and b/doc/en/images/create_hypothese_ch_2.png differ diff --git a/doc/en/images/create_hypothese_ch_3.png b/doc/en/images/create_hypothese_ch_3.png new file mode 100644 index 00000000..a78111d5 Binary files /dev/null and b/doc/en/images/create_hypothese_ch_3.png differ diff --git a/doc/en/images/create_hypothese_ch_4.png b/doc/en/images/create_hypothese_ch_4.png new file mode 100644 index 00000000..b48f6511 Binary files /dev/null and b/doc/en/images/create_hypothese_ch_4.png differ diff --git a/doc/en/images/create_hypothese_ch_5.png b/doc/en/images/create_hypothese_ch_5.png new file mode 100644 index 00000000..4151dd83 Binary files /dev/null and b/doc/en/images/create_hypothese_ch_5.png differ diff --git a/doc/en/images/create_hypothese_gr_1.png b/doc/en/images/create_hypothese_gr_1.png new file mode 100644 index 00000000..34f937f1 Binary files /dev/null and b/doc/en/images/create_hypothese_gr_1.png differ diff --git a/doc/en/images/create_hypothese_gr_2.png b/doc/en/images/create_hypothese_gr_2.png new file mode 100644 index 00000000..3153ad43 Binary files /dev/null and b/doc/en/images/create_hypothese_gr_2.png differ diff --git a/doc/en/images/create_hypothese_zo_1.png b/doc/en/images/create_hypothese_zo_1.png new file mode 100644 index 00000000..0b4f0252 Binary files /dev/null and b/doc/en/images/create_hypothese_zo_1.png differ diff --git a/doc/en/images/create_hypothese_zo_2.png b/doc/en/images/create_hypothese_zo_2.png new file mode 100644 index 00000000..09353cf0 Binary files /dev/null and b/doc/en/images/create_hypothese_zo_2.png differ diff --git a/doc/en/images/create_iteration_1.png b/doc/en/images/create_iteration_1.png new file mode 100644 index 00000000..affb0286 Binary files /dev/null and b/doc/en/images/create_iteration_1.png differ diff --git a/doc/en/images/create_iteration_2.png b/doc/en/images/create_iteration_2.png new file mode 100644 index 00000000..3c02793f Binary files /dev/null and b/doc/en/images/create_iteration_2.png differ diff --git a/doc/en/images/create_iteration_3.png b/doc/en/images/create_iteration_3.png new file mode 100644 index 00000000..a00ede7f Binary files /dev/null and b/doc/en/images/create_iteration_3.png differ diff --git a/doc/en/images/create_iteration_4.png b/doc/en/images/create_iteration_4.png new file mode 100644 index 00000000..43665308 Binary files /dev/null and b/doc/en/images/create_iteration_4.png differ diff --git a/doc/en/images/create_iteration_5.png b/doc/en/images/create_iteration_5.png new file mode 100644 index 00000000..92a9ab00 Binary files /dev/null and b/doc/en/images/create_iteration_5.png differ diff --git a/doc/en/images/create_iteration_6.png b/doc/en/images/create_iteration_6.png new file mode 100644 index 00000000..339e1e10 Binary files /dev/null and b/doc/en/images/create_iteration_6.png differ diff --git a/doc/en/images/create_iteration_7.png b/doc/en/images/create_iteration_7.png new file mode 100644 index 00000000..8816eeff Binary files /dev/null and b/doc/en/images/create_iteration_7.png differ diff --git a/doc/en/images/create_zone_1.png b/doc/en/images/create_zone_1.png new file mode 100644 index 00000000..aa32ef17 Binary files /dev/null and b/doc/en/images/create_zone_1.png differ diff --git a/doc/en/images/create_zone_2.png b/doc/en/images/create_zone_2.png new file mode 100644 index 00000000..1664d52f Binary files /dev/null and b/doc/en/images/create_zone_2.png differ diff --git a/doc/en/images/create_zone_21.png b/doc/en/images/create_zone_21.png new file mode 100644 index 00000000..8d156f16 Binary files /dev/null and b/doc/en/images/create_zone_21.png differ diff --git a/doc/en/images/create_zone_22.png b/doc/en/images/create_zone_22.png new file mode 100644 index 00000000..f27faaa0 Binary files /dev/null and b/doc/en/images/create_zone_22.png differ diff --git a/doc/en/images/create_zone_23.png b/doc/en/images/create_zone_23.png new file mode 100644 index 00000000..8bce36d5 Binary files /dev/null and b/doc/en/images/create_zone_23.png differ diff --git a/doc/en/images/create_zone_3.png b/doc/en/images/create_zone_3.png new file mode 100644 index 00000000..abaf4068 Binary files /dev/null and b/doc/en/images/create_zone_3.png differ diff --git a/doc/en/images/create_zone_4.png b/doc/en/images/create_zone_4.png new file mode 100644 index 00000000..26955a82 Binary files /dev/null and b/doc/en/images/create_zone_4.png differ diff --git a/doc/en/images/homard_1.png b/doc/en/images/homard_1.png new file mode 100644 index 00000000..80006888 Binary files /dev/null and b/doc/en/images/homard_1.png differ diff --git a/doc/en/images/homard_2.png b/doc/en/images/homard_2.png new file mode 100644 index 00000000..8ec72957 Binary files /dev/null and b/doc/en/images/homard_2.png differ diff --git a/doc/en/images/intro_1.png b/doc/en/images/intro_1.png new file mode 100644 index 00000000..bfc3bd26 Binary files /dev/null and b/doc/en/images/intro_1.png differ diff --git a/doc/en/images/intro_31.png b/doc/en/images/intro_31.png new file mode 100644 index 00000000..175264e0 Binary files /dev/null and b/doc/en/images/intro_31.png differ diff --git a/doc/en/images/intro_32.png b/doc/en/images/intro_32.png new file mode 100644 index 00000000..f4022ca2 Binary files /dev/null and b/doc/en/images/intro_32.png differ diff --git a/doc/en/images/intro_33.png b/doc/en/images/intro_33.png new file mode 100644 index 00000000..a0bd05e2 Binary files /dev/null and b/doc/en/images/intro_33.png differ diff --git a/doc/en/images/intro_331.png b/doc/en/images/intro_331.png new file mode 100644 index 00000000..ba34e383 Binary files /dev/null and b/doc/en/images/intro_331.png differ diff --git a/doc/en/images/intro_34.png b/doc/en/images/intro_34.png new file mode 100644 index 00000000..94866890 Binary files /dev/null and b/doc/en/images/intro_34.png differ diff --git a/doc/en/images/intro_35.png b/doc/en/images/intro_35.png new file mode 100644 index 00000000..73b7d548 Binary files /dev/null and b/doc/en/images/intro_35.png differ diff --git a/doc/en/images/intro_36.png b/doc/en/images/intro_36.png new file mode 100644 index 00000000..36a77bf4 Binary files /dev/null and b/doc/en/images/intro_36.png differ diff --git a/doc/en/images/intro_37.png b/doc/en/images/intro_37.png new file mode 100644 index 00000000..f04c5122 Binary files /dev/null and b/doc/en/images/intro_37.png differ diff --git a/doc/en/images/intro_38.png b/doc/en/images/intro_38.png new file mode 100644 index 00000000..2d29392c Binary files /dev/null and b/doc/en/images/intro_38.png differ diff --git a/doc/en/images/intro_39.png b/doc/en/images/intro_39.png new file mode 100644 index 00000000..ad542ba7 Binary files /dev/null and b/doc/en/images/intro_39.png differ diff --git a/doc/en/images/intro_8.gif b/doc/en/images/intro_8.gif new file mode 100644 index 00000000..b11d9253 Binary files /dev/null and b/doc/en/images/intro_8.gif differ diff --git a/doc/en/images/lancement_1.png b/doc/en/images/lancement_1.png new file mode 100644 index 00000000..5a7e6cf7 Binary files /dev/null and b/doc/en/images/lancement_1.png differ diff --git a/doc/en/images/lancement_2.png b/doc/en/images/lancement_2.png new file mode 100644 index 00000000..9655bcb1 Binary files /dev/null and b/doc/en/images/lancement_2.png differ diff --git a/doc/en/images/lancement_3.png b/doc/en/images/lancement_3.png new file mode 100644 index 00000000..aef0b242 Binary files /dev/null and b/doc/en/images/lancement_3.png differ diff --git a/doc/en/images/menu_1.png b/doc/en/images/menu_1.png new file mode 100644 index 00000000..ed5b5c46 Binary files /dev/null and b/doc/en/images/menu_1.png differ diff --git a/doc/en/images/menu_2.png b/doc/en/images/menu_2.png new file mode 100644 index 00000000..405f9a8d Binary files /dev/null and b/doc/en/images/menu_2.png differ diff --git a/doc/en/images/mesh_info_1.png b/doc/en/images/mesh_info_1.png new file mode 100644 index 00000000..044f8dcc Binary files /dev/null and b/doc/en/images/mesh_info_1.png differ diff --git a/doc/en/images/mesh_info_2.png b/doc/en/images/mesh_info_2.png new file mode 100644 index 00000000..9f77229f Binary files /dev/null and b/doc/en/images/mesh_info_2.png differ diff --git a/doc/en/images/mesh_info_3.png b/doc/en/images/mesh_info_3.png new file mode 100644 index 00000000..04193271 Binary files /dev/null and b/doc/en/images/mesh_info_3.png differ diff --git a/doc/en/images/mesh_info_4.png b/doc/en/images/mesh_info_4.png new file mode 100644 index 00000000..ea3ec0c4 Binary files /dev/null and b/doc/en/images/mesh_info_4.png differ diff --git a/doc/en/images/pursue_case_1.png b/doc/en/images/pursue_case_1.png new file mode 100644 index 00000000..71589708 Binary files /dev/null and b/doc/en/images/pursue_case_1.png differ diff --git a/doc/en/images/pursue_case_2.png b/doc/en/images/pursue_case_2.png new file mode 100644 index 00000000..ac3cd9dc Binary files /dev/null and b/doc/en/images/pursue_case_2.png differ diff --git a/doc/en/images/pursue_case_3.png b/doc/en/images/pursue_case_3.png new file mode 100644 index 00000000..f0f8f6fe Binary files /dev/null and b/doc/en/images/pursue_case_3.png differ diff --git a/doc/en/index.rst b/doc/en/index.rst new file mode 100644 index 00000000..4b2f87c0 --- /dev/null +++ b/doc/en/index.rst @@ -0,0 +1,53 @@ +.. HOMARD documentation master file, created by + sphinx-quickstart on Tue Jan 5 08:51:14 2010. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +.. |logo| image:: ../images/HOMARD.png + +Documentation of the component HOMARD |logo| +-------------------------------------------- +The component HOMARD drives the mesh adaptation inside of the SALOME plateform. + +*HOMARD is a trade mark of EDF.* + +Table of contents of this User's guide +"""""""""""""""""""""""""""""""""""""" + +.. toctree:: + :maxdepth: 2 + + intro + gui_usage + tui_usage + tutorials + +Licence +""""""" +.. index:: single: Licence + +The licence for this module is the GNU Lesser General Public License (Lesser GPL), as stated here and in the source files. + +.. literalinclude:: ../licence.txt + +In addition, we expect that all publications describing work using this software, or all commercial products using it, quote at least one of the references given below: + + * *HOMARD, a SALOME module for Mesh Adaptation*, + http://www.salome-platform.org/ + + * *SALOME The Open Source Integration Platform for Numerical Simulation*, + http://www.salome-platform.org/ + + * G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, *Finite + Elements in Analysis and Design*, Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 + +The documentation of the module is also covered by the licence and the requirement of quoting. + +Index and tables +"""""""""""""""" + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +* :ref:`glossaire` + diff --git a/doc/en/intro.rst b/doc/en/intro.rst new file mode 100644 index 00000000..a0baa56c --- /dev/null +++ b/doc/en/intro.rst @@ -0,0 +1,203 @@ +.. _gui_intro: + +Introduction +============ + +General presentation +"""""""""""""""""""" +Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des codes de calculs par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du code de calcul auquel il est couplé. + +Raffiner le maillage signifie découper des mailles désignées selon des indications founies par l'utilisateur. Déraffiner le maillage signifie revenir en arrière sur des découpages précédemment réalisés : ainsi, en aucun cas HOMARD ne peut simplifier un maillage existant qui aura été créé trop fin. Le déraffinement prend toute son importance dans les calculs quand la zone d'intérêt se déplace au cours du calcul pour ne plus tenir compte de raffinements précédemment réalisés et qui deviennent inutiles. On en trouvera une illustration au bas de cette page. + +HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : + - mailles-points + - segments + - triangles + - quadrangles + - tétraèdres + - hexaèdres + - prismes + +Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. +Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y asee cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. + +Le cas des pyramides est à part. Pour un maillage comportant des hexaèdres ou des prismes, la mise en conformité du maillage issu du raffinement crée des pyramides pour assurer la liaison entre deux régions de niveaux de raffinement différents. Ces pyramides sont gérées comme toutes les mailles de transition et ne sont pas redécoupées par la suite. En revanche, si le maillage initial contient des pyramides, HOMARD ne saura pas l'adapter et émettra un message d'erreur. Dans certains cas particuliers, on pourra néanmoins traiter un tel maillage, comme il est décrit dans la rubrique 'Options avancées' de :ref:`gui_create_case`). + +Plusieurs motivations apparaissent pour adapter un maillage : + + - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. + - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. + - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. + +Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. +Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. + +.. image:: images/intro_1.png + :align: center + +Au final, la chaîne complète part du maillage initial produit par un mailleur. Elle comprend des maillons successifs (calcul d'indicateur / adaptation) comme sur la figure ci-après. + +.. image:: ../images/intro_2.png + :align: center + +Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. + +.. note:: + Pour une description plus complète, see :download:`Description générale de HOMARD <../files/HOMARD_0.pdf>`. + +.. note:: + Pour une référence à HOMARD, utiliser : + + G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, "*Finite Elements in Analysis and Design*", Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 + + `Accessible en cliquant ici `_ + + +Some illustrations of adapted meshes +"""""""""""""""""""""""""""""""""""" +.. index:: single: illustration + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_3.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_4.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_5.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_6.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_7.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_8.gif | +| :align: center | +| | ++---------------------------------------------------------------+ + +Quick start +""""""""""" +.. index:: single: start +.. index:: single: example + +L'ensemble des options de pilotage du module HOMARD dans SALOME est décrit dans le :ref:`gui_usage`. Mais on trouvera ici le B.A. BA pour découvrir l'utilisation de HOMARD à partir d'un exemple simple. Imaginons que l'on a effectué un calcul de thermique sur un maillage donné. On a récupéré en sortie de ce calcul un fichier au format MED, contenant le maillage et le champ des températures aux noeuds. On aimerait adapter le maillage de telle sorte que l'écart de température entre deux noeuds voisins soit inférieur à une valeur donnée. + +La première action nécessite de lancer le module HOMARD, en créant une nouvelle étude, selon le principe qui a été retenu pour tous les autres modules de SALOME. + +.. image:: images/homard_1.png + :align: center + +Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD. + +.. image:: images/homard_2.png + :align: center + +La fenêtre suivante apparaît : + +.. image:: images/intro_31.png + :align: center + +Il faut fournir deux informations : le répertoire qui contiendra les fichiers produits par les adaptations successives et le fichier issu du calcul que l'on vient de faire. On valide par "Appliquer et fermer". + +.. image:: images/intro_32.png + :align: center + +L'arbre d'études est enrichi de ce cas. On déplie le cas jusqu'à afficher le maillage correspondant à l'itération 0. On désigne cette itération initiale et on demande une nouvelle itération par "*Nouvelle itération*" dans le menu HOMARD ou à la souris. + +.. image:: images/intro_331.png + :align: center + +La fenêtre suivante apparaît : + +.. image:: images/intro_33.png + :align: center + +On désigne le fichier issu du calcul que l'on vient de faire et qui contient le champ de température. C'est le même que celui qui a été donné dans la définition du cas. + +.. image:: images/intro_34.png + :align: center + +On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît : + +.. image:: images/intro_35.png + :align: center + +On modifie les options par défaut pour correspondre à notre choix de pilotage de l'adaptation. La sélection d'un pilotage par les saut entre éléments et d'un seuil absolu de 4.0 va demander le découpage de chaque arête de maille où le température varie de plus de 4.0 degrés entre les deux extrémités de l'arête. + +.. image:: images/intro_36.png + :align: center + +On valide par "Appliquer et fermer" cette création d'hypothése, puis la création de la nouvelle itération. On se retrouve avec un arbre d'études enrichi avec la description de l'hypothèse créée et de l'itération à calculer, repérée par une icone "en attente". + +Lancer l'adaptation s'obtient en sélectionnant l'itération à calculer. On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. L'arbre d'études s'enrichit de fichiers d'informations et du nom du fichier au format MED qui contient le nouveau maillage, ``maill.01.med``. On remarque qu'il est placé dans le répertoire qui a été désigné à la création du cas. + +.. image:: images/intro_37.png + :align: center + +A ce stade, on va utiliser ce nouveau maillage pour un deuxième calcul, dans les mêmes conditions que le premier. Une fois que ce nouveau calcul est achevé, on peut décider de poursuivre le processus d'adaptation. Pour cela on revient dans SALOME et on active le module HOMARD. On désigne l'itération que l'avait calculée précédemment "*Iter_1*" et on demande une nouvelle itération. La fenêtre suivante apparaît : + +.. image:: images/intro_38.png + :align: center + +Comme on continue l'adaptation avec le même critère de saut de température entre noeuds voisins, on garde l'hypothèse "*Hypo_1*". Il suffit de désigner le fichier issu du calcul que l'on vient de faire et qui contient le nouveau champ de température. + +.. image:: images/intro_39.png + :align: center + +Comme précédemment, on lance l'adaptation et on récupère les résultats dans le répertoire du cas, dont le maillage ``maill.02.med``. + +.. image:: ../images/intro_40.png + :align: center + +On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu. + + +Evolutions of the module +"""""""""""""""""""""""" +.. index:: single: evolution + +Here are the main evolutions de HOMARD from the first release in SALOME 6.5. + +SALOME RELEASE 6.6 : + - Interface with med 3.0.6 + - Default values for the time steps + - New element types: TRIA7 and QUAD9 + - Optional output into the MED file of the level of refinement of every element + +SALOME RELEASE 7.1 : + - Correction of a bug in the filtering of the refinement by groups + - Driving of the adaptation by a threshold that is based upon the mean and the standard deviation (see :ref:`tui_create_hypothese`) + - TUI: the last time step for the driving instant can be selected by SetTimeStepRankLast (see :ref:`tui_create_iteration`) + - The destruction of the objects is available (GUI and TUI) + - The TUI functions are modified: they act onto the objects and no more by the names: + ``homard.AssociateIterHypo(iter_name,hypo_name)`` becomes ``iter.AssociateHypo(hypo_name)``, ``homard.AssociateHypoZone(hypo_name,zone_name,type_use)`` becomes ``hypo.AddZone(zone_name,type_use)``, ``homard.CreateIteration(iter_name,iter_parent_name)`` becomes ``case.NextIteration(iter_name)`` ou ``iter.NextIteration(iter_name)`` + - Addition of a function: + ``cas.LastIteration()`` : returns the last iteration of the case (see :ref:`tui_create_iteration`) + - Mesh analysis (see :ref:`gui_mesh_info`) + +SALOME RELEASE 7.2 : + - A cone can be used as a support for a 2D boundary (see :ref:`tui_create_boundary`) + - The result can be published or not published in SMESH (see :ref:`tui_create_iteration`) + ``iter.Compute(option)`` becomes ``iter.Compute(option1, option2)`` + - A serie of iterations that is stored in a directory can be followed (see :ref:`gui_create_case`) + + + + + + diff --git a/doc/en/tui_create_boundary.rst b/doc/en/tui_create_boundary.rst new file mode 100644 index 00000000..89fceb2e --- /dev/null +++ b/doc/en/tui_create_boundary.rst @@ -0,0 +1,169 @@ +.. _tui_create_boundary: + +The boundary +============ + +.. index:: single: boundary +.. index:: single: cylinder +.. index:: single: sphere + +The variables are described in :ref:`gui_create_boundary`. + +Methods of the class homard +""""""""""""""""""""""""""" +These methods returns an instance of the class boundary. + ++----------------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryDi | +| | +| **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)** | +| Returns an instance of the class ``boundary``, type discrete after its creation | +| | +| - ``boundary_name``: the name of the discrete boundary | +| - ``mesh_name``: the name of the mesh of the boundary | +| - ``mesh_file``: the name of the file for this mesh | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryCylinder | +| | +| **CreateBoundaryCylinder(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** | +| Returns an instance of the class ``boundary`` analytical type cylindrical | +| after its creation | +| | +| - ``boundary_name``: the name of the analytical boundary based on a cylinder | +| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of a point on the axis of the cylinder | +| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | +| - ``R``: radius of the cylinder | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundarySphere | +| | +| **CreateBoundarySphere(boundary_name, Xcen, Ycen, Zcen, R)** | +| Returns an instance of the class ``boundary`` analytical type spherical | +| after its creation | +| | +| - ``boundary_name``: the name of the boundary analytique based on a sphere | +| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of the centre of the sphere | +| - ``R``: radius of the sphere | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryConeA | +| | +| **CreateBoundaryConeA(boundary_name, Xaxe, Yaxe, Zaxe, Angle, Xcen, Ycen, Zcen)** | +| Returns an instance of the class ``boundary`` analytical type conical | +| after its creation | +| | +| - ``boundary_name``: the name of the boundary analytique based on a cone | +| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | +| - ``Angle``: opening angle of the cone in degree (between 0 and 90) | +| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of the centre of the cone | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryConeR | +| | +| **CreateBoundaryConeR(boundary_name, Xc1, Yc1, Zc1, R1, Xc2, Yc2, Zc2, R2)** | +| Returns an instance of the class ``boundary`` analytical type conical | +| after its creation | +| | +| - ``boundary_name``: the name of the boundary analytique based on a cone | +| - ``Xc1``, ``Yc1``, ``Zc1``: coordinates of the first centre of the cone | +| - ``R1``: radius of the cone at the first centre of the cone | +| - ``Xc2``, ``Yc2``, ``Zc2``: coordinates of the second centre of the cone | +| - ``R2``: radius of the cone at the second centre of the cone | ++----------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetBoundary | +| | +| **GetBoundary(boundary_name)** | +| Returns the instance of the class classe ``boundary`` | +| known by its name | +| | +| - ``boundary_name``: the name of the boundary | ++---------------------------------------------------------------+ +| .. module:: GetAllBoundarysName | +| | +| **GetAllBoundarysName()** | +| Returns the list of the names of all the existing | +| boundaries | +| | ++---------------------------------------------------------------+ + +Methods of the class cas +""""""""""""""""""""""""" +See also in :ref:`tui_create_case`. + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddBoundaryGroup | +| | +| **AddBoundaryGroup(boundary, group)** | +| Add a boundary to the definition of a case | +| | +| - ``boundary``: name of the curved boundary | +| | +| Discrete boundary: | +| | +| . if all the curved lines are involved, the second | +| argument is an empty string. | +| | +| . if only some curved lines are involved, ``group`` is | +| the name of the group of segments | +| | +| Analytical boundary: | +| | +| - ``group``: name of the groupe of faces located on the | +| boundary | ++---------------------------------------------------------------+ + +Methods of the class boundary +"""""""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Returns the name of the boundary | ++---------------------------------------------------------------+ +| .. module:: GetType | +| | +| **GetType()** | +| Returns the type of the boundary: | +| | +| * 0: discrete | +| * 1: cylinder | +| * 2: sphere | +| * 3: cone defined by an axis and an angle | +| * 4: cone defined by 2 radius | ++---------------------------------------------------------------+ +| .. module:: GetCoords | +| | +| **GetCoords()** | +| Returns the array of the coordinates of the boundary | +| with the same order as in its definition with | +| CreateBoundaryXXXX | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete()** | +| Deletes the boundary. | +| If the boundary is discrete, the file of the mesh is kept.| +| | +| Returns an integer: | +| * 0: the destruction is done | +| * other value: problem | ++---------------------------------------------------------------+ + + +Example +""""""" +Creation of a discrete boundary, a spherical boundary, and a cylindrical boundary: +:: + + inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med') + fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5) + fron_2 = homard.CreateBoundaryCylinder('CYL_1', 0.0, 25., -25., 25., 50., 75., 100.) + + +Similar graphical input +""""""""""""""""""""""" +Look at :ref:`gui_create_boundary` diff --git a/doc/en/tui_create_case.rst b/doc/en/tui_create_case.rst new file mode 100644 index 00000000..73d29ab5 --- /dev/null +++ b/doc/en/tui_create_case.rst @@ -0,0 +1,253 @@ +.. _tui_create_case: + +The case +======== +.. index:: single: cas +.. index:: single: type of conformity +.. index:: single: mesh;initial + +The variables are described in :ref:`gui_create_case`. + +Methods of the class homard +"""""""""""""""""""""""""""" + +Creation of a case +^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: CreateCase | +| | +| **CreateCase(case_name, mesh_name, mesh_file)** | +| Returns an instance of the class ``cas`` after its | +| creation | +| | +| - ``case_name``: the name of the case | +| - ``mesh_name``: the name of the initial mesh | +| - ``mesh_file``: the name of the MED file of this mesh | +| | +| Default: | +| | +| * the directory for the results is ``/tmp`` | +| * the adaptation is conformal | ++---------------------------------------------------------------+ +| .. module:: GetCase | +| | +| **GetCase(case_name)** | +| Returns an instance of the class ``cas`` known by its name| +| | +| - ``case_name``: the name of the case | ++---------------------------------------------------------------+ +| .. module:: GetAllCasesName | +| | +| **GetAllCasesName()** | +| Returns the liste of the name of all the existing cases | +| | ++---------------------------------------------------------------+ + +Creation of a case by pursuit of a computed iteration +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: CreateCaseFromIteration | +| | +| **CreateCaseFromIteration(case_name, dir_name)** | +| Returns an instance of the class ``cas`` after its | +| creation | +| | +| - ``case_name``: the name of the case | +| - ``dir_name``: the name of the directory that contains | +| the iteration | +| | ++---------------------------------------------------------------+ +| .. module:: CreateCaseFromCaseLastIteration | +| | +| **CreateCaseFromCaseLastIteration(case_name, dir_name)** | +| Returns an instance of the class ``cas`` after its | +| creation | +| | +| - ``case_name``: the name of the case | +| - ``dir_name``: the name of the directory that contains | +| the case | +| | ++---------------------------------------------------------------+ +| .. module:: CreateCaseFromCaseIteration | +| | +| **CreateCaseFromCaseIteration(case_name, dir_name, number)** | +| Returns an instance of the class ``cas`` after its | +| creation | +| | +| - ``case_name``: the name of the case | +| - ``dir_name``: the name of the directory that contains | +| the case | +| - ``number``: the number of the iteration of the case | +| | ++---------------------------------------------------------------+ + + + +Methods of the class cas +"""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Returns the name of the case | ++---------------------------------------------------------------+ +| .. module:: SetDirName | +| | +| **SetDirName(dirname)** | +| Gives a directory for the results of the case. It can be | +| done only after the creation of the case and before the | +| first computation. | +| | +| - ``dirname``: the name of the directory of the results | ++---------------------------------------------------------------+ +| .. module:: GetDirName | +| | +| **GetDirName()** | +| Returns the name of the directory of the results of the | +| case | ++---------------------------------------------------------------+ +| .. module:: SetConfType | +| | +| **SetConfType(conf_type)** | +| Defines the type of conformity for the case | +| | +| - ``conf_type``: integer as follows: | +| | +| * 1: conformal | +| * 2: non conformal with one hanging node per element | +| * 3: non conformal with one hanging node per edge of | +| element | +| * 4: non conformal without any constraint | ++---------------------------------------------------------------+ +| .. module:: GetConfType | +| | +| **GetConfType()** | +| Returns the type of conformity | ++---------------------------------------------------------------+ +| .. module:: GetIter0 | +| | +| **GetIter0()** | +| Returns the iteration linked to the initial mesh. | +| This iteration is automatically created by the module | +| HOMARD. It is used to connect the iterations. It is | +| connected to an initial mesh or to the iteration of a | +| previous case. | ++---------------------------------------------------------------+ +| .. module:: AddBoundaryGroup | +| | +| **AddBoundaryGroup(boundary, group)** | +| Add a boundary to the definition of a case | +| | +| - ``boundary``: name of the curved boundary | +| | +| Discrete boundary: | +| | +| . if all the curved lines are involved, the second | +| argument is an empty string. | +| . if only some curved lines are involved, ``group`` is | +| the name of the group of segments | +| | +| Analytical boundary: | +| | +| - ``group``: name of the group of faces located on the | +| boundary | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete(option)** | +| Deletes the case and all the connected iterations. The MED| +| file of the first mesh is kept. | +| | +| - ``option``: an integer to define what to do with the | +| MED file of the associated meshes | +| | +| * 0: the files are kept | +| * 1: the files are removed | +| | +| Returns an integer: | +| * 0: the destruction is done | +| * other value: problem | ++---------------------------------------------------------------+ +| .. module:: GetState | +| | +| **GetState()** | +| Returns the state of the case: | +| * 0: corresponds to an initial mesh | +| * other value: pursuit of an iteration with number n | ++---------------------------------------------------------------+ + +Advanced options +^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetPyram | +| | +| **SetPyram(option)** | +| Defines the status of the pyramids in this case | +| | +| - ``option``: integer that defines the status of the | +| pyramids that could belongs to the initial mesh | +| | +| * 0: rejected pyramids (default) | +| * 1: authorized pyramids | ++---------------------------------------------------------------+ +| .. module:: GetPyram | +| | +| **GetPyram()** | +| Returns the status of the pyramids in this case | ++---------------------------------------------------------------+ + +Informations for the initial mesh +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: MeshInfo | +| | +| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | +| Gives information about the current mesh. For every | +| option, the choice #0 corresponds to 'no action', while | +| the choice #1 launches the option. | +| | +| - ``Qual``: quality of the elements | +| - ``Diam``: diametre of the elements | +| - ``Conn``: connexity of the domain; a single block, how | +| many holes, etc. | +| - ``Tail``: size of the parts of the domain, group by | +| group | +| - ``Inte``: staggered elements, by dimension | ++---------------------------------------------------------------+ + + +Example +""""""" +The creation of the object case_1 is done as follows: + +:: + + case_name = "CAS_1" + mesh_name = "MAILL" + mesh_file = "/scratch/Salome/Adapt/m0.med" + case_1 = homard.CreateCase(case_name, mesh_name, mesh_file) + dirname = "/scratch/Salome/Adapt/resu" + case_1.SetDirName(dirname) + case_1.SetConfType(1) + case_1.AddBoundaryGroup( 'intersection', '' ) + case_1.AddBoundaryGroup( 'cyl_1', 'T1_EXT' ) + case_1.AddBoundaryGroup( 'cyl_1', 'T2_EXT' ) + case_1.AddBoundaryGroup( 'cyl_2', 'T_INT' ) + + + +Similar graphical input +""""""""""""""""""""""" +Look at :ref:`gui_create_case` + + diff --git a/doc/en/tui_create_hypothese.rst b/doc/en/tui_create_hypothese.rst new file mode 100644 index 00000000..6c727642 --- /dev/null +++ b/doc/en/tui_create_hypothese.rst @@ -0,0 +1,326 @@ +.. _tui_create_hypothese: + +The hypothesis +============== + +.. index:: single: iteration +.. index:: single: hypothesis +.. index:: single: zone + +The variables are described in :ref:`gui_create_hypothese`. + +Methods of the class homard +"""""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: CreateHypothesis | +| | +| **CreateHypothesis(hypo_name)** | +| Returns an instance of the class ``hypothese`` | +| | +| - ``hypo_name``: the name of the hypothesis | ++---------------------------------------------------------------+ +| .. module:: GetHypothesis | +| | +| **GetHypothesis(hypo_name)** | +| Returns an instance of the class ``hypothese`` | +| known by its name | +| | +| - ``hypo_name``: the name of the hypothesis | ++---------------------------------------------------------------+ +| .. module:: GetAllHypothesesName | +| | +| **GetAllHypothesesName()** | +| Returns the liste of the name of all the existing | +| hypotheses | +| | ++---------------------------------------------------------------+ + +Methods of the class hypothese +""""""""""""""""""""""""""""""" + +General methods +^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Returns the name of the hypothesis | ++---------------------------------------------------------------+ +| .. module:: SetAdapRefinUnRef | +| | +| **SetAdapRefinUnRef(Adap, Refin, UnRef)** | +| Gives the type of adaptation to the hypothesis | +| | +| - ``Adap``: integer that defines the type of adaptation | +| | +| * -1: uniform | +| * 0: by zones | +| * 1: by a field | +| | +| - ``Refin``: integer that informs if the refinement is | +| active or not | +| | +| * 0: unactive | +| * 1: active | +| | +| - ``UnRef``: integer that informs if the refinement is | +| active or not | +| | +| * 0: unactive | +| * 1: active | +| | ++---------------------------------------------------------------+ +| .. module:: GetAdapType | +| | +| **GetAdapType()** | +| Returns the type of the adaptation | ++---------------------------------------------------------------+ +| .. module:: GetRefinType | +| | +| **GetRefinType()** | +| Returns the type of the refinement | ++---------------------------------------------------------------+ +| .. module:: GetUnRefType | +| | +| **GetUnRefType()** | +| Returns the type of the unrefinement | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete()** | +| Deletes the hypothesis | +| | +| Returns an integer: | +| * 0: the destruction is done | +| * other value: problem | ++---------------------------------------------------------------+ + +The field and the thresholds +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetField | +| | +| **SetField(field_name)** | +| Gives the name of a field to the hypothesis | +| | +| - ``field_name``: the name of the field | ++---------------------------------------------------------------+ +| .. module:: GetFieldName | +| | +| **GetFieldName()** | +| Returns the name of the field | ++---------------------------------------------------------------+ +| .. module:: SetUseField | +| | +| **SetUseField(use_field)** | +| Gives the usage of the field for the hypothesis | +| | +| - ``use_field``: integer that defines how the field is | +| used | +| | +| * 0: value by element (default) | +| * 1: jump between an element and its neighbours | ++---------------------------------------------------------------+ +| .. module:: SetRefinThr | +| | +| **SetRefinThr(type_thres, threshold)** | +| Defines the thresholds for the refinement | +| | +| - ``type_thres``: integer that defines the type of the | +| threshold for the refinement | +| | +| * 1: absolute value | +| * 2: relative value in % | +| * 3: ratio of elements in % | +| * 4: mean + n times the standard deviation | +| | +| - ``threshold``: numerical value that defines the | +| threshold | ++---------------------------------------------------------------+ +| .. module:: GetRefinThrType | +| | +| **GetRefinThrType()** | +| Returns the type of the threshold for the refinement | ++---------------------------------------------------------------+ +| .. module:: SetUnRefThr | +| | +| **SetUnRefThr(type_thres, threshold)** | +| Defines the thresholds for the unrefinement | +| | +| - ``type_thres``: integer that defines the type of the | +| threshold for the unrefinement | +| | +| * 1: absolute value | +| * 2: relative value in % | +| * 3: ratio of elements in % | +| * 4: mean - n times the standard deviation | +| | +| - ``threshold``: numerical value that defines the | +| threshold | ++---------------------------------------------------------------+ +| .. module:: GetUnRefThrType | +| | +| **GetUnRefThrType()** | +| Returns the type of the threshold for the unrefinement | ++---------------------------------------------------------------+ + + +The components of the field +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddComp | +| | +| **AddComp(comp_name)** | +| Add a component of the field | +| | +| - ``comp_name``: name of a component to take into account | ++---------------------------------------------------------------+ +| .. module:: SetUseComp | +| | +| **SetUseComp(use_comp)** | +| Defines hom to use the components | +| | +| - ``use_comp``: integer that defines how to use the | +| components | +| | +| * 0: L2 norm (default) | +| * 1: infinite norm | +| * 2: relative value, if only one component | ++---------------------------------------------------------------+ +| .. module:: GetListComp | +| | +| **GetListComp()** | +| Returns the list of the used components | ++---------------------------------------------------------------+ + + +The zones +^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddZone | +| | +| **AddZone(zone_name, type_use)** | +| | +| - ``zone_name``: the name of the zone to add | +| - ``type_use``: integer that defines how to use the zone | +| | +| * 1: refinement | +| * -1: unrefinement | ++---------------------------------------------------------------+ + + +The filtering by the groups +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddGroup | +| | +| **AddGroup(group_name)** | +| Add a group to the filtering | +| | +| - ``group_name``: name of the group to take into account | ++---------------------------------------------------------------+ +| .. module:: GetGroups | +| | +| **GetGroups()** | +| Returns the mist of the groups that are used in the | +| filtering | ++---------------------------------------------------------------+ + +Advanced options +^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetNivMax | +| | +| **SetNivMax(nivmax)** | +| Defines the maximum level for the refinement | +| | +| - ``nivmax``: level of refinement that must not be | +| exceeded | ++---------------------------------------------------------------+ +| .. module:: GetNivMax | +| | +| **GetNivMax()** | +| Returns the maximum level for the refinement | ++---------------------------------------------------------------+ +| .. module:: SetDiamMin | +| | +| **SetDiamMin(diammin)** | +| Defines the minimum diameter of the future elements | +| | +| - ``diammin``: minimum diameter for an element | ++---------------------------------------------------------------+ +| .. module:: GetDiamMin | +| | +| **GetDiamMin()** | +| Returns the minimum diameter of the future elements | ++---------------------------------------------------------------+ +| .. module:: SetAdapInit | +| | +| **SetAdapInit(option)** | +| Defines the treatment of the elements where the field that| +| governs the adaptation is not defined | +| | +| - ``option``: integer as follows: | +| | +| * 0: no effect (default) | +| * 1: the elements without field are refined | +| * -1: the elements without field are unrefined | ++---------------------------------------------------------------+ +| .. module:: GetAdapInit | +| | +| **GetAdapInit()** | +| Returns the treatment of the elements where the field that| +| governs the adaptation is not defined | ++---------------------------------------------------------------+ +| .. module:: SetLevelOutput | +| | +| **SetLevelOutput(option)** | +| Acts if the level of refinement is returned as a field in | +| the output MED file | +| | +| - ``option``: integer as follows: | +| | +| * 0: no effect (default) | +| * 1: the field is produced | ++---------------------------------------------------------------+ +| .. module:: GetLevelOutput | +| | +| **GetLevelOutput()** | +| Returns the choice for the output of the level of | +| refinement | ++---------------------------------------------------------------+ + + +Example +""""""" +The creation of the object hypo_1 is done as follows: +:: + + hypo_1 = homard.CreateHypothesis("HypoField") + hypo_1.SetAdapRefinUnRef(1, 1, 0) + hypo_1.SetField("INDICATEUR") + hypo_1.AddComp("INDX") + hypo_1.AddComp("INDZ") + hypo_1.SetRefinThr(1, 80.) + + +Similar graphical input +""""""""""""""""""""""" +Look at :ref:`gui_create_hypothese` + +.. warning:: + With the graphical input mode, if an hypothesis is edited and if one of the characteristic is modified, the value of the threshold for the refinement for example, all the iterations that were computed with this hypothesis are unvalidated. In python mode, that is not true: the iterations stay as they are. diff --git a/doc/en/tui_create_iteration.rst b/doc/en/tui_create_iteration.rst new file mode 100644 index 00000000..b8e22594 --- /dev/null +++ b/doc/en/tui_create_iteration.rst @@ -0,0 +1,315 @@ +.. _tui_create_iteration: + +The iteration +============= + +.. index:: single: iteration +.. index:: single: hypothesis +.. index:: single: zone + +The variables are described in :ref:`gui_create_iteration`. + +Methods of the class homard +"""""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetIteration | +| | +| **GetIteration(iter_name)** | +| Returns an instance of the class ``iteration`` | +| known by its name | +| | +| - ``iter_name``: the name of the iteration | ++---------------------------------------------------------------+ +| .. module:: GetAllIterationsName | +| | +| **GetAllIterationsName()** | +| Returns the liste of the name of all the existing | +| iterations | +| | ++---------------------------------------------------------------+ + +Methods of the class cas +""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: NextIteration | +| | +| **NextIteration(iter_name)** | +| Returns an instance of the class ``iteration`` after | +| its creation: it is the next iteration after the very | +| first one that corresponds to the first mesh of the case | +| | +| - ``iter_name``: the name of this next iteration | +| | +| Default: | +| | +| * the produced mesh has got the same name as the iteration | ++---------------------------------------------------------------+ +| .. module:: LastIteration | +| | +| **LastIteration()** | +| Returns an instance of the class ``iteration``: the last | +| iteration into the descendants of the initial iteration | +| of the case. It is the one that has got no child. There is| +| an error if more than one branch exists into the | +| descendants. | +| | ++---------------------------------------------------------------+ + +Methods of the class iteration +"""""""""""""""""""""""""""""" + +General methods +^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: NextIteration | +| | +| **NextIteration(iter_name)** | +| Returns an instance of the class ``iteration`` after | +| its creation: it is the next iteration after the current | +| one | +| | +| - ``iter_name``: the name of this next iteration | +| | +| Default: | +| | +| * the produced mesh has got the same name as the iteration | ++---------------------------------------------------------------+ +| .. module:: Compute | +| | +| **Compute(option1, option2)** | +| Computes the mesh produced by the iteration | +| | +| - ``option1``: an integer to decide what to do with | +| existing files, if any | +| | +| * 0: stop with error | +| * 1: the old files are removed | +| | +| - ``option2``: an integer to decide what to do with | +| the results | +| | +| * 1: no specific action | +| * 2: publication into the module SMESH | +| | +| Returns an integer: | +| * 0: successful adaptation | +| * other value: problem | ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Returns the name of the iteration | ++---------------------------------------------------------------+ +| .. module:: GetNumber | +| | +| **GetNumber()** | +| Returns the number of the iteration. | +| | +| The iteration #0 is the one associated to the initial | +| mesh. Then, an iteration with number #N comes from the | +| adaptation of an iteration with number #(N-1). | ++---------------------------------------------------------------+ +| .. module:: GetIterParent | +| | +| **GetIterParent()** | +| Returns the iteration parent | ++---------------------------------------------------------------+ +| .. module:: LastIteration | +| | +| **LastIteration()** | +| Returns an instance of the class ``iteration``: the last | +| iteration into the descendants of the current iteration. | +| It is the one that has got no child. There is | +| an error if more than one branch exists into the | +| descendants. | ++---------------------------------------------------------------+ +| .. module:: AssociateHypo | +| | +| **AssociateHypo(hypo_name)** | +| Associate an hypothesis with the iteration | +| | +| - ``hypo_name``: the name of the hypothesis | ++---------------------------------------------------------------+ +| .. module:: GetHypoName | +| | +| **GetHypoName()** | +| Returns the name of the associated hypothesis | ++---------------------------------------------------------------+ +| .. module:: GetCaseName | +| | +| **GetCaseName()** | +| Returns the name of the associated case | ++---------------------------------------------------------------+ +| .. module:: GetState | +| | +| **GetState()** | +| Returns the state of the iteration | +| | +| - ``2``: computed iteration | +| - ``1``: non computed iteration | +| - ``<=0``: initial iteration not to be computed, with a | +| number equal to the absolute valure of the state | ++---------------------------------------------------------------+ +| .. module:: GetLogFile | +| | +| **GetLogFile()** | +| Returns the name of the file with the messages all along | +| the running of HOMARD | ++---------------------------------------------------------------+ +| .. module:: GetFileInfo | +| | +| **GetFileInfo()** | +| Returns the name of the file with the analysis of the mesh| ++---------------------------------------------------------------+ +| .. module:: GetDirName | +| | +| **GetDirName()** | +| Returns the name of the directory that contains the | +| results of the iteration | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete(option)** | +| Deletes the iteration and all its children | +| | +| - ``option``: an integer to define what to do with the | +| MED file of the associated meshes | +| | +| * 0: the files are kept | +| * 1: the files are removed | +| | +| Returns an integer: | +| * 0: the destruction is done | +| * other value: problem | ++---------------------------------------------------------------+ + +Information about the meshes +^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetMeshName | +| | +| **SetMeshName(mesh_name)** | +| Defines the name of the produced mesh | +| | +| - ``mesh_name``: the name of the produced mesh | ++---------------------------------------------------------------+ +| .. module:: GetMeshName | +| | +| **GetMeshName()** | +| Returns the name of the produced mesh | ++---------------------------------------------------------------+ +| .. module:: SetMeshFile | +| | +| **SetMeshFile(mesh_file)** | +| Defines the name of the MED file of the produced mesh | +| | +| - ``mesh_file``: the name of the MED file of the | +| produced mesh | ++---------------------------------------------------------------+ +| .. module:: GetMeshFile | +| | +| **GetMeshFile()** | +| Returns the name of the MED file of the produced mesh | ++---------------------------------------------------------------+ +| .. module:: MeshInfo | +| | +| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | +| Gives information about the current mesh. For every | +| option, the choice #0 corresponds to 'no action', while | +| the choice #1 launches the option. | +| | +| - ``Qual``: quality of the elements | +| - ``Diam``: diametre of the elements | +| - ``Conn``: connexity of the domain; a single block, how | +| many holes, etc. | +| - ``Tail``: size of the parts of the domain, group by | +| group | +| - ``Inte``: staggered elements, by dimension | ++---------------------------------------------------------------+ + +Information about the field +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetFieldFile | +| | +| **SetFieldFile(field_file)** | +| Defines the MED file of the field | +| | +| - ``field_file``: the name of the MED file of the field | ++---------------------------------------------------------------+ +| .. module:: SetTimeStepRank | +| | +| **SetTimeStepRank(TimeStep, Rank)** | +| Defines the time steps for the fields | +| | +| Useless if no time step is defined for the field. | +| | +| If a single time step is defined for the filed, it is the | +| default choice. | +| | +| - ``TimeStep``: the selected time step | +| - ``Rank``: the selected rank | ++---------------------------------------------------------------+ +| .. module:: SetTimeStepRankLast | +| | +| **SetTimeStepRankLast()** | +| The last time step will be used, whatever its value | ++---------------------------------------------------------------+ +| .. module:: GetFieldFileName | +| | +| **GetFieldFileName()** | +| Returns the name of the MED file of the field | ++---------------------------------------------------------------+ +| .. module:: GetTimeStep | +| | +| **GetTimeStep()** | +| Returns the selected time step for the field | ++---------------------------------------------------------------+ +| .. module:: GetRank | +| | +| **GetRank()** | +| Returns the selected rank for the field | ++---------------------------------------------------------------+ + +Example +""""""" +.. index:: single: mesh;initial + +To create the first iteration, the starting point is the iteration associated to the initial mesh. It is the one that defines the case. +:: + + iter_name = "Iteration_1" + iter_1 = case_1.NextIteration(iter_name) + iter_1.SetField(field_file) + iter_1.SetTimeStepRank( 0, 0) + iter_1.SetMeshName("maill_01") + iter_1.SetMeshFile("/local00/M.01.med") + iter_1.AssociateHypo("HypoField") + codret = iter_1.Compute(1, 2) + +Then, the next iteration is created from the current iteration. +:: + + iter_name = "Iteration_2" + iter_2 = iter_1.NextIteration(iter_name) + iter_2.SetField(field_file) + iter_2.SetTimeStepRank( 1, 1) + iter_2.SetMeshName("maill_02") + iter_2.SetMeshFile("/local00/M.02.med") + iter_2.AssociateHypo("HypoField") + codret = iter_2.Compute(1, 2) + + +Similar graphical input +""""""""""""""""""""""" +Look at :ref:`gui_create_iteration` diff --git a/doc/en/tui_create_zone.rst b/doc/en/tui_create_zone.rst new file mode 100644 index 00000000..9a068785 --- /dev/null +++ b/doc/en/tui_create_zone.rst @@ -0,0 +1,204 @@ +.. _tui_create_zone: + +The zone +======== + +.. index:: single: zone +.. index:: single: box +.. index:: single: sphere +.. index:: single: cylinder +.. index:: single: pipe +.. index:: single: disk +.. index:: single: disk with a hole +.. index:: single: 2D + +The variables are described in :ref:`gui_create_zone`. + +Methods of the class homard +"""""""""""""""""""""""""""" + +These methods returns an instance of the class zone. + ++----------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneBox | +| | +| **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)** | +| Returns an instance of the class ``zone`` of type box | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a box | +| - ``Xmin``, ``Xmax``: min/max coordinates extrêmes along X | +| - ``Ymin``, ``Ymax``: min/max coordinates extrêmes along Y | +| - ``Zmin``, ``Zmax``: min/max coordinates extrêmes along Z | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneCylinder | +| | +| **CreateZoneCylinder(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H)** | +| Returns an instance of the class ``zone`` of type cylinder | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a cylinder | +| - ``Xbase``, ``Ybase``, ``Zbase``: coordinates of a point on the axis | +| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | +| - ``R``: radius of the cylinder | +| - ``H``: height of the cylinder | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZonePipe | +| | +| **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** | +| Returns an instance of the class ``zone`` of type pipe | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a pipe | +| - ``Xbase``, ``Ybase``, ``Zbase``: coordinates of a point on the axis | +| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | +| - ``R``: external radius of the pipe | +| - ``H``: height of the pipe | +| - ``R``: internal radius of the pipe | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneSphere | +| | +| **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)** | +| Returns an instance of the class ``zone`` of type sphere | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a sphere | +| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of the center of the sphere | +| - ``R``: radius of the sphere | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneBox2D | +| | +| **CreateZoneBox2D(zone_name, Umin, Umax, Vmin, Vmax, Orient)** | +| Returns an instance of the class ``zone`` of type rectangle | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a rectangle | +| - ``Umin``, ``Umax``: min/max coordinates for the 1st dimension | +| - ``Vmin``, ``Vmax``: min/max coordinates for the 2nd dimension | +| - ``Orient``: integer that defines the convention for the plane | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneDisk | +| | +| **CreateZoneDisk(zone_name, Ucen, Vcen, R, Orient)** | +| Returns an instance of the class ``zone`` of type disk | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a full disk | +| - ``Ucen``, ``Vcen``: coordinates of the center of the disk | +| - ``R``: radius of the disk | +| - ``Orient``: integer that defines the convention for the plane | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneDiskWithHole | +| | +| **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)** | +| Returns an instance of the class ``zone`` of type disk with a hole | +| after its creation | +| | +| - ``zone_name``: the name of the zone based on a disk with a hole | +| - ``Ucen``, ``Vcen``: coordinates of the center of the disk | +| - ``R``: external radius of the disk | +| - ``Rint``: internal radius of the disk | +| - ``Orient``: integer that defines the convention for the plane | ++----------------------------------------------------------------------------------+ + + + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| The convention of the orientation of the plane is the same | +| as the one that is applied in the other modules of SALOME, | +| in particular GEOM: | +| | +| 1. plane XY ; U <==> X and V <==> Y | +| 2. plane YZ ; U <==> Y and V <==> Z | +| 3. plane ZX ; U <==> Z and V <==> X | ++---------------------------------------------------------------+ + + +.. note:: + The functions that define 2D zones should be used only of the whole mesh is 2D into a plane of coordinates. + + + + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetZone | +| | +| **GetZone(zone_name)** | +| Returns an instance of the class ``zone`` | +| known by its name | +| | +| - ``zone_name``: the name of the zone | ++---------------------------------------------------------------+ +| .. module:: GetAllZonesName | +| | +| **GetAllZonesName()** | +| Returns the liste of the name of all the existing zones | +| | ++---------------------------------------------------------------+ + + +Methods of the class zone +""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Returns the name of the zone | ++---------------------------------------------------------------+ +| .. module:: GetType | +| | +| **GetType()** | +| Returns the type of the zone | +| | +| * 2: box | +| * 3: sphere | +| * 5: cylinder | +| * 7: pipe | +| * 11, 12, 13: rectangle and orientation 1, 2 ou 3 | +| * 31, 32, 33: disk and orientation 1, 2 ou 3 | +| * 61, 62, 63: disk with a hole and orientation 1, 2 | +| ou 3 | ++---------------------------------------------------------------+ +| .. module:: GetCoords | +| | +| **GetCoords()** | +| Returns the array of the coordinates of the zone | +| with the same order as in its definition with | +| CreateZoneXXXX | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete()** | +| Deletes the zone | +| | +| Returns an integer: | +| * 0: the destruction is done | +| * other value: problem | ++---------------------------------------------------------------+ + + +Example +""""""" +The creation of a 3D box is done as follows: +:: + + zone_1 = homard.CreateZoneBox ("BLOC", -1., 1., -30., 40., 10.5, 20.8) + + +The creation of a disk in the plane XY is done as follows: +:: + + zone_2 = homard.CreateZoneDisk ("disk", 1., 3., 43.25, 1) + + +Similar graphical input +""""""""""""""""""""""" +Look at :ref:`gui_create_zone` + +.. warning:: + With the graphical input mode, if a zone is edited and if one of the dimensions is modified, all the iterations that were computed with this zone are unvalidated. In python mode, that is not true: the iterations stay as they are. diff --git a/doc/en/tui_homard.rst b/doc/en/tui_homard.rst new file mode 100644 index 00000000..fdd58c8e --- /dev/null +++ b/doc/en/tui_homard.rst @@ -0,0 +1,16 @@ +.. _tui_homard: + +The computation +=============== + +Methods of the class homard +""""""""""""""""""""""""""" + + +Example +""""""" + + +Corresponding graphical interface +""""""""""""""""""""""""""""""""" +Look at :ref:`gui_homard` diff --git a/doc/en/tui_usage.rst b/doc/en/tui_usage.rst new file mode 100644 index 00000000..ab212dc6 --- /dev/null +++ b/doc/en/tui_usage.rst @@ -0,0 +1,13 @@ +User's guide of the TUI +======================= +The functionnalities of the module HOMARD are available by python instructions. We shall find here the description of each of the functions. + +.. toctree:: + :maxdepth: 2 + + tui_create_case + tui_create_iteration + tui_create_hypothese + tui_create_zone + tui_create_boundary + tui_homard diff --git a/doc/en/tutorials.rst b/doc/en/tutorials.rst new file mode 100644 index 00000000..317cab1f --- /dev/null +++ b/doc/en/tutorials.rst @@ -0,0 +1,121 @@ +Examples +======== +.. index:: single: example +.. index:: single: python + +On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables. Il faut penser à adapter la valeur de la variable ``data_dir`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. +C'est dans le répertoire ``dircase`` que seront écrits les fichiers résultant des adaptations successives. Ce répertoire est créé par défaut dans ``/tmp``. + +Loading of the module HOMARD +"""""""""""""""""""""""""""" +.. index:: single: yacs + +Le chargement du module HOMARD se fait de manière analogue aux autres modules. + + :: + + import HOMARD + homard = salome.lcc.FindOrLoadComponent('FactoryServer','HOMARD') + homard.SetCurrentStudy(salome.myStudy) + +Pour utiliser le module HOMARD au sein d'un schéma YACS distribué, le chargement se fait ainsi : + + :: + + import HOMARD + my_container.load_component_Library('HOMARD') + homard = my_container.create_component_instance('HOMARD',0) + homard.SetCurrentStudy(salome.myStudy) + +Uniform refinement +"""""""""""""""""" +.. index:: single: refinement;uniform + +On fera ici trois raffinements uniformes successifs du maillage contenu dans le fichier ``tutorial_1.00.med``. Quelques remarques : + * la même hypothèse est utilisée à chaque itération + * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents. + +.. literalinclude:: ../files/tutorial_1.py + :lines: 53-86 + +.. note:: + Download the files + + * :download:`maillage initial<../files/tutorial_1.00.med.gz>` + * :download:`commandes python<../files/tutorial_1.py>` + + +Refinement by zones +""""""""""""""""""" +.. index:: single: zone + +On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine. On notera que le type de raffinement n'a pas été précisé ; par défaut, il sera donc conforme. + +.. literalinclude:: ../files/tutorial_2.py + :lines: 53-98 + +.. note:: + Download the files + + * :download:`maillage initial<../files/tutorial_2.00.med.gz>` + * :download:`commandes python<../files/tutorial_2.py>` + + +Refinement driven by a field +"""""""""""""""""""""""""""" +.. index:: single: field + +On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés. +Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. + +.. literalinclude:: ../files/tutorial_3.py + :lines: 53-128 + +.. note:: + Download the files + + * :download:`maillage et champ étape 0<../files/tutorial_3.00.med.gz>` + * :download:`maillage et champ étape 1<../files/tutorial_3.01.med.gz>` + * :download:`commandes python<../files/tutorial_3.py>` + + +Non plane boundaries +"""""""""""""""""""" +.. index:: single: field +.. index:: single: yacs + +On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés. On commence par raffiner les faces internes aux tuyaux ; ensuite, on raffine deux fois de suite les faces externes aux tuyaux. +Le schéma YACS réalisant cette adaptation est téléchargeable. + +.. literalinclude:: ../files/tutorial_4.py + :lines: 53-112 + +.. note:: + Download the files + + * :download:`maillage initial<../files/tutorial_4.00.med.gz>` + * :download:`maillage de la frontière discrète<../files/tutorial_4.fr.med.gz>` + * :download:`commandes python<../files/tutorial_4.py>` + * :download:`schéma YACS<../files/tutorial_4.xml>` + + +Specific instructions for a 2D mesh +""""""""""""""""""""""""""""""""""" +.. index:: single: 2D + +Les instructions pour adapter un maillage 2D sont exactement identiques à celles nécessaires à l'adaptation d'un maillage 3D. La seule exception concerne le raffinement selon des zones géométriques : des fonctions différentes sont utilisées pour pouvoir définir des zones 2D. On donne alors les coordonnées 2D des zones, en précisant l'orientation du plan du maillage. +Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. + +.. literalinclude:: ../files/tutorial_5.py + :lines: 53-98 + +.. note:: + Download the files + + * :download:`maillage initial<../files/tutorial_5.00.med.gz>` + * :download:`maillage de la frontière discrète<../files/tutorial_5.fr.med.gz>` + * :download:`commandes python<../files/tutorial_5.py>` + + +.. toctree:: + :maxdepth: 2 diff --git a/doc/fr/Makefile.am b/doc/fr/Makefile.am new file mode 100644 index 00000000..a87a162e --- /dev/null +++ b/doc/fr/Makefile.am @@ -0,0 +1,100 @@ +# Copyright (C) 2011-2013 CEA/DEN, EDF R&D +# +# This library is free software; you can redistribute it and/or +# modify it under the terms of the GNU Lesser General Public +# License as published by the Free Software Foundation; either +# version 2.1 of the License. +# +# This library is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# Lesser General Public License for more details. +# +# You should have received a copy of the GNU Lesser General Public +# License along with this library; if not, write to the Free Software +# Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +# +# See http://www.salome-platform.org/ or email : webmaster.salome@opencascade.com +# + +homarddoc_langue=fr +# +include $(top_srcdir)/adm_local/unix/make_common_starter.am + +if SPHINX_IS_OK + +homarddoc_DATA=html/index.html +html/index.html:$(RSTFILES) dummy + +dummy: + make htm + make latex + +endif + +homarddocdir=$(docdir)/gui/HOMARD/$(homarddoc_langue) + +SPHINXOPTS = +SOURCEDIR = $(srcdir) +SPHINXBUILD = sphinx-build +PAPEROPT_a4 = -D latex_paper_size=a4 +ALLSPHINXOPTS = -d doctrees $(PAPEROPT_a4) $(SPHINXOPTS) $(SOURCEDIR) + +htm: + mkdir -p html doctrees + $(SPHINXBUILD) -c $(top_builddir)/doc/$(homarddoc_langue) -b html $(ALLSPHINXOPTS) html + @echo + @echo "Build fini. Les pages HTML sont dans html." + +latex: + mkdir -p latex doctrees + $(SPHINXBUILD) -c $(top_builddir)/doc/$(homarddoc_langue) -b latex $(ALLSPHINXOPTS) latex + @echo + @echo "Build fini. Les pages sont en latex." + @echo "Aller dans latex et appliquer deux fois : pdflatex HOMARD.tex pour produire HOMARD.pdf" + +RSTFILES= \ +index.rst \ +glossaire.rst \ +gui_create_boundary.rst \ +gui_create_case.rst \ +gui_create_hypothese.rst \ +gui_create_iteration.rst \ +gui_create_zone.rst \ +gui_homard.rst \ +gui_usage.rst \ +gui_mesh_info.rst \ +intro.rst \ +tui_create_boundary.rst \ +tui_create_case.rst \ +tui_create_hypothese.rst \ +tui_create_iteration.rst \ +tui_create_zone.rst \ +tui_homard.rst \ +tui_usage.rst \ +tutorials.rst + +EXTRA_DIST += $(RSTFILES) images ../images ../files + +usr_docs: + make install-data-local + +docs: usr_docs + +install-data-local: + $(INSTALL) -d $(DESTDIR)$(homarddocdir) + if test -d "html"; then b=; else b="$(srcdir)/"; fi; \ + if test -d $$b"html"; then cp -rf $$b"html"/* $(DESTDIR)$(homarddocdir); fi; + +uninstall-local: + chmod -R +w $(DESTDIR)$(homarddocdir) + rm -rf $(DESTDIR)$(homarddocdir)/* + +clean-local: + -rm -rf doctrees + if test -d "html"; then rm -rf html ; fi + if test -d "latex"; then rm -rf latex ; fi + +dist-hook: + if test -d "html"; then b=; else b="$(srcdir)/"; fi; \ + if test -d $$b"html"; then cp -rf $$b"html" $(distdir) ; fi diff --git a/doc/fr/conf.py.in b/doc/fr/conf.py.in new file mode 100644 index 00000000..fe55af01 --- /dev/null +++ b/doc/fr/conf.py.in @@ -0,0 +1,201 @@ +# -*- coding: iso-8859-1 -*- +# +# HOMARD documentation build configuration file, created by +# sphinx-quickstart on Tue Jan 5 08:51:14 2010. +# +# This file is execfile()d with the current directory set to its containing dir. +# +# Note that not all possible configuration values are present in this +# autogenerated file. +# +# All configuration values have a default; values that are commented out +# serve to show the default. + +import sys, os + +# If extensions (or modules to document with autodoc) are in another directory, +# add these directories to sys.path here. If the directory is relative to the +# documentation root, use os.path.abspath to make it absolute, like shown here. +#sys.path.append(os.path.abspath('.')) + +# -- General configuration ----------------------------------------------------- + +# Add any Sphinx extension module names here, as strings. They can be extensions +# coming with Sphinx (named 'sphinx.ext.*') or your custom ones. +extensions = ['sphinx.ext.autodoc', 'sphinx.ext.doctest', 'sphinx.ext.coverage', 'sphinx.ext.ifconfig'] + +# Add any paths that contain templates here, relative to this directory. +templates_path = ['_templates'] + +# The suffix of source filenames. +source_suffix = '.rst' + +# The encoding of source files. +source_encoding = 'iso-8859-1' + +# The master toctree document. +master_doc = 'index' + +# General information about the project. +project = u'HOMARD' +copyright = u'1996, 2011, 2013, EDF R&D, G. Nicolas, T. Fouquet, P. Noyret' + +# The version info for the project you're documenting, acts as replacement for +# |version| and |release|, also used in various other places throughout the +# built documents. +# +# The short X.Y version. +version = '@SHORT_VERSION@' +# The full version, including alpha/beta/rc tags. +release = '@VERSION@' + +# The language for content autogenerated by Sphinx. Refer to documentation +# for a list of supported languages. +language = 'fr' + +# There are two options for replacing |today|: either, you set today to some +# non-false value, then it is used: +#today = '' +# Else, today_fmt is used as the format for a strftime call. +#today_fmt = '%B %d, %Y' + +# List of documents that shouldn't be included in the build. +#unused_docs = [] + +# List of directories, relative to source directory, that shouldn't be searched +# for source files. +exclude_trees = ['_build','ref','images','CVS'] + +# The reST default role (used for this markup: `text`) to use for all documents. +#default_role = None + +# If true, '()' will be appended to :func: etc. cross-reference text. +#add_function_parentheses = True + +# If true, the current module name will be prepended to all description +# unit titles (such as .. function::). +#add_module_names = True + +# If true, sectionauthor and moduleauthor directives will be shown in the +# output. They are ignored by default. +#show_authors = False + +# The name of the Pygments (syntax highlighting) style to use. +pygments_style = 'sphinx' + +# A list of ignored prefixes for module index sorting. +#modindex_common_prefix = [] + + +# -- Options for HTML output --------------------------------------------------- + +# The theme to use for HTML and HTML Help pages. Major themes that come with +# Sphinx are currently 'default' and 'sphinxdoc'. +html_theme = 'default' + +# Theme options are theme-specific and customize the look and feel of a theme +# further. For a list of options available for each theme, see the +# documentation. +#html_theme_options = {} + +# Add any paths that contain custom themes here, relative to this directory. +#html_theme_path = [] + +# The name for this set of Sphinx documents. If None, it defaults to +# " v documentation". +#html_title = None + +# A shorter title for the navigation bar. Default is the same as html_title. +#html_short_title = None + +# The name of an image file (relative to this directory) to place at the top +# of the sidebar. +#html_logo = None + +# The name of an image file (within the static path) to use as favicon of the +# docs. This file should be a Windows icon file (.ico) being 16x16 or 32x32 +# pixels large. +#html_favicon = None + +# Add any paths that contain custom static files (such as style sheets) here, +# relative to this directory. They are copied after the builtin static files, +# so a file named "default.css" will overwrite the builtin "default.css". +html_static_path = ['_static'] + +# If not '', a 'Last updated on:' timestamp is inserted at every page bottom, +# using the given strftime format. +#html_last_updated_fmt = '%b %d, %Y' + +# If true, SmartyPants will be used to convert quotes and dashes to +# typographically correct entities. +#html_use_smartypants = True + +# Custom sidebar templates, maps document names to template names. +#html_sidebars = {} + +# Additional templates that should be rendered to pages, maps page names to +# template names. +#html_additional_pages = {} + +# If false, no module index is generated. +html_use_modindex = True + +# If false, no index is generated. +html_use_index = True + +# If true, the index is split into individual pages for each letter. +html_split_index = False + +# If true, the reST sources are included in the HTML build as _sources/. +html_copy_source = True + +# If true, links to the reST sources are added to the pages. +#html_show_sourcelink = True + +# If true, an OpenSearch description file will be output, and all pages will +# contain a tag referring to it. The value of this option must be the +# base URL from which the finished HTML is served. +#html_use_opensearch = '' + +# If nonempty, this is the file name suffix for HTML files (e.g. ".xhtml"). +#html_file_suffix = '' + +# Output file base name for HTML help builder. +htmlhelp_basename = 'HOMARDdoc' + + +# -- Options for LaTeX output -------------------------------------------------- + +# The paper size ('letter' or 'a4'). +latex_paper_size = 'a4' + +# The font size ('10pt', '11pt' or '12pt'). +#latex_font_size = '10pt' + +# Grouping the document tree into LaTeX files. List of tuples +# (source start file, target name, title, author, documentclass [howto/manual]). +latex_documents = [ + ('index', 'HOMARD.tex', u'HOMARD Documentation', + u'G. NICOLAS et T. FOUQUET', 'manual'), +] + +# The name of an image file (relative to this directory) to place at the top of +# the title page. +#latex_logo = None + +# For "manual" documents, if this is true, then toplevel headings are parts, +# not chapters. +#latex_use_parts = False + +# Additional stuff for the LaTeX preamble. +#latex_preamble = '' + +# Documents to append as an appendix to all manuals. +#latex_appendices = [] + +# If false, no module index is generated. +latex_use_modindex = True + + +# Example configuration for intersphinx: refer to the Python standard library. +intersphinx_mapping = {'http://docs.python.org/': None} diff --git a/doc/fr/glossaire.rst b/doc/fr/glossaire.rst new file mode 100644 index 00000000..31b5476d --- /dev/null +++ b/doc/fr/glossaire.rst @@ -0,0 +1,34 @@ +.. _glossaire: + +Glossaire +========= + +.. glossary:: + :sorted: + + raffinement + Le raffinement est une opération consistant à découper les mailles sélectionnées. + + niveau + Le niveau d'une maille est le nombre de découpages qu'il a fallu pour l'obtenir. Les mailles du maillage initial sont du niveau 0 par convention. + + déraffinement + Le déraffinement est une opération consistant à supprimer des mailles. Il s'agit en fait d'annuler un précédent découpage : on ne reviendra jamais 'plus haut' que le maillage initial. + + zone + Une zone est une région qui définit un mode de pilotage de l'adaptation : toutes les mailles dont au moins une arête est dans une zone seront raffinées ou déraffinées selon le choix retenu. + + cas + Un cas est défini par un maillage initial et une succession d'adaptations. + + itération + Une itération est le processus qui permet de passer d'un maillage à un autre au sein d'un cas. Une itération met en oeuvre du raffinement et/ou du déraffinement selon l'hypothèse qui lui est attachée. + + hypothèse + Une hypothèse décrit les conditions de passage d'un maillage à un autre : raffinement et/ou déraffinement, mode de pilotage, etc. Une hypothèse est référencée par une ou plusieurs itérations. + + champ + Un champ est exprimé sur un maillage, par noeud ou par maille, avec une ou plusieurs composantes. La valeur de ce champ pilote l'adaptation. + + MED + C'est le format d'échange des maillages et des champs pour SALOME. \ No newline at end of file diff --git a/doc/fr/gui_create_boundary.rst b/doc/fr/gui_create_boundary.rst new file mode 100644 index 00000000..a6d4d605 --- /dev/null +++ b/doc/fr/gui_create_boundary.rst @@ -0,0 +1,135 @@ +.. _gui_create_boundary: + +La frontière +============ +.. index:: single: boundary +.. index:: single: frontière + +L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre. + +Il existe deux modes de description d'une frontière : + + - Discrète : ce mode est utilisé pour décrire une courbe 1D + - Analytique : ce mode est utilisé pour décrire une surface + + +Frontière discrète +================== + +Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes. + +Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : + +.. image:: images/create_boundary_di_1.png + :align: center + +La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +.. image:: images/create_boundary_di_2.png + :align: center + +.. note:: + Le fichier ne doit contenir qu'un seul maillage. + +Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton "*Nouveau*", comme expliqué précédemment. + +.. image:: images/create_boundary_di_3.png + :align: center + + + +Frontière analytique +==================== +Au démarrage, SALOME affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas. + +.. image:: images/create_boundary_an_1.png + :align: center + +Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre ou sphère. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne. + +.. image:: images/create_boundary_an_2.png + :align: center + +Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière. + +.. image:: images/create_boundary_an_3.png + :align: center + +Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe : + +.. image:: images/create_boundary_an_4.png + :align: center + +.. note:: + + Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites. + + Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. + + Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes. + + Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition. + + +Il existe trois types de frontière analytique : + + - Cylindre + - Sphère + - Cône, décrit par un axe et un angle ou par deux rayons + +.. note:: + Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. + + +Un cylindre +""""""""""" +.. index:: single: cylindre + +Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +.. image:: images/create_boundary_an_cy.png + :align: center + +Une sphère +"""""""""" +.. index:: single: sphere + +La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +.. image:: images/create_boundary_an_sp.png + :align: center + +.. index:: single: arbre d'étude + +Un cône +""""""" +.. index:: single: cone + +Un cône est défini de deux manières différentes : le centre, l'axe et l'angle d'ouverture en degré ou par deux points centrés sur l'axe et le rayon associé. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. + +Création par une origine, un axe et un angle d'ouverture : + +.. image:: images/create_boundary_an_co_1.png + :align: center + +Création par deux points centrés sur l'axe et le rayon associé : + +.. image:: images/create_boundary_an_co_2.png + :align: center + +.. index:: single: arbre d'étude + +L'arbre d'étude +""""""""""""""" +A l'issue de cette création de frontières, l'arbre d'études a été enrichi. On y trouve toutes les frontières créées, identifiées par leur nom, avec la possibilité de les éditer. + +.. image:: images/create_boundary_1.png + :align: center + + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter : :ref:`tui_create_boundary` + + + diff --git a/doc/fr/gui_create_case.rst b/doc/fr/gui_create_case.rst new file mode 100644 index 00000000..bd3597a7 --- /dev/null +++ b/doc/fr/gui_create_case.rst @@ -0,0 +1,153 @@ +.. _gui_create_case: + +La création d'un cas +==================== +.. index:: single: cas + +La définition du cas se fait par la donnée des informations suivantes : + + - Un nom + - Un répertoire + - Le fichier du maillage initial + - Le type de conformité pour la série d'adaptations envisagées + - Les éventuelles frontières courbes à respecter + +.. image:: images/create_case_1.png + :align: center + + +Le nom du cas +""""""""""""" +Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. + +Le répertoire +""""""""""""" +Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement. Ces fichiers seront visibles dans l'arbre d'études. + +.. image:: images/create_case_2.png + :align: center + +.. index:: single: maillage;initial +.. index:: single: MED + +Le maillage initial +""""""""""""""""""" +Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. + +.. image:: images/create_case_3.png + :align: center + +.. note:: + Le fichier ne doit contenir qu'un seul maillage. + +.. warning:: + Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement + +.. index:: single: type de conformité + +Le type de conformité +""""""""""""""""""""" +Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. + +L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. + +Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités : + +.. image:: images/create_case_4.png + :align: center + +* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines. +* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit. +* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre. + +.. index:: single: frontière + +Les frontières courbes +"""""""""""""""""""""" +Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine. + +Deux cas de figure sont présents : + +* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète. +* surface : une surface à suivre est décrite de manière analytique. + +On cochera le ou les boutons voulus : + +.. image:: images/create_case_5.png + :align: center + +La définition des frontières est décrite dans :ref:`gui_create_boundary`. + +.. index:: single: pyramide + +Les options avancées +"""""""""""""""""""" +Par défaut, aucune option avancée n'est active. + +Néanmoins, on peut définir une oprion avancée : + +.. image:: images/create_case_7.png + :align: center + +Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : + - mailles-points + - segments + - triangles + - quadrangles + - tétraèdres + - hexaèdres + - prismes + +Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. + + +La poursuite d'un cas +===================== +.. index:: single: poursuite +.. index:: single: yacs + +La poursuite d'un cas correspond à la situation suivante : +Une série d'adaptations ont été conduites sur un cas puis SALOME est fermé. On a gardé les répertoires de travail de ces itérations. On souhaite ensuite reprendre ces itérations pour les poursuivre là où on s'est arrêté. Cette fonctionnalité est particulièrement utile dans le cas de schémas YACS pour lesquels on scinde en plusieurs parties une longue série d'adaptations. + +La condition pour reprendre une itération est d'avoir conservé dans un même répertoire deux fichiers : + - le fichier de configuration qui a servi de données au module exécutable de HOMARD ; ce fichier se présente sous la forme ``HOMARD.Configuration.(n).vers.(n+1)`` + - le fichier au format MED qui conserve l'historique des adaptations réalisées ; ce fichier se présente sous la forme ``maill.(n).hom.med`` + +On peut choisir de partir d'une itération archivée désignée explicitement par son répertoire ou d'une itération repérée dans le répertoire archivant un cas. + +Pour poursuivre une itération connue par son répertoire d'archive, la définition du cas se fait par la donnée des informations suivantes : + + - Un nom + - Un répertoire + - Le répertoire qui contient les archives + +.. image:: images/pursue_case_1.png + :align: center + +On peut choisir de partir d'un cas déjà calculé ; par défaut, le nouveau cas sera créé en partant de la dernière itération précédemment calculée. + +.. image:: images/pursue_case_2.png + :align: center + +Si on souhaite partir d'une itération qui ne soit pas la dernière, il suffit de le préciser : + +.. image:: images/pursue_case_3.png + :align: center + +.. note:: + Les paramétrages du cas ainsi créé sont ceux de l'itération poursuivie : mode de conformité identique par exemple. + + +L'arbre d'étude +""""""""""""""" +A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni. + +.. image:: images/create_case_6.png + :align: center + + + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter :ref:`tui_create_case` + diff --git a/doc/fr/gui_create_hypothese.rst b/doc/fr/gui_create_hypothese.rst new file mode 100644 index 00000000..1fc08f2b --- /dev/null +++ b/doc/fr/gui_create_hypothese.rst @@ -0,0 +1,139 @@ +.. _gui_create_hypothese: + +L'hypothèse +=========== +.. index:: single: hypothèse + +L'hypothèse contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée. + +Il existe trois classes d'hypothèses : + + - Uniforme sur tout le maillage, + - Selon un champ, + - En fonction de zone géométrique. + +.. image:: images/create_hypothese_1.png + :align: center + + +Nom de l'hypothèse +"""""""""""""""""" +Un nom de l'hypothèse est proposé automatiquement : Hypo_1, Hypo_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente. + +Adaptation uniforme +""""""""""""""""""" +Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites. + +Adaptation selon un champ +""""""""""""""""""""""""" + +.. note:: + Pour pouvoir adapter le maillage selon un champ il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici : + +.. image:: images/create_hypothese_ch_1.png + :align: center + +Le champ voulu est à choisir dans la liste des champs contenus dans le fichier. +Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. + +Si l'on choisit une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes). + +On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*". + +.. image:: images/create_hypothese_ch_2.png + :align: center + + +Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquelles l'indicateur est supérieur à ce critère seront raffinées. +Pour le choix du critère, quatre variantes sont possible : + + - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ. + - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi]. + - au dela d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + - au dela d'une valeur absolue valant la moyenne de la répartition du champ augmentée de n fois son écart-type ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + +La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc. + +.. image:: images/create_hypothese_ch_3.png + :align: center + + +Adaptation selon une zone +""""""""""""""""""""""""" +.. index:: single: zone + +Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (voir :ref:`gui_create_zone`) : + +.. image:: images/create_hypothese_zo_1.png + :align: center + +Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre, ce qui permet de sélectionner les zones voulues. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothèse. + +.. image:: images/create_hypothese_zo_2.png + :align: center + + +Filtrage par les groupes +"""""""""""""""""""""""" +.. index:: single: groupe + +On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modidiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final. +On coche le bouton associé : + +.. image:: images/create_hypothese_gr_1.png + :align: center + +La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothèse d'adaptation. + +.. image:: images/create_hypothese_gr_2.png + :align: center + + +Interpolation de champs +""""""""""""""""""""""" +.. index:: single: interpolation + +.. note:: + Pour pouvoir interpoler un champ de l'ancien vers le nouveau maillage, il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). + +Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni : + +.. image:: images/create_hypothese_ch_4.png + :align: center + +Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni : + +.. image:: images/create_hypothese_ch_5.png + :align: center + + +Les options avancées +"""""""""""""""""""" +Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie. +Si la case est cochée, on définira les options avancées. + +Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer. + +La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement. + +Le dernier choix porte sur une sortie supplémentaire de l'adaptation. Si la case est cochée, le fichier MED en sortie contiendra un champ contenant le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Par défaut, la case n'est pas cochée et le champ n'est pas produit. + +.. image:: images/create_hypothese_av_1.png + :align: center + +.. index:: single: arbre d'étude + +L'arbre d'étude +""""""""""""""" +.. index:: single: arbre d'étude + +L'arbre d'études contient les hypothèses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente. + +.. image:: images/create_hypothese_2.png + :align: center + + + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter :ref:`tui_create_hypothese` diff --git a/doc/fr/gui_create_iteration.rst b/doc/fr/gui_create_iteration.rst new file mode 100644 index 00000000..0b662fd0 --- /dev/null +++ b/doc/fr/gui_create_iteration.rst @@ -0,0 +1,83 @@ +.. _gui_create_iteration: + +L'itération +=========== +.. index:: single: itération + +La définition d'une itération se fait par la donnée des informations suivantes : + + - L'itération précédente + - Le nom du maillage résultat + - L'hypothèse utilisée + - Eventuellement, le fichier du champ d'indicateurs d'erreur + +.. image:: images/create_iteration_1.png + :align: center + +Le nom de l'itération +""""""""""""""""""""" +Un nom de cas est proposé automatiquement : Iter_1, Iter_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente. + +L'itération précédente +"""""""""""""""""""""" +L'itération précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. + +.. index:: single: maillage;résultat + +Le nom du maillage résultat +""""""""""""""""""""""""""" +L'itération en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'itération précédente. + +.. index:: single: champ +.. index:: single: MED + +Le champ +"""""""" +Pour créer ou utiliser une hypothèse d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. + + +.. image:: images/create_iteration_2.png + :align: center + +Dans le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "*Pas de temps choisi*". Les valeurs de 'Pas de temps' et de 'Numéro d'ordre' sont celles correspondant à la convention MED (time step / rank). Ces valeurs dépendent de la logique qui a été retenue par le logiciel qui a écrit le fichier. Souvent ces deux valeurs sont identiques mais il arrive que l'on disjoigne les pas de temps et les intervalles d'archivage. + +.. image:: images/create_iteration_3.png + :align: center + +.. index:: single: hypothèse + +L'hypothèse utilisée +"""""""""""""""""""" +L'itération en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothèse. Celle-ci est choisie dans la liste des hypothèses existantes. + +Au démarrage, il faut créer une première hypothèse par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese`) : + +.. image:: images/create_iteration_4.png + :align: center + +Ensuite, si une hypothèse précédemment définie convient, il suffit de la sélectionner dans la liste proposée. Sinon, il faut créer une nouvelle hypothèse par activation du bouton "*Nouveau*", puis la sélectionner dans la liste proposée : + +.. image:: images/create_iteration_5.png + :align: center + + +.. note:: + Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothèse. + +.. index:: single: arbre d'étude + +L'arbre d'étude +""""""""""""""" +A l'issue de cette création d'itération, l'arbre d'études a été enrichi. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'itération courante, identifiée par son nom. On trouve aussi l'hypothèse qui lui est attachée. L'icône en regard de l'itération permet de différencier les itérations calculées ou non. + +.. image:: images/create_iteration_6.png + :align: center + +Quand plusieurs itérations s'enchaînent, leur hypothèse est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux itérations peuvent partager la même hypothèse. + +.. image:: images/create_iteration_7.png + :align: center + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter :ref:`tui_create_iteration` diff --git a/doc/fr/gui_create_zone.rst b/doc/fr/gui_create_zone.rst new file mode 100644 index 00000000..b57e4725 --- /dev/null +++ b/doc/fr/gui_create_zone.rst @@ -0,0 +1,101 @@ +.. _gui_create_zone: + +La zone +======= +.. index:: single: zone +.. index:: single: 2D + +L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner. + +En 3D, il existe quatre types de zone : + + - Parallélépipède + - Cylindre + - Tuyau + - Sphère + +Leurs analogues en 2D sont : + + - Rectangle + - Disque + - Disque percé + +Le principe du raffinement selon des zones est le suivant. Chaque arête de maille dont les deux extrémités +sont incluses dans une même zone sera coupée. Ensuite HOMARD applique l'algorithme de traitement de la +conformité pour produire un maillage correct. + +.. note:: + Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. + +Nom de la zone +"""""""""""""" +Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone. + +Un parallélépipède +"""""""""""""""""" +.. index:: single: boite + +Le parallélépipède est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction. + +.. image:: images/create_zone_1.png + :align: center + +Un cylindre +""""""""""" +.. index:: single: cylindre + +Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et son rayon. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. + +.. image:: images/create_zone_2.png + :align: center + +Un tuyau +"""""""" +.. index:: single: tuyau + +Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et ses rayons interne et externe. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. + +.. image:: images/create_zone_3.png + :align: center + +Une sphère +"""""""""" +.. index:: single: sphere + +La sphère est définie par son centre et son rayon. + +.. image:: images/create_zone_4.png + :align: center + +Un rectangle +"""""""""""" +.. index:: single: rectangle + +Le rectangle est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chacune des directions valides. La coordonnée constante est affichée pour information, mais n'est pas modifiable. + +.. image:: images/create_zone_21.png + :align: center + +Un disque +""""""""" +.. index:: single: disque + +Le disque est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et son rayon. La coordonnée constante est affichée pour information, mais n'est pas modifiable. + +.. image:: images/create_zone_22.png + :align: center + +Un disque avec trou +""""""""""""""""""" +.. index:: single: disque avec trou + +Le disque avec trou est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et ses rayons externe et interne. La coordonnée constante est affichée pour information, mais n'est pas modifiable. + +.. image:: images/create_zone_23.png + :align: center + + + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter :ref:`tui_create_zone` diff --git a/doc/fr/gui_homard.rst b/doc/fr/gui_homard.rst new file mode 100644 index 00000000..1c95652d --- /dev/null +++ b/doc/fr/gui_homard.rst @@ -0,0 +1,50 @@ +.. _gui_homard: + +Le calcul +========= +.. index:: single: itération +.. index:: single: calcul + +Lancer une adaptation +""""""""""""""""""""" +Lancer une adaptation s'obtient en sélectionnant l'itération à calculer. Elle est repérée par une icone "en attente". On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. + +.. image:: images/lancement_1.png + :align: center + +.. index:: single: arbre d'étude + +L'arbre d'étude +""""""""""""""" + +A l'issue de ce calcul, l'arbre d'études a été enrichi. L'icone devant l'itération est validée. Sous l'itération, on trouve la référence aux fichiers de résultats créés, identifiés par leur nom dans le répertoire *rep* qui a été défini à la création du cas : + + - *rep*/I(n+1)/Liste.n.vers.(n+1).log + - *rep*/I(n+1)/apad.n.vers.(n+1).bilan + - *rep*/maill.(n+1).med + +Les deux premiers fichiers sont des fichiers de texte, éditables. Liste.n.vers.(n+1).log contient des informations sur le déroulement de l'adaptation : récapitulatif du mode d'adaptation, pourcentage de mailles concernées, etc. Le fichier apad.n.vers.(n+1).bilan est un résumé des caractéristiques du maillage obtenu. + +Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. On retrouve ce maillage dans la section de l'arbre d'études du module SMESH. Il est alors visible dans ce module et utilisable ensuite comme tout autre maillage. + + +.. image:: images/lancement_2.png + :align: center + +Consulter le résultat d'une adaptation +"""""""""""""""""""""""""""""""""""""" +Les deux fichiers de texte, Liste.n.vers.(n+1).log et apad.n.vers.(n+1).bilan, sont visibles en les sélectionnant. On choisit ensuite "*Afficher le fichier*" dans le menu HOMARD ou à la souris. + +.. image:: images/lancement_3.png + :align: center + + +.. note:: + Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec SALOME. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. + "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. + "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter :ref:`tui_create_iteration` + diff --git a/doc/fr/gui_mesh_info.rst b/doc/fr/gui_mesh_info.rst new file mode 100644 index 00000000..6ede3bcd --- /dev/null +++ b/doc/fr/gui_mesh_info.rst @@ -0,0 +1,92 @@ +.. _gui_mesh_info: + +Analyse de maillage +=================== +.. index:: single: analyse +.. index:: single: information + +La demande d'analyse d'un maillage se fait par la donnée des informations suivantes : + + - Un répertoire + - Le fichier du maillage + +Si le maillage fait partie d'un cas enregistré, son analyse est faite à partir de son itération dans l'arbre d'études. Voir plus loin. + + +Maillage à importer +""""""""""""""""""" +La sélection de la fonction d'analyse est faite par le menu de la barre supérieure de la fenêtre : + +.. image:: images/mesh_info_1.png + :align: center + +La fenêtre de choix s'affiche. + +.. image:: images/mesh_info_2.png + :align: center + +Le nom du cas +------------- +Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. + +Le répertoire +------------- +Le répertoire est celui qui contiendra les fichiers produits par l'information. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. Ces fichiers seront visibles dans l'arbre d'études. + +.. image:: images/create_case_2.png + :align: center + +.. index:: single: maillage;initial +.. index:: single: MED + +Le maillage à analyser +---------------------- +Le maillage à analyser doit se trouver dans un fichier au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. + +.. image:: images/create_case_3.png + :align: center + +.. note:: + Le fichier ne doit contenir qu'un seul maillage. + +.. warning:: + Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre l'analyse des différents niveaux de raffinement/déraffinement + +Options d'analyse +----------------- +L'analyse est faite selon les options cochées. + - qualité des mailles + - diamètre des mailles + - connexité du domaine ; en un seul morceau, combien de trous, etc. + - tailles des constituants du domaine, groupe par groupe + - interpénétration des mailles, par dimension + +Le résultat de l'analyse est contenu dans le fichier ``info_av.00.bilan`` ; ce fichier est à consulter en l'affichant après sa désignation avec "*Afficher le fichier*" dans le menu HOMARD ou à la souris. + +L'arbre d'étude +--------------- +A l'issue de cette demande d'information, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, et les deux fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. + +.. image:: images/mesh_info_3.png + :align: center + + +Itération calculée +"""""""""""""""""" + +Pour analyser le maillage produit par une itération d'adaptation de maillage, on désigne à la souris cette itération dans l'arbre d'études et on lance l'analyse. On retrouve le menu similaire au cas initial : + +.. image:: images/mesh_info_4.png + :align: center + +Comme pour un maillage importé, l'arbre d'études a été enrichi avec les deux fichiers d'information de nom ``Liste.log`` et ``info_ap.xx.bilan``, où xx est le numéro de l'itération dans le cas. + +.. image:: ../images/mesh_info_5.png + :align: center + + + +Méthodes python correspondantes +""""""""""""""""""""""""""""""" +Consulter :ref:`tui_create_case` et :ref:`tui_create_iteration` + diff --git a/doc/fr/gui_usage.rst b/doc/fr/gui_usage.rst new file mode 100644 index 00000000..27943c6b --- /dev/null +++ b/doc/fr/gui_usage.rst @@ -0,0 +1,39 @@ +.. _gui_usage: + +Mode d'emploi pour l'interface graphique +======================================== +.. index:: single: cas +.. index:: single: itération + +Activer le module HOMARD +"""""""""""""""""""""""" +Pour utiliser le module HOMARD, deux façons existent : + +#. en activant l'onglet HOMARD dans la liste des modules, +#. en cliquant sur le bouton HOMARD dans la barre d'outils. + +L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée, selon le principe qui a été retenu pour tous les autres modules de SALOME. + +.. image:: images/homard_1.png + :align: center + +Définir une adaptation +"""""""""""""""""""""" + +Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`). Les adaptations sont lancées tel que décrit dans :ref:`gui_homard`. + + +Mode d'emploi de la saisie des données +"""""""""""""""""""""""""""""""""""""" + +.. toctree:: + :maxdepth: 2 + + gui_create_case + gui_create_iteration + gui_create_hypothese + gui_create_zone + gui_create_boundary + gui_homard + gui_mesh_info + diff --git a/doc/fr/images/HOMARD.png b/doc/fr/images/HOMARD.png new file mode 100644 index 00000000..9d70b474 Binary files /dev/null and b/doc/fr/images/HOMARD.png differ diff --git a/doc/fr/images/create_boundary_1.png b/doc/fr/images/create_boundary_1.png new file mode 100644 index 00000000..0460d485 Binary files /dev/null and b/doc/fr/images/create_boundary_1.png differ diff --git a/doc/fr/images/create_boundary_an_1.png b/doc/fr/images/create_boundary_an_1.png new file mode 100644 index 00000000..09630eb8 Binary files /dev/null and b/doc/fr/images/create_boundary_an_1.png differ diff --git a/doc/fr/images/create_boundary_an_2.png b/doc/fr/images/create_boundary_an_2.png new file mode 100644 index 00000000..25c6e9b1 Binary files /dev/null and b/doc/fr/images/create_boundary_an_2.png differ diff --git a/doc/fr/images/create_boundary_an_3.png b/doc/fr/images/create_boundary_an_3.png new file mode 100644 index 00000000..6f38d9f8 Binary files /dev/null and b/doc/fr/images/create_boundary_an_3.png differ diff --git a/doc/fr/images/create_boundary_an_4.png b/doc/fr/images/create_boundary_an_4.png new file mode 100644 index 00000000..abf10421 Binary files /dev/null and b/doc/fr/images/create_boundary_an_4.png differ diff --git a/doc/fr/images/create_boundary_an_co_1.png b/doc/fr/images/create_boundary_an_co_1.png new file mode 100644 index 00000000..7212cba3 Binary files /dev/null and b/doc/fr/images/create_boundary_an_co_1.png differ diff --git a/doc/fr/images/create_boundary_an_co_2.png b/doc/fr/images/create_boundary_an_co_2.png new file mode 100644 index 00000000..017b56d9 Binary files /dev/null and b/doc/fr/images/create_boundary_an_co_2.png differ diff --git a/doc/fr/images/create_boundary_an_cy.png b/doc/fr/images/create_boundary_an_cy.png new file mode 100644 index 00000000..2efc3fdc Binary files /dev/null and b/doc/fr/images/create_boundary_an_cy.png differ diff --git a/doc/fr/images/create_boundary_an_sp.png b/doc/fr/images/create_boundary_an_sp.png new file mode 100644 index 00000000..be7b28b7 Binary files /dev/null and b/doc/fr/images/create_boundary_an_sp.png differ diff --git a/doc/fr/images/create_boundary_di_1.png b/doc/fr/images/create_boundary_di_1.png new file mode 100644 index 00000000..8f80605d Binary files /dev/null and b/doc/fr/images/create_boundary_di_1.png differ diff --git a/doc/fr/images/create_boundary_di_2.png b/doc/fr/images/create_boundary_di_2.png new file mode 100644 index 00000000..d952edab Binary files /dev/null and b/doc/fr/images/create_boundary_di_2.png differ diff --git a/doc/fr/images/create_boundary_di_3.png b/doc/fr/images/create_boundary_di_3.png new file mode 100644 index 00000000..01195a12 Binary files /dev/null and b/doc/fr/images/create_boundary_di_3.png differ diff --git a/doc/fr/images/create_case_1.png b/doc/fr/images/create_case_1.png new file mode 100644 index 00000000..ddef5000 Binary files /dev/null and b/doc/fr/images/create_case_1.png differ diff --git a/doc/fr/images/create_case_2.png b/doc/fr/images/create_case_2.png new file mode 100644 index 00000000..435a5186 Binary files /dev/null and b/doc/fr/images/create_case_2.png differ diff --git a/doc/fr/images/create_case_3.png b/doc/fr/images/create_case_3.png new file mode 100644 index 00000000..eba31971 Binary files /dev/null and b/doc/fr/images/create_case_3.png differ diff --git a/doc/fr/images/create_case_4.png b/doc/fr/images/create_case_4.png new file mode 100644 index 00000000..3429fd65 Binary files /dev/null and b/doc/fr/images/create_case_4.png differ diff --git a/doc/fr/images/create_case_5.png b/doc/fr/images/create_case_5.png new file mode 100644 index 00000000..418535b5 Binary files /dev/null and b/doc/fr/images/create_case_5.png differ diff --git a/doc/fr/images/create_case_6.png b/doc/fr/images/create_case_6.png new file mode 100644 index 00000000..c5987297 Binary files /dev/null and b/doc/fr/images/create_case_6.png differ diff --git a/doc/fr/images/create_case_7.png b/doc/fr/images/create_case_7.png new file mode 100644 index 00000000..766430fe Binary files /dev/null and b/doc/fr/images/create_case_7.png differ diff --git a/doc/fr/images/create_hypothese_1.png b/doc/fr/images/create_hypothese_1.png new file mode 100644 index 00000000..73b7d548 Binary files /dev/null and b/doc/fr/images/create_hypothese_1.png differ diff --git a/doc/fr/images/create_hypothese_2.png b/doc/fr/images/create_hypothese_2.png new file mode 100644 index 00000000..fbb434b2 Binary files /dev/null and b/doc/fr/images/create_hypothese_2.png differ diff --git a/doc/fr/images/create_hypothese_av_1.png b/doc/fr/images/create_hypothese_av_1.png new file mode 100644 index 00000000..0950d138 Binary files /dev/null and b/doc/fr/images/create_hypothese_av_1.png differ diff --git a/doc/fr/images/create_hypothese_ch_1.png b/doc/fr/images/create_hypothese_ch_1.png new file mode 100644 index 00000000..392ef7b7 Binary files /dev/null and b/doc/fr/images/create_hypothese_ch_1.png differ diff --git a/doc/fr/images/create_hypothese_ch_2.png b/doc/fr/images/create_hypothese_ch_2.png new file mode 100644 index 00000000..ce3d9441 Binary files /dev/null and b/doc/fr/images/create_hypothese_ch_2.png differ diff --git a/doc/fr/images/create_hypothese_ch_3.png b/doc/fr/images/create_hypothese_ch_3.png new file mode 100644 index 00000000..a78111d5 Binary files /dev/null and b/doc/fr/images/create_hypothese_ch_3.png differ diff --git a/doc/fr/images/create_hypothese_ch_4.png b/doc/fr/images/create_hypothese_ch_4.png new file mode 100644 index 00000000..b48f6511 Binary files /dev/null and b/doc/fr/images/create_hypothese_ch_4.png differ diff --git a/doc/fr/images/create_hypothese_ch_5.png b/doc/fr/images/create_hypothese_ch_5.png new file mode 100644 index 00000000..4151dd83 Binary files /dev/null and b/doc/fr/images/create_hypothese_ch_5.png differ diff --git a/doc/fr/images/create_hypothese_gr_1.png b/doc/fr/images/create_hypothese_gr_1.png new file mode 100644 index 00000000..34f937f1 Binary files /dev/null and b/doc/fr/images/create_hypothese_gr_1.png differ diff --git a/doc/fr/images/create_hypothese_gr_2.png b/doc/fr/images/create_hypothese_gr_2.png new file mode 100644 index 00000000..3153ad43 Binary files /dev/null and b/doc/fr/images/create_hypothese_gr_2.png differ diff --git a/doc/fr/images/create_hypothese_zo_1.png b/doc/fr/images/create_hypothese_zo_1.png new file mode 100644 index 00000000..0b4f0252 Binary files /dev/null and b/doc/fr/images/create_hypothese_zo_1.png differ diff --git a/doc/fr/images/create_hypothese_zo_2.png b/doc/fr/images/create_hypothese_zo_2.png new file mode 100644 index 00000000..09353cf0 Binary files /dev/null and b/doc/fr/images/create_hypothese_zo_2.png differ diff --git a/doc/fr/images/create_iteration_1.png b/doc/fr/images/create_iteration_1.png new file mode 100644 index 00000000..affb0286 Binary files /dev/null and b/doc/fr/images/create_iteration_1.png differ diff --git a/doc/fr/images/create_iteration_2.png b/doc/fr/images/create_iteration_2.png new file mode 100644 index 00000000..3c02793f Binary files /dev/null and b/doc/fr/images/create_iteration_2.png differ diff --git a/doc/fr/images/create_iteration_3.png b/doc/fr/images/create_iteration_3.png new file mode 100644 index 00000000..a00ede7f Binary files /dev/null and b/doc/fr/images/create_iteration_3.png differ diff --git a/doc/fr/images/create_iteration_4.png b/doc/fr/images/create_iteration_4.png new file mode 100644 index 00000000..43665308 Binary files /dev/null and b/doc/fr/images/create_iteration_4.png differ diff --git a/doc/fr/images/create_iteration_5.png b/doc/fr/images/create_iteration_5.png new file mode 100644 index 00000000..92a9ab00 Binary files /dev/null and b/doc/fr/images/create_iteration_5.png differ diff --git a/doc/fr/images/create_iteration_6.png b/doc/fr/images/create_iteration_6.png new file mode 100644 index 00000000..339e1e10 Binary files /dev/null and b/doc/fr/images/create_iteration_6.png differ diff --git a/doc/fr/images/create_iteration_7.png b/doc/fr/images/create_iteration_7.png new file mode 100644 index 00000000..8816eeff Binary files /dev/null and b/doc/fr/images/create_iteration_7.png differ diff --git a/doc/fr/images/create_zone_1.png b/doc/fr/images/create_zone_1.png new file mode 100644 index 00000000..aa32ef17 Binary files /dev/null and b/doc/fr/images/create_zone_1.png differ diff --git a/doc/fr/images/create_zone_2.png b/doc/fr/images/create_zone_2.png new file mode 100644 index 00000000..1664d52f Binary files /dev/null and b/doc/fr/images/create_zone_2.png differ diff --git a/doc/fr/images/create_zone_21.png b/doc/fr/images/create_zone_21.png new file mode 100644 index 00000000..8d156f16 Binary files /dev/null and b/doc/fr/images/create_zone_21.png differ diff --git a/doc/fr/images/create_zone_22.png b/doc/fr/images/create_zone_22.png new file mode 100644 index 00000000..f27faaa0 Binary files /dev/null and b/doc/fr/images/create_zone_22.png differ diff --git a/doc/fr/images/create_zone_23.png b/doc/fr/images/create_zone_23.png new file mode 100644 index 00000000..8bce36d5 Binary files /dev/null and b/doc/fr/images/create_zone_23.png differ diff --git a/doc/fr/images/create_zone_3.png b/doc/fr/images/create_zone_3.png new file mode 100644 index 00000000..abaf4068 Binary files /dev/null and b/doc/fr/images/create_zone_3.png differ diff --git a/doc/fr/images/create_zone_4.png b/doc/fr/images/create_zone_4.png new file mode 100644 index 00000000..26955a82 Binary files /dev/null and b/doc/fr/images/create_zone_4.png differ diff --git a/doc/fr/images/homard_1.png b/doc/fr/images/homard_1.png new file mode 100644 index 00000000..80006888 Binary files /dev/null and b/doc/fr/images/homard_1.png differ diff --git a/doc/fr/images/homard_2.png b/doc/fr/images/homard_2.png new file mode 100644 index 00000000..8ec72957 Binary files /dev/null and b/doc/fr/images/homard_2.png differ diff --git a/doc/fr/images/intro_1.png b/doc/fr/images/intro_1.png new file mode 100644 index 00000000..bfc3bd26 Binary files /dev/null and b/doc/fr/images/intro_1.png differ diff --git a/doc/fr/images/intro_31.png b/doc/fr/images/intro_31.png new file mode 100644 index 00000000..175264e0 Binary files /dev/null and b/doc/fr/images/intro_31.png differ diff --git a/doc/fr/images/intro_32.png b/doc/fr/images/intro_32.png new file mode 100644 index 00000000..f4022ca2 Binary files /dev/null and b/doc/fr/images/intro_32.png differ diff --git a/doc/fr/images/intro_33.png b/doc/fr/images/intro_33.png new file mode 100644 index 00000000..a0bd05e2 Binary files /dev/null and b/doc/fr/images/intro_33.png differ diff --git a/doc/fr/images/intro_331.png b/doc/fr/images/intro_331.png new file mode 100644 index 00000000..ba34e383 Binary files /dev/null and b/doc/fr/images/intro_331.png differ diff --git a/doc/fr/images/intro_34.png b/doc/fr/images/intro_34.png new file mode 100644 index 00000000..94866890 Binary files /dev/null and b/doc/fr/images/intro_34.png differ diff --git a/doc/fr/images/intro_35.png b/doc/fr/images/intro_35.png new file mode 100644 index 00000000..73b7d548 Binary files /dev/null and b/doc/fr/images/intro_35.png differ diff --git a/doc/fr/images/intro_36.png b/doc/fr/images/intro_36.png new file mode 100644 index 00000000..36a77bf4 Binary files /dev/null and b/doc/fr/images/intro_36.png differ diff --git a/doc/fr/images/intro_37.png b/doc/fr/images/intro_37.png new file mode 100644 index 00000000..f04c5122 Binary files /dev/null and b/doc/fr/images/intro_37.png differ diff --git a/doc/fr/images/intro_38.png b/doc/fr/images/intro_38.png new file mode 100644 index 00000000..2d29392c Binary files /dev/null and b/doc/fr/images/intro_38.png differ diff --git a/doc/fr/images/intro_39.png b/doc/fr/images/intro_39.png new file mode 100644 index 00000000..ad542ba7 Binary files /dev/null and b/doc/fr/images/intro_39.png differ diff --git a/doc/fr/images/intro_8.gif b/doc/fr/images/intro_8.gif new file mode 100644 index 00000000..b11d9253 Binary files /dev/null and b/doc/fr/images/intro_8.gif differ diff --git a/doc/fr/images/lancement_1.png b/doc/fr/images/lancement_1.png new file mode 100644 index 00000000..5a7e6cf7 Binary files /dev/null and b/doc/fr/images/lancement_1.png differ diff --git a/doc/fr/images/lancement_2.png b/doc/fr/images/lancement_2.png new file mode 100644 index 00000000..9655bcb1 Binary files /dev/null and b/doc/fr/images/lancement_2.png differ diff --git a/doc/fr/images/lancement_3.png b/doc/fr/images/lancement_3.png new file mode 100644 index 00000000..aef0b242 Binary files /dev/null and b/doc/fr/images/lancement_3.png differ diff --git a/doc/fr/images/menu_1.png b/doc/fr/images/menu_1.png new file mode 100644 index 00000000..ed5b5c46 Binary files /dev/null and b/doc/fr/images/menu_1.png differ diff --git a/doc/fr/images/menu_2.png b/doc/fr/images/menu_2.png new file mode 100644 index 00000000..405f9a8d Binary files /dev/null and b/doc/fr/images/menu_2.png differ diff --git a/doc/fr/images/mesh_info_1.png b/doc/fr/images/mesh_info_1.png new file mode 100644 index 00000000..044f8dcc Binary files /dev/null and b/doc/fr/images/mesh_info_1.png differ diff --git a/doc/fr/images/mesh_info_2.png b/doc/fr/images/mesh_info_2.png new file mode 100644 index 00000000..9f77229f Binary files /dev/null and b/doc/fr/images/mesh_info_2.png differ diff --git a/doc/fr/images/mesh_info_3.png b/doc/fr/images/mesh_info_3.png new file mode 100644 index 00000000..04193271 Binary files /dev/null and b/doc/fr/images/mesh_info_3.png differ diff --git a/doc/fr/images/mesh_info_4.png b/doc/fr/images/mesh_info_4.png new file mode 100644 index 00000000..ea3ec0c4 Binary files /dev/null and b/doc/fr/images/mesh_info_4.png differ diff --git a/doc/fr/images/pursue_case_1.png b/doc/fr/images/pursue_case_1.png new file mode 100644 index 00000000..71589708 Binary files /dev/null and b/doc/fr/images/pursue_case_1.png differ diff --git a/doc/fr/images/pursue_case_2.png b/doc/fr/images/pursue_case_2.png new file mode 100644 index 00000000..ac3cd9dc Binary files /dev/null and b/doc/fr/images/pursue_case_2.png differ diff --git a/doc/fr/images/pursue_case_3.png b/doc/fr/images/pursue_case_3.png new file mode 100644 index 00000000..f0f8f6fe Binary files /dev/null and b/doc/fr/images/pursue_case_3.png differ diff --git a/doc/fr/index.rst b/doc/fr/index.rst new file mode 100644 index 00000000..092fdcdb --- /dev/null +++ b/doc/fr/index.rst @@ -0,0 +1,53 @@ +.. HOMARD documentation master file, created by + sphinx-quickstart on Tue Jan 5 08:51:14 2010. + You can adapt this file completely to your liking, but it should at least + contain the root `toctree` directive. + +.. |logo| image:: ../images/HOMARD.png + +Documentation du composant HOMARD |logo| +---------------------------------------- +HOMARD est le composant qui permet l'adaptation de maillage au sein de la plateforme SALOME. + +*HOMARD est une marque déposée d'EDF.* + +Table des matières de ce mode d'emploi +"""""""""""""""""""""""""""""""""""""" + +.. toctree:: + :maxdepth: 2 + + intro + gui_usage + tui_usage + tutorials + +Licence +""""""" +.. index:: single: Licence + +La licence pour ce module est la GNU Lesser General Public License (Lesser GPL), tel qu'il est déclaré ici et dans les fichiers source. + +.. literalinclude:: ../licence.txt + +En complément, nous souhaitons que toute publication décrivant un travail utilisant ce module, ou tout produit commercial l'utilisant, cite au moins l'une des références ci-dessous : + + * *HOMARD, a SALOME module for Mesh Adaptation*, + http://www.salome-platform.org/ + + * *SALOME The Open Source Integration Platform for Numerical Simulation*, + http://www.salome-platform.org/ + + * G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, *Finite + Elements in Analysis and Design*, Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 + +La documentation de ce module est aussi couverte par la licence et l'obligation de citation. + +Index et tables +""""""""""""""" + +* :ref:`genindex` +* :ref:`modindex` +* :ref:`search` +* :ref:`glossaire` + diff --git a/doc/fr/intro.rst b/doc/fr/intro.rst new file mode 100644 index 00000000..3e76e74d --- /dev/null +++ b/doc/fr/intro.rst @@ -0,0 +1,203 @@ +.. _gui_intro: + +Introduction +============ + +Présentation générale +""""""""""""""""""""" +Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des codes de calculs par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du code de calcul auquel il est couplé. + +Raffiner le maillage signifie découper des mailles désignées selon des indications founies par l'utilisateur. Déraffiner le maillage signifie revenir en arrière sur des découpages précédemment réalisés : ainsi, en aucun cas HOMARD ne peut simplifier un maillage existant qui aura été créé trop fin. Le déraffinement prend toute son importance dans les calculs quand la zone d'intérêt se déplace au cours du calcul pour ne plus tenir compte de raffinements précédemment réalisés et qui deviennent inutiles. On en trouvera une illustration au bas de cette page. + +HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : + - mailles-points + - segments + - triangles + - quadrangles + - tétraèdres + - hexaèdres + - prismes + +Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. +Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y avoir cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. + +Le cas des pyramides est à part. Pour un maillage comportant des hexaèdres ou des prismes, la mise en conformité du maillage issu du raffinement crée des pyramides pour assurer la liaison entre deux régions de niveaux de raffinement différents. Ces pyramides sont gérées comme toutes les mailles de transition et ne sont pas redécoupées par la suite. En revanche, si le maillage initial contient des pyramides, HOMARD ne saura pas l'adapter et émettra un message d'erreur. Dans certains cas particuliers, on pourra néanmoins traiter un tel maillage, comme il est décrit dans la rubrique 'Options avancées' de :ref:`gui_create_case`). + +Plusieurs motivations apparaissent pour adapter un maillage : + + - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. + - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. + - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. + +Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. +Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. + +.. image:: images/intro_1.png + :align: center + +Au final, la chaîne complète part du maillage initial produit par un mailleur. Elle comprend des maillons successifs (calcul d'indicateur / adaptation) comme sur la figure ci-après. + +.. image:: ../images/intro_2.png + :align: center + +Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. + +.. note:: + Pour une description plus complète, voir :download:`Description générale de HOMARD <../files/HOMARD_0.pdf>`. + +.. note:: + Pour une référence à HOMARD, utiliser : + + G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, "*Finite Elements in Analysis and Design*", Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 + + `Accessible en cliquant ici `_ + + +Quelques illustrations de maillage adaptés +"""""""""""""""""""""""""""""""""""""""""" +.. index:: single: illustration + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_3.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_4.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_5.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_6.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_7.png | +| :align: center | +| | ++---------------------------------------------------------------+ +| | +| .. image:: ../images/intro_8.gif | +| :align: center | +| | ++---------------------------------------------------------------+ + +Démarrage rapide +"""""""""""""""" +.. index:: single: démarrage +.. index:: single: exemple + +L'ensemble des options de pilotage du module HOMARD dans SALOME est décrit dans le :ref:`gui_usage`. Mais on trouvera ici le B.A. BA pour découvrir l'utilisation de HOMARD à partir d'un exemple simple. Imaginons que l'on a effectué un calcul de thermique sur un maillage donné. On a récupéré en sortie de ce calcul un fichier au format MED, contenant le maillage et le champ des températures aux noeuds. On aimerait adapter le maillage de telle sorte que l'écart de température entre deux noeuds voisins soit inférieur à une valeur donnée. + +La première action nécessite de lancer le module HOMARD, en créant une nouvelle étude, selon le principe qui a été retenu pour tous les autres modules de SALOME. + +.. image:: images/homard_1.png + :align: center + +Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD. + +.. image:: images/homard_2.png + :align: center + +La fenêtre suivante apparaît : + +.. image:: images/intro_31.png + :align: center + +Il faut fournir deux informations : le répertoire qui contiendra les fichiers produits par les adaptations successives et le fichier issu du calcul que l'on vient de faire. On valide par "Appliquer et fermer". + +.. image:: images/intro_32.png + :align: center + +L'arbre d'études est enrichi de ce cas. On déplie le cas jusqu'à afficher le maillage correspondant à l'itération 0. On désigne cette itération initiale et on demande une nouvelle itération par "*Nouvelle itération*" dans le menu HOMARD ou à la souris. + +.. image:: images/intro_331.png + :align: center + +La fenêtre suivante apparaît : + +.. image:: images/intro_33.png + :align: center + +On désigne le fichier issu du calcul que l'on vient de faire et qui contient le champ de température. C'est le même que celui qui a été donné dans la définition du cas. + +.. image:: images/intro_34.png + :align: center + +On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît : + +.. image:: images/intro_35.png + :align: center + +On modifie les options par défaut pour correspondre à notre choix de pilotage de l'adaptation. La sélection d'un pilotage par les saut entre éléments et d'un seuil absolu de 4.0 va demander le découpage de chaque arête de maille où le température varie de plus de 4.0 degrés entre les deux extrémités de l'arête. + +.. image:: images/intro_36.png + :align: center + +On valide par "Appliquer et fermer" cette création d'hypothése, puis la création de la nouvelle itération. On se retrouve avec un arbre d'études enrichi avec la description de l'hypothèse créée et de l'itération à calculer, repérée par une icone "en attente". + +Lancer l'adaptation s'obtient en sélectionnant l'itération à calculer. On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. L'arbre d'études s'enrichit de fichiers d'informations et du nom du fichier au format MED qui contient le nouveau maillage, ``maill.01.med``. On remarque qu'il est placé dans le répertoire qui a été désigné à la création du cas. + +.. image:: images/intro_37.png + :align: center + +A ce stade, on va utiliser ce nouveau maillage pour un deuxième calcul, dans les mêmes conditions que le premier. Une fois que ce nouveau calcul est achevé, on peut décider de poursuivre le processus d'adaptation. Pour cela on revient dans SALOME et on active le module HOMARD. On désigne l'itération que l'avait calculée précédemment "*Iter_1*" et on demande une nouvelle itération. La fenêtre suivante apparaît : + +.. image:: images/intro_38.png + :align: center + +Comme on continue l'adaptation avec le même critère de saut de température entre noeuds voisins, on garde l'hypothèse "*Hypo_1*". Il suffit de désigner le fichier issu du calcul que l'on vient de faire et qui contient le nouveau champ de température. + +.. image:: images/intro_39.png + :align: center + +Comme précédemment, on lance l'adaptation et on récupère les résultats dans le répertoire du cas, dont le maillage ``maill.02.med``. + +.. image:: ../images/intro_40.png + :align: center + +On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu. + + +Evolutions du module +"""""""""""""""""""" +.. index:: single: évolution + +On trouvera ici les principales évolutions de HOMARD à partir de la première version livrée dans SALOME 6.5. + +SALOME VERSION 6.6 : + - Interfaçage avec med 3.0.6 + - Valeurs par défaut des instants + - Acceptation des mailles de type TRIA7 et QUAD9 + - Option de sortie dans le fichier MED du niveau de raffinement atteint dans chaque maille + +SALOME VERSION 7.1 : + - Correction d'une anomalie sur le filtrage du raffinement par les groupes + - Pilotage de l'adaptation par un seuil basé sur la moyenne et l'écart-type (voir :ref:`tui_create_hypothese`) + - En TUI, choix du dernier instant comme instant de pilotage par SetTimeStepRankLast (voir :ref:`tui_create_iteration`) + - Possibilité de détruire les objets (GUI et TUI) + - Modification des fonctions TUI pour qu'elles agissent sur les objets et non plus sur les noms : + ``homard.AssociateIterHypo(iter_name,hypo_name)`` devient ``iter.AssociateHypo(hypo_name)``, ``homard.AssociateHypoZone(hypo_name,zone_name,type_use)`` devient ``hypo.AddZone(zone_name,type_use)``, ``homard.CreateIteration(iter_name,iter_parent_name)`` devient ``case.NextIteration(iter_name)`` ou ``iter.NextIteration(iter_name)`` + - Ajout de fonctions : + ``cas.LastIteration()`` : retourne la dernière itération de la descendance du cas (voir :ref:`tui_create_iteration`) + - Analyse de maillages (voir :ref:`gui_mesh_info`) + +SALOME VERSION 7.2 : + - Possibilité d'utiliser un cone comme support de frontiere 2D (voir :ref:`tui_create_boundary`) + - Choix de publier ou non le résultat dans SMESH (voir :ref:`tui_create_iteration`) + ``iter.Compute(option)`` devient ``iter.Compute(option1, option2)`` + - Possibilité de poursuivre une suite d'itérations archivées dans un répertoire (voir :ref:`gui_create_case`) + + + + + + diff --git a/doc/fr/tui_create_boundary.rst b/doc/fr/tui_create_boundary.rst new file mode 100644 index 00000000..f28dced4 --- /dev/null +++ b/doc/fr/tui_create_boundary.rst @@ -0,0 +1,170 @@ +.. _tui_create_boundary: + +La frontière +============ + +.. index:: single: boundary +.. index:: single: frontière +.. index:: single: cylindre +.. index:: single: sphere + +Les variables sont décrites dans :ref:`gui_create_boundary`. + +Méthodes de la classe homard +"""""""""""""""""""""""""""" +Ces méthodes retournent une instance de la classe boundary. + ++----------------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryDi | +| | +| **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)** | +| Retourne une instance de la classe ``boundary`` de type discret après sa création | +| | +| - ``boundary_name`` : le nom de la frontière discrète | +| - ``mesh_name`` : le nom du maillage de la frontière | +| - ``mesh_file`` : le nom du fichier contenant ce maillage | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryCylinder | +| | +| **CreateBoundaryCylinder(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** | +| Retourne une instance de la classe ``boundary`` analytique de type cylindrique | +| après sa création | +| | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un cylindre | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées d'un point sur l'axe du cylindre | +| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | +| - ``R`` : rayon du cylindre | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundarySphere | +| | +| **CreateBoundarySphere(boundary_name, Xcen, Ycen, Zcen, R)** | +| Retourne une instance de la classe ``boundary`` analytique de type sphérique | +| après sa création | +| | +| - ``boundary_name`` : le nom de la frontière analytique basée sur une sphere | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | +| - ``R`` : rayon de la sphère | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryConeA | +| | +| **CreateBoundaryConeA(boundary_name, Xaxe, Yaxe, Zaxe, Angle, Xcen, Ycen, Zcen)** | +| Retourne une instance de la classe ``boundary`` analytique de type conique | +| après sa création | +| | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | +| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe (non nécessairement normé) | +| - ``Angle`` : angle d'ouverture du cône en degre (entre 0 et 90) | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre du cône | ++----------------------------------------------------------------------------------------+ +| .. module:: CreateBoundaryConeR | +| | +| **CreateBoundaryConeR(boundary_name, Xc1, Yc1, Zc1, R1, Xc2, Yc2, Zc2, R2)** | +| Retourne une instance de la classe ``boundary`` analytique de type conique | +| après sa création | +| | +| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | +| - ``Xc1``, ``Yc1``, ``Zc1`` : coordonnées du premier centre du cône | +| - ``R1`` : rayon du cône à la hauteur du premier centre | +| - ``Xc2``, ``Yc2``, ``Zc2`` : coordonnées du second centre du cône | +| - ``R2`` : rayon du cône à la hauteur du second centre | ++----------------------------------------------------------------------------------------+ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetBoundary | +| | +| **GetBoundary(boundary_name)** | +| Retourne l'instance de la classe ``boundary`` connue par | +| son nom | +| | +| - ``boundary_name`` : le nom de la frontière | ++---------------------------------------------------------------+ +| .. module:: GetAllBoundarysName | +| | +| **GetAllBoundarysName()** | +| Retourne la liste des noms de toutes les frontières | +| existantes | +| | ++---------------------------------------------------------------+ + +Méthodes de la classe cas +""""""""""""""""""""""""" +Voir également dans dans :ref:`tui_create_case`. + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddBoundaryGroup | +| | +| **AddBoundaryGroup(boundary, group)** | +| Ajoute une frontière à la définition du cas | +| | +| - ``boundary`` : nom d'une frontière courbe à suivre | +| | +| Pour une frontière discrète : | +| | +| . si toutes les lignes courbes sont suivies, le second | +| argument est une chaîne vide. | +| | +| . si seulement certaines lignes courbes sont suivies, | +| ``group`` est le nom d'un groupe de segments à suivre. | +| | +| Pour une frontière analytique : | +| | +| - ``group`` : nom d'un groupe de faces placées sur la | +| frontière | ++---------------------------------------------------------------+ + +Méthodes de la classe boundary +"""""""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Retourne le nom de la frontière | ++---------------------------------------------------------------+ +| .. module:: GetType | +| | +| **GetType()** | +| Retourne le type de la frontière : | +| | +| * 0 : discrète | +| * 1 : cylindre | +| * 2 : sphère | +| * 3 : cône défini par un axe et un angle | +| * 4 : cône défini par deux rayons | ++---------------------------------------------------------------+ +| .. module:: GetCoords | +| | +| **GetCoords()** | +| Retourne un tableau contenant les coordonnées de la | +| frontière dans l'ordre d'entrée dans le CreateBoundaryXXXX| +| associé | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete()** | +| Detruit la frontière. | +| Pour une frontière discrète, le fichier du maillage | +| associé est conservé. | +| | +| Retourne un entier : | +| * 0 : destruction réussie | +| * autre valeur : problème | ++---------------------------------------------------------------+ + + +Exemple +""""""" +Création d'une frontière discrète, d'une frontière sphèrique, puis d'une frontière cylindrique : :: + + inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med') + fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5) + fron_2 = homard.CreateBoundaryCylinder('CYL_1', 0.0, 25., -25., 25., 50., 75., 100.) + + +Saisie graphique correspondante +""""""""""""""""""""""""""""""" +Consulter :ref:`gui_create_boundary` diff --git a/doc/fr/tui_create_case.rst b/doc/fr/tui_create_case.rst new file mode 100644 index 00000000..ea05eae5 --- /dev/null +++ b/doc/fr/tui_create_case.rst @@ -0,0 +1,252 @@ +.. _tui_create_case: + +Le cas +====== +.. index:: single: cas +.. index:: single: type de conformité +.. index:: single: maillage;initial + +Les variables sont décrites dans :ref:`gui_create_case`. + +Méthodes de la classe homard +"""""""""""""""""""""""""""" + +Création d'un cas +^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: CreateCase | +| | +| **CreateCase(case_name, mesh_name, mesh_file)** | +| Retourne une instance de la classe ``cas`` après sa | +| création | +| | +| - ``case_name`` : le nom du cas | +| - ``mesh_name`` : le nom du maillage initial | +| - ``mesh_file`` : le nom du fichier MED contenant ce | +| ce maillage | +| | +| Par défaut : | +| | +| * le répertoire des résultats est ``/tmp`` | +| * l'adaptation est conforme | ++---------------------------------------------------------------+ +| .. module:: GetCase | +| | +| **GetCase(case_name)** | +| Retourne l'instance de la classe ``cas`` connue par | +| son nom | +| | +| - ``case_name`` : le nom du cas | ++---------------------------------------------------------------+ +| .. module:: GetAllCasesName | +| | +| **GetAllCasesName()** | +| Retourne la liste des noms de tous les cas existant | +| | ++---------------------------------------------------------------+ + +Création d'un cas par poursuite d'une itération calculée +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: CreateCaseFromIteration | +| | +| **CreateCaseFromIteration(case_name, dir_name)** | +| Retourne une instance de la classe ``cas`` après sa | +| création | +| | +| - ``case_name`` : le nom du cas | +| - ``dir_name`` : le nom du répertoire contenant | +| l'itération à poursuivre | +| | ++---------------------------------------------------------------+ +| .. module:: CreateCaseFromCaseLastIteration | +| | +| **CreateCaseFromCaseLastIteration(case_name, dir_name)** | +| Retourne une instance de la classe ``cas`` après sa | +| création | +| | +| - ``case_name`` : le nom du cas | +| - ``dir_name`` : le nom du répertoire contenant | +| le cas à poursuivre | +| | ++---------------------------------------------------------------+ +| .. module:: CreateCaseFromCaseIteration | +| | +| **CreateCaseFromCaseIteration(case_name, dir_name, number)** | +| Retourne une instance de la classe ``cas`` après sa | +| création | +| | +| - ``case_name`` : le nom du cas | +| - ``dir_name`` : le nom du répertoire contenant | +| le cas à poursuivre | +| - ``number`` : le numéro de l'itération du cas | +| | ++---------------------------------------------------------------+ + + + +Méthodes de la classe cas +""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Retourne le nom du cas | ++---------------------------------------------------------------+ +| .. module:: SetDirName | +| | +| **SetDirName(dirname)** | +| Affecte le répertoire des résutats associé au cas. Cela ne| +| peut se faire qu'après la création du cas et avant le | +| premier calcul. | +| | +| - ``dirname`` : le nom du répertoire des résutats | ++---------------------------------------------------------------+ +| .. module:: GetDirName | +| | +| **GetDirName()** | +| Retourne le nom du répertoire des résutats associé au cas | ++---------------------------------------------------------------+ +| .. module:: SetConfType | +| | +| **SetConfType(conf_type)** | +| Définit le mode de conformité associé au cas | +| | +| - ``conf_type`` : entier précisant le mode de conformité | +| | +| * 1 : conforme | +| * 2 : non conforme avec 1 noeud par maille | +| * 3 : non conforme avec 1 noeud par arete de maille | +| * 4 : non conforme quelconque | ++---------------------------------------------------------------+ +| .. module:: GetConfType | +| | +| **GetConfType()** | +| Retourne le type de conformité | ++---------------------------------------------------------------+ +| .. module:: GetIter0 | +| | +| **GetIter0()** | +| Retourne l'itération associée au maillage initial. | +| Cette itération est créée automatiquement par le module | +| HOMARD et est utilisée pour enchaîner les adaptations. | +| Elle correspond à un maillage initial ou à une itération | +| de poursuite d'un cas précédent. | ++---------------------------------------------------------------+ +| .. module:: AddBoundaryGroup | +| | +| **AddBoundaryGroup(boundary, group)** | +| Ajoute une frontière à la définition du cas | +| | +| - ``boundary`` : nom d'une frontière courbe à suivre | +| | +| Pour une frontière discrète : | +| | +| . si toutes les lignes courbes sont suivies, le second | +| argument est une chaîne vide. | +| . si seulement certaines lignes courbes sont suivies, | +| ``group`` est le nom d'un groupe de segments à suivre. | +| | +| Pour une frontière analytique : | +| | +| - ``group`` : nom d'un groupe de faces placées sur la | +| frontière | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete(option)** | +| Detruit le cas et toutes les itérations associées. Le | +| fichier du maillage initial associé est conservé. | +| | +| - ``option`` : un entier précisant ce qui est fait des | +| fichiers de maillage associés | +| | +| * 0 : les fichiers sont conservés | +| * 1 : les fichiers sont supprimés | +| | +| Retourne un entier : | +| * 0 : destruction réussie | +| * autre valeur : problème | ++---------------------------------------------------------------+ +| .. module:: GetState | +| | +| **GetState()** | +| Retourne l'état du cas : | +| * 0 : correspond à un maillage initial | +| * autre valeur : poursuite d'une itération de numéro n| ++---------------------------------------------------------------+ + +Les options avancées +^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetPyram | +| | +| **SetPyram(option)** | +| Définit le statut des pyramides pour le cas | +| | +| - ``option`` : entier précisant le statut des pyramides | +| éventuellement présentes dans le maillage initial | +| | +| * 0 : pyramides refusées (défaut) | +| * 1 : pyramides autorisées | ++---------------------------------------------------------------+ +| .. module:: GetPyram | +| | +| **GetPyram()** | +| Retourne le statut accordé aux pyramides éventuellement | +| présentes dans le maillage initial | ++---------------------------------------------------------------+ + +Informations sur le maillage initial +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: MeshInfo | +| | +| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | +| Donne des informations sur le maillage. Pour chaque | +| option, le choix 0 correspond à ne rien faire, alors que | +| le choix 1 active l'option. | +| | +| - ``Qual`` : qualité des mailles | +| - ``Diam`` : diamètre des mailles | +| - ``Conn`` : connexité du domaine ; en un seul morceau, | +| combien de trous, etc. | +| - ``Tail`` : tailles des constituants du domaine, groupe | +| par groupe | +| - ``Inte`` : interpénétration des mailles, par dimension | ++---------------------------------------------------------------+ + + +Exemple +""""""" +La création de l'objet case_1 se fait ainsi : :: + + case_name = "CAS_1" + mesh_name = "MAILL" + mesh_file = "/local00/Salome/Adapt/m0.med" + case_1 = homard.CreateCase(case_name, mesh_name, mesh_file) + dirname = "/local00/Salome/Adapt/resu" + case_1.SetDirName(dirname) + case_1.SetConfType(1) + case_1.AddBoundaryGroup( 'intersection', '' ) + case_1.AddBoundaryGroup( 'cyl_1', 'T1_EXT' ) + case_1.AddBoundaryGroup( 'cyl_1', 'T2_EXT' ) + case_1.AddBoundaryGroup( 'cyl_2', 'T_INT' ) + + + +Saisie graphique correspondante +""""""""""""""""""""""""""""""" +Consulter :ref:`gui_create_case` + + diff --git a/doc/fr/tui_create_hypothese.rst b/doc/fr/tui_create_hypothese.rst new file mode 100644 index 00000000..84f1bf54 --- /dev/null +++ b/doc/fr/tui_create_hypothese.rst @@ -0,0 +1,318 @@ +.. _tui_create_hypothese: + +L'hypothèse +=========== + +.. index:: single: itération +.. index:: single: hypothèse +.. index:: single: zone + +Les variables sont décrites dans :ref:`gui_create_hypothese`. + +Méthodes de la classe homard +"""""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: CreateHypothesis | +| | +| **CreateHypothesis(hypo_name)** | +| Retourne une instance de la classe ``hypothese`` | +| | +| - ``hypo_name`` : le nom de l'hypothèse | ++---------------------------------------------------------------+ +| .. module:: GetHypothesis | +| | +| **GetHypothesis(hypo_name)** | +| Retourne l'instance de la classe ``hypothese`` connue par | +| son nom | +| | +| - ``hypo_name`` : le nom de l'hypothèse | ++---------------------------------------------------------------+ +| .. module:: GetAllHypothesesName | +| | +| **GetAllHypothesesName()** | +| Retourne la liste des noms de toutes les hypothèses créées| +| | ++---------------------------------------------------------------+ + +Méthodes de la classe hypothese +""""""""""""""""""""""""""""""" + +Généralités +^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Retourne le nom de l'hypothèse | ++---------------------------------------------------------------+ +| .. module:: SetAdapRefinUnRef | +| | +| **SetAdapRefinUnRef(Adap, Refin, UnRef)** | +| Affecte le mode d'adaptation associé à l'hypothèse | +| | +| - ``Adap`` : entier précisant le type d'adaptation | +| | +| * -1 : uniforme | +| * 0 : selon des zones | +| * 1 : selon un champ | +| | +| - ``Refin`` : entier précisant si le raffinement est actif| +| | +| * 0 : inactif | +| * 1 : actif | +| | +| - ``UnRef`` : entier précisant si déraffinement est actif | +| | +| * 0 : inactif | +| * 1 : actif | +| | ++---------------------------------------------------------------+ +| .. module:: GetAdapType | +| | +| **GetAdapType()** | +| Retourne le type d'adaptation | ++---------------------------------------------------------------+ +| .. module:: GetRefinType | +| | +| **GetRefinType()** | +| Retourne le type de raffinement | ++---------------------------------------------------------------+ +| .. module:: GetUnRefType | +| | +| **GetUnRefType()** | +| Retourne le type de déraffinement | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete()** | +| Detruit l'hypothèse | +| | +| Retourne un entier : | +| * 0 : destruction réussie | +| * autre valeur : problème | ++---------------------------------------------------------------+ + +Le champ et les seuils +^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetField | +| | +| **SetField(field_name)** | +| Attribue un nom de champ à l'hypothèse | +| | +| - ``field_name`` : le nom du champ | ++---------------------------------------------------------------+ +| .. module:: GetFieldName | +| | +| **GetFieldName()** | +| Retourne le nom du champ | ++---------------------------------------------------------------+ +| .. module:: SetUseField | +| | +| **SetUseField(use_field)** | +| Attribue un mode d'usage du champ à l'hypothèse | +| | +| - ``use_field`` : entier précisant l'usage du champ | +| | +| * 0 : valeur par élément (défaut) | +| * 1 : saut entre un élément et ses voisins | ++---------------------------------------------------------------+ +| .. module:: SetRefinThr | +| | +| **SetRefinThr(type_thres, threshold)** | +| Définit les seuils en raffinement | +| | +| - ``type_thres`` : entier précisant le type de seuil en | +| raffinement | +| | +| * 1 : valeur absolue | +| * 2 : valeur relative en % | +| * 3 : fraction des mailles en % | +| * 4 : moyenne + n fois l'écart-type | +| | +| - ``threshold`` : valeur numérique entrant dans la | +| définition du seuil | ++---------------------------------------------------------------+ +| .. module:: GetRefinThrType | +| | +| **GetRefinThrType()** | +| Retourne le type de seuil de raffinement | ++---------------------------------------------------------------+ +| .. module:: SetUnRefThr | +| | +| **SetUnRefThr(type_thres, threshold)** | +| Définit les seuils en déraffinement | +| | +| - ``type_thres`` : entier précisant le type de seuil en | +| déraffinement | +| | +| * 1 : valeur absolue | +| * 2 : valeur relative en % | +| * 3 : fraction des mailles en % | +| * 4 : moyenne - n fois l'écart-type | +| | +| - ``threshold`` : valeur du seuil | ++---------------------------------------------------------------+ +| .. module:: GetUnRefThrType | +| | +| **GetUnRefThrType()** | +| Retourne le type de seuil de déraffinement | ++---------------------------------------------------------------+ + + +Les composantes du champ +^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddComp | +| | +| **AddComp(comp_name)** | +| Ajoute une composante du champ à considérer | +| | +| - ``comp_name`` : nom d'une composante à prendre en | +| compte | ++---------------------------------------------------------------+ +| .. module:: SetUseComp | +| | +| **SetUseComp(use_comp)** | +| Définit l'usage des composantes | +| | +| - ``use_comp`` : entier précisant l'usage des composantes | +| | +| * 0 : norme L2 (défaut) | +| * 1 : norme infinie | +| * 2 : valeur relative, si une seule composante | ++---------------------------------------------------------------+ +| .. module:: GetListComp | +| | +| **GetListComp()** | +| Retourne la liste des composantes utilisées | ++---------------------------------------------------------------+ + + +Les zones +^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddZone | +| | +| **AddZone(zone_name, type_use)** | +| | +| - ``zone_name`` : le nom de la zone à ajouter | +| - ``type_use`` : entier précisant l'usage de la zone | +| | +| * 1 : raffinement | +| * -1 : déraffinement | ++---------------------------------------------------------------+ + + +Le filtrage par les groupes +^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: AddGroup | +| | +| **AddGroup(group_name)** | +| Ajoute un groupe au filtrage | +| | +| - ``group_name`` : nom du groupe à prendre en compte | ++---------------------------------------------------------------+ +| .. module:: GetGroups | +| | +| **GetGroups()** | +| Retourne la liste des groupes utilisés pour le filtrage | ++---------------------------------------------------------------+ + +Les options avancées +^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetNivMax | +| | +| **SetNivMax(nivmax)** | +| Définit le niveau maximal de raffinement | +| | +| - ``nivmax`` : niveau de raffinement à ne pas dépasser | ++---------------------------------------------------------------+ +| .. module:: GetNivMax | +| | +| **GetNivMax()** | +| Retourne le niveau maximal de raffinement | ++---------------------------------------------------------------+ +| .. module:: SetDiamMin | +| | +| **SetDiamMin(diammin)** | +| Définit le diamètre minimal des futures mailles | +| | +| - ``diammin`` : diamètre minimal voulu pour une maille | ++---------------------------------------------------------------+ +| .. module:: GetDiamMin | +| | +| **GetDiamMin()** | +| Retourne le diamètre minimal voulu | ++---------------------------------------------------------------+ +| .. module:: SetAdapInit | +| | +| **SetAdapInit(option)** | +| Définit le traitement à appliquer aux mailles où | +| le champ de pilotage de l'adaptation n'est pas défini | +| | +| - ``option`` : entier précisant le choix retenu | +| | +| * 0 : aucun effet (défaut) | +| * 1 : les mailles sans indicateurs sont raffinées | +| * -1 : les mailles sans indicateurs sont déraffinées | ++---------------------------------------------------------------+ +| .. module:: GetAdapInit | +| | +| **GetAdapInit()** | +| Retourne le type de traitement à appliquer aux mailles où | +| le champ de pilotage de l'adaptation n'est pas défini | ++---------------------------------------------------------------+ +| .. module:: SetLevelOutput | +| | +| **SetLevelOutput(option)** | +| Précise si on veut récupérer le niveau de raffinement des | +| mailles sous la forme d'un champ | +| | +| - ``option`` : entier précisant le choix retenu | +| | +| * 0 : aucun effet (défaut) | +| * 1 : le champ est produit | ++---------------------------------------------------------------+ +| .. module:: GetLevelOutput | +| | +| **GetLevelOutput()** | +| Retourne le choix retenu pour la récupération du niveau | +| de raffinement | ++---------------------------------------------------------------+ + + +Exemple +""""""" +La création de l'objet hypo_1 se fait ainsi : :: + + hypo_1 = homard.CreateHypothesis("HypoField") + hypo_1.SetAdapRefinUnRef(1, 1, 0) + hypo_1.SetField("INDICATEUR") + hypo_1.AddComp("INDX") + hypo_1.AddComp("INDZ") + hypo_1.SetRefinThr(1, 80.) + + +Saisie graphique correspondante +""""""""""""""""""""""""""""""" +Consulter :ref:`gui_create_hypothese` + +.. warning:: + En mode graphique, si on édite une hypothèse et que l'on modifie une de ses caractéristiques, par exemple le seuil de raffinement, toutes les itérations qui ont été calculées précédemment avec cette hypothèse sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. diff --git a/doc/fr/tui_create_iteration.rst b/doc/fr/tui_create_iteration.rst new file mode 100644 index 00000000..33f89f62 --- /dev/null +++ b/doc/fr/tui_create_iteration.rst @@ -0,0 +1,311 @@ +.. _tui_create_iteration: + +L'itération +=========== + +.. index:: single: itération +.. index:: single: hypothèse +.. index:: single: zone + +Les variables sont décrites dans :ref:`gui_create_iteration`. + +Méthodes de la classe homard +"""""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetIteration | +| | +| **GetIteration(iter_name)** | +| Retourne l'instance de la classe ``iteration`` connue par | +| son nom | +| | +| - ``iter_name`` : le nom de l'itération | ++---------------------------------------------------------------+ +| .. module:: GetAllIterationsName | +| | +| **GetAllIterationsName()** | +| Retourne la liste des noms de toutes les itérations créées| +| | ++---------------------------------------------------------------+ + +Méthodes de la classe cas +""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: NextIteration | +| | +| **NextIteration(iter_name)** | +| Retourne une instance de la classe ``iteration`` après | +| sa création : elle suit immédiatement l'itération | +| initiale, correspondant au maillage définissant le cas | +| | +| - ``iter_name`` : le nom à donner à la nouvelle itération | +| | +| Par défaut : | +| | +| * le maillage produit a le même nom que l'itération | ++---------------------------------------------------------------+ +| .. module:: LastIteration | +| | +| **LastIteration()** | +| Retourne une instance de la classe ``iteration`` : la | +| dernière créée dans la descendance de l'itération initiale| +| du cas. C'est celle qui est sans fille. Il y a erreur s'il| +| existe plus d'une branche dans la descendance. | +| | ++---------------------------------------------------------------+ + +Méthodes de la classe iteration +""""""""""""""""""""""""""""""" + +Généralités +^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: NextIteration | +| | +| **NextIteration(iter_name)** | +| Retourne une instance de la classe ``iteration`` qui suit | +| l'itération courante | +| | +| - ``iter_name`` : le nom à donner à la nouvelle itération | +| | +| Par défaut : | +| | +| * le maillage produit a le même nom que l'itération | ++---------------------------------------------------------------+ +| .. module:: Compute | +| | +| **Compute(option1, option2)** | +| Calcule le maillage correspondant à l'itération | +| | +| - ``option1`` : un entier précisant ce qui se passe quand | +| des fichiers de résultats existent déjà | +| | +| * 0 : arrêt en erreur | +| * 1 : écrasement des anciens fichiers | +| | +| - ``option2`` : un entier précisant ce qui est fait des | +| résultats | +| | +| * 1 : aucune action particulière | +| * 2 : publication dans le module SMESH | +| | +| Retourne un entier : | +| * 0 : adaptation réussie | +| * autre valeur : problème | ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Retourne le nom de l'itération | ++---------------------------------------------------------------+ +| .. module:: GetNumber | +| | +| **GetNumber()** | +| Retourne le numéro de l'itération. | +| | +| L'itération 0 est celle associée au maillage initial. | +| Ensuite, une itération de numéro N est issue de | +| l'adaptation d'une itération de numéro N-1. | ++---------------------------------------------------------------+ +| .. module:: GetIterParent | +| | +| **GetIterParent()** | +| Retourne l'itération mère | ++---------------------------------------------------------------+ +| .. module:: LastIteration | +| | +| **LastIteration()** | +| Retourne une instance de la classe ``iteration`` : la | +| dernière créée dans la descendance de l'itération. C'est | +| celle qui est sans fille. Il y a erreur s'il existe plus | +| d'une branche dans la descendance. | ++---------------------------------------------------------------+ +| .. module:: AssociateHypo | +| | +| **AssociateHypo(hypo_name)** | +| Associe une hypothèse à l'itération | +| | +| - ``hypo_name`` : le nom de l'hypothèse à associer | ++---------------------------------------------------------------+ +| .. module:: GetHypoName | +| | +| **GetHypoName()** | +| Retourne le nom de l'hypothèse associée | ++---------------------------------------------------------------+ +| .. module:: GetCaseName | +| | +| **GetCaseName()** | +| Retourne le nom du cas associé | ++---------------------------------------------------------------+ +| .. module:: GetState | +| | +| **GetState()** | +| Retourne l'état de l'itération | +| | +| - ``2`` : itération calculée correctement | +| - ``1`` : itération non calculée | +| - ``<=0`` : itération initiale à ne pas calculer, de | +| numéro valant la valeur absolue de l'état | ++---------------------------------------------------------------+ +| .. module:: GetLogFile | +| | +| **GetLogFile()** | +| Retourne le nom du fichier retraçant le déroulement de | +| l'exécution de HOMARD | ++---------------------------------------------------------------+ +| .. module:: GetFileInfo | +| | +| **GetFileInfo()** | +| Retourne le nom du fichier contenant l'analyse du maillage| ++---------------------------------------------------------------+ +| .. module:: GetDirName | +| | +| **GetDirName()** | +| Retourne le nom du répertoire des résutats associé à | +| l'itération | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete(option)** | +| Detruit l'itération et toutes ses filles éventuelles. | +| | +| - ``option`` : un entier précisant ce qui est fait des | +| fichiers de maillage associés | +| | +| * 0 : les fichiers sont conservés | +| * 1 : les fichiers sont détruits | +| | +| Retourne un entier : | +| * 0 : destruction réussie | +| * autre valeur : problème | ++---------------------------------------------------------------+ + +Informations sur les maillages +^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetMeshName | +| | +| **SetMeshName(mesh_name)** | +| Définit le nom du maillage produit | +| | +| - ``mesh_name`` : le nom du maillage produit | ++---------------------------------------------------------------+ +| .. module:: GetMeshName | +| | +| **GetMeshName()** | +| Retourne le nom du maillage produit | ++---------------------------------------------------------------+ +| .. module:: SetMeshFile | +| | +| **SetMeshFile(mesh_file)** | +| Définit le fichier MED du maillage produit | +| | +| - ``mesh_file`` : le nom du fichier MED qui contiendra | +| le maillage produit | ++---------------------------------------------------------------+ +| .. module:: GetMeshFile | +| | +| **GetMeshFile()** | +| Retourne le nom du fichier MED du maillage produit | ++---------------------------------------------------------------+ +| .. module:: MeshInfo | +| | +| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | +| Donne des informations sur le maillage. Pour chaque | +| option, le choix 0 correspond à ne rien faire, alors que | +| le choix 1 active l'option. | +| | +| - ``Qual`` : qualité des mailles | +| - ``Diam`` : diamètre des mailles | +| - ``Conn`` : connexité du domaine ; en un seul morceau, | +| combien de trous, etc. | +| - ``Tail`` : tailles des constituants du domaine, groupe | +| par groupe | +| - ``Inte`` : interpénétration des mailles, par dimension | ++---------------------------------------------------------------+ + +Informations sur le champ +^^^^^^^^^^^^^^^^^^^^^^^^^ + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: SetFieldFile | +| | +| **SetFieldFile(field_file)** | +| Définit le fichier MED des champs utiles | +| | +| - ``field_file`` : le nom du fichier MED contenant le | +| champ | ++---------------------------------------------------------------+ +| .. module:: SetTimeStepRank | +| | +| **SetTimeStepRank(TimeStep, Rank)** | +| Définit les instants pour le champ | +| | +| Inutile si aucun instant n'est défini pour le champ | +| | +| Si un seul instant est défini pour le champ, il est pris | +| par défaut. | +| | +| - ``TimeStep`` : l'instant où est pris le champ | +| - ``Rank`` : le numéro d'ordre où est pris le champ | ++---------------------------------------------------------------+ +| .. module:: SetTimeStepRankLast | +| | +| **SetTimeStepRankLast()** | +| Précise que le dernier instant enregistré pour le champ | +| est utilisé | ++---------------------------------------------------------------+ +| .. module:: GetFieldFileName | +| | +| **GetFieldFileName()** | +| Retourne le nom du fichier MED du champ | ++---------------------------------------------------------------+ +| .. module:: GetTimeStep | +| | +| **GetTimeStep()** | +| Retourne l'instant où est pris le champ | ++---------------------------------------------------------------+ +| .. module:: GetRank | +| | +| **GetRank()** | +| Retourne le numéro d'ordre où est pris le champ | ++---------------------------------------------------------------+ + +Exemple +""""""" +.. index:: single: maillage;initial + +Pour la création de la première itération, on part de celle qui correspond au maillage initial. C'est celle contenue dans le cas. :: + + iter_name = "Iteration_1" + iter_1 = case_1.NextIteration(iter_name) + iter_1.SetField(field_file) + iter_1.SetTimeStepRank( 0, 0) + iter_1.SetMeshName("maill_01") + iter_1.SetMeshFile("/local00/M.01.med") + iter_1.AssociateHypo("HypoField") + codret = iter_1.Compute(1, 2) + +Ensuite, on crée une itération suivante à l'itération parent de laquelle on part. :: + + iter_name = "Iteration_2" + iter_2 = iter_1.NextIteration(iter_name) + iter_2.SetField(field_file) + iter_2.SetTimeStepRank( 1, 1) + iter_2.SetMeshName("maill_02") + iter_2.SetMeshFile("/local00/M.02.med") + iter_2.AssociateHypo("HypoField") + codret = iter_2.Compute(1, 2) + + +Saisie graphique correspondante +""""""""""""""""""""""""""""""" +Consulter :ref:`gui_create_iteration` diff --git a/doc/fr/tui_create_zone.rst b/doc/fr/tui_create_zone.rst new file mode 100644 index 00000000..ecad60c5 --- /dev/null +++ b/doc/fr/tui_create_zone.rst @@ -0,0 +1,208 @@ +.. _tui_create_zone: + +La zone +======= + +.. index:: single: zone +.. index:: single: boite +.. index:: single: sphere +.. index:: single: cylindre +.. index:: single: tuyau +.. index:: single: disque +.. index:: single: disque avec trou +.. index:: single: 2D + +Les variables sont décrites dans :ref:`gui_create_zone`. + +Méthodes de la classe homard +"""""""""""""""""""""""""""" + +Ces méthodes retournent une instance de la classe zone. + ++----------------------------------------------------------------------------------+ ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneBox | +| | +| **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)** | +| Retourne une instance de la classe ``zone`` de type parallélépipèdique | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur un parallélépipède | +| - ``Xmin``, ``Xmax`` : coordonnées extrêmes selon X | +| - ``Ymin``, ``Ymax`` : coordonnées extrêmes selon Y | +| - ``Zmin``, ``Zmax`` : coordonnées extrêmes selon Z | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneCylinder | +| | +| **CreateZoneCylinder(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H)** | +| Retourne une instance de la classe ``zone`` de type cylindrique | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur un cylindre | +| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | +| positionné sur l'axe | +| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | +| - ``R`` : rayon du cylindre | +| - ``H`` : hauteur du cylindre | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZonePipe | +| | +| **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** | +| Retourne une instance de la classe ``zone`` de type tuyau | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur un tuyau | +| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | +| positionné sur l'axe | +| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | +| - ``R`` : rayon externe du tuyau | +| - ``H`` : hauteur du tuyau | +| - ``R`` : rayon interne du tuyau | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneSphere | +| | +| **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)** | +| Retourne une instance de la classe ``zone`` de type sphérique | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur une sphère | +| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | +| - ``R`` : rayon de la sphère | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneBox2D | +| | +| **CreateZoneBox2D(zone_name, Umin, Umax, Vmin, Vmax, Orient)** | +| Retourne une instance de la classe ``zone`` de type rectangulaire | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur un rectangle | +| - ``Umin``, ``Umax`` : coordonnées extrêmes pour la 1ère dimension | +| - ``Vmin``, ``Vmax`` : coordonnées extrêmes pour la 2nde dimension | +| - ``Orient`` : entier précisant la convention d'orientation du plan | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneDisk | +| | +| **CreateZoneDisk(zone_name, Ucen, Vcen, R, Orient)** | +| Retourne une instance de la classe ``zone`` de type disque | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur un disque plein | +| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | +| - ``R`` : rayon du disque | +| - ``Orient`` : entier précisant la convention d'orientation du plan | ++----------------------------------------------------------------------------------+ +| .. module:: CreateZoneDiskWithHole | +| | +| **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)** | +| Retourne une instance de la classe ``zone`` de type disque troué | +| après sa création | +| | +| - ``zone_name`` : le nom de la zone basée sur un disque troué | +| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | +| - ``R`` : rayon externe du disque | +| - ``Rint`` : rayon interne du disque | +| - ``Orient`` : entier précisant la convention d'orientation du plan | ++----------------------------------------------------------------------------------+ + + + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| La convention d'orientation du plan est la même que celle | +| appliquée dans les autres modules de SALOME, en particulier | +| GEOM : | +| | +| 1. plan XY ; U <==> X et V <==> Y | +| 2. plan YZ ; U <==> Y et V <==> Z | +| 3. plan ZX ; U <==> Z et V <==> X | ++---------------------------------------------------------------+ + + +.. note:: + Les fonctions définissant des zones 2D ne doivent être utilisées que si l'intégralité du + maillage est 2D, dans un des plans de coordonnées. + + + + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetZone | +| | +| **GetZone(zone_name)** | +| Retourne l'instance de la classe ``zone`` connue par | +| son nom | +| | +| - ``zone_name`` : le nom de la zone | ++---------------------------------------------------------------+ +| .. module:: GetAllZonesName | +| | +| **GetAllZonesName()** | +| Retourne la liste des noms de toutes les zones créées | +| | ++---------------------------------------------------------------+ + + +Méthodes de la classe zone +"""""""""""""""""""""""""" + ++---------------------------------------------------------------+ ++---------------------------------------------------------------+ +| .. module:: GetName | +| | +| **GetName()** | +| Retourne le nom de la zone | ++---------------------------------------------------------------+ +| .. module:: GetType | +| | +| **GetType()** | +| Retourne le type de la zone | +| | +| * 2 : parallélépipède | +| * 3 : sphère | +| * 5 : cylindre | +| * 7 : tuyau | +| * 11, 12, 13 : rectangle et orientation 1, 2 ou 3 | +| * 31, 32, 33 : disque et orientation 1, 2 ou 3 | +| * 61, 62, 63 : disque percé et orientation 1, 2 ou 3 | ++---------------------------------------------------------------+ +| .. module:: GetCoords | +| | +| **GetCoords()** | +| Retourne un tableau contenant les coordonnées de la zone | +| dans l'ordre d'entrée dans le CreateZoneXXXX associé | ++---------------------------------------------------------------+ +| .. module:: Delete | +| | +| **Delete()** | +| Detruit la zone | +| | +| Retourne un entier : | +| * 0 : destruction réussie | +| * autre valeur : problème | ++---------------------------------------------------------------+ + + +Exemple +""""""" +La création d'une boîte 3D se fait ainsi : +:: + + zone_1 = homard.CreateZoneBox ("BLOC", -1., 1., -30., 40., 10.5, 20.8) + + +La création d'un disque dans le plan XY se fait ainsi : +:: + + zone_2 = homard.CreateZoneDisk ("disque", 1., 3., 43.25, 1) + + +Saisie graphique correspondante +""""""""""""""""""""""""""""""" +Consulter :ref:`gui_create_zone` + +.. warning:: + En mode graphique, si on édite une zone et que l'on modifie une des dimensions, toutes les itérations qui ont été calculées précédemment avec cette zone sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. + + + diff --git a/doc/fr/tui_homard.rst b/doc/fr/tui_homard.rst new file mode 100644 index 00000000..5727d981 --- /dev/null +++ b/doc/fr/tui_homard.rst @@ -0,0 +1,16 @@ +.. _tui_homard: + +Le calcul +========= + +Méthodes de la classe homard +"""""""""""""""""""""""""""" + + +Exemple +""""""" + + +Saisie graphique correspondante +""""""""""""""""""""""""""""""" +Consulter :ref:`gui_homard` diff --git a/doc/fr/tui_usage.rst b/doc/fr/tui_usage.rst new file mode 100644 index 00000000..fec8871e --- /dev/null +++ b/doc/fr/tui_usage.rst @@ -0,0 +1,13 @@ +Mode d'emploi pour TUI +====================== +Le module HOMARD peut se lancer à partir d'instructions python. On trouvera ici la description de chacune des fonctions accessibles par l'utilisateur. + +.. toctree:: + :maxdepth: 2 + + tui_create_case + tui_create_iteration + tui_create_hypothese + tui_create_zone + tui_create_boundary + tui_homard diff --git a/doc/fr/tutorials.rst b/doc/fr/tutorials.rst new file mode 100644 index 00000000..d9d7e6bc --- /dev/null +++ b/doc/fr/tutorials.rst @@ -0,0 +1,121 @@ +Exemples +======== +.. index:: single: exemple +.. index:: single: python + +On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables. Il faut penser à adapter la valeur de la variable ``data_dir`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. +C'est dans le répertoire ``dircase`` que seront écrits les fichiers résultant des adaptations successives. Ce répertoire est créé par défaut dans ``/tmp``. + +Chargement du module HOMARD +""""""""""""""""""""""""""" +.. index:: single: yacs + +Le chargement du module HOMARD se fait de manière analogue aux autres modules. + + :: + + import HOMARD + homard = salome.lcc.FindOrLoadComponent('FactoryServer','HOMARD') + homard.SetCurrentStudy(salome.myStudy) + +Pour utiliser le module HOMARD au sein d'un schéma YACS distribué, le chargement se fait ainsi : + + :: + + import HOMARD + my_container.load_component_Library('HOMARD') + homard = my_container.create_component_instance('HOMARD',0) + homard.SetCurrentStudy(salome.myStudy) + +Raffinement uniforme +"""""""""""""""""""" +.. index:: single: raffinement;uniforme + +On fera ici trois raffinements uniformes successifs du maillage contenu dans le fichier ``tutorial_1.00.med``. Quelques remarques : + * la même hypothèse est utilisée à chaque itération + * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents. + +.. literalinclude:: ../files/tutorial_1.py + :lines: 53-86 + +.. note:: + Téléchargement des fichiers + + * :download:`maillage initial<../files/tutorial_1.00.med.gz>` + * :download:`commandes python<../files/tutorial_1.py>` + + +Raffinement par des zones +""""""""""""""""""""""""" +.. index:: single: zone + +On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine. On notera que le type de raffinement n'a pas été précisé ; par défaut, il sera donc conforme. + +.. literalinclude:: ../files/tutorial_2.py + :lines: 53-98 + +.. note:: + Téléchargement des fichiers + + * :download:`maillage initial<../files/tutorial_2.00.med.gz>` + * :download:`commandes python<../files/tutorial_2.py>` + + +Raffinement selon un champ +"""""""""""""""""""""""""" +.. index:: single: champ + +On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés. +Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. + +.. literalinclude:: ../files/tutorial_3.py + :lines: 53-128 + +.. note:: + Téléchargement des fichiers + + * :download:`maillage et champ étape 0<../files/tutorial_3.00.med.gz>` + * :download:`maillage et champ étape 1<../files/tutorial_3.01.med.gz>` + * :download:`commandes python<../files/tutorial_3.py>` + + +Suivi de frontières courbes +""""""""""""""""""""""""""" +.. index:: single: champ +.. index:: single: yacs + +On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés. On commence par raffiner les faces internes aux tuyaux ; ensuite, on raffine deux fois de suite les faces externes aux tuyaux. +Le schéma YACS réalisant cette adaptation est téléchargeable. + +.. literalinclude:: ../files/tutorial_4.py + :lines: 53-112 + +.. note:: + Téléchargement des fichiers + + * :download:`maillage initial<../files/tutorial_4.00.med.gz>` + * :download:`maillage de la frontière discrète<../files/tutorial_4.fr.med.gz>` + * :download:`commandes python<../files/tutorial_4.py>` + * :download:`schéma YACS<../files/tutorial_4.xml>` + + +Instructions spécifiques au 2D +"""""""""""""""""""""""""""""" +.. index:: single: 2D + +Les instructions pour adapter un maillage 2D sont exactement identiques à celles nécessaires à l'adaptation d'un maillage 3D. La seule exception concerne le raffinement selon des zones géométriques : des fonctions différentes sont utilisées pour pouvoir définir des zones 2D. On donne alors les coordonnées 2D des zones, en précisant l'orientation du plan du maillage. +Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. + +.. literalinclude:: ../files/tutorial_5.py + :lines: 53-98 + +.. note:: + Téléchargement des fichiers + + * :download:`maillage initial<../files/tutorial_5.00.med.gz>` + * :download:`maillage de la frontière discrète<../files/tutorial_5.fr.med.gz>` + * :download:`commandes python<../files/tutorial_5.py>` + + +.. toctree:: + :maxdepth: 2 diff --git a/doc/glossaire.rst b/doc/glossaire.rst deleted file mode 100644 index 31b5476d..00000000 --- a/doc/glossaire.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _glossaire: - -Glossaire -========= - -.. glossary:: - :sorted: - - raffinement - Le raffinement est une opération consistant à découper les mailles sélectionnées. - - niveau - Le niveau d'une maille est le nombre de découpages qu'il a fallu pour l'obtenir. Les mailles du maillage initial sont du niveau 0 par convention. - - déraffinement - Le déraffinement est une opération consistant à supprimer des mailles. Il s'agit en fait d'annuler un précédent découpage : on ne reviendra jamais 'plus haut' que le maillage initial. - - zone - Une zone est une région qui définit un mode de pilotage de l'adaptation : toutes les mailles dont au moins une arête est dans une zone seront raffinées ou déraffinées selon le choix retenu. - - cas - Un cas est défini par un maillage initial et une succession d'adaptations. - - itération - Une itération est le processus qui permet de passer d'un maillage à un autre au sein d'un cas. Une itération met en oeuvre du raffinement et/ou du déraffinement selon l'hypothèse qui lui est attachée. - - hypothèse - Une hypothèse décrit les conditions de passage d'un maillage à un autre : raffinement et/ou déraffinement, mode de pilotage, etc. Une hypothèse est référencée par une ou plusieurs itérations. - - champ - Un champ est exprimé sur un maillage, par noeud ou par maille, avec une ou plusieurs composantes. La valeur de ce champ pilote l'adaptation. - - MED - C'est le format d'échange des maillages et des champs pour SALOME. \ No newline at end of file diff --git a/doc/glossaire_en.rst b/doc/glossaire_en.rst deleted file mode 100644 index 964aefd4..00000000 --- a/doc/glossaire_en.rst +++ /dev/null @@ -1,34 +0,0 @@ -.. _glossaire_en: - -Glossary -======== - -.. glossary:: - :sorted: - - refinement - The refinement is an operation that consists in splitting the selected elements. - - level - The level of an element corresponds to the number of splitting that were done to obtain it. The levem of the elements in the initial mesh is 0. - - unrefinement - The unrefinement is an operation that consists in removing the selected elements. In fact, the objective is to cancel a previous splitting: a 'higher' level than the initial mesh cannot be obtained. - - zone - A zone is a region that may govern the adaptation: every element with at least 2 nodes inside the zone is split or removed, depending on the choice. - - case - A case is defined with an initial mesh and a list of adaptations. - - iteration - An iteration is the process that transform a mesh to another one into a case. An iteration implies refinement and/or unrefinement, following the associated hypothesis. - - hypothesis - An hypothesis describes the conditions that governs the modification from a mesh to another one: refinement and/or unrefinement, etc. An hypothesis is referenced by 1 or more iterations. - - field - A field is expressed over a mesh, onto node or element, with 1 or more components. - - MED - It is the excange format for the meshes and the fields in SALOME. diff --git a/doc/gui_create_boundary.rst b/doc/gui_create_boundary.rst deleted file mode 100644 index a6d4d605..00000000 --- a/doc/gui_create_boundary.rst +++ /dev/null @@ -1,135 +0,0 @@ -.. _gui_create_boundary: - -La frontière -============ -.. index:: single: boundary -.. index:: single: frontière - -L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre. - -Il existe deux modes de description d'une frontière : - - - Discrète : ce mode est utilisé pour décrire une courbe 1D - - Analytique : ce mode est utilisé pour décrire une surface - - -Frontière discrète -================== - -Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes. - -Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : - -.. image:: images/create_boundary_di_1.png - :align: center - -La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -.. image:: images/create_boundary_di_2.png - :align: center - -.. note:: - Le fichier ne doit contenir qu'un seul maillage. - -Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton "*Nouveau*", comme expliqué précédemment. - -.. image:: images/create_boundary_di_3.png - :align: center - - - -Frontière analytique -==================== -Au démarrage, SALOME affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas. - -.. image:: images/create_boundary_an_1.png - :align: center - -Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre ou sphère. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne. - -.. image:: images/create_boundary_an_2.png - :align: center - -Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière. - -.. image:: images/create_boundary_an_3.png - :align: center - -Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe : - -.. image:: images/create_boundary_an_4.png - :align: center - -.. note:: - - Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites. - - Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. - - Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes. - - Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition. - - -Il existe trois types de frontière analytique : - - - Cylindre - - Sphère - - Cône, décrit par un axe et un angle ou par deux rayons - -.. note:: - Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. - - -Un cylindre -""""""""""" -.. index:: single: cylindre - -Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -.. image:: images/create_boundary_an_cy.png - :align: center - -Une sphère -"""""""""" -.. index:: single: sphere - -La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -.. image:: images/create_boundary_an_sp.png - :align: center - -.. index:: single: arbre d'étude - -Un cône -""""""" -.. index:: single: cone - -Un cône est défini de deux manières différentes : le centre, l'axe et l'angle d'ouverture en degré ou par deux points centrés sur l'axe et le rayon associé. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -Création par une origine, un axe et un angle d'ouverture : - -.. image:: images/create_boundary_an_co_1.png - :align: center - -Création par deux points centrés sur l'axe et le rayon associé : - -.. image:: images/create_boundary_an_co_2.png - :align: center - -.. index:: single: arbre d'étude - -L'arbre d'étude -""""""""""""""" -A l'issue de cette création de frontières, l'arbre d'études a été enrichi. On y trouve toutes les frontières créées, identifiées par leur nom, avec la possibilité de les éditer. - -.. image:: images/create_boundary_1.png - :align: center - - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter : :ref:`tui_create_boundary` - - - diff --git a/doc/gui_create_boundary_en.rst b/doc/gui_create_boundary_en.rst deleted file mode 100644 index db8868d3..00000000 --- a/doc/gui_create_boundary_en.rst +++ /dev/null @@ -1,132 +0,0 @@ -.. _gui_create_boundary_en: - -The boundary -============ -.. index:: single: boundary -.. index:: single: frontière - -L'objet frontière contient toutes les définitions géométriques permettant de décrire une frontière courbe à suivre. - -Il existe deux modes de description d'une frontière : - - - Discrète : ce mode est utilisé pour décrire une courbe 1D - - Analytique : ce mode est utilisé pour décrire une surface - - -Discrete boundary -================= - -Le suivi d'une frontière discrète se fera en sélectionnant une frontière choisie dans la liste des frontières discrètes existantes. - -Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : - -.. image:: images/create_boundary_di_1.png - :align: center - -La fenêtre proposée invite au choix d'un fichier de maillage. Ce maillage est celui de toutes les lignes constituant la frontière. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -.. image:: images/create_boundary_di_2.png - :align: center - -.. note:: - Le fichier ne doit contenir qu'un seul maillage. - -Si des frontières discrètes ont déjà été définies pour un autre cas, on peut sélectionner l'une d'elles. On peut également créer une nouvelle frontière discrète par activation du bouton "*Nouveau*", comme expliqué précédemment. - -.. image:: images/create_boundary_di_3.png - :align: center - - - -Analytical boundary -=================== -Au démarrage, SALOME affiche un tableau avec un seule colonne. Cette colonne contient la liste de tous les groupes du maillage initial définissant le cas. - -.. image:: images/create_boundary_an_1.png - :align: center - -Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre ou sphère. Une fois que la frontière sera validée, son nom figurera en en-tête d'une deuxième colonne. - -.. image:: images/create_boundary_an_2.png - :align: center - -Il faut maintenant établir le lien entre le maillage définissant le cas et cette frontière décrite analytiquement. Cela se fait en cochant les groupes des faces qui doivent se trouver sur la frontière. - -.. image:: images/create_boundary_an_3.png - :align: center - -Cette opération est répétée autant de fois que l'on souhaite placer des faces du maillages sur une surface courbe : - -.. image:: images/create_boundary_an_4.png - :align: center - -.. note:: - - Un groupe peut très bien ne jamais être coché : cela signifie que les mailles qu'il définit n'appartiennent à aucune des frontières décrites. - - Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. - - Plusieurs groupes peuvent être cochés pour une même frontière. Cela arrive quand le maillage initial de la zone a été subdivisé en plusieurs groupes : toutes les mailles surfaciques appartiennent à cette surface mais ont été réparties en plusieurs groupes. - - Inversement, une frontière peut très bien n'être retenue par aucun groupe. Cela arrive si elle a été définie pour un cas précédent et qu'elle est sans objet pour le cas en cours de définition. - - -Il existe trois types de frontière analytique : - - - Cylindre - - Sphère - - Cône, décrit par un axe et un angle ou par deux rayons - -.. note:: - Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. - - -Cylindre -"""""""" -.. index:: single: cylindre - -Le cylindre est défini par un point de l'axe, son axe et son rayon. L'axe est défini par un vecteur. La norme de ce vecteur n'est pas nécessairement égale à 1 ; de même, son orientation n'a aucune importance. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -.. image:: images/create_boundary_an_cy.png - :align: center - -Sphere -"""""" -.. index:: single: sphere - -La sphère est définie par son centre et son rayon. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -.. image:: images/create_boundary_an_sp.png - :align: center - -Cone -"""" -.. index:: single: cone - -Un cône est défini de deux manières différentes : le centre, l'axe et l'angle d'ouverture en degré ou par deux points centrés sur l'axe et le rayon associé. Un nom de frontière est proposé automatiquement : Boun_1, Boun_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour une autre frontière. - -Création par une origine, un axe et un angle d'ouverture : - -.. image:: images/create_boundary_an_co_1.png - :align: center - -Création par deux points centrés sur l'axe et le rayon associé : - -.. image:: images/create_boundary_an_co_2.png - :align: center - -.. index:: single: object browser - -Object browser -"""""""""""""" -A l'issue de cette création de frontières, l'arbre d'études a été enrichi. On y trouve toutes les frontières créées, identifiées par leur nom, avec la possibilité de les éditer. - -.. image:: images/create_boundary_1.png - :align: center - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_boundary_en` - - - diff --git a/doc/gui_create_case.rst b/doc/gui_create_case.rst deleted file mode 100644 index bd3597a7..00000000 --- a/doc/gui_create_case.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. _gui_create_case: - -La création d'un cas -==================== -.. index:: single: cas - -La définition du cas se fait par la donnée des informations suivantes : - - - Un nom - - Un répertoire - - Le fichier du maillage initial - - Le type de conformité pour la série d'adaptations envisagées - - Les éventuelles frontières courbes à respecter - -.. image:: images/create_case_1.png - :align: center - - -Le nom du cas -""""""""""""" -Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. - -Le répertoire -""""""""""""" -Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement. Ces fichiers seront visibles dans l'arbre d'études. - -.. image:: images/create_case_2.png - :align: center - -.. index:: single: maillage;initial -.. index:: single: MED - -Le maillage initial -""""""""""""""""""" -Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. - -.. image:: images/create_case_3.png - :align: center - -.. note:: - Le fichier ne doit contenir qu'un seul maillage. - -.. warning:: - Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement - -.. index:: single: type de conformité - -Le type de conformité -""""""""""""""""""""" -Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. - -L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. - -Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités : - -.. image:: images/create_case_4.png - :align: center - -* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines. -* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit. -* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre. - -.. index:: single: frontière - -Les frontières courbes -"""""""""""""""""""""" -Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine. - -Deux cas de figure sont présents : - -* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète. -* surface : une surface à suivre est décrite de manière analytique. - -On cochera le ou les boutons voulus : - -.. image:: images/create_case_5.png - :align: center - -La définition des frontières est décrite dans :ref:`gui_create_boundary`. - -.. index:: single: pyramide - -Les options avancées -"""""""""""""""""""" -Par défaut, aucune option avancée n'est active. - -Néanmoins, on peut définir une oprion avancée : - -.. image:: images/create_case_7.png - :align: center - -Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : - - mailles-points - - segments - - triangles - - quadrangles - - tétraèdres - - hexaèdres - - prismes - -Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. - - -La poursuite d'un cas -===================== -.. index:: single: poursuite -.. index:: single: yacs - -La poursuite d'un cas correspond à la situation suivante : -Une série d'adaptations ont été conduites sur un cas puis SALOME est fermé. On a gardé les répertoires de travail de ces itérations. On souhaite ensuite reprendre ces itérations pour les poursuivre là où on s'est arrêté. Cette fonctionnalité est particulièrement utile dans le cas de schémas YACS pour lesquels on scinde en plusieurs parties une longue série d'adaptations. - -La condition pour reprendre une itération est d'avoir conservé dans un même répertoire deux fichiers : - - le fichier de configuration qui a servi de données au module exécutable de HOMARD ; ce fichier se présente sous la forme ``HOMARD.Configuration.(n).vers.(n+1)`` - - le fichier au format MED qui conserve l'historique des adaptations réalisées ; ce fichier se présente sous la forme ``maill.(n).hom.med`` - -On peut choisir de partir d'une itération archivée désignée explicitement par son répertoire ou d'une itération repérée dans le répertoire archivant un cas. - -Pour poursuivre une itération connue par son répertoire d'archive, la définition du cas se fait par la donnée des informations suivantes : - - - Un nom - - Un répertoire - - Le répertoire qui contient les archives - -.. image:: images/pursue_case_1.png - :align: center - -On peut choisir de partir d'un cas déjà calculé ; par défaut, le nouveau cas sera créé en partant de la dernière itération précédemment calculée. - -.. image:: images/pursue_case_2.png - :align: center - -Si on souhaite partir d'une itération qui ne soit pas la dernière, il suffit de le préciser : - -.. image:: images/pursue_case_3.png - :align: center - -.. note:: - Les paramétrages du cas ainsi créé sont ceux de l'itération poursuivie : mode de conformité identique par exemple. - - -L'arbre d'étude -""""""""""""""" -A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni. - -.. image:: images/create_case_6.png - :align: center - - - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter :ref:`tui_create_case` - diff --git a/doc/gui_create_case_en.rst b/doc/gui_create_case_en.rst deleted file mode 100644 index a41405f9..00000000 --- a/doc/gui_create_case_en.rst +++ /dev/null @@ -1,153 +0,0 @@ -.. _gui_create_case_en: - -The creation of a case -====================== -.. index:: single: case - -La définition du cas se fait par la donnée des informations suivantes : - - - Un nom - - Un répertoire - - Le fichier du maillage initial - - Le type de conformité pour la série d'adaptations envisagées - - Les éventuelles frontières courbes à respecter - -.. image:: images/create_case_1.png - :align: center - - -Name of the case -"""""""""""""""" -Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. - -The directory -""""""""""""" -Le répertoire est celui qui contiendra les fichiers produits par les adaptations successives. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les maillages au format MED, dans des fichiers de nom ``maill.xx.med``, où ``xx`` est un numéro d'ordre créé automatiquement. Ces fichiers seront visibles dans l'arbre d'études. - -.. image:: images/create_case_2.png - :align: center - -.. index:: single: mesh;initial -.. index:: single: MED - -The initial mesh -"""""""""""""""" -Le maillage initial doit se trouver dans un fichier au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Mais il peut également avoir été créé avec le module SMESH et exporté au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. - -.. image:: images/create_case_3.png - :align: center - -.. note:: - Le fichier ne doit contenir qu'un seul maillage. - -.. warning:: - Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre la cohérence entre les différents niveaux de raffinement/déraffinement - -.. index:: single: conformity - -Type of conformity -"""""""""""""""""" -Les itérations qui seront calculées pour ce cas devront toutes respecter le même comportement vis-à-vis de la conformité. - -L'option par défaut, 'conforme', implique que les maillages produits par HOMARD seront conformes au sens des éléments finis. C'est le choix classique de la plupart des logiciels de simulation par éléments finis. - -Néanmoins, si le calcul est possible avec des maillages non conformes, on a le choix entre 3 possibilités : - -.. image:: images/create_case_4.png - :align: center - -* 1 noeud par maille : une maille ne peut posséder qu'un seul noeud de non conformité avec ses voisines. -* 1 noeud par arête : chaque arête d'une maille peut être découpée sans que la maille voisine par cette arête ne le soit. -* quelconque : aucune limitation sur les raccords de conformité d'une maille à l'autre. - -.. index:: single: boundary - -The boundaries -"""""""""""""" -Quand le bord du domaine est courbe, HOMARD sait placer les nouveaux noeuds sur ces frontières pour éviter des singularités artificielles. Cette technique est aussi applicable à une courbure intérieure à un domaine. - -Deux cas de figure sont présents : - -* courbe 1D : cette courbe peut être définie dans un plan, par exemple pour un calcul 2D. Elle peut également être définie dans l'espace 3D, par exemple pour l'intersection de deux surfaces. Une ligne à suivre est décrite de manière discrète. -* surface : une surface à suivre est décrite de manière analytique. - -On cochera le ou les boutons voulus : - -.. image:: images/create_case_5.png - :align: center - -La définition des frontières est décrite dans :ref:`gui_create_boundary_en`. - -.. index:: single: pyramid - -Advanced options -"""""""""""""""" -Par défaut, aucune option avancée n'est active. - -Néanmoins, on peut définir une oprion avancée : - -.. image:: images/create_case_7.png - :align: center - -Par défaut, HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : - - mailles-points - - segments - - triangles - - quadrangles - - tétraèdres - - hexaèdres - - prismes - -Si le maillage initial comporte des pyramides, il y a arrêt en erreur. Toutefois, si on est certain que les raffinements ultérieurs ne toucheront aucune des arêtes des pyramides, on cochera la case "Pyramides autorisées". Les adaptations se dérouleront normalement et les pyramides seront restituées telles quelles dans le maillage final. - - -The pursuit of a case -===================== -.. index:: single: pursuit -.. index:: single: yacs - -La poursuite d'un cas correspond à la situation suivante : -Une série d'adaptations ont été conduites sur un cas puis SALOME est fermé. On a gardé les répertoires de travail de ces itérations. On souhaite ensuite reprendre ces itérations pour les poursuivre là où on s'est arrêté. Cette fonctionnalité est particulièrement utile dans le cas de schémas YACS pour lesquels on scinde en plusieurs parties une longue série d'adaptations. - -La condition pour reprendre une itération est d'avoir conservé dans un même répertoire deux fichiers : - - le fichier de configuration qui a servi de données au module exécutable de HOMARD ; ce fichier se présente sous la forme ``HOMARD.Configuration.(n).vers.(n+1)`` - - le fichier au format MED qui conserve l'historique des adaptations réalisées ; ce fichier se présente sous la forme ``maill.(n).hom.med`` - -On peut choisir de partir d'une itération archivée désignée explicitement par son répertoire ou d'une itération repérée dans le répertoire archivant un cas. - -Pour poursuivre une itération connue par son répertoire d'archive, la définition du cas se fait par la donnée des informations suivantes : - - - Un nom - - Un répertoire - - Le répertoire qui contient les archives - -.. image:: images/pursue_case_1.png - :align: center - -On peut choisir de partir d'un cas déjà calculé ; par défaut, le nouveau cas sera créé en partant de la dernière itération précédemment calculée. - -.. image:: images/pursue_case_2.png - :align: center - -Si on souhaite partir d'une itération qui ne soit pas la dernière, il suffit de le préciser : - -.. image:: images/pursue_case_3.png - :align: center - -.. note:: - Les paramétrages du cas ainsi créé sont ceux de l'itération poursuivie : mode de conformité identique par exemple. - - -Object browser -"""""""""""""" -A l'issue de cette création de cas, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni. - -.. image:: images/create_case_6.png - :align: center - - - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_case_en` - diff --git a/doc/gui_create_hypothese.rst b/doc/gui_create_hypothese.rst deleted file mode 100644 index 1fc08f2b..00000000 --- a/doc/gui_create_hypothese.rst +++ /dev/null @@ -1,139 +0,0 @@ -.. _gui_create_hypothese: - -L'hypothèse -=========== -.. index:: single: hypothèse - -L'hypothèse contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée. - -Il existe trois classes d'hypothèses : - - - Uniforme sur tout le maillage, - - Selon un champ, - - En fonction de zone géométrique. - -.. image:: images/create_hypothese_1.png - :align: center - - -Nom de l'hypothèse -"""""""""""""""""" -Un nom de l'hypothèse est proposé automatiquement : Hypo_1, Hypo_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une hypothèse précédente. - -Adaptation uniforme -""""""""""""""""""" -Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites. - -Adaptation selon un champ -""""""""""""""""""""""""" - -.. note:: - Pour pouvoir adapter le maillage selon un champ il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici : - -.. image:: images/create_hypothese_ch_1.png - :align: center - -Le champ voulu est à choisir dans la liste des champs contenus dans le fichier. -Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. - -Si l'on choisit une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes). - -On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*". - -.. image:: images/create_hypothese_ch_2.png - :align: center - - -Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquelles l'indicateur est supérieur à ce critère seront raffinées. -Pour le choix du critère, quatre variantes sont possible : - - - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ. - - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi]. - - au dela d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. - - au dela d'une valeur absolue valant la moyenne de la répartition du champ augmentée de n fois son écart-type ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. - -La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc. - -.. image:: images/create_hypothese_ch_3.png - :align: center - - -Adaptation selon une zone -""""""""""""""""""""""""" -.. index:: single: zone - -Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (voir :ref:`gui_create_zone`) : - -.. image:: images/create_hypothese_zo_1.png - :align: center - -Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre, ce qui permet de sélectionner les zones voulues. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothèse. - -.. image:: images/create_hypothese_zo_2.png - :align: center - - -Filtrage par les groupes -"""""""""""""""""""""""" -.. index:: single: groupe - -On peut restreindre l'application de l'hypothèse d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modidiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final. -On coche le bouton associé : - -.. image:: images/create_hypothese_gr_1.png - :align: center - -La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothèse d'adaptation. - -.. image:: images/create_hypothese_gr_2.png - :align: center - - -Interpolation de champs -""""""""""""""""""""""" -.. index:: single: interpolation - -.. note:: - Pour pouvoir interpoler un champ de l'ancien vers le nouveau maillage, il faut avoir au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (voir :ref:`gui_create_iteration`). - -Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni : - -.. image:: images/create_hypothese_ch_4.png - :align: center - -Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni : - -.. image:: images/create_hypothese_ch_5.png - :align: center - - -Les options avancées -"""""""""""""""""""" -Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie. -Si la case est cochée, on définira les options avancées. - -Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer. - -La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement. - -Le dernier choix porte sur une sortie supplémentaire de l'adaptation. Si la case est cochée, le fichier MED en sortie contiendra un champ contenant le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Par défaut, la case n'est pas cochée et le champ n'est pas produit. - -.. image:: images/create_hypothese_av_1.png - :align: center - -.. index:: single: arbre d'étude - -L'arbre d'étude -""""""""""""""" -.. index:: single: arbre d'étude - -L'arbre d'études contient les hypothèses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente. - -.. image:: images/create_hypothese_2.png - :align: center - - - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter :ref:`tui_create_hypothese` diff --git a/doc/gui_create_hypothese_en.rst b/doc/gui_create_hypothese_en.rst deleted file mode 100644 index 25663f34..00000000 --- a/doc/gui_create_hypothese_en.rst +++ /dev/null @@ -1,137 +0,0 @@ -.. _gui_create_hypothese_en: - -The hypothesis -============== -.. index:: single: hypothesis - -L'hypothesis contient toutes les paramètres de pilotage d'une adaptation d'un maillage. Cette opération permet de réaliser l'itération à laquelle elle est attachée. - -Il existe trois classes d'hypotheses : - - - Uniforme sur tout le maillage, - - Selon un champ, - - En fonction de zone géométrique. - -.. image:: images/create_hypothese_1.png - :align: center - - -Name of the hypothesis -"""""""""""""""""""""" -Un nom de l'hypothesis est proposé automatiquement : Hypo_1, Hypo_2, etc. Ce nom peut être modifié. Il ne doit pas asee été utilisé pour une hypothesis précédente. - -Uniform adaptation -"""""""""""""""""" -Par défaut on propose un raffinement uniforme. Quand on part d'un maillage qui a déjà été raffiné, l'option de déraffinement supprimera les mailles produites. - -Adaptation by a field -""""""""""""""""""""" - -.. note:: - Pour pousee adapter le maillage selon un champ il faut asee au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (see :ref:`gui_create_iteration_en`). Le nom du fichier qui a été sélectionné est affiché sans modification possible ici : - -.. image:: images/create_hypothese_ch_1.png - :align: center - -Le champ voulu est à choisir dans la liste des champs contenus dans le fichier. -Une fois ce champ choisi, la liste des ses composantes s'affiche. Il suffit de désigner la (ou les) composantes désirées. - -Si l'on choisit une seule composante, par défaut, c'est sa valeur absolue qui sera utilisée, mais il est possible d'utiliser la valeur relative. Dans le cas de plusieurs composantes, par défaut HOMARD utilisera la norme L2 (euclidienne). On peut toutefois choisir d'utiliser la norme infinie (le max des valeurs absolues des composantes). - -On peut choisir de ne pas utiliser directement le champ, mais sa variation d'un élément à ses voisins. Pour cela, on activera le bouton "*Saut entre éléments*". - -.. image:: images/create_hypothese_ch_2.png - :align: center - - -Le raffinement se fait selon un seuil qui définit un critère haut de raffinement. Toutes les mailles pour lesquelles l'indicateur est supérieur à ce critère seront raffinées. -Pour le choix du critère, quatre variantes sont possible : - - - selon un pourcentage de mailles à raffiner, nombre réel compris entre 0 et 100 ; HOMARD raffinera les x% des mailles qui ont la plus grande valeur du champ. - - selon une valeur relative du champ, nombre compris entre 0 et 100 ; HOMARD raffinera les mailles où le champ est supérieur à x% de l'intervalle [mini,maxi]. - - au dela d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. - - au dela d'une valeur absolue valant la moyenne de la répartition du champ augmentée de n fois son écart-type ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. - -La même convention s'applique au déraffinement, en remplaçant supérieur par inférieur. On peut inactiver une des fonctions (raffinement ou déraffinement) en cochant le bouton ad_hoc. - -.. image:: images/create_hypothese_ch_3.png - :align: center - - -Adaptation by a zone -"""""""""""""""""""" -.. index:: single: zone - -Au démarrage, il faut créer une première zone par activation du bouton "*Nouveau*" (see :ref:`gui_create_zone_en`) : - -.. image:: images/create_hypothese_zo_1.png - :align: center - -Lorsque des zones ont déjà été créées, la liste apparaît dans la fenêtre, ce qui permet de sélectionner les zones voulues. On doit alors préciser si une zone est utilisée pour raffiner toutes les mailles dont une arête est contenue dans la zone, ou si la zone est utilisée pour déraffiner les mailles intérieures à la zone. Si aucun choix n'est fait, la zone est ignorée dans cette hypothesis. - -.. image:: images/create_hypothese_zo_2.png - :align: center - - -Filtering by the groups -""""""""""""""""""""""" -.. index:: single: group - -On peut restreindre l'application de l'hypothesis d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modidiées, sauf par contamination ultérieure du raffinement pour assurer la conformité du maillage final. -On coche le bouton associé : - -.. image:: images/create_hypothese_gr_1.png - :align: center - -La liste des groupes de mailles présents dans le maillage est affichée. Il suffit de cocher ceux voulus pour restreindre l'hypothesis d'adaptation. - -.. image:: images/create_hypothese_gr_2.png - :align: center - - -Interpolation of fields -""""""""""""""""""""""" -.. index:: single: interpolation - -.. note:: - Pour pousee interpoler un champ de l'ancien vers le nouveau maillage, il faut asee au préalable désigné le fichier med contenant le champ. Cela se fait dans la fenêtre de construction de l'itération (see :ref:`gui_create_iteration_en`). - -Par défaut, aucun champ n'est interpolé. A contrario, on peut demander l'interpolation de tous les champs présents dans le fichier fourni : - -.. image:: images/create_hypothese_ch_4.png - :align: center - -Si on veut choisir les champs à interpoler, il faut les cocher dans la liste de tous les champs présents dans le fichier fourni : - -.. image:: images/create_hypothese_ch_5.png - :align: center - - -Advanced options -"""""""""""""""" -Si la case "Options avancées" n'est pas cochée, aucune contrainte supplémentaire n'est définie. -Si la case est cochée, on définira les options avancées. - -Une première série d'options portent sur la finesse maximale de maillage que l'on ne veut pas dépasser. Deux directives sont possibles, séparément ou ensemble. On peut imposer une taille de maille minimale : une maille dont le diamètre est inférieur à cette limite ne sera plus découpée. Par défaut, on propose un diamètre minimal nul, ce qui revient à ne rien imposer. On peut imposer un niveau de raffinement maximal. Par défaut, le maximum est à 99, ce qui équivaut en général à ne rien imposer. - -La deuxième série d'options n'a d'intérêt que dans le cas où l'adaptation est piloté par un champ et que ce champ n'est pas défini partout dans le maillage. Cela arrive par exemple quand on construit un champ basé sur une distance dans un plan alors que le domaine est 3D : le champ ne sera pas défini sur les noeuds hors du plan. Pour de tels champs, cette option permet de préciser le comportement que l'on souhaite dans les régions où le champ n'est pas défini. Par défaut, il ne se passe rien : les mailles sont gardées telles quelles. On peut choisir les deux autres variantes : raffiner, toutes les mailles seront a priori coupées, ou déraffiner, toutes les mailles seront candidates au déraffinement. - -Le dernier choix porte sur une sortie supplémentaire de l'adaptation. Si la case est cochée, le fichier MED en sortie contiendra un champ contenant le niveau de raffinement de chaque maille. La convention est celle de HOMARD : une maille du maillage initial est de niveau 0, une maille issue d'un raffinement d'une maille initiale porte le niveau 1, etc. Les mailles de transition qui sont produites entre deux mailles de niveau différents, n et n+1, sont affectées du demi-niveau n+0,5. Par défaut, la case n'est pas cochée et le champ n'est pas produit. - -.. image:: images/create_hypothese_av_1.png - :align: center - -Object browser -"""""""""""""" -.. index:: single: object browser - -L'arbre d'études contient les hypotheses créées et les itérations qui les utilisent. La description des zones qui leur sont éventuellement attachées est présente. - -.. image:: images/create_hypothese_2.png - :align: center - - - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_hypothese_en` diff --git a/doc/gui_create_iteration.rst b/doc/gui_create_iteration.rst deleted file mode 100644 index 0b662fd0..00000000 --- a/doc/gui_create_iteration.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _gui_create_iteration: - -L'itération -=========== -.. index:: single: itération - -La définition d'une itération se fait par la donnée des informations suivantes : - - - L'itération précédente - - Le nom du maillage résultat - - L'hypothèse utilisée - - Eventuellement, le fichier du champ d'indicateurs d'erreur - -.. image:: images/create_iteration_1.png - :align: center - -Le nom de l'itération -""""""""""""""""""""" -Un nom de cas est proposé automatiquement : Iter_1, Iter_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une itération précédente. - -L'itération précédente -"""""""""""""""""""""" -L'itération précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. - -.. index:: single: maillage;résultat - -Le nom du maillage résultat -""""""""""""""""""""""""""" -L'itération en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'itération précédente. - -.. index:: single: champ -.. index:: single: MED - -Le champ -"""""""" -Pour créer ou utiliser une hypothèse d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. - - -.. image:: images/create_iteration_2.png - :align: center - -Dans le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "*Pas de temps choisi*". Les valeurs de 'Pas de temps' et de 'Numéro d'ordre' sont celles correspondant à la convention MED (time step / rank). Ces valeurs dépendent de la logique qui a été retenue par le logiciel qui a écrit le fichier. Souvent ces deux valeurs sont identiques mais il arrive que l'on disjoigne les pas de temps et les intervalles d'archivage. - -.. image:: images/create_iteration_3.png - :align: center - -.. index:: single: hypothèse - -L'hypothèse utilisée -"""""""""""""""""""" -L'itération en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothèse. Celle-ci est choisie dans la liste des hypothèses existantes. - -Au démarrage, il faut créer une première hypothèse par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese`) : - -.. image:: images/create_iteration_4.png - :align: center - -Ensuite, si une hypothèse précédemment définie convient, il suffit de la sélectionner dans la liste proposée. Sinon, il faut créer une nouvelle hypothèse par activation du bouton "*Nouveau*", puis la sélectionner dans la liste proposée : - -.. image:: images/create_iteration_5.png - :align: center - - -.. note:: - Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothèse. - -.. index:: single: arbre d'étude - -L'arbre d'étude -""""""""""""""" -A l'issue de cette création d'itération, l'arbre d'études a été enrichi. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'itération courante, identifiée par son nom. On trouve aussi l'hypothèse qui lui est attachée. L'icône en regard de l'itération permet de différencier les itérations calculées ou non. - -.. image:: images/create_iteration_6.png - :align: center - -Quand plusieurs itérations s'enchaînent, leur hypothèse est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux itérations peuvent partager la même hypothèse. - -.. image:: images/create_iteration_7.png - :align: center - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter :ref:`tui_create_iteration` diff --git a/doc/gui_create_iteration_en.rst b/doc/gui_create_iteration_en.rst deleted file mode 100644 index c45d9866..00000000 --- a/doc/gui_create_iteration_en.rst +++ /dev/null @@ -1,83 +0,0 @@ -.. _gui_create_iteration_en: - -The iteration -============= -.. index:: single: iteration - -La définition d'une iteration se fait par la donnée des informations suivantes : - - - L'iteration précédente - - Le nom du maillage résultat - - L'hypothesis utilisée - - Eventuellement, le fichier du champ d'indicateurs d'erreur - -.. image:: images/create_iteration_1.png - :align: center - -Name of the iteration -""""""""""""""""""""" -Un nom de cas est proposé automatiquement : Iter_1, Iter_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été utilisé pour une iteration précédente. - -The previous iteration -"""""""""""""""""""""" -L'iteration précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. - -.. index:: single: mesh;result - -The name of the resulting mesh -"""""""""""""""""""""""""""""" -L'iteration en cours de création produira un maillage. Ce maillage sera connu sous un nom. Ce nom est fourni en le tapant dans la zone de texte. Par défaut, on propose un nom identique à celui de l'iteration précédente. - -.. index:: single: field -.. index:: single: MED - -The field -""""""""" -Pour créer ou utiliser une hypothesis d'adaptation basée sur un champ exprimé sur le maillage, on doit fournir le fichier où se trouve le champ. C'est également le cas si on veut interpoler des champs du maillage n au maillage n+1. Ce fichier est au format MED. Classiquement, il aura été produit par le logiciel de calcul avec lequel on travaille. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. - - -.. image:: images/create_iteration_2.png - :align: center - -Dans le cas où des pas de temps ont été définis, une solution simple consiste à traiter les champs au dernier pas de temps enregistré dans le fichier. Si on veut définir un autre pas de temps, on coche le bouton "*Pas de temps choisi*". Les valeurs de 'Pas de temps' et de 'Numéro d'ordre' sont celles correspondant à la convention MED (time step / rank). Ces valeurs dépendent de la logique qui a été retenue par le logiciel qui a écrit le fichier. Souvent ces deux valeurs sont identiques mais il arrive que l'on disjoigne les pas de temps et les intervalles d'archivage. - -.. image:: images/create_iteration_3.png - :align: center - -.. index:: single: hypothesis - -The hypothesis -"""""""""""""" -L'iteration en cours pilotera l'adaptation par HOMARD selon un scénario défini dans une hypothesis. Celle-ci est choisie dans la liste des hypothesiss existantes. - -Au démarrage, il faut créer une première hypothesis par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese_en`) : - -.. image:: images/create_iteration_4.png - :align: center - -Ensuite, si une hypothesis précédemment définie convient, il suffit de la sélectionner dans la liste proposée. Sinon, il faut créer une nouvelle hypothesis par activation du bouton "*Nouveau*", puis la sélectionner dans la liste proposée : - -.. image:: images/create_iteration_5.png - :align: center - - -.. note:: - Si on envisage une adaptation selon les valeurs d'un champ sur le maillage, il faut avoir renseigné les informations sur ce champ avant de créer une nouvelle hypothesis. - -.. index:: single: object browser - -Object browser -"""""""""""""" -A l'issue de cette création d'iteration, l'arbre d'études a été enrichi. On y trouve l'iteration initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, l'iteration courante, identifiée par son nom. On trouve aussi l'hypothesis qui lui est attachée. L'icône en regard de l'iteration permet de différencier les iterations calculées ou non. - -.. image:: images/create_iteration_6.png - :align: center - -Quand plusieurs iterations s'enchaînent, leur hypothesis est visible dans l'arbre d'étude. On remarquera dans la figure ci-après que deux iterations peuvent partager la même hypothesis. - -.. image:: images/create_iteration_7.png - :align: center - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_iteration_en` diff --git a/doc/gui_create_zone.rst b/doc/gui_create_zone.rst deleted file mode 100644 index b57e4725..00000000 --- a/doc/gui_create_zone.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _gui_create_zone: - -La zone -======= -.. index:: single: zone -.. index:: single: 2D - -L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner. - -En 3D, il existe quatre types de zone : - - - Parallélépipède - - Cylindre - - Tuyau - - Sphère - -Leurs analogues en 2D sont : - - - Rectangle - - Disque - - Disque percé - -Le principe du raffinement selon des zones est le suivant. Chaque arête de maille dont les deux extrémités -sont incluses dans une même zone sera coupée. Ensuite HOMARD applique l'algorithme de traitement de la -conformité pour produire un maillage correct. - -.. note:: - Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. - -Nom de la zone -"""""""""""""" -Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone. - -Un parallélépipède -"""""""""""""""""" -.. index:: single: boite - -Le parallélépipède est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction. - -.. image:: images/create_zone_1.png - :align: center - -Un cylindre -""""""""""" -.. index:: single: cylindre - -Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et son rayon. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. - -.. image:: images/create_zone_2.png - :align: center - -Un tuyau -"""""""" -.. index:: single: tuyau - -Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et ses rayons interne et externe. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. - -.. image:: images/create_zone_3.png - :align: center - -Une sphère -"""""""""" -.. index:: single: sphere - -La sphère est définie par son centre et son rayon. - -.. image:: images/create_zone_4.png - :align: center - -Un rectangle -"""""""""""" -.. index:: single: rectangle - -Le rectangle est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chacune des directions valides. La coordonnée constante est affichée pour information, mais n'est pas modifiable. - -.. image:: images/create_zone_21.png - :align: center - -Un disque -""""""""" -.. index:: single: disque - -Le disque est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et son rayon. La coordonnée constante est affichée pour information, mais n'est pas modifiable. - -.. image:: images/create_zone_22.png - :align: center - -Un disque avec trou -""""""""""""""""""" -.. index:: single: disque avec trou - -Le disque avec trou est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et ses rayons externe et interne. La coordonnée constante est affichée pour information, mais n'est pas modifiable. - -.. image:: images/create_zone_23.png - :align: center - - - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter :ref:`tui_create_zone` diff --git a/doc/gui_create_zone_en.rst b/doc/gui_create_zone_en.rst deleted file mode 100644 index ffdf8242..00000000 --- a/doc/gui_create_zone_en.rst +++ /dev/null @@ -1,101 +0,0 @@ -.. _gui_create_zone_en: - -The zone -======== -.. index:: single: zone -.. index:: single: 2D - -L'objet zone contient toutes les définitions géométriques permettant de décrire une zone à raffiner. - -En 3D, il existe quatre types de zone : - - - Parallélépipède - - Cylindre - - Tuyau - - Sphère - -Leurs analogues en 2D sont : - - - Rectangle - - Disque - - Disque percé - -Le principe du raffinement selon des zones est le suivant. Chaque arête de maille dont les deux extrémités -sont incluses dans une même zone sera coupée. Ensuite HOMARD applique l'algorithme de traitement de la -conformité pour produire un maillage correct. - -.. note:: - Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. - -Name of the zone -"""""""""""""""" -Un nom de zone est proposé automatiquement : Zone_1, Zone_2, etc. Ce nom peut être modifié. Il ne doit pas avoir été déjà utilisé pour une autre zone. - -Box -""" -.. index:: single: box - -Le parallélépipède est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chaque direction. - -.. image:: images/create_zone_1.png - :align: center - -Cylindre -"""""""" -.. index:: single: cylindre - -Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et son rayon. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. - -.. image:: images/create_zone_2.png - :align: center - -Pipe -"""" -.. index:: single: pipe - -Le cylindre est défini par son axe, un point de base positionné sur l'axe, sa hauteur et ses rayons interne et externe. L'axe est défini par un vecteur qui doit être correctement orienté : on retiendra le volume partant de la base dans la direction du vecteur jusqu'à la hauteur retenue. La norme de ce vecteur n'est pas nécessairement égale à 1. - -.. image:: images/create_zone_3.png - :align: center - -Sphere -"""""" -.. index:: single: sphere - -La sphère est définie par son centre et son rayon. - -.. image:: images/create_zone_4.png - :align: center - -Rectangle -""""""""" -.. index:: single: rectangle - -Le rectangle est obligatoirement parallèle aux axes de coordonnées. Il est défini par ses extrêmes dans chacune des directions valides. La coordonnée constante est affichée pour information, mais n'est pas modifiable. - -.. image:: images/create_zone_21.png - :align: center - -Disk -"""" -.. index:: single: disk - -Le disque est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et son rayon. La coordonnée constante est affichée pour information, mais n'est pas modifiable. - -.. image:: images/create_zone_22.png - :align: center - -Disk with a hole -"""""""""""""""" -.. index:: single: disk with a hole - -Le disque avec trou est obligatoirement dans le plan des axes de coordonnées. Il est défini par son centre et ses rayons externe et interne. La coordonnée constante est affichée pour information, mais n'est pas modifiable. - -.. image:: images/create_zone_23.png - :align: center - - - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_zone_en` diff --git a/doc/gui_homard.rst b/doc/gui_homard.rst deleted file mode 100644 index 1c95652d..00000000 --- a/doc/gui_homard.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _gui_homard: - -Le calcul -========= -.. index:: single: itération -.. index:: single: calcul - -Lancer une adaptation -""""""""""""""""""""" -Lancer une adaptation s'obtient en sélectionnant l'itération à calculer. Elle est repérée par une icone "en attente". On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. - -.. image:: images/lancement_1.png - :align: center - -.. index:: single: arbre d'étude - -L'arbre d'étude -""""""""""""""" - -A l'issue de ce calcul, l'arbre d'études a été enrichi. L'icone devant l'itération est validée. Sous l'itération, on trouve la référence aux fichiers de résultats créés, identifiés par leur nom dans le répertoire *rep* qui a été défini à la création du cas : - - - *rep*/I(n+1)/Liste.n.vers.(n+1).log - - *rep*/I(n+1)/apad.n.vers.(n+1).bilan - - *rep*/maill.(n+1).med - -Les deux premiers fichiers sont des fichiers de texte, éditables. Liste.n.vers.(n+1).log contient des informations sur le déroulement de l'adaptation : récapitulatif du mode d'adaptation, pourcentage de mailles concernées, etc. Le fichier apad.n.vers.(n+1).bilan est un résumé des caractéristiques du maillage obtenu. - -Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. On retrouve ce maillage dans la section de l'arbre d'études du module SMESH. Il est alors visible dans ce module et utilisable ensuite comme tout autre maillage. - - -.. image:: images/lancement_2.png - :align: center - -Consulter le résultat d'une adaptation -"""""""""""""""""""""""""""""""""""""" -Les deux fichiers de texte, Liste.n.vers.(n+1).log et apad.n.vers.(n+1).bilan, sont visibles en les sélectionnant. On choisit ensuite "*Afficher le fichier*" dans le menu HOMARD ou à la souris. - -.. image:: images/lancement_3.png - :align: center - - -.. note:: - Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec SALOME. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. - "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. - "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter :ref:`tui_create_iteration` - diff --git a/doc/gui_homard_en.rst b/doc/gui_homard_en.rst deleted file mode 100644 index f23473cd..00000000 --- a/doc/gui_homard_en.rst +++ /dev/null @@ -1,50 +0,0 @@ -.. _gui_homard_en: - -The computation -=============== -.. index:: single: iteration -.. index:: single: computation - -To cumpute an iteration -""""""""""""""""""""""" -Lancer une adaptation s'obtient en sélectionnant l'iteration à calculer. Elle est repérée par une icone "en attente". On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. - -.. image:: images/lancement_1.png - :align: center - -.. index:: single: object browser - -Object browser -"""""""""""""" - -A l'issue de ce calcul, l'arbre d'études a été enrichi. L'icone devant l'iteration est validée. Sous l'iteration, on trouve la référence aux fichiers de résultats créés, identifiés par leur nom dans le répertoire *rep* qui a été défini à la création du cas : - - - *rep*/I(n+1)/Liste.n.vers.(n+1).log - - *rep*/I(n+1)/apad.n.vers.(n+1).bilan - - *rep*/maill.(n+1).med - -Les deux premiers fichiers sont des fichiers de texte, éditables. Liste.n.vers.(n+1).log contient des informations sur le déroulement de l'adaptation : récapitulatif du mode d'adaptation, pourcentage de mailles concernées, etc. Le fichier apad.n.vers.(n+1).bilan est un résumé des caractéristiques du maillage obtenu. - -Le fichier maill.(n+1).med est celui qui contient le maillage produit au format MED. On retrouve ce maillage dans la section de l'arbre d'études du module SMESH. Il est alors visible dans ce module et utilisable ensuite comme tout autre maillage. - - -.. image:: images/lancement_2.png - :align: center - -To consult the result of an adaptation -"""""""""""""""""""""""""""""""""""""" -Les deux fichiers de texte, Liste.n.vers.(n+1).log et apad.n.vers.(n+1).bilan, sont visibles en les sélectionnant. On choisit ensuite "*Afficher le fichier*" dans le menu HOMARD ou à la souris. - -.. image:: images/lancement_3.png - :align: center - - -.. note:: - Par défaut, le calcul est lancé avec l'exécutable de HOMARD installé avec SALOME. Si on souhaite utiliser une version privée de HOMARD, pour tester une évolution par exemple, il faut préciser où le nouvel exécutable est disponible. Pour cela, il faut renseigner deux variables d'environnement. - "*HOMARD_REP_EXE_PRIVATE*" définit le répertoire dans lequel se trouve l'exécutable voulu. - "*HOMARD_EXE_PRIVATE*" définit le nom de l'exécutable dans ce répertoire, si ce nom est différent de "*homard*". - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_iteration_en` - diff --git a/doc/gui_mesh_info.rst b/doc/gui_mesh_info.rst deleted file mode 100644 index 58b00ca4..00000000 --- a/doc/gui_mesh_info.rst +++ /dev/null @@ -1,92 +0,0 @@ -.. _gui_mesh_info: - -Analyse de maillage -=================== -.. index:: single: analyse -.. index:: single: information - -La demande d'analyse d'un maillage se fait par la donnée des informations suivantes : - - - Un répertoire - - Le fichier du maillage - -Si le maillage fait partie d'un cas enregistré, son analyse est faite à partir de son itération dans l'arbre d'études. Voir plus loin. - - -Maillage à importer -""""""""""""""""""" -La sélection de la fonction d'analyse est faite par le menu de la barre supérieure de la fenêtre : - -.. image:: images/mesh_info_1.png - :align: center - -La fenêtre de choix s'affiche. - -.. image:: images/mesh_info_2.png - :align: center - -Le nom du cas -------------- -Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. - -Le répertoire -------------- -Le répertoire est celui qui contiendra les fichiers produits par l'information. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. Ces fichiers seront visibles dans l'arbre d'études. - -.. image:: images/create_case_2.png - :align: center - -.. index:: single: maillage;initial -.. index:: single: MED - -Le maillage à analyser ----------------------- -Le maillage à analyser doit se trouver dans un fichier au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. - -.. image:: images/create_case_3.png - :align: center - -.. note:: - Le fichier ne doit contenir qu'un seul maillage. - -.. warning:: - Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre l'analyse des différents niveaux de raffinement/déraffinement - -Options d'analyse ------------------ -L'analyse est faite selon les options cochées. - - qualité des mailles - - diamètre des mailles - - connexité du domaine ; en un seul morceau, combien de trous, etc. - - tailles des constituants du domaine, groupe par groupe - - interpénétration des mailles, par dimension - -Le résultat de l'analyse est contenu dans le fichier ``info_av.00.bilan`` ; ce fichier est à consulter en l'affichant après sa désignation avec "*Afficher le fichier*" dans le menu HOMARD ou à la souris. - -L'arbre d'étude ---------------- -A l'issue de cette demande d'information, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, et les deux fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. - -.. image:: images/mesh_info_3.png - :align: center - - -Itération calculée -"""""""""""""""""" - -Pour analyser le maillage produit par une itération d'adaptation de maillage, on désigne à la souris cette itération dans l'arbre d'études et on lance l'analyse. On retrouve le menu similaire au cas initial : - -.. image:: images/mesh_info_4.png - :align: center - -Comme pour un maillage importé, l'arbre d'études a été enrichi avec les deux fichiers d'information de nom ``Liste.log`` et ``info_ap.xx.bilan``, où xx est le numéro de l'itération dans le cas. - -.. image:: images/mesh_info_5.png - :align: center - - - -Méthodes python correspondantes -""""""""""""""""""""""""""""""" -Consulter :ref:`tui_create_case` et :ref:`tui_create_iteration` - diff --git a/doc/gui_mesh_info_en.rst b/doc/gui_mesh_info_en.rst deleted file mode 100644 index 4096ded6..00000000 --- a/doc/gui_mesh_info_en.rst +++ /dev/null @@ -1,92 +0,0 @@ -.. _gui_mesh_info_en: - -Mesh analysis -============= -.. index:: single: analysis -.. index:: single: information - -La demande d'analysis d'un maillage se fait par la donnée des informations suivantes : - - - Un répertoire - - Le fichier du maillage - -Si le maillage fait partie d'un cas enregistré, son analysis est faite à partir de son itération dans l'arbre d'études. Voir plus loin. - - -Importation of the mesh -""""""""""""""""""""""" -La sélection de la fonction d'analysis est faite par le menu de la barre supérieure de la fenêtre : - -.. image:: images/mesh_info_1.png - :align: center - -La fenêtre de choix s'affiche. - -.. image:: images/mesh_info_2.png - :align: center - -Name of the case ----------------- -Un nom de cas est proposé automatiquement : Case_1, Case_2, etc. Ce nom peut être modifié. Il ne doit pas avoir déjà été utilisé pour un autre cas. - -The directory -------------- -Le répertoire est celui qui contiendra les fichiers produits par l'information. Par défaut, rien n'est proposé. Le choix est fait, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. C'est dans ce répertoire que seront exportés les fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. Ces fichiers seront visibles dans l'arbre d'études. - -.. image:: images/create_case_2.png - :align: center - -.. index:: single: mesh;initial -.. index:: single: MED - -Mesh to be analysed -------------------- -Le maillage à analysisr doit se trouver dans un fichier au format MED. Le nom du fichier peut être fourni, soit en tapant le nom dans la zone de texte, soit en activant la fonction de recherche. - -.. image:: images/create_case_3.png - :align: center - -.. note:: - Le fichier ne doit contenir qu'un seul maillage. - -.. warning:: - Le maillage ne doit pas être lui-même le produit d'une adaptation de maillage par HOMARD, sous peine de perdre l'analysis des différents niveaux de raffinement/déraffinement - -Options for the analysis ------------------------- -L'analysis est faite selon les options cochées. - - qualité des mailles - - diamètre des mailles - - connexité du domaine ; en un seul morceau, combien de trous, etc. - - tailles des constituants du domaine, groupe par groupe - - interpénétration des mailles, par dimension - -Le résultat de l'analysis est contenu dans le fichier ``info_av.00.bilan`` ; ce fichier est à consulter en l'affichant après sa désignation avec "*Afficher le fichier*" dans le menu HOMARD ou à la souris. - -Object browser --------------- -A l'issue de cette demande d'information, l'arbre d'études a été enrichi de ce nouveau cas. On y trouve l'itération initiale, identifiée par le nom du maillage qui a été lu dans le fichier fourni, et les deux fichiers d'information de nom ``Liste.log`` et ``info_av.00.bilan``. - -.. image:: images/mesh_info_3.png - :align: center - - -Computed iteration -"""""""""""""""""" - -Pour analysisr le maillage produit par une itération d'adaptation de maillage, on désigne à la souris cette itération dans l'arbre d'études et on lance l'analysis. On retrouve le menu similaire au cas initial : - -.. image:: images/mesh_info_4.png - :align: center - -Comme pour un maillage importé, l'arbre d'études a été enrichi avec les deux fichiers d'information de nom ``Liste.log`` et ``info_ap.xx.bilan``, où xx est le numéro de l'itération dans le cas. - -.. image:: images/mesh_info_5.png - :align: center - - - -Corresponding python functions -"""""""""""""""""""""""""""""" -Look :ref:`tui_create_case` and :ref:`tui_create_iteration_en` - diff --git a/doc/gui_usage.rst b/doc/gui_usage.rst deleted file mode 100644 index 27943c6b..00000000 --- a/doc/gui_usage.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _gui_usage: - -Mode d'emploi pour l'interface graphique -======================================== -.. index:: single: cas -.. index:: single: itération - -Activer le module HOMARD -"""""""""""""""""""""""" -Pour utiliser le module HOMARD, deux façons existent : - -#. en activant l'onglet HOMARD dans la liste des modules, -#. en cliquant sur le bouton HOMARD dans la barre d'outils. - -L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée, selon le principe qui a été retenu pour tous les autres modules de SALOME. - -.. image:: images/homard_1.png - :align: center - -Définir une adaptation -"""""""""""""""""""""" - -Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration`) à partir des hypothèses (voir :ref:`gui_create_hypothese`). Les adaptations sont lancées tel que décrit dans :ref:`gui_homard`. - - -Mode d'emploi de la saisie des données -"""""""""""""""""""""""""""""""""""""" - -.. toctree:: - :maxdepth: 2 - - gui_create_case - gui_create_iteration - gui_create_hypothese - gui_create_zone - gui_create_boundary - gui_homard - gui_mesh_info - diff --git a/doc/gui_usage_en.rst b/doc/gui_usage_en.rst deleted file mode 100644 index 9bfe461e..00000000 --- a/doc/gui_usage_en.rst +++ /dev/null @@ -1,39 +0,0 @@ -.. _gui_usage_en: - -User's guide of the graphical interface -======================================= -.. index:: single: case -.. index:: single: iteration - -Activation of the module HOMARD -""""""""""""""""""""""""""""""" -Pour utiliser le module HOMARD, deux façons existent : - -#. en activant l'onglet HOMARD dans la liste des modules, -#. en cliquant sur le bouton HOMARD dans la barre d'outils. - -L'utilisateur a alors le choix entre créer une nouvelle étude ou en ouvrir une qui a été précédemment enregistrée, selon le principe qui a été retenu pour tous les autres modules de SALOME. - -.. image:: images/homard_1.png - :align: center - -Definition of an adaptation -""""""""""""""""""""""""""" - -Une fois que HOMARD a été activé, la permière action consiste à créer un cas. Il s'agit de sélectionner le maillage initial de la suite d'adaptations envisagée (voir :ref:`gui_create_case_en`). A partir de ce cas, on définira les itérations successives (voir :ref:`gui_create_iteration_en`) à partir des hypothèses (voir :ref:`gui_create_hypothese_en`). Les adaptations sont lancées tel que décrit dans :ref:`gui_homard_en`. - - -User's guide of the graphical interface -""""""""""""""""""""""""""""""""""""""" - -.. toctree:: - :maxdepth: 2 - - gui_create_case_en - gui_create_iteration_en - gui_create_hypothese_en - gui_create_zone_en - gui_create_boundary_en - gui_homard_en - gui_mesh_info_en - diff --git a/doc/images/create_boundary_1.png b/doc/images/create_boundary_1.png deleted file mode 100644 index 0460d485..00000000 Binary files a/doc/images/create_boundary_1.png and /dev/null differ diff --git a/doc/images/create_boundary_an_1.png b/doc/images/create_boundary_an_1.png deleted file mode 100644 index 09630eb8..00000000 Binary files a/doc/images/create_boundary_an_1.png and /dev/null differ diff --git a/doc/images/create_boundary_an_2.png b/doc/images/create_boundary_an_2.png deleted file mode 100644 index 25c6e9b1..00000000 Binary files a/doc/images/create_boundary_an_2.png and /dev/null differ diff --git a/doc/images/create_boundary_an_3.png b/doc/images/create_boundary_an_3.png deleted file mode 100644 index 6f38d9f8..00000000 Binary files a/doc/images/create_boundary_an_3.png and /dev/null differ diff --git a/doc/images/create_boundary_an_4.png b/doc/images/create_boundary_an_4.png deleted file mode 100644 index abf10421..00000000 Binary files a/doc/images/create_boundary_an_4.png and /dev/null differ diff --git a/doc/images/create_boundary_an_co_1.png b/doc/images/create_boundary_an_co_1.png deleted file mode 100644 index 7212cba3..00000000 Binary files a/doc/images/create_boundary_an_co_1.png and /dev/null differ diff --git a/doc/images/create_boundary_an_co_2.png b/doc/images/create_boundary_an_co_2.png deleted file mode 100644 index 017b56d9..00000000 Binary files a/doc/images/create_boundary_an_co_2.png and /dev/null differ diff --git a/doc/images/create_boundary_an_cy.png b/doc/images/create_boundary_an_cy.png deleted file mode 100644 index 2efc3fdc..00000000 Binary files a/doc/images/create_boundary_an_cy.png and /dev/null differ diff --git a/doc/images/create_boundary_an_sp.png b/doc/images/create_boundary_an_sp.png deleted file mode 100644 index be7b28b7..00000000 Binary files a/doc/images/create_boundary_an_sp.png and /dev/null differ diff --git a/doc/images/create_boundary_di_1.png b/doc/images/create_boundary_di_1.png deleted file mode 100644 index 8f80605d..00000000 Binary files a/doc/images/create_boundary_di_1.png and /dev/null differ diff --git a/doc/images/create_boundary_di_2.png b/doc/images/create_boundary_di_2.png deleted file mode 100644 index d952edab..00000000 Binary files a/doc/images/create_boundary_di_2.png and /dev/null differ diff --git a/doc/images/create_boundary_di_3.png b/doc/images/create_boundary_di_3.png deleted file mode 100644 index 01195a12..00000000 Binary files a/doc/images/create_boundary_di_3.png and /dev/null differ diff --git a/doc/images/create_case_1.png b/doc/images/create_case_1.png deleted file mode 100644 index ddef5000..00000000 Binary files a/doc/images/create_case_1.png and /dev/null differ diff --git a/doc/images/create_case_2.png b/doc/images/create_case_2.png deleted file mode 100644 index 435a5186..00000000 Binary files a/doc/images/create_case_2.png and /dev/null differ diff --git a/doc/images/create_case_3.png b/doc/images/create_case_3.png deleted file mode 100644 index eba31971..00000000 Binary files a/doc/images/create_case_3.png and /dev/null differ diff --git a/doc/images/create_case_4.png b/doc/images/create_case_4.png deleted file mode 100644 index 3429fd65..00000000 Binary files a/doc/images/create_case_4.png and /dev/null differ diff --git a/doc/images/create_case_5.png b/doc/images/create_case_5.png deleted file mode 100644 index 418535b5..00000000 Binary files a/doc/images/create_case_5.png and /dev/null differ diff --git a/doc/images/create_case_6.png b/doc/images/create_case_6.png deleted file mode 100644 index c5987297..00000000 Binary files a/doc/images/create_case_6.png and /dev/null differ diff --git a/doc/images/create_case_7.png b/doc/images/create_case_7.png deleted file mode 100644 index 766430fe..00000000 Binary files a/doc/images/create_case_7.png and /dev/null differ diff --git a/doc/images/create_hypothese_1.png b/doc/images/create_hypothese_1.png deleted file mode 100644 index 73b7d548..00000000 Binary files a/doc/images/create_hypothese_1.png and /dev/null differ diff --git a/doc/images/create_hypothese_2.png b/doc/images/create_hypothese_2.png deleted file mode 100644 index fbb434b2..00000000 Binary files a/doc/images/create_hypothese_2.png and /dev/null differ diff --git a/doc/images/create_hypothese_av_1.png b/doc/images/create_hypothese_av_1.png deleted file mode 100644 index 0950d138..00000000 Binary files a/doc/images/create_hypothese_av_1.png and /dev/null differ diff --git a/doc/images/create_hypothese_ch_1.png b/doc/images/create_hypothese_ch_1.png deleted file mode 100644 index 392ef7b7..00000000 Binary files a/doc/images/create_hypothese_ch_1.png and /dev/null differ diff --git a/doc/images/create_hypothese_ch_2.png b/doc/images/create_hypothese_ch_2.png deleted file mode 100644 index ce3d9441..00000000 Binary files a/doc/images/create_hypothese_ch_2.png and /dev/null differ diff --git a/doc/images/create_hypothese_ch_3.png b/doc/images/create_hypothese_ch_3.png deleted file mode 100644 index a78111d5..00000000 Binary files a/doc/images/create_hypothese_ch_3.png and /dev/null differ diff --git a/doc/images/create_hypothese_ch_4.png b/doc/images/create_hypothese_ch_4.png deleted file mode 100644 index b48f6511..00000000 Binary files a/doc/images/create_hypothese_ch_4.png and /dev/null differ diff --git a/doc/images/create_hypothese_ch_5.png b/doc/images/create_hypothese_ch_5.png deleted file mode 100644 index 4151dd83..00000000 Binary files a/doc/images/create_hypothese_ch_5.png and /dev/null differ diff --git a/doc/images/create_hypothese_gr_1.png b/doc/images/create_hypothese_gr_1.png deleted file mode 100644 index 34f937f1..00000000 Binary files a/doc/images/create_hypothese_gr_1.png and /dev/null differ diff --git a/doc/images/create_hypothese_gr_2.png b/doc/images/create_hypothese_gr_2.png deleted file mode 100644 index 3153ad43..00000000 Binary files a/doc/images/create_hypothese_gr_2.png and /dev/null differ diff --git a/doc/images/create_hypothese_zo_1.png b/doc/images/create_hypothese_zo_1.png deleted file mode 100644 index 0b4f0252..00000000 Binary files a/doc/images/create_hypothese_zo_1.png and /dev/null differ diff --git a/doc/images/create_hypothese_zo_2.png b/doc/images/create_hypothese_zo_2.png deleted file mode 100644 index 09353cf0..00000000 Binary files a/doc/images/create_hypothese_zo_2.png and /dev/null differ diff --git a/doc/images/create_iteration_1.png b/doc/images/create_iteration_1.png deleted file mode 100644 index affb0286..00000000 Binary files a/doc/images/create_iteration_1.png and /dev/null differ diff --git a/doc/images/create_iteration_2.png b/doc/images/create_iteration_2.png deleted file mode 100644 index 3c02793f..00000000 Binary files a/doc/images/create_iteration_2.png and /dev/null differ diff --git a/doc/images/create_iteration_3.png b/doc/images/create_iteration_3.png deleted file mode 100644 index a00ede7f..00000000 Binary files a/doc/images/create_iteration_3.png and /dev/null differ diff --git a/doc/images/create_iteration_4.png b/doc/images/create_iteration_4.png deleted file mode 100644 index 43665308..00000000 Binary files a/doc/images/create_iteration_4.png and /dev/null differ diff --git a/doc/images/create_iteration_5.png b/doc/images/create_iteration_5.png deleted file mode 100644 index 92a9ab00..00000000 Binary files a/doc/images/create_iteration_5.png and /dev/null differ diff --git a/doc/images/create_iteration_6.png b/doc/images/create_iteration_6.png deleted file mode 100644 index 339e1e10..00000000 Binary files a/doc/images/create_iteration_6.png and /dev/null differ diff --git a/doc/images/create_iteration_7.png b/doc/images/create_iteration_7.png deleted file mode 100644 index 8816eeff..00000000 Binary files a/doc/images/create_iteration_7.png and /dev/null differ diff --git a/doc/images/create_zone_1.png b/doc/images/create_zone_1.png deleted file mode 100644 index aa32ef17..00000000 Binary files a/doc/images/create_zone_1.png and /dev/null differ diff --git a/doc/images/create_zone_2.png b/doc/images/create_zone_2.png deleted file mode 100644 index 1664d52f..00000000 Binary files a/doc/images/create_zone_2.png and /dev/null differ diff --git a/doc/images/create_zone_21.png b/doc/images/create_zone_21.png deleted file mode 100644 index 8d156f16..00000000 Binary files a/doc/images/create_zone_21.png and /dev/null differ diff --git a/doc/images/create_zone_22.png b/doc/images/create_zone_22.png deleted file mode 100644 index f27faaa0..00000000 Binary files a/doc/images/create_zone_22.png and /dev/null differ diff --git a/doc/images/create_zone_23.png b/doc/images/create_zone_23.png deleted file mode 100644 index 8bce36d5..00000000 Binary files a/doc/images/create_zone_23.png and /dev/null differ diff --git a/doc/images/create_zone_3.png b/doc/images/create_zone_3.png deleted file mode 100644 index abaf4068..00000000 Binary files a/doc/images/create_zone_3.png and /dev/null differ diff --git a/doc/images/create_zone_4.png b/doc/images/create_zone_4.png deleted file mode 100644 index 26955a82..00000000 Binary files a/doc/images/create_zone_4.png and /dev/null differ diff --git a/doc/images/homard_1.png b/doc/images/homard_1.png deleted file mode 100644 index 80006888..00000000 Binary files a/doc/images/homard_1.png and /dev/null differ diff --git a/doc/images/homard_2.png b/doc/images/homard_2.png deleted file mode 100644 index 8ec72957..00000000 Binary files a/doc/images/homard_2.png and /dev/null differ diff --git a/doc/images/intro_1.png b/doc/images/intro_1.png deleted file mode 100644 index bfc3bd26..00000000 Binary files a/doc/images/intro_1.png and /dev/null differ diff --git a/doc/images/intro_31.png b/doc/images/intro_31.png deleted file mode 100644 index 175264e0..00000000 Binary files a/doc/images/intro_31.png and /dev/null differ diff --git a/doc/images/intro_32.png b/doc/images/intro_32.png deleted file mode 100644 index f4022ca2..00000000 Binary files a/doc/images/intro_32.png and /dev/null differ diff --git a/doc/images/intro_33.png b/doc/images/intro_33.png deleted file mode 100644 index a0bd05e2..00000000 Binary files a/doc/images/intro_33.png and /dev/null differ diff --git a/doc/images/intro_331.png b/doc/images/intro_331.png deleted file mode 100644 index ba34e383..00000000 Binary files a/doc/images/intro_331.png and /dev/null differ diff --git a/doc/images/intro_34.png b/doc/images/intro_34.png deleted file mode 100644 index 94866890..00000000 Binary files a/doc/images/intro_34.png and /dev/null differ diff --git a/doc/images/intro_35.png b/doc/images/intro_35.png deleted file mode 100644 index 73b7d548..00000000 Binary files a/doc/images/intro_35.png and /dev/null differ diff --git a/doc/images/intro_36.png b/doc/images/intro_36.png deleted file mode 100644 index 36a77bf4..00000000 Binary files a/doc/images/intro_36.png and /dev/null differ diff --git a/doc/images/intro_37.png b/doc/images/intro_37.png deleted file mode 100644 index f04c5122..00000000 Binary files a/doc/images/intro_37.png and /dev/null differ diff --git a/doc/images/intro_38.png b/doc/images/intro_38.png deleted file mode 100644 index 2d29392c..00000000 Binary files a/doc/images/intro_38.png and /dev/null differ diff --git a/doc/images/intro_39.png b/doc/images/intro_39.png deleted file mode 100644 index ad542ba7..00000000 Binary files a/doc/images/intro_39.png and /dev/null differ diff --git a/doc/images/lancement_1.png b/doc/images/lancement_1.png deleted file mode 100644 index 5a7e6cf7..00000000 Binary files a/doc/images/lancement_1.png and /dev/null differ diff --git a/doc/images/lancement_2.png b/doc/images/lancement_2.png deleted file mode 100644 index 9655bcb1..00000000 Binary files a/doc/images/lancement_2.png and /dev/null differ diff --git a/doc/images/lancement_3.png b/doc/images/lancement_3.png deleted file mode 100644 index aef0b242..00000000 Binary files a/doc/images/lancement_3.png and /dev/null differ diff --git a/doc/images/menu_1.png b/doc/images/menu_1.png deleted file mode 100644 index ed5b5c46..00000000 Binary files a/doc/images/menu_1.png and /dev/null differ diff --git a/doc/images/menu_2.png b/doc/images/menu_2.png deleted file mode 100644 index 405f9a8d..00000000 Binary files a/doc/images/menu_2.png and /dev/null differ diff --git a/doc/images/mesh_info_1.png b/doc/images/mesh_info_1.png deleted file mode 100644 index 044f8dcc..00000000 Binary files a/doc/images/mesh_info_1.png and /dev/null differ diff --git a/doc/images/mesh_info_2.png b/doc/images/mesh_info_2.png deleted file mode 100644 index 9f77229f..00000000 Binary files a/doc/images/mesh_info_2.png and /dev/null differ diff --git a/doc/images/mesh_info_3.png b/doc/images/mesh_info_3.png deleted file mode 100644 index 04193271..00000000 Binary files a/doc/images/mesh_info_3.png and /dev/null differ diff --git a/doc/images/mesh_info_4.png b/doc/images/mesh_info_4.png deleted file mode 100644 index ea3ec0c4..00000000 Binary files a/doc/images/mesh_info_4.png and /dev/null differ diff --git a/doc/index.rst b/doc/index.rst deleted file mode 100644 index 9b3970c0..00000000 --- a/doc/index.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. HOMARD documentation master file, created by - sphinx-quickstart on Tue Jan 5 08:51:14 2010. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -.. |logo| image:: images/HOMARD.png - -Documentation du composant HOMARD |logo| ----------------------------------------- -HOMARD est le composant qui permet l'adaptation de maillage au sein de la plateforme SALOME. - -*HOMARD est une marque déposée d'EDF.* - -Table des matières de ce mode d'emploi -"""""""""""""""""""""""""""""""""""""" - -.. toctree:: - :maxdepth: 2 - - intro - gui_usage - tui_usage - tutorials - -Licence -""""""" -.. index:: single: Licence - -La licence pour ce module est la GNU Lesser General Public License (Lesser GPL), tel qu'il est déclaré ici et dans les fichiers source. - -.. literalinclude:: licence.txt - -En complément, nous souhaitons que toute publication décrivant un travail utilisant ce module, ou tout produit commercial l'utilisant, cite au moins l'une des références ci-dessous : - - * *HOMARD, a SALOME module for Mesh Adaptation*, - http://www.salome-platform.org/ - - * *SALOME The Open Source Integration Platform for Numerical Simulation*, - http://www.salome-platform.org/ - - * G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, *Finite - Elements in Analysis and Design*, Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 - -La documentation de ce module est aussi couverte par la licence et l'obligation de citation. - -Index et tables -""""""""""""""" - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` -* :ref:`glossaire` - diff --git a/doc/index_en.rst b/doc/index_en.rst deleted file mode 100644 index 3d1b487b..00000000 --- a/doc/index_en.rst +++ /dev/null @@ -1,53 +0,0 @@ -.. HOMARD documentation master file, created by - sphinx-quickstart on Tue Jan 5 08:51:14 2010. - You can adapt this file completely to your liking, but it should at least - contain the root `toctree` directive. - -.. |logo| image:: images/HOMARD.png - -Documentation of the component HOMARD |logo| --------------------------------------------- -The component HOMARD drives the mesh adaptation inside of the SALOME plateform. - -*HOMARD is a trade mark of EDF.* - -Table of contents of this User's guide -"""""""""""""""""""""""""""""""""""""" - -.. toctree:: - :maxdepth: 2 - - intro_en - gui_usage_en - tui_usage_en - tutorials_en - -Licence -""""""" -.. index:: single: Licence - -The licence for this module is the GNU Lesser General Public License (Lesser GPL), as stated here and in the source files. - -.. literalinclude:: licence.txt - -In addition, we expect that all publications describing work using this software, or all commercial products using it, quote at least one of the references given below: - - * *HOMARD, a SALOME module for Mesh Adaptation*, - http://www.salome-platform.org/ - - * *SALOME The Open Source Integration Platform for Numerical Simulation*, - http://www.salome-platform.org/ - - * G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, *Finite - Elements in Analysis and Design*, Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 - -The documentation of the module is also covered by the licence and the requirement of quoting. - -Index and tables -"""""""""""""""" - -* :ref:`genindex` -* :ref:`modindex` -* :ref:`search` -* :ref:`glossaire_en` - diff --git a/doc/intro.rst b/doc/intro.rst deleted file mode 100644 index d29ce5a7..00000000 --- a/doc/intro.rst +++ /dev/null @@ -1,203 +0,0 @@ -.. _gui_intro: - -Introduction -============ - -Présentation générale -""""""""""""""""""""" -Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des codes de calculs par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du code de calcul auquel il est couplé. - -Raffiner le maillage signifie découper des mailles désignées selon des indications founies par l'utilisateur. Déraffiner le maillage signifie revenir en arrière sur des découpages précédemment réalisés : ainsi, en aucun cas HOMARD ne peut simplifier un maillage existant qui aura été créé trop fin. Le déraffinement prend toute son importance dans les calculs quand la zone d'intérêt se déplace au cours du calcul pour ne plus tenir compte de raffinements précédemment réalisés et qui deviennent inutiles. On en trouvera une illustration au bas de cette page. - -HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : - - mailles-points - - segments - - triangles - - quadrangles - - tétraèdres - - hexaèdres - - prismes - -Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. -Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y avoir cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. - -Le cas des pyramides est à part. Pour un maillage comportant des hexaèdres ou des prismes, la mise en conformité du maillage issu du raffinement crée des pyramides pour assurer la liaison entre deux régions de niveaux de raffinement différents. Ces pyramides sont gérées comme toutes les mailles de transition et ne sont pas redécoupées par la suite. En revanche, si le maillage initial contient des pyramides, HOMARD ne saura pas l'adapter et émettra un message d'erreur. Dans certains cas particuliers, on pourra néanmoins traiter un tel maillage, comme il est décrit dans la rubrique 'Options avancées' de :ref:`gui_create_case`). - -Plusieurs motivations apparaissent pour adapter un maillage : - - - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. - - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. - - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. - -Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. -Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. - -.. image:: images/intro_1.png - :align: center - -Au final, la chaîne complète part du maillage initial produit par un mailleur. Elle comprend des maillons successifs (calcul d'indicateur / adaptation) comme sur la figure ci-après. - -.. image:: images/intro_2.png - :align: center - -Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. - -.. note:: - Pour une description plus complète, voir :download:`Description générale de HOMARD `. - -.. note:: - Pour une référence à HOMARD, utiliser : - - G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, "*Finite Elements in Analysis and Design*", Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 - - `Accessible en cliquant ici `_ - - -Quelques illustrations de maillage adaptés -"""""""""""""""""""""""""""""""""""""""""" -.. index:: single: illustration - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_3.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_4.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_5.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_6.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_7.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_8.gif | -| :align: center | -| | -+---------------------------------------------------------------+ - -Démarrage rapide -"""""""""""""""" -.. index:: single: démarrage -.. index:: single: exemple - -L'ensemble des options de pilotage du module HOMARD dans SALOME est décrit dans le :ref:`gui_usage`. Mais on trouvera ici le B.A. BA pour découvrir l'utilisation de HOMARD à partir d'un exemple simple. Imaginons que l'on a effectué un calcul de thermique sur un maillage donné. On a récupéré en sortie de ce calcul un fichier au format MED, contenant le maillage et le champ des températures aux noeuds. On aimerait adapter le maillage de telle sorte que l'écart de température entre deux noeuds voisins soit inférieur à une valeur donnée. - -La première action nécessite de lancer le module HOMARD, en créant une nouvelle étude, selon le principe qui a été retenu pour tous les autres modules de SALOME. - -.. image:: images/homard_1.png - :align: center - -Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD. - -.. image:: images/homard_2.png - :align: center - -La fenêtre suivante apparaît : - -.. image:: images/intro_31.png - :align: center - -Il faut fournir deux informations : le répertoire qui contiendra les fichiers produits par les adaptations successives et le fichier issu du calcul que l'on vient de faire. On valide par "Appliquer et fermer". - -.. image:: images/intro_32.png - :align: center - -L'arbre d'études est enrichi de ce cas. On déplie le cas jusqu'à afficher le maillage correspondant à l'itération 0. On désigne cette itération initiale et on demande une nouvelle itération par "*Nouvelle itération*" dans le menu HOMARD ou à la souris. - -.. image:: images/intro_331.png - :align: center - -La fenêtre suivante apparaît : - -.. image:: images/intro_33.png - :align: center - -On désigne le fichier issu du calcul que l'on vient de faire et qui contient le champ de température. C'est le même que celui qui a été donné dans la définition du cas. - -.. image:: images/intro_34.png - :align: center - -On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît : - -.. image:: images/intro_35.png - :align: center - -On modifie les options par défaut pour correspondre à notre choix de pilotage de l'adaptation. La sélection d'un pilotage par les saut entre éléments et d'un seuil absolu de 4.0 va demander le découpage de chaque arête de maille où le température varie de plus de 4.0 degrés entre les deux extrémités de l'arête. - -.. image:: images/intro_36.png - :align: center - -On valide par "Appliquer et fermer" cette création d'hypothése, puis la création de la nouvelle itération. On se retrouve avec un arbre d'études enrichi avec la description de l'hypothèse créée et de l'itération à calculer, repérée par une icone "en attente". - -Lancer l'adaptation s'obtient en sélectionnant l'itération à calculer. On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. L'arbre d'études s'enrichit de fichiers d'informations et du nom du fichier au format MED qui contient le nouveau maillage, ``maill.01.med``. On remarque qu'il est placé dans le répertoire qui a été désigné à la création du cas. - -.. image:: images/intro_37.png - :align: center - -A ce stade, on va utiliser ce nouveau maillage pour un deuxième calcul, dans les mêmes conditions que le premier. Une fois que ce nouveau calcul est achevé, on peut décider de poursuivre le processus d'adaptation. Pour cela on revient dans SALOME et on active le module HOMARD. On désigne l'itération que l'avait calculée précédemment "*Iter_1*" et on demande une nouvelle itération. La fenêtre suivante apparaît : - -.. image:: images/intro_38.png - :align: center - -Comme on continue l'adaptation avec le même critère de saut de température entre noeuds voisins, on garde l'hypothèse "*Hypo_1*". Il suffit de désigner le fichier issu du calcul que l'on vient de faire et qui contient le nouveau champ de température. - -.. image:: images/intro_39.png - :align: center - -Comme précédemment, on lance l'adaptation et on récupère les résultats dans le répertoire du cas, dont le maillage ``maill.02.med``. - -.. image:: images/intro_40.png - :align: center - -On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu. - - -Evolutions du module -"""""""""""""""""""" -.. index:: single: évolution - -On trouvera ici les principales évolutions de HOMARD à partir de la première version livrée dans SALOME 6.5. - -SALOME VERSION 6.6 : - - Interfaçage avec med 3.0.6 - - Valeurs par défaut des instants - - Acceptation des mailles de type TRIA7 et QUAD9 - - Option de sortie dans le fichier MED du niveau de raffinement atteint dans chaque maille - -SALOME VERSION 7.1 : - - Correction d'une anomalie sur le filtrage du raffinement par les groupes - - Pilotage de l'adaptation par un seuil basé sur la moyenne et l'écart-type (voir :ref:`tui_create_hypothese`) - - En TUI, choix du dernier instant comme instant de pilotage par SetTimeStepRankLast (voir :ref:`tui_create_iteration`) - - Possibilité de détruire les objets (GUI et TUI) - - Modification des fonctions TUI pour qu'elles agissent sur les objets et non plus sur les noms : - ``homard.AssociateIterHypo(iter_name,hypo_name)`` devient ``iter.AssociateHypo(hypo_name)``, ``homard.AssociateHypoZone(hypo_name,zone_name,type_use)`` devient ``hypo.AddZone(zone_name,type_use)``, ``homard.CreateIteration(iter_name,iter_parent_name)`` devient ``case.NextIteration(iter_name)`` ou ``iter.NextIteration(iter_name)`` - - Ajout de fonctions : - ``cas.LastIteration()`` : retourne la dernière itération de la descendance du cas (voir :ref:`tui_create_iteration`) - - Analyse de maillages (voir :ref:`gui_mesh_info`) - -SALOME VERSION 7.2 : - - Possibilité d'utiliser un cone comme support de frontiere 2D (voir :ref:`tui_create_boundary`) - - Choix de publier ou non le résultat dans SMESH (voir :ref:`tui_create_iteration`) - ``iter.Compute(option)`` devient ``iter.Compute(option1, option2)`` - - Possibilité de poursuivre une suite d'itérations archivées dans un répertoire (voir :ref:`gui_create_case`) - - - - - - diff --git a/doc/intro_en.rst b/doc/intro_en.rst deleted file mode 100644 index 2946370e..00000000 --- a/doc/intro_en.rst +++ /dev/null @@ -1,203 +0,0 @@ -.. _gui_intro_en: - -Introduction -============ - -General presentation -"""""""""""""""""""" -Le logiciel HOMARD est destiné à adapter les maillages dans le cadre des codes de calculs par éléments ou volumes finis. Ce logiciel, réalisé par EDF R&D, procède par raffinement et déraffinement des maillages bidimensionnels ou tridimensionnels. Il est conçu pour être utilisé indépendamment du code de calcul auquel il est couplé. - -Raffiner le maillage signifie découper des mailles désignées selon des indications founies par l'utilisateur. Déraffiner le maillage signifie revenir en arrière sur des découpages précédemment réalisés : ainsi, en aucun cas HOMARD ne peut simplifier un maillage existant qui aura été créé trop fin. Le déraffinement prend toute son importance dans les calculs quand la zone d'intérêt se déplace au cours du calcul pour ne plus tenir compte de raffinements précédemment réalisés et qui deviennent inutiles. On en trouvera une illustration au bas de cette page. - -HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes : - - mailles-points - - segments - - triangles - - quadrangles - - tétraèdres - - hexaèdres - - prismes - -Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles. -Les noeuds acceptés sont évidemment les noeuds qui sont les sommets des mailles, ce qui correspond à la description classique « en degré 1 » . Si les éléments sont décrits « en degré 2 », les noeuds complémentaires sont gérés. En revanche, il ne peut pas y asee cohabitation de mailles décrites en degré 1 et d'autres décrites en degré 2. Enfin, HOMARD sait prendre en compte des noeuds isolés, qui n'appartiendraient à aucune définition de mailles : ils ressortiront tels quels du processus d'adaptation. - -Le cas des pyramides est à part. Pour un maillage comportant des hexaèdres ou des prismes, la mise en conformité du maillage issu du raffinement crée des pyramides pour assurer la liaison entre deux régions de niveaux de raffinement différents. Ces pyramides sont gérées comme toutes les mailles de transition et ne sont pas redécoupées par la suite. En revanche, si le maillage initial contient des pyramides, HOMARD ne saura pas l'adapter et émettra un message d'erreur. Dans certains cas particuliers, on pourra néanmoins traiter un tel maillage, comme il est décrit dans la rubrique 'Options avancées' de :ref:`gui_create_case_en`). - -Plusieurs motivations apparaissent pour adapter un maillage : - - - on veut simplifier la réalisation du maillage d'une géométrie complexe : on part d'un maillage grossier et on confie à un processus automatique la charge de le raffiner. - - on veut s'assurer de la convergence de la solution numérique : plutôt que de réaliser à la main des maillages de plus en plus fins, on laisse le logiciel chercher lui-même les endroits où il faudrait affiner le maillage pour augmenter la précision du résultat. - - les conditions du calcul changent au cours de son déroulement : les zones qui doivent être maillées finement se déplacent. Si on maille fin partout dès le début, le maillage est trop gros. En adaptant au fur et à mesure, le maillage ne sera fin qu'aux endroits nécessaires : sa taille sera réduite et la qualité de la solution sera bonne. - -Dans tous les cas, le principe de l'adaptation de maillage reste le même. Sur le maillage de départ, on réalise le calcul standard. Avec une analyse de la solution numérique obtenue, on estime l'erreur qui a été commise par rapport à la solution réelle. Cette estimation se représente par une valeur d'indicateur d'erreur dans chaque maille du calcul. A partir de là, on applique le principe suivant : les mailles où l'indicateur d'erreur est fort devraient être plus petites et, réciproquement, les mailles où l'indicateur d'erreur est faible pourraient être plus grandes. Avec cette information, on alimente HOMARD qui va modifier le maillage en conséquence. Sur le nouveau maillage, on recommencera alors le calcul. -Schématiquement, une itération d'adaptation de maillage se présente ainsi. Le logiciel calcule la solution numérique sur le maillage n°k, puis en déduit les valeurs de l'indicateur d'erreur sur tout le maillage. A partir de la connaissance du maillage n°k et de l'indicateur n°k, HOMARD crée le nouveau maillage n°k+1. - -.. image:: images/intro_1.png - :align: center - -Au final, la chaîne complète part du maillage initial produit par un mailleur. Elle comprend des maillons successifs (calcul d'indicateur / adaptation) comme sur la figure ci-après. - -.. image:: images/intro_2.png - :align: center - -Des variantes de ce schéma de base sont possibles. Si aucun calcul d'erreur n'est disponible dans le logiciel couplé, on peut utiliser un champ pour piloter l'adaptation. Un champ de contraintes en mécaniques peut être utilisé : raffiner là où les contraintes sont importantes est souvent efficace pour améliorer la qualité de la simulation. On peut également adapter en fonction du saut d'une variable d'une maille à sa voisine ou dans une zone connue a priori. Grâce à ses nombreuses options, HOMARD permet d'envisager de multiples scénarios d'adaptation de maillage. - -.. note:: - Pour une description plus complète, see :download:`Description générale de HOMARD `. - -.. note:: - Pour une référence à HOMARD, utiliser : - - G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Meshes, "*Finite Elements in Analysis and Design*", Vol. 67, pp. 1-12, 2013, doi:10.1016/j.finel.2012.11.008 - - `Accessible en cliquant ici `_ - - -Some illustrations of adapted meshes -"""""""""""""""""""""""""""""""""""" -.. index:: single: illustration - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_3.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_4.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_5.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_6.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_7.png | -| :align: center | -| | -+---------------------------------------------------------------+ -| | -| .. image:: images/intro_8.gif | -| :align: center | -| | -+---------------------------------------------------------------+ - -Quick start -""""""""""" -.. index:: single: start -.. index:: single: example - -L'ensemble des options de pilotage du module HOMARD dans SALOME est décrit dans le :ref:`gui_usage_en`. Mais on trouvera ici le B.A. BA pour découvrir l'utilisation de HOMARD à partir d'un exemple simple. Imaginons que l'on a effectué un calcul de thermique sur un maillage donné. On a récupéré en sortie de ce calcul un fichier au format MED, contenant le maillage et le champ des températures aux noeuds. On aimerait adapter le maillage de telle sorte que l'écart de température entre deux noeuds voisins soit inférieur à une valeur donnée. - -La première action nécessite de lancer le module HOMARD, en créant une nouvelle étude, selon le principe qui a été retenu pour tous les autres modules de SALOME. - -.. image:: images/homard_1.png - :align: center - -Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD. - -.. image:: images/homard_2.png - :align: center - -La fenêtre suivante apparaît : - -.. image:: images/intro_31.png - :align: center - -Il faut fournir deux informations : le répertoire qui contiendra les fichiers produits par les adaptations successives et le fichier issu du calcul que l'on vient de faire. On valide par "Appliquer et fermer". - -.. image:: images/intro_32.png - :align: center - -L'arbre d'études est enrichi de ce cas. On déplie le cas jusqu'à afficher le maillage correspondant à l'itération 0. On désigne cette itération initiale et on demande une nouvelle itération par "*Nouvelle itération*" dans le menu HOMARD ou à la souris. - -.. image:: images/intro_331.png - :align: center - -La fenêtre suivante apparaît : - -.. image:: images/intro_33.png - :align: center - -On désigne le fichier issu du calcul que l'on vient de faire et qui contient le champ de température. C'est le même que celui qui a été donné dans la définition du cas. - -.. image:: images/intro_34.png - :align: center - -On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît : - -.. image:: images/intro_35.png - :align: center - -On modifie les options par défaut pour correspondre à notre choix de pilotage de l'adaptation. La sélection d'un pilotage par les saut entre éléments et d'un seuil absolu de 4.0 va demander le découpage de chaque arête de maille où le température varie de plus de 4.0 degrés entre les deux extrémités de l'arête. - -.. image:: images/intro_36.png - :align: center - -On valide par "Appliquer et fermer" cette création d'hypothése, puis la création de la nouvelle itération. On se retrouve avec un arbre d'études enrichi avec la description de l'hypothèse créée et de l'itération à calculer, repérée par une icone "en attente". - -Lancer l'adaptation s'obtient en sélectionnant l'itération à calculer. On choisit ensuite "*Calculer*" dans le menu HOMARD ou à la souris. L'arbre d'études s'enrichit de fichiers d'informations et du nom du fichier au format MED qui contient le nouveau maillage, ``maill.01.med``. On remarque qu'il est placé dans le répertoire qui a été désigné à la création du cas. - -.. image:: images/intro_37.png - :align: center - -A ce stade, on va utiliser ce nouveau maillage pour un deuxième calcul, dans les mêmes conditions que le premier. Une fois que ce nouveau calcul est achevé, on peut décider de poursuivre le processus d'adaptation. Pour cela on revient dans SALOME et on active le module HOMARD. On désigne l'itération que l'avait calculée précédemment "*Iter_1*" et on demande une nouvelle itération. La fenêtre suivante apparaît : - -.. image:: images/intro_38.png - :align: center - -Comme on continue l'adaptation avec le même critère de saut de température entre noeuds voisins, on garde l'hypothèse "*Hypo_1*". Il suffit de désigner le fichier issu du calcul que l'on vient de faire et qui contient le nouveau champ de température. - -.. image:: images/intro_39.png - :align: center - -Comme précédemment, on lance l'adaptation et on récupère les résultats dans le répertoire du cas, dont le maillage ``maill.02.med``. - -.. image:: images/intro_40.png - :align: center - -On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu. - - -Evolutions of the module -"""""""""""""""""""""""" -.. index:: single: evolution - -Here are the main evolutions de HOMARD from the first release in SALOME 6.5. - -SALOME RELEASE 6.6 : - - Interface with med 3.0.6 - - Default values for the time steps - - New element types: TRIA7 and QUAD9 - - Optional output into the MED file of the level of refinement of every element - -SALOME RELEASE 7.1 : - - Correction of a bug in the filtering of the refinement by groups - - Driving of the adaptation by a threshold that is based upon the mean and the standard deviation (see :ref:`tui_create_hypothese_en`) - - TUI: the last time step for the driving instant can be selected by SetTimeStepRankLast (see :ref:`tui_create_iteration_en`) - - The destruction of the objects is available (GUI and TUI) - - The TUI functions are modified: they act onto the objects and no more by the names: - ``homard.AssociateIterHypo(iter_name,hypo_name)`` becomes ``iter.AssociateHypo(hypo_name)``, ``homard.AssociateHypoZone(hypo_name,zone_name,type_use)`` becomes ``hypo.AddZone(zone_name,type_use)``, ``homard.CreateIteration(iter_name,iter_parent_name)`` becomes ``case.NextIteration(iter_name)`` ou ``iter.NextIteration(iter_name)`` - - Addition of a function: - ``cas.LastIteration()`` : returns the last iteration of the case (see :ref:`tui_create_iteration_en`) - - Mesh analysis (see :ref:`gui_mesh_info_en`) - -SALOME RELEASE 7.2 : - - A cone can be used as a support for a 2D boundary (see :ref:`tui_create_boundary_en`) - - The result can be published or not published in SMESH (see :ref:`tui_create_iteration_en`) - ``iter.Compute(option)`` becomes ``iter.Compute(option1, option2)`` - - A serie of iterations that is stored in a directory can be followed (see :ref:`gui_create_case_en`) - - - - - - diff --git a/doc/tui_create_boundary.rst b/doc/tui_create_boundary.rst deleted file mode 100644 index f28dced4..00000000 --- a/doc/tui_create_boundary.rst +++ /dev/null @@ -1,170 +0,0 @@ -.. _tui_create_boundary: - -La frontière -============ - -.. index:: single: boundary -.. index:: single: frontière -.. index:: single: cylindre -.. index:: single: sphere - -Les variables sont décrites dans :ref:`gui_create_boundary`. - -Méthodes de la classe homard -"""""""""""""""""""""""""""" -Ces méthodes retournent une instance de la classe boundary. - -+----------------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryDi | -| | -| **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)** | -| Retourne une instance de la classe ``boundary`` de type discret après sa création | -| | -| - ``boundary_name`` : le nom de la frontière discrète | -| - ``mesh_name`` : le nom du maillage de la frontière | -| - ``mesh_file`` : le nom du fichier contenant ce maillage | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryCylinder | -| | -| **CreateBoundaryCylinder(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** | -| Retourne une instance de la classe ``boundary`` analytique de type cylindrique | -| après sa création | -| | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un cylindre | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées d'un point sur l'axe du cylindre | -| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | -| - ``R`` : rayon du cylindre | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundarySphere | -| | -| **CreateBoundarySphere(boundary_name, Xcen, Ycen, Zcen, R)** | -| Retourne une instance de la classe ``boundary`` analytique de type sphérique | -| après sa création | -| | -| - ``boundary_name`` : le nom de la frontière analytique basée sur une sphere | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | -| - ``R`` : rayon de la sphère | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryConeA | -| | -| **CreateBoundaryConeA(boundary_name, Xaxe, Yaxe, Zaxe, Angle, Xcen, Ycen, Zcen)** | -| Retourne une instance de la classe ``boundary`` analytique de type conique | -| après sa création | -| | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | -| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe (non nécessairement normé) | -| - ``Angle`` : angle d'ouverture du cône en degre (entre 0 et 90) | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre du cône | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryConeR | -| | -| **CreateBoundaryConeR(boundary_name, Xc1, Yc1, Zc1, R1, Xc2, Yc2, Zc2, R2)** | -| Retourne une instance de la classe ``boundary`` analytique de type conique | -| après sa création | -| | -| - ``boundary_name`` : le nom de la frontière analytique basée sur un cône | -| - ``Xc1``, ``Yc1``, ``Zc1`` : coordonnées du premier centre du cône | -| - ``R1`` : rayon du cône à la hauteur du premier centre | -| - ``Xc2``, ``Yc2``, ``Zc2`` : coordonnées du second centre du cône | -| - ``R2`` : rayon du cône à la hauteur du second centre | -+----------------------------------------------------------------------------------------+ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetBoundary | -| | -| **GetBoundary(boundary_name)** | -| Retourne l'instance de la classe ``boundary`` connue par | -| son nom | -| | -| - ``boundary_name`` : le nom de la frontière | -+---------------------------------------------------------------+ -| .. module:: GetAllBoundarysName | -| | -| **GetAllBoundarysName()** | -| Retourne la liste des noms de toutes les frontières | -| existantes | -| | -+---------------------------------------------------------------+ - -Méthodes de la classe cas -""""""""""""""""""""""""" -Voir également dans dans :ref:`tui_create_case`. - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddBoundaryGroup | -| | -| **AddBoundaryGroup(boundary, group)** | -| Ajoute une frontière à la définition du cas | -| | -| - ``boundary`` : nom d'une frontière courbe à suivre | -| | -| Pour une frontière discrète : | -| | -| . si toutes les lignes courbes sont suivies, le second | -| argument est une chaîne vide. | -| | -| . si seulement certaines lignes courbes sont suivies, | -| ``group`` est le nom d'un groupe de segments à suivre. | -| | -| Pour une frontière analytique : | -| | -| - ``group`` : nom d'un groupe de faces placées sur la | -| frontière | -+---------------------------------------------------------------+ - -Méthodes de la classe boundary -"""""""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Retourne le nom de la frontière | -+---------------------------------------------------------------+ -| .. module:: GetType | -| | -| **GetType()** | -| Retourne le type de la frontière : | -| | -| * 0 : discrète | -| * 1 : cylindre | -| * 2 : sphère | -| * 3 : cône défini par un axe et un angle | -| * 4 : cône défini par deux rayons | -+---------------------------------------------------------------+ -| .. module:: GetCoords | -| | -| **GetCoords()** | -| Retourne un tableau contenant les coordonnées de la | -| frontière dans l'ordre d'entrée dans le CreateBoundaryXXXX| -| associé | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete()** | -| Detruit la frontière. | -| Pour une frontière discrète, le fichier du maillage | -| associé est conservé. | -| | -| Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | -+---------------------------------------------------------------+ - - -Exemple -""""""" -Création d'une frontière discrète, d'une frontière sphèrique, puis d'une frontière cylindrique : :: - - inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med') - fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5) - fron_2 = homard.CreateBoundaryCylinder('CYL_1', 0.0, 25., -25., 25., 50., 75., 100.) - - -Saisie graphique correspondante -""""""""""""""""""""""""""""""" -Consulter :ref:`gui_create_boundary` diff --git a/doc/tui_create_boundary_en.rst b/doc/tui_create_boundary_en.rst deleted file mode 100644 index 310c9461..00000000 --- a/doc/tui_create_boundary_en.rst +++ /dev/null @@ -1,169 +0,0 @@ -.. _tui_create_boundary_en: - -The boundary -============ - -.. index:: single: boundary -.. index:: single: cylinder -.. index:: single: sphere - -The variables are described in :ref:`gui_create_boundary_en`. - -Methods of the class homard -""""""""""""""""""""""""""" -These methods returns an instance of the class boundary. - -+----------------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryDi | -| | -| **CreateBoundaryDi(boundary_name, mesh_name, mesh_file)** | -| Returns an instance of the class ``boundary``, type discrete after its creation | -| | -| - ``boundary_name``: the name of the discrete boundary | -| - ``mesh_name``: the name of the mesh of the boundary | -| - ``mesh_file``: the name of the file for this mesh | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryCylinder | -| | -| **CreateBoundaryCylinder(boundary_name, Xcen, Ycen, Zcen, Xaxe, Yaxe, Zaxe, R)** | -| Returns an instance of the class ``boundary`` analytical type cylindrical | -| after its creation | -| | -| - ``boundary_name``: the name of the analytical boundary based on a cylinder | -| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of a point on the axis of the cylinder | -| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | -| - ``R``: radius of the cylinder | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundarySphere | -| | -| **CreateBoundarySphere(boundary_name, Xcen, Ycen, Zcen, R)** | -| Returns an instance of the class ``boundary`` analytical type spherical | -| after its creation | -| | -| - ``boundary_name``: the name of the boundary analytique based on a sphere | -| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of the centre of the sphere | -| - ``R``: radius of the sphere | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryConeA | -| | -| **CreateBoundaryConeA(boundary_name, Xaxe, Yaxe, Zaxe, Angle, Xcen, Ycen, Zcen)** | -| Returns an instance of the class ``boundary`` analytical type conical | -| after its creation | -| | -| - ``boundary_name``: the name of the boundary analytique based on a cone | -| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | -| - ``Angle``: opening angle of the cone in degree (between 0 and 90) | -| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of the centre of the cone | -+----------------------------------------------------------------------------------------+ -| .. module:: CreateBoundaryConeR | -| | -| **CreateBoundaryConeR(boundary_name, Xc1, Yc1, Zc1, R1, Xc2, Yc2, Zc2, R2)** | -| Returns an instance of the class ``boundary`` analytical type conical | -| after its creation | -| | -| - ``boundary_name``: the name of the boundary analytique based on a cone | -| - ``Xc1``, ``Yc1``, ``Zc1``: coordinates of the first centre of the cone | -| - ``R1``: radius of the cone at the first centre of the cone | -| - ``Xc2``, ``Yc2``, ``Zc2``: coordinates of the second centre of the cone | -| - ``R2``: radius of the cone at the second centre of the cone | -+----------------------------------------------------------------------------------------+ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetBoundary | -| | -| **GetBoundary(boundary_name)** | -| Returns the instance of the class classe ``boundary`` | -| known by its name | -| | -| - ``boundary_name``: the name of the boundary | -+---------------------------------------------------------------+ -| .. module:: GetAllBoundarysName | -| | -| **GetAllBoundarysName()** | -| Returns the list of the names of all the existing | -| boundaries | -| | -+---------------------------------------------------------------+ - -Methods of the class cas -""""""""""""""""""""""""" -See also in :ref:`tui_create_case_en`. - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddBoundaryGroup | -| | -| **AddBoundaryGroup(boundary, group)** | -| Add a boundary to the definition of a case | -| | -| - ``boundary``: name of the curved boundary | -| | -| Discrete boundary: | -| | -| . if all the curved lines are involved, the second | -| argument is an empty string. | -| | -| . if only some curved lines are involved, ``group`` is | -| the name of the group of segments | -| | -| Analytical boundary: | -| | -| - ``group``: name of the groupe of faces located on the | -| boundary | -+---------------------------------------------------------------+ - -Methods of the class boundary -"""""""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Returns the name of the boundary | -+---------------------------------------------------------------+ -| .. module:: GetType | -| | -| **GetType()** | -| Returns the type of the boundary: | -| | -| * 0: discrete | -| * 1: cylinder | -| * 2: sphere | -| * 3: cone defined by an axis and an angle | -| * 4: cone defined by 2 radius | -+---------------------------------------------------------------+ -| .. module:: GetCoords | -| | -| **GetCoords()** | -| Returns the array of the coordinates of the boundary | -| with the same order as in its definition with | -| CreateBoundaryXXXX | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete()** | -| Deletes the boundary. | -| If the boundary is discrete, the file of the mesh is kept.| -| | -| Returns an integer: | -| * 0: the destruction is done | -| * other value: problem | -+---------------------------------------------------------------+ - - -Example -""""""" -Creation of a discrete boundary, a spherical boundary, and a cylindrical boundary: -:: - - inter = homard.CreateBoundaryDi("INTERSECTION", 'PIQUAGE', dircase+'/tutorial_4.fr.med') - fron_1 = homard.CreateBoundarySphere("FRON_1", 12.3, 3.4, .56, 6.5) - fron_2 = homard.CreateBoundaryCylinder('CYL_1', 0.0, 25., -25., 25., 50., 75., 100.) - - -Similar graphical input -""""""""""""""""""""""" -Look at :ref:`gui_create_boundary_en` diff --git a/doc/tui_create_case.rst b/doc/tui_create_case.rst deleted file mode 100644 index ea05eae5..00000000 --- a/doc/tui_create_case.rst +++ /dev/null @@ -1,252 +0,0 @@ -.. _tui_create_case: - -Le cas -====== -.. index:: single: cas -.. index:: single: type de conformité -.. index:: single: maillage;initial - -Les variables sont décrites dans :ref:`gui_create_case`. - -Méthodes de la classe homard -"""""""""""""""""""""""""""" - -Création d'un cas -^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: CreateCase | -| | -| **CreateCase(case_name, mesh_name, mesh_file)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | -| | -| - ``case_name`` : le nom du cas | -| - ``mesh_name`` : le nom du maillage initial | -| - ``mesh_file`` : le nom du fichier MED contenant ce | -| ce maillage | -| | -| Par défaut : | -| | -| * le répertoire des résultats est ``/tmp`` | -| * l'adaptation est conforme | -+---------------------------------------------------------------+ -| .. module:: GetCase | -| | -| **GetCase(case_name)** | -| Retourne l'instance de la classe ``cas`` connue par | -| son nom | -| | -| - ``case_name`` : le nom du cas | -+---------------------------------------------------------------+ -| .. module:: GetAllCasesName | -| | -| **GetAllCasesName()** | -| Retourne la liste des noms de tous les cas existant | -| | -+---------------------------------------------------------------+ - -Création d'un cas par poursuite d'une itération calculée -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: CreateCaseFromIteration | -| | -| **CreateCaseFromIteration(case_name, dir_name)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | -| | -| - ``case_name`` : le nom du cas | -| - ``dir_name`` : le nom du répertoire contenant | -| l'itération à poursuivre | -| | -+---------------------------------------------------------------+ -| .. module:: CreateCaseFromCaseLastIteration | -| | -| **CreateCaseFromCaseLastIteration(case_name, dir_name)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | -| | -| - ``case_name`` : le nom du cas | -| - ``dir_name`` : le nom du répertoire contenant | -| le cas à poursuivre | -| | -+---------------------------------------------------------------+ -| .. module:: CreateCaseFromCaseIteration | -| | -| **CreateCaseFromCaseIteration(case_name, dir_name, number)** | -| Retourne une instance de la classe ``cas`` après sa | -| création | -| | -| - ``case_name`` : le nom du cas | -| - ``dir_name`` : le nom du répertoire contenant | -| le cas à poursuivre | -| - ``number`` : le numéro de l'itération du cas | -| | -+---------------------------------------------------------------+ - - - -Méthodes de la classe cas -""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Retourne le nom du cas | -+---------------------------------------------------------------+ -| .. module:: SetDirName | -| | -| **SetDirName(dirname)** | -| Affecte le répertoire des résutats associé au cas. Cela ne| -| peut se faire qu'après la création du cas et avant le | -| premier calcul. | -| | -| - ``dirname`` : le nom du répertoire des résutats | -+---------------------------------------------------------------+ -| .. module:: GetDirName | -| | -| **GetDirName()** | -| Retourne le nom du répertoire des résutats associé au cas | -+---------------------------------------------------------------+ -| .. module:: SetConfType | -| | -| **SetConfType(conf_type)** | -| Définit le mode de conformité associé au cas | -| | -| - ``conf_type`` : entier précisant le mode de conformité | -| | -| * 1 : conforme | -| * 2 : non conforme avec 1 noeud par maille | -| * 3 : non conforme avec 1 noeud par arete de maille | -| * 4 : non conforme quelconque | -+---------------------------------------------------------------+ -| .. module:: GetConfType | -| | -| **GetConfType()** | -| Retourne le type de conformité | -+---------------------------------------------------------------+ -| .. module:: GetIter0 | -| | -| **GetIter0()** | -| Retourne l'itération associée au maillage initial. | -| Cette itération est créée automatiquement par le module | -| HOMARD et est utilisée pour enchaîner les adaptations. | -| Elle correspond à un maillage initial ou à une itération | -| de poursuite d'un cas précédent. | -+---------------------------------------------------------------+ -| .. module:: AddBoundaryGroup | -| | -| **AddBoundaryGroup(boundary, group)** | -| Ajoute une frontière à la définition du cas | -| | -| - ``boundary`` : nom d'une frontière courbe à suivre | -| | -| Pour une frontière discrète : | -| | -| . si toutes les lignes courbes sont suivies, le second | -| argument est une chaîne vide. | -| . si seulement certaines lignes courbes sont suivies, | -| ``group`` est le nom d'un groupe de segments à suivre. | -| | -| Pour une frontière analytique : | -| | -| - ``group`` : nom d'un groupe de faces placées sur la | -| frontière | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete(option)** | -| Detruit le cas et toutes les itérations associées. Le | -| fichier du maillage initial associé est conservé. | -| | -| - ``option`` : un entier précisant ce qui est fait des | -| fichiers de maillage associés | -| | -| * 0 : les fichiers sont conservés | -| * 1 : les fichiers sont supprimés | -| | -| Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | -+---------------------------------------------------------------+ -| .. module:: GetState | -| | -| **GetState()** | -| Retourne l'état du cas : | -| * 0 : correspond à un maillage initial | -| * autre valeur : poursuite d'une itération de numéro n| -+---------------------------------------------------------------+ - -Les options avancées -^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetPyram | -| | -| **SetPyram(option)** | -| Définit le statut des pyramides pour le cas | -| | -| - ``option`` : entier précisant le statut des pyramides | -| éventuellement présentes dans le maillage initial | -| | -| * 0 : pyramides refusées (défaut) | -| * 1 : pyramides autorisées | -+---------------------------------------------------------------+ -| .. module:: GetPyram | -| | -| **GetPyram()** | -| Retourne le statut accordé aux pyramides éventuellement | -| présentes dans le maillage initial | -+---------------------------------------------------------------+ - -Informations sur le maillage initial -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: MeshInfo | -| | -| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | -| Donne des informations sur le maillage. Pour chaque | -| option, le choix 0 correspond à ne rien faire, alors que | -| le choix 1 active l'option. | -| | -| - ``Qual`` : qualité des mailles | -| - ``Diam`` : diamètre des mailles | -| - ``Conn`` : connexité du domaine ; en un seul morceau, | -| combien de trous, etc. | -| - ``Tail`` : tailles des constituants du domaine, groupe | -| par groupe | -| - ``Inte`` : interpénétration des mailles, par dimension | -+---------------------------------------------------------------+ - - -Exemple -""""""" -La création de l'objet case_1 se fait ainsi : :: - - case_name = "CAS_1" - mesh_name = "MAILL" - mesh_file = "/local00/Salome/Adapt/m0.med" - case_1 = homard.CreateCase(case_name, mesh_name, mesh_file) - dirname = "/local00/Salome/Adapt/resu" - case_1.SetDirName(dirname) - case_1.SetConfType(1) - case_1.AddBoundaryGroup( 'intersection', '' ) - case_1.AddBoundaryGroup( 'cyl_1', 'T1_EXT' ) - case_1.AddBoundaryGroup( 'cyl_1', 'T2_EXT' ) - case_1.AddBoundaryGroup( 'cyl_2', 'T_INT' ) - - - -Saisie graphique correspondante -""""""""""""""""""""""""""""""" -Consulter :ref:`gui_create_case` - - diff --git a/doc/tui_create_case_en.rst b/doc/tui_create_case_en.rst deleted file mode 100644 index bbcb188f..00000000 --- a/doc/tui_create_case_en.rst +++ /dev/null @@ -1,253 +0,0 @@ -.. _tui_create_case_en: - -The case -======== -.. index:: single: cas -.. index:: single: type of conformity -.. index:: single: mesh;initial - -The variables are described in :ref:`gui_create_case_en`. - -Methods of the class homard -"""""""""""""""""""""""""""" - -Creation of a case -^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: CreateCase | -| | -| **CreateCase(case_name, mesh_name, mesh_file)** | -| Returns an instance of the class ``cas`` after its | -| creation | -| | -| - ``case_name``: the name of the case | -| - ``mesh_name``: the name of the initial mesh | -| - ``mesh_file``: the name of the MED file of this mesh | -| | -| Default: | -| | -| * the directory for the results is ``/tmp`` | -| * the adaptation is conformal | -+---------------------------------------------------------------+ -| .. module:: GetCase | -| | -| **GetCase(case_name)** | -| Returns an instance of the class ``cas`` known by its name| -| | -| - ``case_name``: the name of the case | -+---------------------------------------------------------------+ -| .. module:: GetAllCasesName | -| | -| **GetAllCasesName()** | -| Returns the liste of the name of all the existing cases | -| | -+---------------------------------------------------------------+ - -Creation of a case by pursuit of a computed iteration -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: CreateCaseFromIteration | -| | -| **CreateCaseFromIteration(case_name, dir_name)** | -| Returns an instance of the class ``cas`` after its | -| creation | -| | -| - ``case_name``: the name of the case | -| - ``dir_name``: the name of the directory that contains | -| the iteration | -| | -+---------------------------------------------------------------+ -| .. module:: CreateCaseFromCaseLastIteration | -| | -| **CreateCaseFromCaseLastIteration(case_name, dir_name)** | -| Returns an instance of the class ``cas`` after its | -| creation | -| | -| - ``case_name``: the name of the case | -| - ``dir_name``: the name of the directory that contains | -| the case | -| | -+---------------------------------------------------------------+ -| .. module:: CreateCaseFromCaseIteration | -| | -| **CreateCaseFromCaseIteration(case_name, dir_name, number)** | -| Returns an instance of the class ``cas`` after its | -| creation | -| | -| - ``case_name``: the name of the case | -| - ``dir_name``: the name of the directory that contains | -| the case | -| - ``number``: the number of the iteration of the case | -| | -+---------------------------------------------------------------+ - - - -Methods of the class cas -"""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Returns the name of the case | -+---------------------------------------------------------------+ -| .. module:: SetDirName | -| | -| **SetDirName(dirname)** | -| Gives a directory for the results of the case. It can be | -| done only after the creation of the case and before the | -| first computation. | -| | -| - ``dirname``: the name of the directory of the results | -+---------------------------------------------------------------+ -| .. module:: GetDirName | -| | -| **GetDirName()** | -| Returns the name of the directory of the results of the | -| case | -+---------------------------------------------------------------+ -| .. module:: SetConfType | -| | -| **SetConfType(conf_type)** | -| Defines the type of conformity for the case | -| | -| - ``conf_type``: integer as follows: | -| | -| * 1: conformal | -| * 2: non conformal with one hanging node per element | -| * 3: non conformal with one hanging node per edge of | -| element | -| * 4: non conformal without any constraint | -+---------------------------------------------------------------+ -| .. module:: GetConfType | -| | -| **GetConfType()** | -| Returns the type of conformity | -+---------------------------------------------------------------+ -| .. module:: GetIter0 | -| | -| **GetIter0()** | -| Returns the iteration linked to the initial mesh. | -| This iteration is automatically created by the module | -| HOMARD. It is used to connect the iterations. It is | -| connected to an initial mesh or to the iteration of a | -| previous case. | -+---------------------------------------------------------------+ -| .. module:: AddBoundaryGroup | -| | -| **AddBoundaryGroup(boundary, group)** | -| Add a boundary to the definition of a case | -| | -| - ``boundary``: name of the curved boundary | -| | -| Discrete boundary: | -| | -| . if all the curved lines are involved, the second | -| argument is an empty string. | -| . if only some curved lines are involved, ``group`` is | -| the name of the group of segments | -| | -| Analytical boundary: | -| | -| - ``group``: name of the group of faces located on the | -| boundary | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete(option)** | -| Deletes the case and all the connected iterations. The MED| -| file of the first mesh is kept. | -| | -| - ``option``: an integer to define what to do with the | -| MED file of the associated meshes | -| | -| * 0: the files are kept | -| * 1: the files are removed | -| | -| Returns an integer: | -| * 0: the destruction is done | -| * other value: problem | -+---------------------------------------------------------------+ -| .. module:: GetState | -| | -| **GetState()** | -| Returns the state of the case: | -| * 0: corresponds to an initial mesh | -| * other value: pursuit of an iteration with number n | -+---------------------------------------------------------------+ - -Advanced options -^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetPyram | -| | -| **SetPyram(option)** | -| Defines the status of the pyramids in this case | -| | -| - ``option``: integer that defines the status of the | -| pyramids that could belongs to the initial mesh | -| | -| * 0: rejected pyramids (default) | -| * 1: authorized pyramids | -+---------------------------------------------------------------+ -| .. module:: GetPyram | -| | -| **GetPyram()** | -| Returns the status of the pyramids in this case | -+---------------------------------------------------------------+ - -Informations for the initial mesh -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: MeshInfo | -| | -| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | -| Gives information about the current mesh. For every | -| option, the choice #0 corresponds to 'no action', while | -| the choice #1 launches the option. | -| | -| - ``Qual``: quality of the elements | -| - ``Diam``: diametre of the elements | -| - ``Conn``: connexity of the domain; a single block, how | -| many holes, etc. | -| - ``Tail``: size of the parts of the domain, group by | -| group | -| - ``Inte``: staggered elements, by dimension | -+---------------------------------------------------------------+ - - -Example -""""""" -The creation of the object case_1 is done as follows: - -:: - - case_name = "CAS_1" - mesh_name = "MAILL" - mesh_file = "/scratch/Salome/Adapt/m0.med" - case_1 = homard.CreateCase(case_name, mesh_name, mesh_file) - dirname = "/scratch/Salome/Adapt/resu" - case_1.SetDirName(dirname) - case_1.SetConfType(1) - case_1.AddBoundaryGroup( 'intersection', '' ) - case_1.AddBoundaryGroup( 'cyl_1', 'T1_EXT' ) - case_1.AddBoundaryGroup( 'cyl_1', 'T2_EXT' ) - case_1.AddBoundaryGroup( 'cyl_2', 'T_INT' ) - - - -Similar graphical input -""""""""""""""""""""""" -Look at :ref:`gui_create_case_en` - - diff --git a/doc/tui_create_hypothese.rst b/doc/tui_create_hypothese.rst deleted file mode 100644 index 84f1bf54..00000000 --- a/doc/tui_create_hypothese.rst +++ /dev/null @@ -1,318 +0,0 @@ -.. _tui_create_hypothese: - -L'hypothèse -=========== - -.. index:: single: itération -.. index:: single: hypothèse -.. index:: single: zone - -Les variables sont décrites dans :ref:`gui_create_hypothese`. - -Méthodes de la classe homard -"""""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: CreateHypothesis | -| | -| **CreateHypothesis(hypo_name)** | -| Retourne une instance de la classe ``hypothese`` | -| | -| - ``hypo_name`` : le nom de l'hypothèse | -+---------------------------------------------------------------+ -| .. module:: GetHypothesis | -| | -| **GetHypothesis(hypo_name)** | -| Retourne l'instance de la classe ``hypothese`` connue par | -| son nom | -| | -| - ``hypo_name`` : le nom de l'hypothèse | -+---------------------------------------------------------------+ -| .. module:: GetAllHypothesesName | -| | -| **GetAllHypothesesName()** | -| Retourne la liste des noms de toutes les hypothèses créées| -| | -+---------------------------------------------------------------+ - -Méthodes de la classe hypothese -""""""""""""""""""""""""""""""" - -Généralités -^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Retourne le nom de l'hypothèse | -+---------------------------------------------------------------+ -| .. module:: SetAdapRefinUnRef | -| | -| **SetAdapRefinUnRef(Adap, Refin, UnRef)** | -| Affecte le mode d'adaptation associé à l'hypothèse | -| | -| - ``Adap`` : entier précisant le type d'adaptation | -| | -| * -1 : uniforme | -| * 0 : selon des zones | -| * 1 : selon un champ | -| | -| - ``Refin`` : entier précisant si le raffinement est actif| -| | -| * 0 : inactif | -| * 1 : actif | -| | -| - ``UnRef`` : entier précisant si déraffinement est actif | -| | -| * 0 : inactif | -| * 1 : actif | -| | -+---------------------------------------------------------------+ -| .. module:: GetAdapType | -| | -| **GetAdapType()** | -| Retourne le type d'adaptation | -+---------------------------------------------------------------+ -| .. module:: GetRefinType | -| | -| **GetRefinType()** | -| Retourne le type de raffinement | -+---------------------------------------------------------------+ -| .. module:: GetUnRefType | -| | -| **GetUnRefType()** | -| Retourne le type de déraffinement | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete()** | -| Detruit l'hypothèse | -| | -| Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | -+---------------------------------------------------------------+ - -Le champ et les seuils -^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetField | -| | -| **SetField(field_name)** | -| Attribue un nom de champ à l'hypothèse | -| | -| - ``field_name`` : le nom du champ | -+---------------------------------------------------------------+ -| .. module:: GetFieldName | -| | -| **GetFieldName()** | -| Retourne le nom du champ | -+---------------------------------------------------------------+ -| .. module:: SetUseField | -| | -| **SetUseField(use_field)** | -| Attribue un mode d'usage du champ à l'hypothèse | -| | -| - ``use_field`` : entier précisant l'usage du champ | -| | -| * 0 : valeur par élément (défaut) | -| * 1 : saut entre un élément et ses voisins | -+---------------------------------------------------------------+ -| .. module:: SetRefinThr | -| | -| **SetRefinThr(type_thres, threshold)** | -| Définit les seuils en raffinement | -| | -| - ``type_thres`` : entier précisant le type de seuil en | -| raffinement | -| | -| * 1 : valeur absolue | -| * 2 : valeur relative en % | -| * 3 : fraction des mailles en % | -| * 4 : moyenne + n fois l'écart-type | -| | -| - ``threshold`` : valeur numérique entrant dans la | -| définition du seuil | -+---------------------------------------------------------------+ -| .. module:: GetRefinThrType | -| | -| **GetRefinThrType()** | -| Retourne le type de seuil de raffinement | -+---------------------------------------------------------------+ -| .. module:: SetUnRefThr | -| | -| **SetUnRefThr(type_thres, threshold)** | -| Définit les seuils en déraffinement | -| | -| - ``type_thres`` : entier précisant le type de seuil en | -| déraffinement | -| | -| * 1 : valeur absolue | -| * 2 : valeur relative en % | -| * 3 : fraction des mailles en % | -| * 4 : moyenne - n fois l'écart-type | -| | -| - ``threshold`` : valeur du seuil | -+---------------------------------------------------------------+ -| .. module:: GetUnRefThrType | -| | -| **GetUnRefThrType()** | -| Retourne le type de seuil de déraffinement | -+---------------------------------------------------------------+ - - -Les composantes du champ -^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddComp | -| | -| **AddComp(comp_name)** | -| Ajoute une composante du champ à considérer | -| | -| - ``comp_name`` : nom d'une composante à prendre en | -| compte | -+---------------------------------------------------------------+ -| .. module:: SetUseComp | -| | -| **SetUseComp(use_comp)** | -| Définit l'usage des composantes | -| | -| - ``use_comp`` : entier précisant l'usage des composantes | -| | -| * 0 : norme L2 (défaut) | -| * 1 : norme infinie | -| * 2 : valeur relative, si une seule composante | -+---------------------------------------------------------------+ -| .. module:: GetListComp | -| | -| **GetListComp()** | -| Retourne la liste des composantes utilisées | -+---------------------------------------------------------------+ - - -Les zones -^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddZone | -| | -| **AddZone(zone_name, type_use)** | -| | -| - ``zone_name`` : le nom de la zone à ajouter | -| - ``type_use`` : entier précisant l'usage de la zone | -| | -| * 1 : raffinement | -| * -1 : déraffinement | -+---------------------------------------------------------------+ - - -Le filtrage par les groupes -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddGroup | -| | -| **AddGroup(group_name)** | -| Ajoute un groupe au filtrage | -| | -| - ``group_name`` : nom du groupe à prendre en compte | -+---------------------------------------------------------------+ -| .. module:: GetGroups | -| | -| **GetGroups()** | -| Retourne la liste des groupes utilisés pour le filtrage | -+---------------------------------------------------------------+ - -Les options avancées -^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetNivMax | -| | -| **SetNivMax(nivmax)** | -| Définit le niveau maximal de raffinement | -| | -| - ``nivmax`` : niveau de raffinement à ne pas dépasser | -+---------------------------------------------------------------+ -| .. module:: GetNivMax | -| | -| **GetNivMax()** | -| Retourne le niveau maximal de raffinement | -+---------------------------------------------------------------+ -| .. module:: SetDiamMin | -| | -| **SetDiamMin(diammin)** | -| Définit le diamètre minimal des futures mailles | -| | -| - ``diammin`` : diamètre minimal voulu pour une maille | -+---------------------------------------------------------------+ -| .. module:: GetDiamMin | -| | -| **GetDiamMin()** | -| Retourne le diamètre minimal voulu | -+---------------------------------------------------------------+ -| .. module:: SetAdapInit | -| | -| **SetAdapInit(option)** | -| Définit le traitement à appliquer aux mailles où | -| le champ de pilotage de l'adaptation n'est pas défini | -| | -| - ``option`` : entier précisant le choix retenu | -| | -| * 0 : aucun effet (défaut) | -| * 1 : les mailles sans indicateurs sont raffinées | -| * -1 : les mailles sans indicateurs sont déraffinées | -+---------------------------------------------------------------+ -| .. module:: GetAdapInit | -| | -| **GetAdapInit()** | -| Retourne le type de traitement à appliquer aux mailles où | -| le champ de pilotage de l'adaptation n'est pas défini | -+---------------------------------------------------------------+ -| .. module:: SetLevelOutput | -| | -| **SetLevelOutput(option)** | -| Précise si on veut récupérer le niveau de raffinement des | -| mailles sous la forme d'un champ | -| | -| - ``option`` : entier précisant le choix retenu | -| | -| * 0 : aucun effet (défaut) | -| * 1 : le champ est produit | -+---------------------------------------------------------------+ -| .. module:: GetLevelOutput | -| | -| **GetLevelOutput()** | -| Retourne le choix retenu pour la récupération du niveau | -| de raffinement | -+---------------------------------------------------------------+ - - -Exemple -""""""" -La création de l'objet hypo_1 se fait ainsi : :: - - hypo_1 = homard.CreateHypothesis("HypoField") - hypo_1.SetAdapRefinUnRef(1, 1, 0) - hypo_1.SetField("INDICATEUR") - hypo_1.AddComp("INDX") - hypo_1.AddComp("INDZ") - hypo_1.SetRefinThr(1, 80.) - - -Saisie graphique correspondante -""""""""""""""""""""""""""""""" -Consulter :ref:`gui_create_hypothese` - -.. warning:: - En mode graphique, si on édite une hypothèse et que l'on modifie une de ses caractéristiques, par exemple le seuil de raffinement, toutes les itérations qui ont été calculées précédemment avec cette hypothèse sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. diff --git a/doc/tui_create_hypothese_en.rst b/doc/tui_create_hypothese_en.rst deleted file mode 100644 index 69a3d475..00000000 --- a/doc/tui_create_hypothese_en.rst +++ /dev/null @@ -1,326 +0,0 @@ -.. _tui_create_hypothese_en: - -The hypothesis -============== - -.. index:: single: iteration -.. index:: single: hypothesis -.. index:: single: zone - -The variables are described in :ref:`gui_create_hypothese_en`. - -Methods of the class homard -"""""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: CreateHypothesis | -| | -| **CreateHypothesis(hypo_name)** | -| Returns an instance of the class ``hypothese`` | -| | -| - ``hypo_name``: the name of the hypothesis | -+---------------------------------------------------------------+ -| .. module:: GetHypothesis | -| | -| **GetHypothesis(hypo_name)** | -| Returns an instance of the class ``hypothese`` | -| known by its name | -| | -| - ``hypo_name``: the name of the hypothesis | -+---------------------------------------------------------------+ -| .. module:: GetAllHypothesesName | -| | -| **GetAllHypothesesName()** | -| Returns the liste of the name of all the existing | -| hypotheses | -| | -+---------------------------------------------------------------+ - -Methods of the class hypothese -""""""""""""""""""""""""""""""" - -General methods -^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Returns the name of the hypothesis | -+---------------------------------------------------------------+ -| .. module:: SetAdapRefinUnRef | -| | -| **SetAdapRefinUnRef(Adap, Refin, UnRef)** | -| Gives the type of adaptation to the hypothesis | -| | -| - ``Adap``: integer that defines the type of adaptation | -| | -| * -1: uniform | -| * 0: by zones | -| * 1: by a field | -| | -| - ``Refin``: integer that informs if the refinement is | -| active or not | -| | -| * 0: unactive | -| * 1: active | -| | -| - ``UnRef``: integer that informs if the refinement is | -| active or not | -| | -| * 0: unactive | -| * 1: active | -| | -+---------------------------------------------------------------+ -| .. module:: GetAdapType | -| | -| **GetAdapType()** | -| Returns the type of the adaptation | -+---------------------------------------------------------------+ -| .. module:: GetRefinType | -| | -| **GetRefinType()** | -| Returns the type of the refinement | -+---------------------------------------------------------------+ -| .. module:: GetUnRefType | -| | -| **GetUnRefType()** | -| Returns the type of the unrefinement | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete()** | -| Deletes the hypothesis | -| | -| Returns an integer: | -| * 0: the destruction is done | -| * other value: problem | -+---------------------------------------------------------------+ - -The field and the thresholds -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetField | -| | -| **SetField(field_name)** | -| Gives the name of a field to the hypothesis | -| | -| - ``field_name``: the name of the field | -+---------------------------------------------------------------+ -| .. module:: GetFieldName | -| | -| **GetFieldName()** | -| Returns the name of the field | -+---------------------------------------------------------------+ -| .. module:: SetUseField | -| | -| **SetUseField(use_field)** | -| Gives the usage of the field for the hypothesis | -| | -| - ``use_field``: integer that defines how the field is | -| used | -| | -| * 0: value by element (default) | -| * 1: jump between an element and its neighbours | -+---------------------------------------------------------------+ -| .. module:: SetRefinThr | -| | -| **SetRefinThr(type_thres, threshold)** | -| Defines the thresholds for the refinement | -| | -| - ``type_thres``: integer that defines the type of the | -| threshold for the refinement | -| | -| * 1: absolute value | -| * 2: relative value in % | -| * 3: ratio of elements in % | -| * 4: mean + n times the standard deviation | -| | -| - ``threshold``: numerical value that defines the | -| threshold | -+---------------------------------------------------------------+ -| .. module:: GetRefinThrType | -| | -| **GetRefinThrType()** | -| Returns the type of the threshold for the refinement | -+---------------------------------------------------------------+ -| .. module:: SetUnRefThr | -| | -| **SetUnRefThr(type_thres, threshold)** | -| Defines the thresholds for the unrefinement | -| | -| - ``type_thres``: integer that defines the type of the | -| threshold for the unrefinement | -| | -| * 1: absolute value | -| * 2: relative value in % | -| * 3: ratio of elements in % | -| * 4: mean - n times the standard deviation | -| | -| - ``threshold``: numerical value that defines the | -| threshold | -+---------------------------------------------------------------+ -| .. module:: GetUnRefThrType | -| | -| **GetUnRefThrType()** | -| Returns the type of the threshold for the unrefinement | -+---------------------------------------------------------------+ - - -The components of the field -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddComp | -| | -| **AddComp(comp_name)** | -| Add a component of the field | -| | -| - ``comp_name``: name of a component to take into account | -+---------------------------------------------------------------+ -| .. module:: SetUseComp | -| | -| **SetUseComp(use_comp)** | -| Defines hom to use the components | -| | -| - ``use_comp``: integer that defines how to use the | -| components | -| | -| * 0: L2 norm (default) | -| * 1: infinite norm | -| * 2: relative value, if only one component | -+---------------------------------------------------------------+ -| .. module:: GetListComp | -| | -| **GetListComp()** | -| Returns the list of the used components | -+---------------------------------------------------------------+ - - -The zones -^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddZone | -| | -| **AddZone(zone_name, type_use)** | -| | -| - ``zone_name``: the name of the zone to add | -| - ``type_use``: integer that defines how to use the zone | -| | -| * 1: refinement | -| * -1: unrefinement | -+---------------------------------------------------------------+ - - -The filtering by the groups -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: AddGroup | -| | -| **AddGroup(group_name)** | -| Add a group to the filtering | -| | -| - ``group_name``: name of the group to take into account | -+---------------------------------------------------------------+ -| .. module:: GetGroups | -| | -| **GetGroups()** | -| Returns the mist of the groups that are used in the | -| filtering | -+---------------------------------------------------------------+ - -Advanced options -^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetNivMax | -| | -| **SetNivMax(nivmax)** | -| Defines the maximum level for the refinement | -| | -| - ``nivmax``: level of refinement that must not be | -| exceeded | -+---------------------------------------------------------------+ -| .. module:: GetNivMax | -| | -| **GetNivMax()** | -| Returns the maximum level for the refinement | -+---------------------------------------------------------------+ -| .. module:: SetDiamMin | -| | -| **SetDiamMin(diammin)** | -| Defines the minimum diameter of the future elements | -| | -| - ``diammin``: minimum diameter for an element | -+---------------------------------------------------------------+ -| .. module:: GetDiamMin | -| | -| **GetDiamMin()** | -| Returns the minimum diameter of the future elements | -+---------------------------------------------------------------+ -| .. module:: SetAdapInit | -| | -| **SetAdapInit(option)** | -| Defines the treatment of the elements where the field that| -| governs the adaptation is not defined | -| | -| - ``option``: integer as follows: | -| | -| * 0: no effect (default) | -| * 1: the elements without field are refined | -| * -1: the elements without field are unrefined | -+---------------------------------------------------------------+ -| .. module:: GetAdapInit | -| | -| **GetAdapInit()** | -| Returns the treatment of the elements where the field that| -| governs the adaptation is not defined | -+---------------------------------------------------------------+ -| .. module:: SetLevelOutput | -| | -| **SetLevelOutput(option)** | -| Acts if the level of refinement is returned as a field in | -| the output MED file | -| | -| - ``option``: integer as follows: | -| | -| * 0: no effect (default) | -| * 1: the field is produced | -+---------------------------------------------------------------+ -| .. module:: GetLevelOutput | -| | -| **GetLevelOutput()** | -| Returns the choice for the output of the level of | -| refinement | -+---------------------------------------------------------------+ - - -Example -""""""" -The creation of the object hypo_1 is done as follows: -:: - - hypo_1 = homard.CreateHypothesis("HypoField") - hypo_1.SetAdapRefinUnRef(1, 1, 0) - hypo_1.SetField("INDICATEUR") - hypo_1.AddComp("INDX") - hypo_1.AddComp("INDZ") - hypo_1.SetRefinThr(1, 80.) - - -Similar graphical input -""""""""""""""""""""""" -Look at :ref:`gui_create_hypothese_en` - -.. warning:: - With the graphical input mode, if an hypothesis is edited and if one of the characteristic is modified, the value of the threshold for the refinement for example, all the iterations that were computed with this hypothesis are unvalidated. In python mode, that is not true: the iterations stay as they are. diff --git a/doc/tui_create_iteration.rst b/doc/tui_create_iteration.rst deleted file mode 100644 index 33f89f62..00000000 --- a/doc/tui_create_iteration.rst +++ /dev/null @@ -1,311 +0,0 @@ -.. _tui_create_iteration: - -L'itération -=========== - -.. index:: single: itération -.. index:: single: hypothèse -.. index:: single: zone - -Les variables sont décrites dans :ref:`gui_create_iteration`. - -Méthodes de la classe homard -"""""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetIteration | -| | -| **GetIteration(iter_name)** | -| Retourne l'instance de la classe ``iteration`` connue par | -| son nom | -| | -| - ``iter_name`` : le nom de l'itération | -+---------------------------------------------------------------+ -| .. module:: GetAllIterationsName | -| | -| **GetAllIterationsName()** | -| Retourne la liste des noms de toutes les itérations créées| -| | -+---------------------------------------------------------------+ - -Méthodes de la classe cas -""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: NextIteration | -| | -| **NextIteration(iter_name)** | -| Retourne une instance de la classe ``iteration`` après | -| sa création : elle suit immédiatement l'itération | -| initiale, correspondant au maillage définissant le cas | -| | -| - ``iter_name`` : le nom à donner à la nouvelle itération | -| | -| Par défaut : | -| | -| * le maillage produit a le même nom que l'itération | -+---------------------------------------------------------------+ -| .. module:: LastIteration | -| | -| **LastIteration()** | -| Retourne une instance de la classe ``iteration`` : la | -| dernière créée dans la descendance de l'itération initiale| -| du cas. C'est celle qui est sans fille. Il y a erreur s'il| -| existe plus d'une branche dans la descendance. | -| | -+---------------------------------------------------------------+ - -Méthodes de la classe iteration -""""""""""""""""""""""""""""""" - -Généralités -^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: NextIteration | -| | -| **NextIteration(iter_name)** | -| Retourne une instance de la classe ``iteration`` qui suit | -| l'itération courante | -| | -| - ``iter_name`` : le nom à donner à la nouvelle itération | -| | -| Par défaut : | -| | -| * le maillage produit a le même nom que l'itération | -+---------------------------------------------------------------+ -| .. module:: Compute | -| | -| **Compute(option1, option2)** | -| Calcule le maillage correspondant à l'itération | -| | -| - ``option1`` : un entier précisant ce qui se passe quand | -| des fichiers de résultats existent déjà | -| | -| * 0 : arrêt en erreur | -| * 1 : écrasement des anciens fichiers | -| | -| - ``option2`` : un entier précisant ce qui est fait des | -| résultats | -| | -| * 1 : aucune action particulière | -| * 2 : publication dans le module SMESH | -| | -| Retourne un entier : | -| * 0 : adaptation réussie | -| * autre valeur : problème | -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Retourne le nom de l'itération | -+---------------------------------------------------------------+ -| .. module:: GetNumber | -| | -| **GetNumber()** | -| Retourne le numéro de l'itération. | -| | -| L'itération 0 est celle associée au maillage initial. | -| Ensuite, une itération de numéro N est issue de | -| l'adaptation d'une itération de numéro N-1. | -+---------------------------------------------------------------+ -| .. module:: GetIterParent | -| | -| **GetIterParent()** | -| Retourne l'itération mère | -+---------------------------------------------------------------+ -| .. module:: LastIteration | -| | -| **LastIteration()** | -| Retourne une instance de la classe ``iteration`` : la | -| dernière créée dans la descendance de l'itération. C'est | -| celle qui est sans fille. Il y a erreur s'il existe plus | -| d'une branche dans la descendance. | -+---------------------------------------------------------------+ -| .. module:: AssociateHypo | -| | -| **AssociateHypo(hypo_name)** | -| Associe une hypothèse à l'itération | -| | -| - ``hypo_name`` : le nom de l'hypothèse à associer | -+---------------------------------------------------------------+ -| .. module:: GetHypoName | -| | -| **GetHypoName()** | -| Retourne le nom de l'hypothèse associée | -+---------------------------------------------------------------+ -| .. module:: GetCaseName | -| | -| **GetCaseName()** | -| Retourne le nom du cas associé | -+---------------------------------------------------------------+ -| .. module:: GetState | -| | -| **GetState()** | -| Retourne l'état de l'itération | -| | -| - ``2`` : itération calculée correctement | -| - ``1`` : itération non calculée | -| - ``<=0`` : itération initiale à ne pas calculer, de | -| numéro valant la valeur absolue de l'état | -+---------------------------------------------------------------+ -| .. module:: GetLogFile | -| | -| **GetLogFile()** | -| Retourne le nom du fichier retraçant le déroulement de | -| l'exécution de HOMARD | -+---------------------------------------------------------------+ -| .. module:: GetFileInfo | -| | -| **GetFileInfo()** | -| Retourne le nom du fichier contenant l'analyse du maillage| -+---------------------------------------------------------------+ -| .. module:: GetDirName | -| | -| **GetDirName()** | -| Retourne le nom du répertoire des résutats associé à | -| l'itération | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete(option)** | -| Detruit l'itération et toutes ses filles éventuelles. | -| | -| - ``option`` : un entier précisant ce qui est fait des | -| fichiers de maillage associés | -| | -| * 0 : les fichiers sont conservés | -| * 1 : les fichiers sont détruits | -| | -| Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | -+---------------------------------------------------------------+ - -Informations sur les maillages -^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetMeshName | -| | -| **SetMeshName(mesh_name)** | -| Définit le nom du maillage produit | -| | -| - ``mesh_name`` : le nom du maillage produit | -+---------------------------------------------------------------+ -| .. module:: GetMeshName | -| | -| **GetMeshName()** | -| Retourne le nom du maillage produit | -+---------------------------------------------------------------+ -| .. module:: SetMeshFile | -| | -| **SetMeshFile(mesh_file)** | -| Définit le fichier MED du maillage produit | -| | -| - ``mesh_file`` : le nom du fichier MED qui contiendra | -| le maillage produit | -+---------------------------------------------------------------+ -| .. module:: GetMeshFile | -| | -| **GetMeshFile()** | -| Retourne le nom du fichier MED du maillage produit | -+---------------------------------------------------------------+ -| .. module:: MeshInfo | -| | -| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | -| Donne des informations sur le maillage. Pour chaque | -| option, le choix 0 correspond à ne rien faire, alors que | -| le choix 1 active l'option. | -| | -| - ``Qual`` : qualité des mailles | -| - ``Diam`` : diamètre des mailles | -| - ``Conn`` : connexité du domaine ; en un seul morceau, | -| combien de trous, etc. | -| - ``Tail`` : tailles des constituants du domaine, groupe | -| par groupe | -| - ``Inte`` : interpénétration des mailles, par dimension | -+---------------------------------------------------------------+ - -Informations sur le champ -^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetFieldFile | -| | -| **SetFieldFile(field_file)** | -| Définit le fichier MED des champs utiles | -| | -| - ``field_file`` : le nom du fichier MED contenant le | -| champ | -+---------------------------------------------------------------+ -| .. module:: SetTimeStepRank | -| | -| **SetTimeStepRank(TimeStep, Rank)** | -| Définit les instants pour le champ | -| | -| Inutile si aucun instant n'est défini pour le champ | -| | -| Si un seul instant est défini pour le champ, il est pris | -| par défaut. | -| | -| - ``TimeStep`` : l'instant où est pris le champ | -| - ``Rank`` : le numéro d'ordre où est pris le champ | -+---------------------------------------------------------------+ -| .. module:: SetTimeStepRankLast | -| | -| **SetTimeStepRankLast()** | -| Précise que le dernier instant enregistré pour le champ | -| est utilisé | -+---------------------------------------------------------------+ -| .. module:: GetFieldFileName | -| | -| **GetFieldFileName()** | -| Retourne le nom du fichier MED du champ | -+---------------------------------------------------------------+ -| .. module:: GetTimeStep | -| | -| **GetTimeStep()** | -| Retourne l'instant où est pris le champ | -+---------------------------------------------------------------+ -| .. module:: GetRank | -| | -| **GetRank()** | -| Retourne le numéro d'ordre où est pris le champ | -+---------------------------------------------------------------+ - -Exemple -""""""" -.. index:: single: maillage;initial - -Pour la création de la première itération, on part de celle qui correspond au maillage initial. C'est celle contenue dans le cas. :: - - iter_name = "Iteration_1" - iter_1 = case_1.NextIteration(iter_name) - iter_1.SetField(field_file) - iter_1.SetTimeStepRank( 0, 0) - iter_1.SetMeshName("maill_01") - iter_1.SetMeshFile("/local00/M.01.med") - iter_1.AssociateHypo("HypoField") - codret = iter_1.Compute(1, 2) - -Ensuite, on crée une itération suivante à l'itération parent de laquelle on part. :: - - iter_name = "Iteration_2" - iter_2 = iter_1.NextIteration(iter_name) - iter_2.SetField(field_file) - iter_2.SetTimeStepRank( 1, 1) - iter_2.SetMeshName("maill_02") - iter_2.SetMeshFile("/local00/M.02.med") - iter_2.AssociateHypo("HypoField") - codret = iter_2.Compute(1, 2) - - -Saisie graphique correspondante -""""""""""""""""""""""""""""""" -Consulter :ref:`gui_create_iteration` diff --git a/doc/tui_create_iteration_en.rst b/doc/tui_create_iteration_en.rst deleted file mode 100644 index 39d2761c..00000000 --- a/doc/tui_create_iteration_en.rst +++ /dev/null @@ -1,315 +0,0 @@ -.. _tui_create_iteration_en: - -The iteration -============= - -.. index:: single: iteration -.. index:: single: hypothesis -.. index:: single: zone - -The variables are described in :ref:`gui_create_iteration_en`. - -Methods of the class homard -"""""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetIteration | -| | -| **GetIteration(iter_name)** | -| Returns an instance of the class ``iteration`` | -| known by its name | -| | -| - ``iter_name``: the name of the iteration | -+---------------------------------------------------------------+ -| .. module:: GetAllIterationsName | -| | -| **GetAllIterationsName()** | -| Returns the liste of the name of all the existing | -| iterations | -| | -+---------------------------------------------------------------+ - -Methods of the class cas -""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: NextIteration | -| | -| **NextIteration(iter_name)** | -| Returns an instance of the class ``iteration`` after | -| its creation: it is the next iteration after the very | -| first one that corresponds to the first mesh of the case | -| | -| - ``iter_name``: the name of this next iteration | -| | -| Default: | -| | -| * the produced mesh has got the same name as the iteration | -+---------------------------------------------------------------+ -| .. module:: LastIteration | -| | -| **LastIteration()** | -| Returns an instance of the class ``iteration``: the last | -| iteration into the descendants of the initial iteration | -| of the case. It is the one that has got no child. There is| -| an error if more than one branch exists into the | -| descendants. | -| | -+---------------------------------------------------------------+ - -Methods of the class iteration -"""""""""""""""""""""""""""""" - -General methods -^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: NextIteration | -| | -| **NextIteration(iter_name)** | -| Returns an instance of the class ``iteration`` after | -| its creation: it is the next iteration after the current | -| one | -| | -| - ``iter_name``: the name of this next iteration | -| | -| Default: | -| | -| * the produced mesh has got the same name as the iteration | -+---------------------------------------------------------------+ -| .. module:: Compute | -| | -| **Compute(option1, option2)** | -| Computes the mesh produced by the iteration | -| | -| - ``option1``: an integer to decide what to do with | -| existing files, if any | -| | -| * 0: stop with error | -| * 1: the old files are removed | -| | -| - ``option2``: an integer to decide what to do with | -| the results | -| | -| * 1: no specific action | -| * 2: publication into the module SMESH | -| | -| Returns an integer: | -| * 0: successful adaptation | -| * other value: problem | -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Returns the name of the iteration | -+---------------------------------------------------------------+ -| .. module:: GetNumber | -| | -| **GetNumber()** | -| Returns the number of the iteration. | -| | -| The iteration #0 is the one associated to the initial | -| mesh. Then, an iteration with number #N comes from the | -| adaptation of an iteration with number #(N-1). | -+---------------------------------------------------------------+ -| .. module:: GetIterParent | -| | -| **GetIterParent()** | -| Returns the iteration parent | -+---------------------------------------------------------------+ -| .. module:: LastIteration | -| | -| **LastIteration()** | -| Returns an instance of the class ``iteration``: the last | -| iteration into the descendants of the current iteration. | -| It is the one that has got no child. There is | -| an error if more than one branch exists into the | -| descendants. | -+---------------------------------------------------------------+ -| .. module:: AssociateHypo | -| | -| **AssociateHypo(hypo_name)** | -| Associate an hypothesis with the iteration | -| | -| - ``hypo_name``: the name of the hypothesis | -+---------------------------------------------------------------+ -| .. module:: GetHypoName | -| | -| **GetHypoName()** | -| Returns the name of the associated hypothesis | -+---------------------------------------------------------------+ -| .. module:: GetCaseName | -| | -| **GetCaseName()** | -| Returns the name of the associated case | -+---------------------------------------------------------------+ -| .. module:: GetState | -| | -| **GetState()** | -| Returns the state of the iteration | -| | -| - ``2``: computed iteration | -| - ``1``: non computed iteration | -| - ``<=0``: initial iteration not to be computed, with a | -| number equal to the absolute valure of the state | -+---------------------------------------------------------------+ -| .. module:: GetLogFile | -| | -| **GetLogFile()** | -| Returns the name of the file with the messages all along | -| the running of HOMARD | -+---------------------------------------------------------------+ -| .. module:: GetFileInfo | -| | -| **GetFileInfo()** | -| Returns the name of the file with the analysis of the mesh| -+---------------------------------------------------------------+ -| .. module:: GetDirName | -| | -| **GetDirName()** | -| Returns the name of the directory that contains the | -| results of the iteration | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete(option)** | -| Deletes the iteration and all its children | -| | -| - ``option``: an integer to define what to do with the | -| MED file of the associated meshes | -| | -| * 0: the files are kept | -| * 1: the files are removed | -| | -| Returns an integer: | -| * 0: the destruction is done | -| * other value: problem | -+---------------------------------------------------------------+ - -Information about the meshes -^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetMeshName | -| | -| **SetMeshName(mesh_name)** | -| Defines the name of the produced mesh | -| | -| - ``mesh_name``: the name of the produced mesh | -+---------------------------------------------------------------+ -| .. module:: GetMeshName | -| | -| **GetMeshName()** | -| Returns the name of the produced mesh | -+---------------------------------------------------------------+ -| .. module:: SetMeshFile | -| | -| **SetMeshFile(mesh_file)** | -| Defines the name of the MED file of the produced mesh | -| | -| - ``mesh_file``: the name of the MED file of the | -| produced mesh | -+---------------------------------------------------------------+ -| .. module:: GetMeshFile | -| | -| **GetMeshFile()** | -| Returns the name of the MED file of the produced mesh | -+---------------------------------------------------------------+ -| .. module:: MeshInfo | -| | -| **MeshInfo(Qual, Diam, Conn, Tail, Inte)** | -| Gives information about the current mesh. For every | -| option, the choice #0 corresponds to 'no action', while | -| the choice #1 launches the option. | -| | -| - ``Qual``: quality of the elements | -| - ``Diam``: diametre of the elements | -| - ``Conn``: connexity of the domain; a single block, how | -| many holes, etc. | -| - ``Tail``: size of the parts of the domain, group by | -| group | -| - ``Inte``: staggered elements, by dimension | -+---------------------------------------------------------------+ - -Information about the field -^^^^^^^^^^^^^^^^^^^^^^^^^^^ - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: SetFieldFile | -| | -| **SetFieldFile(field_file)** | -| Defines the MED file of the field | -| | -| - ``field_file``: the name of the MED file of the field | -+---------------------------------------------------------------+ -| .. module:: SetTimeStepRank | -| | -| **SetTimeStepRank(TimeStep, Rank)** | -| Defines the time steps for the fields | -| | -| Useless if no time step is defined for the field. | -| | -| If a single time step is defined for the filed, it is the | -| default choice. | -| | -| - ``TimeStep``: the selected time step | -| - ``Rank``: the selected rank | -+---------------------------------------------------------------+ -| .. module:: SetTimeStepRankLast | -| | -| **SetTimeStepRankLast()** | -| The last time step will be used, whatever its value | -+---------------------------------------------------------------+ -| .. module:: GetFieldFileName | -| | -| **GetFieldFileName()** | -| Returns the name of the MED file of the field | -+---------------------------------------------------------------+ -| .. module:: GetTimeStep | -| | -| **GetTimeStep()** | -| Returns the selected time step for the field | -+---------------------------------------------------------------+ -| .. module:: GetRank | -| | -| **GetRank()** | -| Returns the selected rank for the field | -+---------------------------------------------------------------+ - -Example -""""""" -.. index:: single: mesh;initial - -To create the first iteration, the starting point is the iteration associated to the initial mesh. It is the one that defines the case. -:: - - iter_name = "Iteration_1" - iter_1 = case_1.NextIteration(iter_name) - iter_1.SetField(field_file) - iter_1.SetTimeStepRank( 0, 0) - iter_1.SetMeshName("maill_01") - iter_1.SetMeshFile("/local00/M.01.med") - iter_1.AssociateHypo("HypoField") - codret = iter_1.Compute(1, 2) - -Then, the next iteration is created from the current iteration. -:: - - iter_name = "Iteration_2" - iter_2 = iter_1.NextIteration(iter_name) - iter_2.SetField(field_file) - iter_2.SetTimeStepRank( 1, 1) - iter_2.SetMeshName("maill_02") - iter_2.SetMeshFile("/local00/M.02.med") - iter_2.AssociateHypo("HypoField") - codret = iter_2.Compute(1, 2) - - -Similar graphical input -""""""""""""""""""""""" -Look at :ref:`gui_create_iteration_en` diff --git a/doc/tui_create_zone.rst b/doc/tui_create_zone.rst deleted file mode 100644 index ecad60c5..00000000 --- a/doc/tui_create_zone.rst +++ /dev/null @@ -1,208 +0,0 @@ -.. _tui_create_zone: - -La zone -======= - -.. index:: single: zone -.. index:: single: boite -.. index:: single: sphere -.. index:: single: cylindre -.. index:: single: tuyau -.. index:: single: disque -.. index:: single: disque avec trou -.. index:: single: 2D - -Les variables sont décrites dans :ref:`gui_create_zone`. - -Méthodes de la classe homard -"""""""""""""""""""""""""""" - -Ces méthodes retournent une instance de la classe zone. - -+----------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneBox | -| | -| **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)** | -| Retourne une instance de la classe ``zone`` de type parallélépipèdique | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur un parallélépipède | -| - ``Xmin``, ``Xmax`` : coordonnées extrêmes selon X | -| - ``Ymin``, ``Ymax`` : coordonnées extrêmes selon Y | -| - ``Zmin``, ``Zmax`` : coordonnées extrêmes selon Z | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneCylinder | -| | -| **CreateZoneCylinder(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H)** | -| Retourne une instance de la classe ``zone`` de type cylindrique | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur un cylindre | -| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | -| positionné sur l'axe | -| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | -| - ``R`` : rayon du cylindre | -| - ``H`` : hauteur du cylindre | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZonePipe | -| | -| **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** | -| Retourne une instance de la classe ``zone`` de type tuyau | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur un tuyau | -| - ``Xbase``, ``Ybase``, ``Zbase`` : coordonnées d'un point de base | -| positionné sur l'axe | -| - ``Xaxe``, ``Yaxe``, ``Zaxe`` : vecteur de l'axe | -| - ``R`` : rayon externe du tuyau | -| - ``H`` : hauteur du tuyau | -| - ``R`` : rayon interne du tuyau | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneSphere | -| | -| **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)** | -| Retourne une instance de la classe ``zone`` de type sphérique | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur une sphère | -| - ``Xcen``, ``Ycen``, ``Zcen`` : coordonnées du centre de la sphère | -| - ``R`` : rayon de la sphère | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneBox2D | -| | -| **CreateZoneBox2D(zone_name, Umin, Umax, Vmin, Vmax, Orient)** | -| Retourne une instance de la classe ``zone`` de type rectangulaire | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur un rectangle | -| - ``Umin``, ``Umax`` : coordonnées extrêmes pour la 1ère dimension | -| - ``Vmin``, ``Vmax`` : coordonnées extrêmes pour la 2nde dimension | -| - ``Orient`` : entier précisant la convention d'orientation du plan | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneDisk | -| | -| **CreateZoneDisk(zone_name, Ucen, Vcen, R, Orient)** | -| Retourne une instance de la classe ``zone`` de type disque | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur un disque plein | -| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | -| - ``R`` : rayon du disque | -| - ``Orient`` : entier précisant la convention d'orientation du plan | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneDiskWithHole | -| | -| **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)** | -| Retourne une instance de la classe ``zone`` de type disque troué | -| après sa création | -| | -| - ``zone_name`` : le nom de la zone basée sur un disque troué | -| - ``Ucen``, ``Vcen`` : coordonnées du centre du disque | -| - ``R`` : rayon externe du disque | -| - ``Rint`` : rayon interne du disque | -| - ``Orient`` : entier précisant la convention d'orientation du plan | -+----------------------------------------------------------------------------------+ - - - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| La convention d'orientation du plan est la même que celle | -| appliquée dans les autres modules de SALOME, en particulier | -| GEOM : | -| | -| 1. plan XY ; U <==> X et V <==> Y | -| 2. plan YZ ; U <==> Y et V <==> Z | -| 3. plan ZX ; U <==> Z et V <==> X | -+---------------------------------------------------------------+ - - -.. note:: - Les fonctions définissant des zones 2D ne doivent être utilisées que si l'intégralité du - maillage est 2D, dans un des plans de coordonnées. - - - - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetZone | -| | -| **GetZone(zone_name)** | -| Retourne l'instance de la classe ``zone`` connue par | -| son nom | -| | -| - ``zone_name`` : le nom de la zone | -+---------------------------------------------------------------+ -| .. module:: GetAllZonesName | -| | -| **GetAllZonesName()** | -| Retourne la liste des noms de toutes les zones créées | -| | -+---------------------------------------------------------------+ - - -Méthodes de la classe zone -"""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Retourne le nom de la zone | -+---------------------------------------------------------------+ -| .. module:: GetType | -| | -| **GetType()** | -| Retourne le type de la zone | -| | -| * 2 : parallélépipède | -| * 3 : sphère | -| * 5 : cylindre | -| * 7 : tuyau | -| * 11, 12, 13 : rectangle et orientation 1, 2 ou 3 | -| * 31, 32, 33 : disque et orientation 1, 2 ou 3 | -| * 61, 62, 63 : disque percé et orientation 1, 2 ou 3 | -+---------------------------------------------------------------+ -| .. module:: GetCoords | -| | -| **GetCoords()** | -| Retourne un tableau contenant les coordonnées de la zone | -| dans l'ordre d'entrée dans le CreateZoneXXXX associé | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete()** | -| Detruit la zone | -| | -| Retourne un entier : | -| * 0 : destruction réussie | -| * autre valeur : problème | -+---------------------------------------------------------------+ - - -Exemple -""""""" -La création d'une boîte 3D se fait ainsi : -:: - - zone_1 = homard.CreateZoneBox ("BLOC", -1., 1., -30., 40., 10.5, 20.8) - - -La création d'un disque dans le plan XY se fait ainsi : -:: - - zone_2 = homard.CreateZoneDisk ("disque", 1., 3., 43.25, 1) - - -Saisie graphique correspondante -""""""""""""""""""""""""""""""" -Consulter :ref:`gui_create_zone` - -.. warning:: - En mode graphique, si on édite une zone et que l'on modifie une des dimensions, toutes les itérations qui ont été calculées précédemment avec cette zone sont invalidées. En mode python, cela n'est plus vrai : les itérations restent telles quelles. - - - diff --git a/doc/tui_create_zone_en.rst b/doc/tui_create_zone_en.rst deleted file mode 100644 index abe6b4a9..00000000 --- a/doc/tui_create_zone_en.rst +++ /dev/null @@ -1,204 +0,0 @@ -.. _tui_create_zone_en: - -The zone -======== - -.. index:: single: zone -.. index:: single: box -.. index:: single: sphere -.. index:: single: cylinder -.. index:: single: pipe -.. index:: single: disk -.. index:: single: disk with a hole -.. index:: single: 2D - -The variables are described in :ref:`gui_create_zone_en`. - -Methods of the class homard -"""""""""""""""""""""""""""" - -These methods returns an instance of the class zone. - -+----------------------------------------------------------------------------------+ -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneBox | -| | -| **CreateZoneBox(zone_name, Xmin, Xmax, Ymin, Ymax, Zmin, Zmax)** | -| Returns an instance of the class ``zone`` of type box | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a box | -| - ``Xmin``, ``Xmax``: min/max coordinates extrêmes along X | -| - ``Ymin``, ``Ymax``: min/max coordinates extrêmes along Y | -| - ``Zmin``, ``Zmax``: min/max coordinates extrêmes along Z | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneCylinder | -| | -| **CreateZoneCylinder(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H)** | -| Returns an instance of the class ``zone`` of type cylinder | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a cylinder | -| - ``Xbase``, ``Ybase``, ``Zbase``: coordinates of a point on the axis | -| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | -| - ``R``: radius of the cylinder | -| - ``H``: height of the cylinder | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZonePipe | -| | -| **CreateZonePipe(zone_name, Xbase, Ybase, Zbase, Xaxe, Yaxe, Zaxe, R, H, Rint)** | -| Returns an instance of the class ``zone`` of type pipe | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a pipe | -| - ``Xbase``, ``Ybase``, ``Zbase``: coordinates of a point on the axis | -| - ``Xaxe``, ``Yaxe``, ``Zaxe``: vector of the axis | -| - ``R``: external radius of the pipe | -| - ``H``: height of the pipe | -| - ``R``: internal radius of the pipe | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneSphere | -| | -| **CreateZoneSphere(zone_name, Xcen, Ycen, Zcen, R)** | -| Returns an instance of the class ``zone`` of type sphere | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a sphere | -| - ``Xcen``, ``Ycen``, ``Zcen``: coordinates of the center of the sphere | -| - ``R``: radius of the sphere | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneBox2D | -| | -| **CreateZoneBox2D(zone_name, Umin, Umax, Vmin, Vmax, Orient)** | -| Returns an instance of the class ``zone`` of type rectangle | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a rectangle | -| - ``Umin``, ``Umax``: min/max coordinates for the 1st dimension | -| - ``Vmin``, ``Vmax``: min/max coordinates for the 2nd dimension | -| - ``Orient``: integer that defines the convention for the plane | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneDisk | -| | -| **CreateZoneDisk(zone_name, Ucen, Vcen, R, Orient)** | -| Returns an instance of the class ``zone`` of type disk | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a full disk | -| - ``Ucen``, ``Vcen``: coordinates of the center of the disk | -| - ``R``: radius of the disk | -| - ``Orient``: integer that defines the convention for the plane | -+----------------------------------------------------------------------------------+ -| .. module:: CreateZoneDiskWithHole | -| | -| **CreateZoneDiskWithHole(zone_name, Ucen, Vcen, R, Rint, Orient)** | -| Returns an instance of the class ``zone`` of type disk with a hole | -| after its creation | -| | -| - ``zone_name``: the name of the zone based on a disk with a hole | -| - ``Ucen``, ``Vcen``: coordinates of the center of the disk | -| - ``R``: external radius of the disk | -| - ``Rint``: internal radius of the disk | -| - ``Orient``: integer that defines the convention for the plane | -+----------------------------------------------------------------------------------+ - - - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| The convention of the orientation of the plane is the same | -| as the one that is applied in the other modules of SALOME, | -| in particular GEOM: | -| | -| 1. plane XY ; U <==> X and V <==> Y | -| 2. plane YZ ; U <==> Y and V <==> Z | -| 3. plane ZX ; U <==> Z and V <==> X | -+---------------------------------------------------------------+ - - -.. note:: - The functions that define 2D zones should be used only of the whole mesh is 2D into a plane of coordinates. - - - - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetZone | -| | -| **GetZone(zone_name)** | -| Returns an instance of the class ``zone`` | -| known by its name | -| | -| - ``zone_name``: the name of the zone | -+---------------------------------------------------------------+ -| .. module:: GetAllZonesName | -| | -| **GetAllZonesName()** | -| Returns the liste of the name of all the existing zones | -| | -+---------------------------------------------------------------+ - - -Methods of the class zone -""""""""""""""""""""""""" - -+---------------------------------------------------------------+ -+---------------------------------------------------------------+ -| .. module:: GetName | -| | -| **GetName()** | -| Returns the name of the zone | -+---------------------------------------------------------------+ -| .. module:: GetType | -| | -| **GetType()** | -| Returns the type of the zone | -| | -| * 2: box | -| * 3: sphere | -| * 5: cylinder | -| * 7: pipe | -| * 11, 12, 13: rectangle and orientation 1, 2 ou 3 | -| * 31, 32, 33: disk and orientation 1, 2 ou 3 | -| * 61, 62, 63: disk with a hole and orientation 1, 2 | -| ou 3 | -+---------------------------------------------------------------+ -| .. module:: GetCoords | -| | -| **GetCoords()** | -| Returns the array of the coordinates of the zone | -| with the same order as in its definition with | -| CreateZoneXXXX | -+---------------------------------------------------------------+ -| .. module:: Delete | -| | -| **Delete()** | -| Deletes the zone | -| | -| Returns an integer: | -| * 0: the destruction is done | -| * other value: problem | -+---------------------------------------------------------------+ - - -Example -""""""" -The creation of a 3D box is done as follows: -:: - - zone_1 = homard.CreateZoneBox ("BLOC", -1., 1., -30., 40., 10.5, 20.8) - - -The creation of a disk in the plane XY is done as follows: -:: - - zone_2 = homard.CreateZoneDisk ("disk", 1., 3., 43.25, 1) - - -Similar graphical input -""""""""""""""""""""""" -Look at :ref:`gui_create_zone_en` - -.. warning:: - With the graphical input mode, if a zone is edited and if one of the dimensions is modified, all the iterations that were computed with this zone are unvalidated. In python mode, that is not true: the iterations stay as they are. diff --git a/doc/tui_homard.rst b/doc/tui_homard.rst deleted file mode 100644 index 5727d981..00000000 --- a/doc/tui_homard.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _tui_homard: - -Le calcul -========= - -Méthodes de la classe homard -"""""""""""""""""""""""""""" - - -Exemple -""""""" - - -Saisie graphique correspondante -""""""""""""""""""""""""""""""" -Consulter :ref:`gui_homard` diff --git a/doc/tui_homard_en.rst b/doc/tui_homard_en.rst deleted file mode 100644 index 8320bed2..00000000 --- a/doc/tui_homard_en.rst +++ /dev/null @@ -1,16 +0,0 @@ -.. _tui_homard_en: - -The computation -=============== - -Methods of the class homard -""""""""""""""""""""""""""" - - -Example -""""""" - - -Corresponding graphical interface -""""""""""""""""""""""""""""""""" -Look at :ref:`gui_homard_en` diff --git a/doc/tui_usage.rst b/doc/tui_usage.rst deleted file mode 100644 index fec8871e..00000000 --- a/doc/tui_usage.rst +++ /dev/null @@ -1,13 +0,0 @@ -Mode d'emploi pour TUI -====================== -Le module HOMARD peut se lancer à partir d'instructions python. On trouvera ici la description de chacune des fonctions accessibles par l'utilisateur. - -.. toctree:: - :maxdepth: 2 - - tui_create_case - tui_create_iteration - tui_create_hypothese - tui_create_zone - tui_create_boundary - tui_homard diff --git a/doc/tui_usage_en.rst b/doc/tui_usage_en.rst deleted file mode 100644 index 0eb45a26..00000000 --- a/doc/tui_usage_en.rst +++ /dev/null @@ -1,13 +0,0 @@ -User's guide of the TUI -======================= -The functionnalities of the module HOMARD are available by python instructions. We shall find here the description of each of the functions. - -.. toctree:: - :maxdepth: 2 - - tui_create_case_en - tui_create_iteration_en - tui_create_hypothese_en - tui_create_zone_en - tui_create_boundary_en - tui_homard_en diff --git a/doc/tutorials.rst b/doc/tutorials.rst deleted file mode 100644 index a02079ce..00000000 --- a/doc/tutorials.rst +++ /dev/null @@ -1,121 +0,0 @@ -Exemples -======== -.. index:: single: exemple -.. index:: single: python - -On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables. Il faut penser à adapter la valeur de la variable ``data_dir`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. -C'est dans le répertoire ``dircase`` que seront écrits les fichiers résultant des adaptations successives. Ce répertoire est créé par défaut dans ``/tmp``. - -Chargement du module HOMARD -""""""""""""""""""""""""""" -.. index:: single: yacs - -Le chargement du module HOMARD se fait de manière analogue aux autres modules. - - :: - - import HOMARD - homard = salome.lcc.FindOrLoadComponent('FactoryServer','HOMARD') - homard.SetCurrentStudy(salome.myStudy) - -Pour utiliser le module HOMARD au sein d'un schéma YACS distribué, le chargement se fait ainsi : - - :: - - import HOMARD - my_container.load_component_Library('HOMARD') - homard = my_container.create_component_instance('HOMARD',0) - homard.SetCurrentStudy(salome.myStudy) - -Raffinement uniforme -"""""""""""""""""""" -.. index:: single: raffinement;uniforme - -On fera ici trois raffinements uniformes successifs du maillage contenu dans le fichier ``tutorial_1.00.med``. Quelques remarques : - * la même hypothèse est utilisée à chaque itération - * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents. - -.. literalinclude:: files/tutorial_1.py - :lines: 53-86 - -.. note:: - Téléchargement des fichiers - - * :download:`maillage initial` - * :download:`commandes python` - - -Raffinement par des zones -""""""""""""""""""""""""" -.. index:: single: zone - -On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine. On notera que le type de raffinement n'a pas été précisé ; par défaut, il sera donc conforme. - -.. literalinclude:: files/tutorial_2.py - :lines: 53-98 - -.. note:: - Téléchargement des fichiers - - * :download:`maillage initial` - * :download:`commandes python` - - -Raffinement selon un champ -"""""""""""""""""""""""""" -.. index:: single: champ - -On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés. -Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. - -.. literalinclude:: files/tutorial_3.py - :lines: 53-128 - -.. note:: - Téléchargement des fichiers - - * :download:`maillage et champ étape 0` - * :download:`maillage et champ étape 1` - * :download:`commandes python` - - -Suivi de frontières courbes -""""""""""""""""""""""""""" -.. index:: single: champ -.. index:: single: yacs - -On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés. On commence par raffiner les faces internes aux tuyaux ; ensuite, on raffine deux fois de suite les faces externes aux tuyaux. -Le schéma YACS réalisant cette adaptation est téléchargeable. - -.. literalinclude:: files/tutorial_4.py - :lines: 53-112 - -.. note:: - Téléchargement des fichiers - - * :download:`maillage initial` - * :download:`maillage de la frontière discrète` - * :download:`commandes python` - * :download:`schéma YACS` - - -Instructions spécifiques au 2D -"""""""""""""""""""""""""""""" -.. index:: single: 2D - -Les instructions pour adapter un maillage 2D sont exactement identiques à celles nécessaires à l'adaptation d'un maillage 3D. La seule exception concerne le raffinement selon des zones géométriques : des fonctions différentes sont utilisées pour pouvoir définir des zones 2D. On donne alors les coordonnées 2D des zones, en précisant l'orientation du plan du maillage. -Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. - -.. literalinclude:: files/tutorial_5.py - :lines: 53-98 - -.. note:: - Téléchargement des fichiers - - * :download:`maillage initial` - * :download:`maillage de la frontière discrète` - * :download:`commandes python` - - -.. toctree:: - :maxdepth: 2 diff --git a/doc/tutorials_en.rst b/doc/tutorials_en.rst deleted file mode 100644 index 8ad5a125..00000000 --- a/doc/tutorials_en.rst +++ /dev/null @@ -1,121 +0,0 @@ -Examples -======== -.. index:: single: example -.. index:: single: python - -On trouvera ici les instructions python pour quelques configurations caractéristiques. Les fichiers de données associés sont téléchargeables. Il faut penser à adapter la valeur de la variable ``data_dir`` : c'est le répertoire dans lequel les fichiers med auront été enregistrés. -C'est dans le répertoire ``dircase`` que seront écrits les fichiers résultant des adaptations successives. Ce répertoire est créé par défaut dans ``/tmp``. - -Loading of the module HOMARD -"""""""""""""""""""""""""""" -.. index:: single: yacs - -Le chargement du module HOMARD se fait de manière analogue aux autres modules. - - :: - - import HOMARD - homard = salome.lcc.FindOrLoadComponent('FactoryServer','HOMARD') - homard.SetCurrentStudy(salome.myStudy) - -Pour utiliser le module HOMARD au sein d'un schéma YACS distribué, le chargement se fait ainsi : - - :: - - import HOMARD - my_container.load_component_Library('HOMARD') - homard = my_container.create_component_instance('HOMARD',0) - homard.SetCurrentStudy(salome.myStudy) - -Uniform refinement -"""""""""""""""""" -.. index:: single: refinement;uniform - -On fera ici trois raffinements uniformes successifs du maillage contenu dans le fichier ``tutorial_1.00.med``. Quelques remarques : - * la même hypothèse est utilisée à chaque itération - * le maillage produit porte toujours le même nom. Cela ne pose pas de problème car il est stocké dans des fichiers différents. - -.. literalinclude:: files/tutorial_1.py - :lines: 53-86 - -.. note:: - Download the files - - * :download:`maillage initial` - * :download:`commandes python` - - -Refinement by zones -""""""""""""""""""" -.. index:: single: zone - -On procède ici au raffinement selon des zones. Pour passer du maillage initial au maillage 'M_1', on utilise une boîte encadrant le plan z=1 et une sphère centrée sur l'origine de rayon 1.05. Puis pour passer du maillage 'M_1' au maillage 'M_2', on remplace la sphère par une boîte encadrant le cube de côté 0.5, pointant sur l'origine. On notera que le type de raffinement n'a pas été précisé ; par défaut, il sera donc conforme. - -.. literalinclude:: files/tutorial_2.py - :lines: 53-98 - -.. note:: - Download the files - - * :download:`maillage initial` - * :download:`commandes python` - - -Refinement driven by a field -"""""""""""""""""""""""""""" -.. index:: single: field - -On procède ici au raffinement selon un champ. Les hypothèses servent à définir le nom du champ et les seuils de raffinement/déraffinement. La donnée du fichier et des instants est faite dans l'itération. Des champs sur les noeuds ou sur les mailles sont interpolés. -Pour adapter le maillage H_1 issu de l'itération Iter_1, deux variantes sont appliquées. Dans la première, Iter_2, le champ est un champ scalaire d'indicateurs d'erreur et on découpe les 1.5% de mailles où l'erreur est la plus grande. Dans la seconde variante, Iter_2_bis, on se base sur un champ vectoriel et on examine le saut de ce vecteur entre une maille et ses voisines : on découpera là où la norme infinie de ce saut est supérieure au seuil absolu de 0.0001. - -.. literalinclude:: files/tutorial_3.py - :lines: 53-128 - -.. note:: - Download the files - - * :download:`maillage et champ étape 0` - * :download:`maillage et champ étape 1` - * :download:`commandes python` - - -Non plane boundaries -"""""""""""""""""""" -.. index:: single: field -.. index:: single: yacs - -On teste ici le suivi des frontières courbes : des frontières analytiques pour décrire les différentes surfaces des tuyaux et une frontière discrète pour décrire les lignes d'intersection des deux tuyaux. Le pilotage du raffinement est le suivant : raffinement uniforme de toutes les mailles contenues dans des groupes désignés. On commence par raffiner les faces internes aux tuyaux ; ensuite, on raffine deux fois de suite les faces externes aux tuyaux. -Le schéma YACS réalisant cette adaptation est téléchargeable. - -.. literalinclude:: files/tutorial_4.py - :lines: 53-112 - -.. note:: - Download the files - - * :download:`maillage initial` - * :download:`maillage de la frontière discrète` - * :download:`commandes python` - * :download:`schéma YACS` - - -Specific instructions for a 2D mesh -""""""""""""""""""""""""""""""""""" -.. index:: single: 2D - -Les instructions pour adapter un maillage 2D sont exactement identiques à celles nécessaires à l'adaptation d'un maillage 3D. La seule exception concerne le raffinement selon des zones géométriques : des fonctions différentes sont utilisées pour pouvoir définir des zones 2D. On donne alors les coordonnées 2D des zones, en précisant l'orientation du plan du maillage. -Dans le cas présenté ici, on raffine une première fois toutes les mailles contenues dans un disque percé, puis dans une seconde itération, toutes les mailles contenues dans un rectangle. On notera l'utilisation du suivi des frontières circulaires du domaine. - -.. literalinclude:: files/tutorial_5.py - :lines: 53-98 - -.. note:: - Download the files - - * :download:`maillage initial` - * :download:`maillage de la frontière discrète` - * :download:`commandes python` - - -.. toctree:: - :maxdepth: 2 diff --git a/resources/SalomeApp.xml.in b/resources/SalomeApp.xml.in index 0a23a0be..fef71ce2 100644 --- a/resources/SalomeApp.xml.in +++ b/resources/SalomeApp.xml.in @@ -33,8 +33,8 @@
- - + +
diff --git a/src/HOMARDGUI/HOMARDGUI.cxx b/src/HOMARDGUI/HOMARDGUI.cxx index c1bf1f33..d87061fe 100644 --- a/src/HOMARDGUI/HOMARDGUI.cxx +++ b/src/HOMARDGUI/HOMARDGUI.cxx @@ -206,6 +206,10 @@ void HOMARDGUI::createMenus(){ createMenu( 1201, HOMARD_Id, -1 ); //Edit createMenu( separator(), HOMARD_Id,-1); // createMenu( 1201, HOMARD_Id, -1 ); //Edit +// La langue des preferences + SUIT_ResourceMgr* resMgr = getApp()->resourceMgr(); + QString lang = resMgr->stringValue("language", "language", "en"); + MESSAGE("lang " << lang.toStdString().c_str() ); } //================================================ @@ -254,6 +258,7 @@ bool HOMARDGUI::OnGUIEvent (int theCommandID) } getApp()->updateObjectBrowser(); + SCRUTE(theCommandID); switch (theCommandID) { diff --git a/src/HOMARDGUI/HOMARDGUI_Utils.cxx b/src/HOMARDGUI/HOMARDGUI_Utils.cxx index 2437da8f..d76efeeb 100644 --- a/src/HOMARDGUI/HOMARDGUI_Utils.cxx +++ b/src/HOMARDGUI/HOMARDGUI_Utils.cxx @@ -267,13 +267,14 @@ bool HOMARD_UTILS::isFileSummary(_PTR(SObject) MonObj) } //========================================================================================================= -void HOMARD_UTILS::PushOnHelp(QString monFichierAide) +void HOMARD_UTILS::PushOnHelp(QString monFichierAide, QString leContexte) { - LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); - if (app) { - HOMARDGUI* aHomardGUI = dynamic_cast( app->module( "Homard" ) ); - app->onHelpContextModule(aHomardGUI ? app->moduleName(aHomardGUI->moduleName()) : QString(""), monFichierAide); - } - + MESSAGE("Debut de PushOnHelp avec monFichierAide = "<< monFichierAide.toStdString().c_str()); + LightApp_Application* app = (LightApp_Application*)(SUIT_Session::session()->activeApplication()); + if (app) { + QString fichier = QString("fr/"+monFichierAide) ; + HOMARDGUI* aHomardGUI = dynamic_cast( app->module( "Homard" ) ); + app->onHelpContextModule(aHomardGUI ? app->moduleName(aHomardGUI->moduleName()) : QString(""), fichier, leContexte); + } } //========================================================================================================= diff --git a/src/HOMARDGUI/HOMARDGUI_Utils.h b/src/HOMARDGUI/HOMARDGUI_Utils.h index 7b1aa84c..9c0c69af 100644 --- a/src/HOMARDGUI/HOMARDGUI_Utils.h +++ b/src/HOMARDGUI/HOMARDGUI_Utils.h @@ -83,7 +83,7 @@ namespace HOMARD_UTILS { bool isFileSummary(_PTR(SObject) MonObj); bool isObject(_PTR(SObject) MonObj, QString TypeObject, int option ); - void PushOnHelp(QString monFichierAide); + void PushOnHelp(QString monFichierAide, QString leContexte); extern SALOME_ListIO mySelected; } diff --git a/src/HOMARDGUI/MonCreateBoundaryAn.cxx b/src/HOMARDGUI/MonCreateBoundaryAn.cxx index 65f3bc92..03165481 100644 --- a/src/HOMARDGUI/MonCreateBoundaryAn.cxx +++ b/src/HOMARDGUI/MonCreateBoundaryAn.cxx @@ -1,4 +1,4 @@ -// Copyright (C) 2011-2013 CEA/DEN, EDF R&D +// #Copyright (C) 2011-2013 CEA/DEN, EDF R&D // // This library is free software; you can redistribute it and/or // modify it under the terms of the GNU Lesser General Public @@ -456,7 +456,7 @@ void MonCreateBoundaryAn::PushOnOK() void MonCreateBoundaryAn::PushOnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#un-cylindre") ) ; + HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("un-cylindre") ) ; } // ----------------------------------- diff --git a/src/HOMARDGUI/MonCreateBoundaryDi.cxx b/src/HOMARDGUI/MonCreateBoundaryDi.cxx index e5711e13..02da2e3f 100644 --- a/src/HOMARDGUI/MonCreateBoundaryDi.cxx +++ b/src/HOMARDGUI/MonCreateBoundaryDi.cxx @@ -139,7 +139,7 @@ void MonCreateBoundaryDi::PushOnOK() void MonCreateBoundaryDi::PushOnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#frontiere-discrete")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-discrete")); } // ------------------------------------------------------------------------ void MonCreateBoundaryDi::AssocieLesGroupes() diff --git a/src/HOMARDGUI/MonCreateCase.cxx b/src/HOMARDGUI/MonCreateCase.cxx index fae57f85..58c5dd67 100644 --- a/src/HOMARDGUI/MonCreateCase.cxx +++ b/src/HOMARDGUI/MonCreateCase.cxx @@ -305,7 +305,7 @@ void MonCreateCase::PushOnOK() void MonCreateCase::PushOnHelp() //------------------------------- { - HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString("")); } // --------------------------------- void MonCreateCase::SetNewCaseName() @@ -426,7 +426,7 @@ void MonCreateCase::PushBoundaryDiEdit() void MonCreateCase::PushBoundaryDiHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#frontiere-discrete") ) ; + HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-discrete") ) ; } // ------------------------------------------------------------------------ void MonCreateCase::SetBoundaryA() @@ -504,7 +504,7 @@ void MonCreateCase::PushBoundaryAnEdit() void MonCreateCase::PushBoundaryAnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html#frontiere-analytique") ) ; + HOMARD_UTILS::PushOnHelp(QString("gui_create_boundary.html"), QString("frontiere-analytique") ) ; } // ------------------------------------------------------------------------ void MonCreateCase::CaseNameChanged() diff --git a/src/HOMARDGUI/MonCreateHypothesis.cxx b/src/HOMARDGUI/MonCreateHypothesis.cxx index c3f6880e..f5236ccd 100644 --- a/src/HOMARDGUI/MonCreateHypothesis.cxx +++ b/src/HOMARDGUI/MonCreateHypothesis.cxx @@ -203,7 +203,7 @@ void MonCreateHypothesis::PushOnOK() void MonCreateHypothesis::PushOnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_hypothese.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_hypothese.html"), QString("")); } // ------------------------------------------------- void MonCreateHypothesis::SetNewHypothesisName() diff --git a/src/HOMARDGUI/MonCreateIteration.cxx b/src/HOMARDGUI/MonCreateIteration.cxx index f46b5894..0ac39fd6 100644 --- a/src/HOMARDGUI/MonCreateIteration.cxx +++ b/src/HOMARDGUI/MonCreateIteration.cxx @@ -189,7 +189,7 @@ void MonCreateIteration::PushOnOK() void MonCreateIteration::PushOnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_iteration.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_iteration.html"), QString("")); } // ------------------------------------------------------------------------ void MonCreateIteration::SetIterParentName() diff --git a/src/HOMARDGUI/MonCreateListGroup.cxx b/src/HOMARDGUI/MonCreateListGroup.cxx index 7c408f08..b960589e 100644 --- a/src/HOMARDGUI/MonCreateListGroup.cxx +++ b/src/HOMARDGUI/MonCreateListGroup.cxx @@ -115,7 +115,7 @@ void MonCreateListGroup::PushOnOK() void MonCreateListGroup::PushOnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_hypothese.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_hypothese.html"), QString("")); } // ------------------------------------------------------------------------ void MonCreateListGroup::InitGroupes() diff --git a/src/HOMARDGUI/MonCreateZone.cxx b/src/HOMARDGUI/MonCreateZone.cxx index 2847a58f..093b884a 100644 --- a/src/HOMARDGUI/MonCreateZone.cxx +++ b/src/HOMARDGUI/MonCreateZone.cxx @@ -587,7 +587,7 @@ void MonCreateZone::PushOnOK() void MonCreateZone::PushOnHelp() // ------------------------------------------------------------------------ { - HOMARD_UTILS::PushOnHelp(QString("gui_create_zone.html") ) ; + HOMARD_UTILS::PushOnHelp(QString("gui_create_zone.html"), QString("") ) ; } // ----------------------------------- diff --git a/src/HOMARDGUI/MonIterInfo.cxx b/src/HOMARDGUI/MonIterInfo.cxx index c660fbf7..f8d248fe 100644 --- a/src/HOMARDGUI/MonIterInfo.cxx +++ b/src/HOMARDGUI/MonIterInfo.cxx @@ -131,7 +131,7 @@ void MonIterInfo::PushOnOK() void MonIterInfo::PushOnHelp() //------------------------------- { - HOMARD_UTILS::PushOnHelp(QString("gui_mesh_info.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_mesh_info.html"), QString("")); } // ------------------------------------------------------------------------ void MonIterInfo::SetBlockSize() diff --git a/src/HOMARDGUI/MonMeshInfo.cxx b/src/HOMARDGUI/MonMeshInfo.cxx index b35f6029..915d51a4 100644 --- a/src/HOMARDGUI/MonMeshInfo.cxx +++ b/src/HOMARDGUI/MonMeshInfo.cxx @@ -178,7 +178,7 @@ void MonMeshInfo::PushOnOK() void MonMeshInfo::PushOnHelp() //------------------------------- { - HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString("")); } // --------------------------------- void MonMeshInfo::SetNewCaseName() diff --git a/src/HOMARDGUI/MonPursueIteration.cxx b/src/HOMARDGUI/MonPursueIteration.cxx index 58aec130..d8950013 100644 --- a/src/HOMARDGUI/MonPursueIteration.cxx +++ b/src/HOMARDGUI/MonPursueIteration.cxx @@ -187,7 +187,7 @@ void MonPursueIteration::PushOnOK() void MonPursueIteration::PushOnHelp() //------------------------------- { - HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html")); + HOMARD_UTILS::PushOnHelp(QString("gui_create_case.html"), QString("")); } // --------------------------------- void MonPursueIteration::SetNewCaseName()