Salome HOME
Small fix to make it working with -j make option
[modules/homard.git] / doc / intro_en.rst
1 .. _gui_intro_en:
2
3 Introduction
4 ============
5
6 General presentation
7 """"""""""""""""""""
8 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é.
9
10 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.
11
12 HOMARD sait traiter des maillages en 2 ou 3 dimensions et comportant les mailles suivantes :
13    - mailles-points
14    - segments
15    - triangles
16    - quadrangles
17    - tétraèdres
18    - hexaèdres
19    - prismes
20
21 Ces mailles peuvent être présentes simultanément. Par exemple, HOMARD saura adapter un maillage comportant des triangles et des quadrangles.
22 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.
23
24 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`).
25
26 Plusieurs motivations apparaissent pour adapter un maillage :
27
28   - 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.
29   - 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.
30   - 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.
31
32 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.
33 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.
34
35 .. image:: images/intro_1.png
36    :align: center
37
38 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.
39
40 .. image:: images/intro_2.png
41    :align: center
42
43 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.
44
45 .. note::
46   Pour une description plus complète, see :download:`Description générale de HOMARD <files/HOMARD_0.pdf>`.
47
48 .. note::
49   Pour une référence à HOMARD, utiliser :
50
51   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
52
53   `Accessible en cliquant ici <http://dx.doi.org/10.1016/j.finel.2012.11.008>`_
54
55
56 Some illustrations of adapted meshes
57 """"""""""""""""""""""""""""""""""""
58 .. index:: single: illustration
59
60 +---------------------------------------------------------------+
61 +---------------------------------------------------------------+
62 |                                                               |
63 | .. image:: images/intro_3.png                                 |
64 |    :align: center                                             |
65 |                                                               |
66 +---------------------------------------------------------------+
67 |                                                               |
68 | .. image:: images/intro_4.png                                 |
69 |    :align: center                                             |
70 |                                                               |
71 +---------------------------------------------------------------+
72 |                                                               |
73 | .. image:: images/intro_5.png                                 |
74 |    :align: center                                             |
75 |                                                               |
76 +---------------------------------------------------------------+
77 |                                                               |
78 | .. image:: images/intro_6.png                                 |
79 |    :align: center                                             |
80 |                                                               |
81 +---------------------------------------------------------------+
82 |                                                               |
83 | .. image:: images/intro_7.png                                 |
84 |    :align: center                                             |
85 |                                                               |
86 +---------------------------------------------------------------+
87 |                                                               |
88 | .. image:: images/intro_8.gif                                 |
89 |    :align: center                                             |
90 |                                                               |
91 +---------------------------------------------------------------+
92
93 Quick start
94 """""""""""
95 .. index:: single: start
96 .. index:: single: example
97
98 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.
99
100 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.
101
102 .. image:: images/homard_1.png
103    :align: center
104
105 Une fois le module HOMARD activé, on crée un cas par le choix "*Nouveau cas*" dans le menu HOMARD.
106
107 .. image:: images/homard_2.png
108    :align: center
109
110 La fenêtre suivante apparaît :
111
112 .. image:: images/intro_31.png
113    :align: center
114
115 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".
116
117 .. image:: images/intro_32.png
118    :align: center
119
120 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.
121
122 .. image:: images/intro_331.png
123    :align: center
124
125 La fenêtre suivante apparaît :
126
127 .. image:: images/intro_33.png
128    :align: center
129
130 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.
131
132 .. image:: images/intro_34.png
133    :align: center
134
135 On clique sur "Nouveau" dans la rubrique hypothèse. La fenêtre suivante apparaît :
136
137 .. image:: images/intro_35.png
138    :align: center
139
140 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.
141
142 .. image:: images/intro_36.png
143    :align: center
144
145 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".
146
147 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.
148
149 .. image:: images/intro_37.png
150    :align: center
151
152 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 :
153
154 .. image:: images/intro_38.png
155    :align: center
156
157 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.
158
159 .. image:: images/intro_39.png
160    :align: center
161
162 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``.
163
164 .. image:: images/intro_40.png
165    :align: center
166
167 On peut alors lancer un nouveau calcul sur ce nouveau maillage et poursuiver cette alternance calcul/adaptation jusqu'à l'obtention du résultat attendu.
168
169
170 Evolutions of the module
171 """"""""""""""""""""""""
172 .. index:: single: evolution
173
174 Here are the main evolutions de HOMARD from the first release in SALOME 6.5.
175
176 SALOME RELEASE 6.6 :
177    - Interface with med 3.0.6
178    - Default values for the time steps
179    - New element types: TRIA7 and QUAD9
180    - Optional output into the MED file of the level of refinement of every element
181
182 SALOME RELEASE 7.1 :
183    - Correction of a bug in the filtering of the refinement by groups
184    - Driving of the adaptation by a threshold that is based upon the mean and the standard deviation (see :ref:`tui_create_hypothese_en`)
185    - TUI: the last time step for the driving instant can be selected by SetTimeStepRankLast (see :ref:`tui_create_iteration_en`)
186    - The destruction of the objects is available (GUI and TUI)
187    - The TUI functions are modified: they act onto the objects and no more by the names:
188      ``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)``
189    - Addition of a function:
190      ``cas.LastIteration()`` : returns the last iteration of the case (see :ref:`tui_create_iteration_en`)
191    - Mesh analysis (see :ref:`gui_mesh_info_en`)
192
193 SALOME RELEASE 7.2 :
194    - A cone can be used as a support for a 2D boundary (see :ref:`tui_create_boundary_en`)
195    - The result can be published or not published in SMESH (see :ref:`tui_create_iteration_en`)
196      ``iter.Compute(option)`` becomes ``iter.Compute(option1, option2)``
197    - A serie of iterations that is stored in a directory can be followed (see :ref:`gui_create_case_en`)
198
199
200
201
202
203