From 75313708344d0acc76340b6cd3e12edacda62716 Mon Sep 17 00:00:00 2001 From: nicolas Date: Mon, 8 Jul 2013 09:13:22 +0000 Subject: [PATCH] =?utf8?q?Description=20des=20sch=C3=83=C2=A9mas=20YACS?= MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit --- doc/en/divers.rst | 81 ------------------------------- doc/en/gui_create_boundary.rst | 54 ++++++++++----------- doc/en/gui_create_hypothese.rst | 67 +++++++++++++------------- doc/en/gui_create_iteration.rst | 38 +++++++-------- doc/en/gui_create_zone.rst | 43 ++++++++--------- doc/en/gui_homard.rst | 18 +++---- doc/en/gui_mesh_info.rst | 42 ++++++++-------- doc/en/index.rst | 1 - doc/en/yacs.rst | 24 ++++----- doc/fr/divers.rst | 83 -------------------------------- doc/fr/gui_create_boundary.rst | 2 +- doc/fr/gui_create_hypothese.rst | 6 +-- doc/fr/gui_create_iteration.rst | 1 - doc/fr/gui_create_zone.rst | 2 +- doc/fr/gui_mesh_info.rst | 2 +- doc/fr/index.rst | 1 - doc/fr/yacs.rst | 24 ++++----- doc/images/yacs_01.png | Bin 0 -> 18561 bytes doc/images/yacs_a_01.png | Bin 0 -> 1718 bytes doc/images/yacs_b_01.png | Bin 0 -> 3984 bytes doc/images/yacs_c_01.png | Bin 0 -> 4370 bytes doc/images/yacs_c_02.png | Bin 0 -> 8011 bytes doc/images/yacs_c_03.png | Bin 0 -> 2645 bytes doc/images/yacs_c_04.png | Bin 0 -> 30087 bytes doc/images/yacs_c_05.png | Bin 0 -> 4059 bytes doc/images/yacs_c_06.png | Bin 0 -> 7783 bytes doc/images/yacs_c_07.png | Bin 0 -> 5023 bytes doc/images/yacs_c_08.png | Bin 0 -> 3447 bytes doc/images/yacs_c_09.png | Bin 0 -> 4461 bytes doc/images/yacs_d_01.png | Bin 0 -> 1833 bytes 30 files changed, 158 insertions(+), 331 deletions(-) create mode 100644 doc/images/yacs_01.png create mode 100644 doc/images/yacs_a_01.png create mode 100644 doc/images/yacs_b_01.png create mode 100644 doc/images/yacs_c_01.png create mode 100644 doc/images/yacs_c_02.png create mode 100644 doc/images/yacs_c_03.png create mode 100644 doc/images/yacs_c_04.png create mode 100644 doc/images/yacs_c_05.png create mode 100644 doc/images/yacs_c_06.png create mode 100644 doc/images/yacs_c_07.png create mode 100644 doc/images/yacs_c_08.png create mode 100644 doc/images/yacs_c_09.png create mode 100644 doc/images/yacs_d_01.png diff --git a/doc/en/divers.rst b/doc/en/divers.rst index 463aa6c1..4c18d3d0 100644 --- a/doc/en/divers.rst +++ b/doc/en/divers.rst @@ -7,43 +7,12 @@ References ********** .. index:: single: reference -The HOMARD software was subject of publications techniques in the course of conferences these last years. References of main documents are presented here. - -Main reference -============== For a reference to HOMARD, use: 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 `Available here `_ -Splitting meshing -================= - - * G. Nicolas, T. Fouquet, Conformal hexaedral meshes and adaptive mesh refinement, VI International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2013*", J.P. Moitinho de Almeida, P. Diez, C. Tiago and N. Pares (Eds), Lisbonne, pp. 515-526, 2013 - * G. Nicolas, T. Fouquet, Hexaedral mesh adaptation for finite volume methods, III International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2007*", K. Runesson, P. Diez (Eds), Goteborg, pp. 174-177, 2007 - * G. Nicolas, F. Arnoux-Guisse, O. Bonnin, Adaptive meshing for 3D finite element software, IX International Conference on Finite Elements in Fluids, Venise, Italie, 15-21 Octobre 1995. - * G. Nicolas, F. Arnoux-Guisse, O. Bonnin, Un logiciel d'adaptation de maillage en 2D et 3D, 27ème Congrès d'Analyse Numérique, Super-Besse, France, May 29-June 2, 1995. - -Error estimators -================ - - * A. Ern, S. Meunier, A posteriori error analysis of Euler-Galerkin approximations to coupled elliptic-parabolic problems", ESAIM: M2AN 43 (2009) 353-375. - * J. Delmas, Stratégies de controle d'erreur en calcul de structures industrielles., PhD of the Université de Picardie, France, April 2008 - * S. Meunier, Analyse d'erreur a posteriori pour les couplages hydro-mécaniques et mise en oeuvre dans Code_Aster, PhD of the Ecole Nationale des Ponts et Chaussées, France, November 2007. - * J. Delmas, P. Coorevits, P.-B. Badel and M. Guessasma, An explicit estimator for goal oriented H-Adaptivity with mesh optimaly criteria, III International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2007*", K. Runesson, P. Diez (Eds), Goteborg, pp. 93-96, 2007. - * P. Destuynder, B. Métivet, Estimation d'erreur explicite dans une méthode d'éléments finis conforme, Compte Rendu Académie des Sciences Paris, tome 323, Série I, p. 679-684, 1996. - * P. Destuynder, B. Métivet, Estimation d'erreur explicite pour une méthode d'éléments finis non conforme, Compte Rendu Académie des Sciences Paris, tome 322, Série I, p. 1081-1086, 1996. - * C. Bernardi, O. Bonnin, C. Langouet, B. Métivet, Residual Error Indicators for Linear Problems - Extension to the Navier-Stokes Equations, IX International Conference on Finite Elements in Fluids, Venise, Italie, 15-21 Octobre 1995. - * F. Arnoux-Guisse, O. Bonnin, L. Léal De Sousa, G. Nicolas, An adaptive finite element method for turbulent flow simulation, ICFD Conference on Numerical Methods for Fluid Dynamics, University of Oxford, Grande-Bretagne, 3-6 Avril 1995. - * O. Bonnin, B. Métivet, G. Nicolas, F. Arnoux-Guisse, L. Léal de Sousa, Adaptive Meshing for N3S Fluid Mechanics Code, "*Computational Fluid Dynamics '94*", ECCOMAS Stuttgart, Allemagne, pp. 201-208, Wiley 1994. - -Applications -============ - - * S. Meunier, R. Fernandes, Mesh Adaptation for Coupled Hydro-Mechanical Industrial Studies, V International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2011*", D. Aubry, P. Diez, B. Tie and N. Pares (Eds), Paris, pp. 337-338, 2011 - * O. Hartmann, O. Bonnin, D. Gasser, An Adaptive Meshing for Turbomachinery Geometries, "*Computational Fluid Dynamics '98*", ECCOMAS Athènes, Greece, Wiley 1998. - Evolutions of the module ************************ @@ -77,56 +46,6 @@ SALOME RELEASE 7.2.0 : SALOME VERSION 7.2.1 : - English documentation -Contact -******* -.. index:: single: Contact - -Gérald NICOLAS, Software Manager - -Address: -EDF R&D, 1, avenue du Général de Gaulle, 92141 CLAMART Cedex, FRANCE - -Phone : (33/0) 1.47.65.56.94 - -Email : Gerald.Nicolas[at]edf.fr - - -Thierry FOUQUET - -Address: -EDF R&D, 1, avenue du Général de Gaulle, 92141 CLAMART Cedex, FRANCE - -Phone : (33/0) 1.47.65.41.45 - -Email : Thierry.Fouquet[at]edf.fr - - -Really miscellaneous -******************** - -HOMARD is an acronym for - - Outil de - - Maillage - - Adaptatif par - - Raffinement et - - Déraffinement - -which means: - - Tool for - - Adaptive - - Meshing by - - Refinement and - - Unrefinement - -HOMARD is the french name for lobster. -Then, our mascot is very nice in `the city of the loabster `_ : |M| - -.. |M| image:: ../images/mascotte.gif - :align: middle - :alt: Mascot - :width: 144 - :height: 94 - diff --git a/doc/en/gui_create_boundary.rst b/doc/en/gui_create_boundary.rst index 34804228..8bf86087 100644 --- a/doc/en/gui_create_boundary.rst +++ b/doc/en/gui_create_boundary.rst @@ -5,33 +5,33 @@ 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. +The object boundary contains all the geometrical definitions allowing to describe a curved boundary to be followed. -Il existe deux modes de description d'une frontière : +There are two modes of description of a boundary: - - Discrète : ce mode est utilisé pour décrire une courbe 1D - - Analytique : ce mode est utilisé pour décrire une surface + - Discrete: this mode is used to describe a curve 1D + - Analytics: this mode is used to describe a 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. +The follow-up of a discrete boundary will be made by selecting a boundary chosen in the list of the existing discrete boundaries. -Au démarrage, la liste est vide. Il faut créer une première frontière discrète par activation du bouton "*Nouveau*" : +In the starting up, the list is empty. It is necessary to create a first discrete boundary by activation of the button "*New*" : .. 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. +The window invites in the choice of a file of mesh. This mesh is the one of all the lines constituting the boundary. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary. .. image:: images/create_boundary_di_2.png :align: center .. note:: - Le fichier ne doit contenir qu'un seul maillage. + The file has to contain only a single mesh. -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. +If discrete boundaries were already defined for another case, we can select one of them. We can also create a new discrete boundary by activation of the button "*New*", as explained previously. .. image:: images/create_boundary_di_3.png :align: center @@ -40,52 +40,52 @@ Si des fronti 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. +In the starting up, SALOME shows a table with one only one column. This column contains the list of all the groups of the initial mesh defining the case. .. 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. +It is necessary to create a first analytical boundary by activation of the button "*New*". We shall have the choice between cylinder, sphere or cone. When the boundary will be validated, its name will appear in header of the second column. .. 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. +It is now necessary to establish the link enter the mesh defining the case and this boundary described analytically. It is made by checking the groups of the faces which have to be on the boundary. .. 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 : +This operation is repeated as often as we wish to place faces of meshs on a curved surface: .. 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. + A group can be checked very well never: it means that the elements which it defines belong to none of the described boundaries. - Un groupe ne peut être coché qu'une seule fois. En effet, des mailles surfaciques ne peuvent pas appartenir à plus d'une surface. + A group can be checked only once. Indeed, surface elements cannot belong to more than one 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. + Several groups can be checked for the same boundary. It occurs if the initial mesh of the zone was subdivided into several groups: all the surface elements belong to this surface but were distributed in several groups. - 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. + Conversely, a boundary can be very well retained by no group. It occurs if it was defined for a previous case and if it is groundless for the case in the course of definition. -Il existe trois types de frontière analytique : +There are three types of analytical boundary: - Cylindre - - Sphère - - Cône, décrit par un axe et un angle ou par deux rayons + - Sphere + - Cone, described by an axis and an angle or by two radius .. note:: - Les valeurs numériques proposées par défaut tiennent compte de la géométrie du maillage. + The numerical values proposed by default take into account the geometry of the mesh. 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. +The cylinder is defined by a point of the axis, its axis and its radius. The axis is defined by a vector. The standard of this vector is not inevitably equal to 1; also, its orientation has no importance. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary. .. image:: images/create_boundary_an_cy.png :align: center @@ -94,7 +94,7 @@ 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. +The sphere is defined by its center and its radius. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary. .. image:: images/create_boundary_an_sp.png :align: center @@ -103,14 +103,14 @@ 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. +A cone is defined by two different manners: the center, the axis and the angle of opening in degree or by two points centered on the axis and the associated radius. A name of boundary is automatically proposed: Boun_1, Boun_2, etc. This name can be modified. It must not already have been used for another boundary. -Création par une origine, un axe et un angle d'ouverture : +Creation by an origin, an axis and an angle of opening: .. image:: images/create_boundary_an_co_1.png :align: center -Création par deux points centrés sur l'axe et le rayon associé : +Creation by two points centered on the axis and the associated radius: .. image:: images/create_boundary_an_co_2.png :align: center @@ -119,7 +119,7 @@ Cr 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. +At the end of this creation of boundaries, the object browser was enriched. We find all the boundaries created, identified there by their name, with the possibility of editing them. .. image:: images/create_boundary_1.png :align: center diff --git a/doc/en/gui_create_hypothese.rst b/doc/en/gui_create_hypothese.rst index 976d73ed..3fa177ce 100644 --- a/doc/en/gui_create_hypothese.rst +++ b/doc/en/gui_create_hypothese.rst @@ -4,13 +4,13 @@ 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. +The hypothesis contains all parameters of driving of a mesh adaptation. This operation allows to realize the iteration to which it is attached. -Il existe trois classes d'hypotheses : +There are three classes of hypotheses: - - Uniforme sur tout le maillage, - - Selon un champ, - - En fonction de zone géométrique. + - Uniform over the whole mesh, + - According to a field, + - According to geometrical zone. .. image:: images/create_hypothese_1.png :align: center @@ -18,41 +18,40 @@ Il existe trois classes d'hypotheses : 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. +A name of the hypothesis is automatically proposed: Hypo_1, Hypo_2, etc. This name can be modified. It must not have been used for a previous hypothesis. 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. +By default we propose a uniform refinement. When the starting point is a mesh which was already refined, the option of unefinement will eliminate the produced elements. 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 : + To be able to adapt the mesh according to a field it is beforehand necessary to have indicated the file med containing the field. It is made in the window of construction of the iteration (see :ref:`gui_create_iteration`). The name of the file which was selected is shown without possible modification here: .. 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. +The deliberate field is to be chosen in the list of fields contained in the file. +Once this field was chosen, the list of its components is displayed. It is enough to indicate the wished component(s). -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). +If we choose a single component, by default, it is the absolute value which will be used, but it is possible to use the relative value. In the case of several components, by default HOMARD will use the L2 norm (Euclidian). We can however choose the infinite norm (the max of the absolute values of the components). -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*". +We can choose not to use directly the field, but its variation from an element to its neighbors. For that purpose, we shall check the button "*Jump between elements*". .. image:: images/create_hypothese_ch_2.png :align: center +The refinement is made according to a threshold which defines a high criterion of refinement. All the elements for which the indicator is upper to this criterion will be refined. +For the choice of the criterion, four variants are possible: -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 : + - According to a percentage of elements to be refined, real number included between 0 and 100; HOMARD will refine x% of the elements which have the biggest value of the field. + - According to a relative value of the field, the number included between 0 and 100; HOMARD will refine the elements where the field is upper in x% of the interval [mini, maxi]. + - Beyond an absolute value; all the elements with a value of field superior to this value will be refined. + - Beyond an absolute value that is equal to the average of the mean of the field increased of n times its standard deviation; all the elements with a value of field superior to this value will be refined. - - 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. +The same convention applies to the unefinement, the by replacing upper by lower. We can inactivate one of the functions (refinement or unefinement) by checking the button ad_hoc. .. image:: images/create_hypothese_ch_3.png :align: center @@ -62,12 +61,12 @@ 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`) : +In the starting up, it is necessary to create a first zone by activation of the button "*New*" (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. +When zones were already created, the list appears in the window, what allows to select the deliberate zones. We then have to specify if a zone is used to refine all the elements a edge of which is contained in the zone, or if the zone is used for unrefine the internal elements in the zone. If no choice is made, the zone is ignored in this hypothesis. .. image:: images/create_hypothese_zo_2.png :align: center @@ -77,13 +76,13 @@ 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é : +We can restrict the application of the hypothesis of adaptation to groups. So elements not belonging to these groups will not be modified, except by later contamination of the refinement to assure the conformity of the final mesh. +We check the associated button: .. 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. +The list of the present groups of elements in the mesh is shown. It is enough to check those wanted to restrict the hypothesis of adaptation. .. image:: images/create_hypothese_gr_2.png :align: center @@ -94,14 +93,14 @@ 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`). + To be able to interpolate a field from the former towards the new mesh, it is beforehand necessary to have indicated the file med containing the field. It is made in the window of construction of the iteration (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 : +By default, no field is interpolated. On the contrary, we can ask for the interpolation of all the present fields in the supplied file: .. 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 : +If we want to choose fields to be interpolated, it is necessary to check them in the list of all the present fields in the supplied file: .. image:: images/create_hypothese_ch_5.png :align: center @@ -109,14 +108,14 @@ Si on veut choisir les champs 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. +If the compartment "*Advanced Options*" is not checked, no additional constraint is defined. +If the compartment is checked, we shall define the advanced options. -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. +A first series of options concern the maximal sharpness of mesh which we do not want to exceed. Two directives are possible, separately or together. We can impose a size of minimal element: a element the diameter of which is lower than this limit will not be any more split. By default, we propose a minimal 0 diameter, what means imposing nothing. We can impose a level of maximal refinement. By default, the maximum is 99, what amounts generally to impose nothing. -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. +The second series of options has interest only in case the adaptation is driven by a field and in case this field is not defined everywhere in the mesh. It arrives for example when we build a field based on a distance in a plan while the domain is 3D: the field will not be defined on nodes outside the plan. For such fields, this option allows to specify the behavior which we wish in the regions where the field is not defined. By default, there is nothing: elements are kept as they are. We can choose two other variants: to refine all the elements will a priori be cut, or to unrefine all the elements will be candidate in the unefinement. -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. +The last choice concerns an additional output of the adaptation. If the compartment is checked, the file MED in output will contain a field containing the level of refinement of every element. The convention is the one of HOMARD: a element of the initial mesh is of level 0, a element stemming from a refinement of an initial element carries the level 1, etc. The elements of transition which are produced between two level elements different, n and n+1, are affected by the half-level n+0,5. By default, the compartment is not checked and the field is not produced. .. image:: images/create_hypothese_av_1.png :align: center @@ -125,7 +124,7 @@ 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. +The object browser contains the created hypotheses and the iterations which use them. The description of the zones which are possibly attached to them is present. .. image:: images/create_hypothese_2.png :align: center diff --git a/doc/en/gui_create_iteration.rst b/doc/en/gui_create_iteration.rst index a372e366..a45fe773 100644 --- a/doc/en/gui_create_iteration.rst +++ b/doc/en/gui_create_iteration.rst @@ -4,42 +4,41 @@ The iteration ############# .. index:: single: iteration -La définition d'une iteration se fait par la donnée des informations suivantes : +The definition of an iteration is done by the following information: - - L'iteration précédente - - Le nom du maillage résultat - - L'hypothesis utilisée - - Eventuellement, le fichier du champ d'indicateurs d'erreur + - The previous iteration + - The name of the resulting mesh + - The used hypothesis + - Possibly, the file of the field of error indicators .. 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. +A name of case is proposed automatically: Iter_1, Iter_2, etc This name can be modified. It must not have been used for a preceding iteration. -The previous iteration -********************** -L'iteration précédente est choisie dans l'arbre d'étude. Le nom du maillage correspondant sera affiché. +The preceding iteration +*********************** +The preceding iteration is selected in the object browser. The name of the corresponding mesh will be posted. .. 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. +The current iteration will produce a mesh. This mesh will be known under a name. This name is provided by typing it in the zone of text. By default, one proposes a name identical to that of the preceding iteration. .. 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. - +To create or use an hypothesis of adaptation based on a field expressed on the mesh, one must provide the file where the field is. It is also the case if one wants to interpolate fields from mesh #N to the mesh #(N+1). This file is with format MED. Classically, it will have been produced by the computation software with which one works. The name of the file can be provided, either by typing the name in the zone of text, or by activating the function of research. .. 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. +If steps of time were defined, a simple solution consists in treating the fields with the last step of time recorded in the file. If one wants to define another step of time, one notches the button "*Given time step*". The values of 'time' and 'Sequence number' are those corresponding to convention MED (time step/rank). These values depend on the logic which was retained by the software which wrote the file. Often these two values are identical but it happens that one disjoins the time steps and the intervals of saving. .. image:: images/create_iteration_3.png :align: center @@ -48,32 +47,31 @@ Dans le cas o 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. +The iteration in progress will control the adaptation by HOMARD according to a scenario defined on an hypothesis. This one is selected in the list of the existing hypotheses. -Au démarrage, il faut créer une première hypothesis par activation du bouton "*Nouveau*" (voir :ref:`gui_create_hypothese`) : +With starting, it is necessary to create a first hypothesis by activation of the button "*New*" (see: :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 : +Then, if an hypothesis previously defined is appropriate, it is enough to select it in the proposed list. If not, it is necessary to create a new hypothesis by activation of the button "*New*", then to select it in the proposed list: .. 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. + If one considers an adaptation according to the values of a field on the mesh, it is necessary to have given information about this field before creating a new 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. +At the conclusion of this creation of iteration, the object browser was enriched. One finds there the initial iteration, identified by the name of the mesh which was read in the provided file, the current iteration, identified by its name. One finds also the hypothesis which is attached to him. The icon compared to the iteration makes it possible to differentiate the iterations calculated or not. .. 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. +When several iterations are connected, their hypothesis is visible in the object browser. One will notice in the figure hereafter that two iterations can share the same hypothesis. .. image:: images/create_iteration_7.png :align: center diff --git a/doc/en/gui_create_zone.rst b/doc/en/gui_create_zone.rst index 73f21190..6c5af27f 100644 --- a/doc/en/gui_create_zone.rst +++ b/doc/en/gui_create_zone.rst @@ -5,46 +5,44 @@ 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. +The object zone contains all the geometrical definitions allowing to describe a zone to be refined. -En 3D, il existe quatre types de zone : +In 3D, there are four types of zone: - - Parallélépipède - - Cylindre - - Tuyau - - Sphère + - Box + - Cylinder + - Pipe + - Sphere -Leurs analogues en 2D sont : +Their analogues in 2D are: - Rectangle - - Disque - - Disque percé + - Disk + - Disk with a hole -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. +The principle of the refinement according to zones is the following one. Every edge of element among which both extremities are included in the same zone will be cut. Then HOMARD applies the algorithm of processing of it conformity to produce a correct mesh. .. note:: - Les valeurs proposées par défaut pour les dimensions des zones tiennent compte de la géométrie du maillage. + The values proposed by default for the size of zones take into account the geometry of the mesh. 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. +A name of zone is automatically proposed: Zone_1, Zone_2, etc. This name can be modified. He must not have been already used for another 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. +The parallelepiped is necessarily parallel to coordinate system. It is defined by its extremes in every direction. .. image:: images/create_zone_1.png :align: center -Cylindre +Cylinder ******** .. 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. +The cylinder is defined by its axis, a basis point positioned on the axis, its height and its radius. The axis is defined by a vector which must be correctly directed: we shall retain the ready volume of the basis in the direction of the vector until the reserved height. The norm of this vector is not inevitably equal to 1. .. image:: images/create_zone_2.png :align: center @@ -53,7 +51,7 @@ 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. +The pipe is defined by its axis, a basis point positioned on the axis, its height and its internal and external radius. The axis is defined by a vector which must be correctly directed: we shall retain the ready volume of the basis in the direction of the vector until the reserved height. The norm of this vector is not inevitably equal to 1. .. image:: images/create_zone_3.png :align: center @@ -62,7 +60,7 @@ Sphere ****** .. index:: single: sphere -La sphère est définie par son centre et son rayon. +The sphere is defined by its center and its radius. .. image:: images/create_zone_4.png :align: center @@ -71,7 +69,7 @@ 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. +The rectangle is necessarily parallel to coordinate system. It is defined by its extremes in each of the valid directions. The constant coordinate is shown for information, but is not modifiable. .. image:: images/create_zone_21.png :align: center @@ -80,7 +78,7 @@ 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. +The disk is necessarily in the plan of coordinate system. It is defined by its center and its radius. The constant coordinate is shown for information, but is not modifiable. .. image:: images/create_zone_22.png :align: center @@ -89,13 +87,12 @@ 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. +The disk with hole is necessarily in the plan of coordinate system. It is defined by its center and its external and internal radius. The constant coordinate is shown for information, but is not 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 index 7be32325..2c935023 100644 --- a/doc/en/gui_homard.rst +++ b/doc/en/gui_homard.rst @@ -5,9 +5,9 @@ The computation .. index:: single: iteration .. index:: single: computation -To cumpute an iteration +To compute 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. +To launch an adaptation obtains by selecting the iteration to calculate. It is identified by an icone "wait". We choose then "*Compute*" in the menu HOMARD or with the mouse. .. image:: images/lancement_1.png :align: center @@ -17,15 +17,15 @@ Lancer une adaptation s'obtient en s 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 : +At the end of this calculation, the object browser was enriched. The icone in front of the iteration is validated. Under the iteration, we find the reference to the files of results created, identified by their name in the directory *rep* which was defined in the creation of the case: - *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. +The first two files are text files, editable. Liste.n.vers.(n+1).log contains information on the progress of the adaptation: summary of the mode of adaptation, percentage of concerned elements, etc. The file apad.n.vers.(n+1).bilan is a summary of the characteristics of the obtained mesh. -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. +The file maill.(n+1).med is the one which contains the mesh produced in the format MED. We find this mesh in the section of the object browser of the module SMESH. It is then visible in this module and usable then as quite different mesh. .. image:: images/lancement_2.png @@ -33,16 +33,16 @@ Le fichier maill.(n+1).med est celui qui contient le maillage produit au format 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. +Both text files, Liste.n.vers.(n+1).log and apad.n.vers.(n+1).bilan, are visible by selecting them. We choose then "*Edit file*" in the menu HOMARD or with the mouse. .. 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*". + By default, the calculation is launched with the load module of HOMARD installed with SALOME. If we wish to use a personal version of HOMARD, to test an evolution for example, it is necessary to specify where the new load module is available. For that purpose, it is necessary to have got two variables of environment. + "*HOMARD_REP_EXE_PRIVATE*" defines the directory in which is the load module + "*HOMARD_EXE_PRIVATE*" defines the name of the load module in this directory, if this name is different of "*homard*". Corresponding python functions ****************************** diff --git a/doc/en/gui_mesh_info.rst b/doc/en/gui_mesh_info.rst index c14a9729..cb3127df 100644 --- a/doc/en/gui_mesh_info.rst +++ b/doc/en/gui_mesh_info.rst @@ -5,33 +5,33 @@ Mesh analysis .. index:: single: analysis .. index:: single: information -La demande d'analysis d'un maillage se fait par la donnée des informations suivantes : +The request of analysis of a mesh is made by the following information: - - Un répertoire - - Le fichier du maillage + - A directory + - A mesh file -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. +If the mesh is a part of a registered case, its analysis is made from its iteration in the object browser. See farther. 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 : +The selection of the function of analysis is made by the menu of the superior bar of the window: .. image:: images/mesh_info_1.png :align: center -La fenêtre de choix s'affiche. +The window of choice is displayed. .. 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. +A name of case is automatically proposed: Case_1, Case_2, etc. This name can be modified. He must not already have been used for another case. 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. +The directory is the one which will contain files produced by the information. By default, nothing is proposed. The choice is made, either by typing the name in the text field, or by activating the function of research. It is in this directory that will be exported the files of information of name "Liste.log" and "info_av.00.bilan". These files will be visible in the object browser. .. image:: images/create_case_2.png :align: center @@ -41,31 +41,31 @@ Le r 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. +The mesh to be analyzed has to be in a file in the format MED. The name of the file can be supplied, either by typing the name in the text field, or by activating the function of research. .. image:: images/create_case_3.png :align: center .. note:: - Le fichier ne doit contenir qu'un seul maillage. + The file has to contain only a single mesh. .. 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 + The mesh does not have to be produced of an adaptation of mesh by HOMARD itself, at the risk of losing the analysis of the various levels of refinement / unrefinement 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 +The analysis is made according to the marked options. + - Quality of elements + - Diameter of elements + - Connectivity of the domain; in a single piece, how many holes, etc. + - Sizes of the constituents of the domain, group by group + - Interpenetration of elements, by 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. +The result of the analysis is contained in the file "info_av.00.bilan"; this file is to be consulted by showing it after its name with "*Edit file*" in the menu HOMARD or with the mouse. 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``. +At the end of this request of information, the object browser was enriched by this new case. We find the initial iteration there, identified by the name of the mesh which was read in the supplied file, and both files of information of name "Liste.log" and "info_av.00.bilan". .. image:: images/mesh_info_3.png :align: center @@ -74,12 +74,12 @@ A l'issue de cette demande d'information, l'arbre d' 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 : +To analyze the mesh produced by an iteration of mesh adaptation, we indicate with the mouse this iteration in the object browser and we launch the analysis. We find the menu similar to the initial case: .. 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. +As for an imported mesh, the object browser was enriched with both files of information of name "Liste.log" and "info_ap.xx.bilan", where xx is the number of the iteration in the case. .. image:: ../images/mesh_info_5.png :align: center diff --git a/doc/en/index.rst b/doc/en/index.rst index a238f8ce..382670bd 100644 --- a/doc/en/index.rst +++ b/doc/en/index.rst @@ -30,7 +30,6 @@ General presentation intro regles - applications divers Licence diff --git a/doc/en/yacs.rst b/doc/en/yacs.rst index eaaad7e5..c5587be1 100644 --- a/doc/en/yacs.rst +++ b/doc/en/yacs.rst @@ -33,7 +33,7 @@ The main boxes are: DataInit ======== .. image:: ../images/yacs_a_01.png - :align: left + :align: center :alt: DataInit :width: 158 :height: 61 @@ -51,7 +51,7 @@ The box Etude_Initialisation launches the component HOMARD inside SALOME. It is - SetCurrentStudy : service of the component HOMARD .. image:: ../images/yacs_b_01.png - :align: left + :align: center :alt: Etude_Initialisation :width: 323 :height: 97 @@ -72,7 +72,7 @@ Tant_que_le_calcul_n_a_pas_converge The box Tant_que_le_calcul_n_a_pas_converge is type WhileLoop. The condition is initialized in 1: the internal block Alternance_Calcul_HOMARD is executed. Within this block, we calculate and we adapt the mesh; when the process has to stop either as a result of error, or by convergence, the condition passes in 0. The loop ends and we pass in the following box, Bilan. .. image:: ../images/yacs_c_01.png - :align: left + :align: center :alt: Boucle :width: 195 :height: 142 @@ -80,7 +80,7 @@ The box Tant_que_le_calcul_n_a_pas_converge is type WhileLoop. The condition is Bilan ===== .. image:: ../images/yacs_d_01.png - :align: left + :align: center :alt: Bilan :width: 158 :height: 63 @@ -94,7 +94,7 @@ This box is a node python that takes in input a character string, MessInfo. If e Loop for the calculations ************************* .. image:: ../images/yacs_c_02.png - :align: left + :align: center :alt: Boucle :width: 323 :height: 158 @@ -104,7 +104,7 @@ This box is a block that manages the computation, the adaptation and the analysi Calcul ====== .. image:: ../images/yacs_c_03.png - :align: left + :align: center :alt: Calcul :width: 155 :height: 87 @@ -131,7 +131,7 @@ On the other hand the output of the script has to obey the following rule. We ge Adaptation ========== .. image:: ../images/yacs_c_04.png - :align: left + :align: center :alt: Adaptation :width: 672 :height: 569 @@ -145,7 +145,7 @@ The first task tries to execute concern the initialization of the data necessary Homard_init_au_debut ^^^^^^^^^^^^^^^^^^^^ .. image:: ../images/yacs_c_06.png - :align: left + :align: center :alt: Homard_init_au_debut :width: 481 :height: 150 @@ -172,7 +172,7 @@ Homard_Exec Once initialized, the adaptation can be calculated. It is the goal of the Homard_Exec box, in the form of a script python. .. image:: ../images/yacs_c_09.png - :align: left + :align: center :alt: Homard_Exec :width: 153 :height: 141 @@ -212,7 +212,7 @@ After this execution, the process leaves the Adaptation_HOMARD node, then Adapta Homard_init_ensuite ^^^^^^^^^^^^^^^^^^^ .. image:: ../images/yacs_c_07.png - :align: left + :align: center :alt: Homard_init_ensuite :width: 323 :height: 97 @@ -227,7 +227,7 @@ One passes then in the Homard_Exec node to calculate the new mesh. Arret_boucle ------------ .. image:: ../images/yacs_c_08.png - :align: left + :align: center :alt: Arret_boucle :width: 163 :height: 152 @@ -240,7 +240,7 @@ The Arret_boucle block is present to only make forward variables because the inp Analyse ======= .. image:: ../images/yacs_c_05.png - :align: left + :align: center :alt: Analyse :width: 155 :height: 169 diff --git a/doc/fr/divers.rst b/doc/fr/divers.rst index 47b5e894..1644d335 100644 --- a/doc/fr/divers.rst +++ b/doc/fr/divers.rst @@ -7,11 +7,6 @@ R ********** .. index:: single: référence -Le logiciel HOMARD a fait l'objet de publications techniques au cours de conférences ces dernières années. Les références des principaux documents sont présentées ici. - -Référence principale -==================== - 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 @@ -19,32 +14,6 @@ G. Nicolas and T. Fouquet, Adaptive Mesh Refinement for Conformal Hexahedral Mes `Accessible en cliquant ici `_ -Découpage de maillage -===================== - - * G. Nicolas, T. Fouquet, Conformal hexaedral meshes and adaptive mesh refinement, VI International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2013*", J.P. Moitinho de Almeida, P. Diez, C. Tiago and N. Pares (Eds), Lisbonne, pp. 515-526, 2013 - * G. Nicolas, T. Fouquet, Hexaedral mesh adaptation for finite volume methods, III International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2007*", K. Runesson, P. Diez (Eds), Goteborg, pp. 174-177, 2007 - * G. Nicolas, F. Arnoux-Guisse, O. Bonnin, Adaptive meshing for 3D finite element software, IX International Conference on Finite Elements in Fluids, Venise, Italie, 15-21 Octobre 1995. - * G. Nicolas, F. Arnoux-Guisse, O. Bonnin, Un logiciel d'adaptation de maillage en 2D et 3D, 27ème Congrès d'Analyse Numérique, Super-Besse, France, 29 mai-2 juin 1995. - -Estimateurs d'erreurs -===================== - - * A. Ern, S. Meunier, A posteriori error analysis of Euler-Galerkin approximations to coupled elliptic-parabolic problems", ESAIM: M2AN 43 (2009) 353-375. - * J. Delmas, Stratégies de controle d'erreur en calcul de structures industrielles., Thèse de l'Université de Picardie, France, avril 2008 - * S. Meunier, Analyse d'erreur a posteriori pour les couplages hydro-mécaniques et mise en oeuvre dans Code_Aster, Thèse de l'Ecole Nationale des Ponts et Chaussées, France, novembre 2007. - * J. Delmas, P. Coorevits, P.-B. Badel and M. Guessasma, An explicit estimator for goal oriented H-Adaptivity with mesh optimaly criteria, III International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2007*", K. Runesson, P. Diez (Eds), Goteborg, pp. 93-96, 2007. - * P. Destuynder, B. Métivet, Estimation d'erreur explicite dans une méthode d'éléments finis conforme, Compte Rendu Académie des Sciences Paris, tome 323, Série I, p. 679-684, 1996. - * P. Destuynder, B. Métivet, Estimation d'erreur explicite pour une méthode d'éléments finis non conforme, Compte Rendu Académie des Sciences Paris, tome 322, Série I, p. 1081-1086, 1996. - * C. Bernardi, O. Bonnin, C. Langouet, B. Métivet, Residual Error Indicators for Linear Problems - Extension to the Navier-Stokes Equations, IX International Conference on Finite Elements in Fluids, Venise, Italie, 15-21 Octobre 1995. - * F. Arnoux-Guisse, O. Bonnin, L. Léal De Sousa, G. Nicolas, An adaptive finite element method for turbulent flow simulation, ICFD Conference on Numerical Methods for Fluid Dynamics, University of Oxford, Grande-Bretagne, 3-6 Avril 1995. - * O. Bonnin, B. Métivet, G. Nicolas, F. Arnoux-Guisse, L. Léal de Sousa, Adaptive Meshing for N3S Fluid Mechanics Code, "*Computational Fluid Dynamics '94*", ECCOMAS Stuttgart, Allemagne, pp. 201-208, Wiley 1994. - -Applications -============ - * S. Meunier, R. Fernandes, Mesh Adaptation for Coupled Hydro-Mechanical Industrial Studies, V International Conference on Adaptive Modeling and Siumulation, "*ADMOS 2011*", D. Aubry, P. Diez, B. Tie and N. Pares (Eds), Paris, pp. 337-338, 2011 - * O. Hartmann, O. Bonnin, D. Gasser, An Adaptive Meshing for Turbomachinery Geometries, "*Computational Fluid Dynamics '98*", ECCOMAS Athènes, Grèce, Wiley 1998. - Evolutions du module ******************** .. index:: single: évolution @@ -77,57 +46,5 @@ SALOME VERSION 7.2.0 : SALOME VERSION 7.2.1 : - Documentation en anglais -Contact -******* -.. index:: single: Contact - -Gérald NICOLAS, Responsable du Logiciel - -Adresse : -EDF R&D, 1, avenue du Général de Gaulle, 92141 CLAMART Cedex, FRANCE - -Téléphone : (33/0) 1.47.65.56.94 - -Email : Gerald.Nicolas[at]edf.fr - - -Thierry FOUQUET - -Adresse : -EDF R&D, 1, avenue du Général de Gaulle, 92141 CLAMART Cedex, FRANCE - -Téléphone : (33/0) 1.47.65.41.45 - -Email : Thierry.Fouquet[at]edf.fr - - -Vraiment divers ... -******************* - -HOMARD est un acronyme pour : - - Outil de - - Maillage - - Adaptatif par - - Raffinement et - - Déraffinement - -Notre mascotte était toute trouvée dans `la ville du homard `_ : |M| - -.. |M| image:: ../images/mascotte.gif - :align: middle - :alt: Mascotte - :width: 144 - :height: 94 - -West led the aaaaaaaaa |H| ffffffff |S| ccccccccccccccccc. - -.. |H| image:: ../images/mascotte.gif - :width: 144 - :height: 94 -.. |S| image:: ../images/dec_tria_1.gif - :width: 399 - :height: 88 - - diff --git a/doc/fr/gui_create_boundary.rst b/doc/fr/gui_create_boundary.rst index 0a4cd7aa..c16a7b3a 100644 --- a/doc/fr/gui_create_boundary.rst +++ b/doc/fr/gui_create_boundary.rst @@ -45,7 +45,7 @@ Au d .. 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. +Il faut créer une première frontière analytique par activation du bouton "*Nouveau*". On aura le choix entre cylindre, sphère ou cône. 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 diff --git a/doc/fr/gui_create_hypothese.rst b/doc/fr/gui_create_hypothese.rst index 55689453..501ea181 100644 --- a/doc/fr/gui_create_hypothese.rst +++ b/doc/fr/gui_create_hypothese.rst @@ -49,8 +49,8 @@ Pour le choix du crit - 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. + - au delà d'une valeur absolue ; toutes les mailles avec une valeur de champ supérieure à cette valeur seront raffinées. + - au delà 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. @@ -77,7 +77,7 @@ 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 peut restreindre l'application de l'hypothèse d'adaptation à des groupes. Ainsi les mailles n'appartenant pas à ces groupes ne seront pas modifié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 diff --git a/doc/fr/gui_create_iteration.rst b/doc/fr/gui_create_iteration.rst index ce4d4985..5590d862 100644 --- a/doc/fr/gui_create_iteration.rst +++ b/doc/fr/gui_create_iteration.rst @@ -60,7 +60,6 @@ Ensuite, si une hypoth .. 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. diff --git a/doc/fr/gui_create_zone.rst b/doc/fr/gui_create_zone.rst index 699c957a..0aefd666 100644 --- a/doc/fr/gui_create_zone.rst +++ b/doc/fr/gui_create_zone.rst @@ -53,7 +53,7 @@ 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. +Le tuyau 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 diff --git a/doc/fr/gui_mesh_info.rst b/doc/fr/gui_mesh_info.rst index 693a7a2f..3905fc8f 100644 --- a/doc/fr/gui_mesh_info.rst +++ b/doc/fr/gui_mesh_info.rst @@ -50,7 +50,7 @@ Le maillage 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 + 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 ================= diff --git a/doc/fr/index.rst b/doc/fr/index.rst index 01311fbc..eabb1cf7 100644 --- a/doc/fr/index.rst +++ b/doc/fr/index.rst @@ -30,7 +30,6 @@ Pr intro regles - applications divers Licence diff --git a/doc/fr/yacs.rst b/doc/fr/yacs.rst index c639a0ac..dfd30d8d 100644 --- a/doc/fr/yacs.rst +++ b/doc/fr/yacs.rst @@ -33,7 +33,7 @@ Les bo DataInit ======== .. image:: ../images/yacs_a_01.png - :align: left + :align: center :alt: DataInit :width: 158 :height: 61 @@ -51,7 +51,7 @@ La bo - SetCurrentStudy : service du composant HOMARD .. image:: ../images/yacs_b_01.png - :align: left + :align: center :alt: Etude_Initialisation :width: 323 :height: 97 @@ -72,7 +72,7 @@ Tant_que_le_calcul_n_a_pas_converge La boîte Tant_que_le_calcul_n_a_pas_converge est une boucle de type WhileLoop. La condition est initialisée à 1 : le bloc interne Alternance_Calcul_HOMARD est exécuté. Au sein de ce bloc, on calcule et on adapte le maillage ; quand le processus doit s'arrêter soit par suite d'erreur, soit par convergence, la condition passe à 0. La boucle s'achève et on passe à la boîte suivante, Bilan. .. image:: ../images/yacs_c_01.png - :align: left + :align: center :alt: Boucle :width: 195 :height: 142 @@ -80,7 +80,7 @@ La bo Bilan ===== .. image:: ../images/yacs_d_01.png - :align: left + :align: center :alt: Bilan :width: 158 :height: 63 @@ -94,7 +94,7 @@ Cette bo La boucle de calculs ******************** .. image:: ../images/yacs_c_02.png - :align: left + :align: center :alt: Boucle :width: 323 :height: 158 @@ -104,7 +104,7 @@ Cette bo Calcul ====== .. image:: ../images/yacs_c_03.png - :align: left + :align: center :alt: Calcul :width: 155 :height: 87 @@ -131,7 +131,7 @@ En revanche la sortie du script doit ob Adaptation ========== .. image:: ../images/yacs_c_04.png - :align: left + :align: center :alt: Adaptation :width: 672 :height: 569 @@ -145,7 +145,7 @@ La premi Homard_init_au_debut ^^^^^^^^^^^^^^^^^^^^ .. image:: ../images/yacs_c_06.png - :align: left + :align: center :alt: Homard_init_au_debut :width: 481 :height: 150 @@ -172,7 +172,7 @@ Homard_Exec Une fois initialisée, l'adaptation peut être calculée. C'est le but de la boîte Homard_Exec, sous forme d'un script python. .. image:: ../images/yacs_c_09.png - :align: left + :align: center :alt: Homard_Exec :width: 153 :height: 141 @@ -212,7 +212,7 @@ Apr Homard_init_ensuite ^^^^^^^^^^^^^^^^^^^ .. image:: ../images/yacs_c_07.png - :align: left + :align: center :alt: Homard_init_ensuite :width: 323 :height: 97 @@ -227,7 +227,7 @@ On passe ensuite dans le noeud Homard_Exec pour calculer le nouveau maillage. Arret_boucle ------------ .. image:: ../images/yacs_c_08.png - :align: left + :align: center :alt: Arret_boucle :width: 163 :height: 152 @@ -240,7 +240,7 @@ Le bloc Arret_boucle n'est pr Analyse ======= .. image:: ../images/yacs_c_05.png - :align: left + :align: center :alt: Analyse :width: 155 :height: 169 diff --git a/doc/images/yacs_01.png b/doc/images/yacs_01.png new file mode 100644 index 0000000000000000000000000000000000000000..f2d62166876ccb1579ec0a3298c842b9c5059277 GIT binary patch literal 18561 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 DbBibB literal 0 HcmV?d00001 diff --git a/doc/images/yacs_a_01.png b/doc/images/yacs_a_01.png new file mode 100644 index 0000000000000000000000000000000000000000..9e29132c2c20eb7af7a697058f3f65cb4c997c73 GIT binary patch literal 1718 zcmV;n21)seP)SGzA;UQgAMmuDVbluDrs&-qZo3e}zMU*lX+SC@A!Xy+# zH!z#7W@Bb(a2uwG%pssSAK*ltQHNM?#KZ?WFrtNae_TCW+smu>@;di?Ldd3jqc>c*9)*%wU0~MHW8wCiuK~xaxsni~1l7dBJ!1pg62-$SZ?k z4P~7iUOP$)DbK55Qbu%Q6!liGN@o%cJ<^JF)LV92n}lB4^1KRRhLA~N<*600JiRKt z=s-1-Xy~DekwJCYZEXn6Fp7Ce003czko+ZLU1=#gP)+t^?6x))JVHhmEG@DOKw1M~ zU|5*158>-WO!XhTATs2KJv;k!X5s)p?K943q(55pI6|fgXYV^)pS0Yvx3{;Qtv$Kn zi_ZyySo%>M^O!vqG)R$03$A3XfiP62S7v%=8b!vd=BooO(!;}37Wu~JuXdPre*=xa zK7`+7-aN^)%8J9_X{wP~PU}F$*N4c-PMskaVRY%JgycRrFGHk-}0`ixiz9%1XU0RXHItpobvFueRcc+h^V>WFqj z!t&Uaq@|FL$f)YywdKcU7M;fQ78n(UfKZI5cQYQ&LGmTJaN z8-JiC3paCodw%l>r5V%fX^@9`6$ zXI#8GdVVN5{GoN|C)7A29L07;Q*~4Ji`mU5nibm=q)~2^mnD@M{fs<*w^-ro@Pg2S z-iJ{Hb(cl(d2w-A87os?0Dz9vj_AZFJki(_SY>Jz{dR@4-YH#<3?~-liRWsGeb2RmTT%aw*If-fGvkTXy zRcVzaxn^6Ztt8j1(kh|-Cw-AbF+1;E))GyOY5k9+(X_sB*_IFTFXyK0Pj0B|K9SIA z?J}Oucz@&Ky@q|z7%Pg0f6nF7#%C96~od5s; literal 0 HcmV?d00001 diff --git a/doc/images/yacs_b_01.png b/doc/images/yacs_b_01.png new file mode 100644 index 0000000000000000000000000000000000000000..6fc0e48f575efa351a4cdd7cc3de6afc1be654f5 GIT binary patch literal 3984 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 GUi}NJ=V5RF literal 0 HcmV?d00001 diff --git a/doc/images/yacs_c_02.png b/doc/images/yacs_c_02.png new file mode 100644 index 0000000000000000000000000000000000000000..d2bf5c889235565dbb855791eccddd2dbd5cd26b GIT binary patch literal 8011 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

`7F? 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 D5tABu literal 0 HcmV?d00001 diff --git a/doc/images/yacs_c_04.png b/doc/images/yacs_c_04.png new file mode 100644 index 0000000000000000000000000000000000000000..d01612e76e40a59d14e7542d04c1cee315749441 GIT binary patch literal 30087 zcmb@u1z1&UyETk~AP9&ED4l|&(v7qh);ZUpJ>4#`D#=l`Jleb3(e z-RJ+#cdqZc6xLeIHRm(uymO3kPhTksAtVGW1Q-|?B;oh`A7Eha$AJHg@b|$d=On#h z;MW6dUSU~yc=+iB$)DiuOB(@28yRyw8+%PFT^M~cb5mVvYi%oCT{CL~bDP}o@PI1I*&Mrz z*CFIQ?{KcaXN$_GABqOnCZ#`9VFrG~kc-AX4ULK#AL|8gK1B{^+~}K|&sS{Uy~7xe zjK+X}*dc~D=3iLUz0Br*(4(#ezn8#B{lneE+* zMihtFIsDMluZ$!x{iUHrlUVmQbOtL znaFgJqn47RHVZoj_n|CEFQ6}#Mf&{h`M%mxSWjpHR8_$Rw?Bb%1)npt=5TuHYAaJR zQL4$$ujKKP;0g11aNuK23?`<<=%dA{gNq?PM{QyW6S4R1*4NTE7-& zb5Fz}YyNA<38s4^X8^OGlDn%~{9dJs^jl%sYjAb*sm5u?d*-Ot?7pp&56?tY2coA+ zK!ki#N&4cMY2(?yu-Xpo>TDaj-nO~6Ms>Zvb&5GvVp9Vbl&xG(X#12U3&fuWeS3S_pS!5c|5+)w8kOWZBB2Cj74Bds>e-Qc++GXXI&<3 zeQsH#kc2|kFYEMN_$4I{W5OT}!B3x+x(#=7H1sCT_1v@6u~}S%9ga7luC?3j%S$V0 z=+l$hl{x1w^q+k%5P9}6$hJIr$1<$?c_|DvlbQA4qzsd%6JkGRTZ`F;rq#Qpc(v;V z`^ljD)}v7(QgSjmO7WbM*t@}Scar$#UQ=jH!%mr2PSRLX;(#asU0Io&o-RGeVr zYCtWAt%Bmn$h7z~Ru6cla8`RoX|&^XtIPs0o_8;ezV*Fjxbt91q#;)DNr#WkF9-hC z2Mm5>F4xA)+*|`&IakMa#B^KM^tErY$k-#WAIGfesmHmH(^1UPtgLqgQW+m=@Z^oa z-5KE6S{2D*>h!4-$>S5=`n|DYXGE3Vul=eA^;yc}fFrwV{yxy%2O%K7ymJ+vLtu_# zuNI$5Cc5MonyPsWmP2uxXu}o7&gy7jq{1kGzN#J*5CHarwL4mF-P^t5^=&yh8_TW% zto0q1*%xqlDd+c4@I51x^}B;?6UN^e45#k!IWIlF{1n&@hI(u&)jG``yc%23VF!V2 zD$IofM<80oWzB!9mN~cfh|Xo+-Q$o7j<+KR-C`*K(hE12yg2V_XQ|ZzUlp9$ccRHuYa#Pm&q0W*DU}1> z4-Ar?WREDs8*(-mH~XLJyzoBVA&UH~Gr3>V5ub5yj8uo^#Grta2~0nHi8{O^H%G~J zGM${ZHT?36=m(6aye(RxHiQkE*lId7MD8?T!>pjKux)3)6Xp?r!G7y~^q+5Pnl)HU z`6)&GE*kFRsx(7M`=%)H)gnTy+ERsCKg>j(A!7xOFhN*uLmcD^~Ap7m(BKyLE8l5DsrSqo>8kU&(2^4 zt>P>qF&YbZgRNp>@6usc;ek!lW02Y0=HBX3XmV$fpD)b9#yuY~9rrTZd|wV*o74<{>psypUze zf%d^tZ5tVcRIR_dzyaw$axITGabMqdXI--1tNN;;Fh<7F!&Nc7iFS*C!*7fJ(2hnv zYi;77xVKJ!PP@_}DiJHg8CA$dZ=!ELPj9QBALXnItc}~}nDs_;jWzR2*0`;=y=QTk zc=P?hbi-CaVA9Ky_%e30z0Ip5yJ_Mp@iX77K+~Qd2R?=chMP!ZnbqmnGW#g#I>;^A z<3}0+gZE(A!Xq`FIxnF25zlRgeAHXcsNKw%m&H zue`+&mK5~Lk7F@Z?kwNf>*(ixtSAPbor59co{dSjZm{`0N|v>{u9C?G9sM!NG4|V` zo5kHqpM60Aufp)*jy!H99i_8uAQ!~!B=0Ea0je-Qy(Q1d`hXRcP zNWId)Ho>rTMm421Hl<)Zm+v#7Vkm?)BkP>3O6=VZb82eIawDa`t-Ud9Td&s7IYR(L>GrgZV_$H0&ZNh!^g zKYN7z;>E>9{_E$<-AeKntIJ)V_WI&A!V*UF+Mc6h4D=c(A(b7-tROcb*Lc?;8{>2x zcB89;3YZPvQSytimN2I&FT8?3B}ONzhK0eRLNO{w3dVwzH$rsvarI#p1a}KHY{>D-`e@fe3 z;~)rZMMhN58@F+6kT}YfJB<1Gmo#t>EPqICcWB{<8y}HXm@QCkuwg=Hc=INW z)~~zFRb_FhJ-EVb^4)wiQ`eX;g4uM;NBv!1*m=6$*h87I;Y`U2v$=P)n?KhoSV`6O zJfbFFWT5U&snOOSSOwbk+0Z{Pj*clVoUIDG zW-TU&ot}(N+i~qnkNLiI$@caTb*%Y?O_)>N6;}onj+M>Dv5&tgC_lPH0xR$`hJxK2 zNw%%2lFM#v-DRpWx`1D)AR%Com1fL{B+lj@%)rMNzf=0}=>L}>o>14`;W9IsJ34ib zqGVG^@OPvx@Wp@Mi`8cyZ}*A9LEXlD^A%W_vDDFNUvTE~>(ZFw8#Ai049AIC?q}uq zU_Q0UkjLXob`JXw%jhw-^Bu0?SaXo}bCXLzrWhpeg7|GwRpnilF}RRtSt&&%R!fwF0_k}amoZ@=+mlF-2bXS>LW7`$tA)Ma=FzknkT-7CEANYL;?a?x+?ke zi-*94N@@sy|0_Hv{wX|ztF%_6_~QRvEM5&9#E;|_vldq|FXHN@-cIy$&myoUkf_hN z)dE%3fM&7vwyG={LLK^A!m^vqs5IyouGf7+h;ga%9|hv9L?3En;L_Hgv=?j8%-yJv zaK1#Xuv$zrBpuKBLCk$i^6@QUT8^^Vb-KDisA{7sy>n^OG*3pVn6<(xlY9W1_%qTV ztrZtg)@2df4gD|UouZ*jt(;rV4B-UNxYW32AfKa~qY5*y$thX^V8Z;=PE%e_3osO@ zKG=M9Io*jLh9x^V45Getctq&cy)t*5yAjA7_?XaJt%gpNj;vM7a(}lnTMHNMPqE2# z76aHP?bO!4`wEHB|LQBmX&9XXgv4wt#Kmn#x4TwE^<{V-Jow?~M~7Zni4@HaL3{?= zkI#uo0^g(7ll`%>VYWa=&2fLZ6@sL{77D^GN*7+4G(E7O?Q$iyezAEd;}WrxRm^x? z&r!y%`K^hopCXlAS@}`i*5X@B3Ut*)G?uYZ!9%kzhZ9@UmN`Vl_FB4{>FuvjD8OCn zL-|PtA+apiIF46Knzf7Fu0ltKN%~=Q-f4HyM!AZs=r@5%g7O9sD=K<7vr>C<1}MRCg7e^ zm>gio|5Z@`gZHTque;PMd3jPrgV#r9}hR<eKmFEpn`!<*^y!D6IJoIzhjhlV)*@YPY1XLmnhy}lW-7(cVahR}OlG1hzb1D+$ zF=1VW*+XDPc!IxU#@rgm=vyvhmd4ST`+0|TYYlhKUkUt2R$@?PfrGXtw+uI5Y*E`! z&m4HA0mql2YN)^|XdQCQM2rvW)+C@Dy>o0}aquw>b_I@;K~F`LN=K?qBNgBAw=Z6u};W3F|A9}^@$sRe znTI8!E3XkNdIJuy7#$y~7=s)6QJ}Oi-r2`l&%6h9)W3vz)xpPkX#YXTI!CbP>!@dS z%^4Z6?tHMr9;f|k+?2;tZQpv5ura%rA3`=Zu|oUWdsW%5Kgt3RXKQcBq>FGWcHg$Y z7CI8Gc{*<&-P+V~v}$gZYNnA}Qil6ZQh5rg&NbgJK`gr3(&{_^vK6ohpBPRy_vyhL zAK}yOhFa%nyGpyFw57jxUCACnb9Qj4^p{hLdmP@>@1u#yIv6_5>w*f9`+w+N`l$_B zi~1M1*IByhyK)Av><}WO_L{o;SJUDhF0H0|s?9MunM+1f>sC0}-@v3_B!BG#~V=0gc0oIa?!Fd^hKXYV&q2Pfegc4Cf-<%=~?O*f0# zdVRB>d6eF+$C=~k(zwxtJkKd>Vcv1$?KHUNNHe!EEFz&Ei6%SqUHZWpd(b#n0cXuM z%i&Db!K;fJe8pHdIjM`Q&O^|3!VwRXUEDxBp)&VhvGrS>%}}1trAY(D8FCtz_(nmZh?O#?7}(52fyTuXMvZWe z;QSLb-Z@L$Bc6e@dcw=Z-j4X9$0b@xbLT^hN;b>Q zLFl!ovLzPtwKh|F>B`^~5r)p)baR6V##+hO z;l5y?+p5$M(J2scDxxWM1BZeojKB4B44YkAV%yH?5LenRmPiicS187t=#=qHcnXOK(!==)#{R9xr1^4=KR~~57-|?_a z-r$?FD<8jEZpO6P0s~r*`Isa&~#F|7?laBjtsuhlcIVhjJa6bF!<$V z9O~O`^_BWX?M7UYF0Od#DiYm$=;MQeDwxL9GJU%hNNV)l%*da$Ka-t!>3w*ajEKac5kuQqzQ>f z(l|tj6@jJpjwb7$J@{GZQ{Us zSy3cwh>lRLf4umQ9wvhm-lnf=pMY&cPWZ9s* znlahtNM(V6HVTb5)F;De;vAUQx5CuSJA?)4)1RTle`il~XUy{`4?%BghT$@wVc;CO zJZ$c|$q>oG5X2)L@WUis@%-4Ol4e+cy4{(Aar==oa0|xw(A$vuw;&m!@%}RAxG|-5 zkT$O!T$T0JKOf?W$qHa7ygc<5WI zl@A^Y6C-6m&9go#@7+{y>ZhwuzX*M4v!n%yBam@b;~P4!f*5Dw2Xqm5NkJ!0Wivj| zo)lge+p^2b1aRe4GHa5r%!$0Pb!~+QVVsc zn&f|xkZ5c}@PM;AvP}Npc}DkR3bUVC_pWf;jq%6vX5D6n>^>dD0$0JkCkRD2|6gU0 zUQk}b^tLV>o;x}^o}8SFl)WSPx$iKt8O-i%c(rR{v`m|W%6p&YTn7p2tZp-ZOy%hZ z|An_E3fSO}pTD8t|0CS^N5cs!sD7+Il&Y4#;FwDMk*L1u8gvkto%Uo|csb3|^HrK& zfx_Zb&?DeJ%fMZwti{u;k+3W7I$sjU^*FZ~5c6Tm^l`7{@6yq~Ttz3&1QX#){yfMq zFa~csZGsY8fI~^Kv;1b&euMJ=_9Wnx|BQ@w?#3fN^k6as8^Dyo9DjfDQu52vzC-@p zi@W_YUGNkfxJiq5X4Z?iP<=1e2BpFeEoL$ilsas2C~vY9t%M{b0`%-h7hb%{?ox4d zpf85WDhzLt(v#46`{TnMe0dcEPv~UnG?IyOS3s@(yz*RJi|f$xPG9J=0|zM|-x;bd zM$OERO`78;8XOXsvqGR!Tc*bFSIOrD7YZRJ>hA#NN^T0n`QuMYpCW=0pGCYOqaQwH zol=g$wzn!Pzv5cL)`R@ub`h1tyID|K{V;UdGVxX0q~$I1AnxtlR}KGudQVp|_F&7G zHRij>5Yx*Q{+&;s$3`}NPt+H##}t3qc_n0B zb%x*8ucK!|Uzd}GUOVwXuKb-`IRae9xnujH){jMIlUh|}w8U>%nAmMS1D(Eai9)_U zC3@x?il!Zn*fm2YH@e8(jn{i&F-UgLAJQ~mc!OI`^VU|hnOS2u+>GyJ!A6B$f8#hZ z+<~6nUqdvfr-zCuvqgqSg&j)l)1YnW4{m^(!NM9KNh9#X@aGx1I;qy3`fOW`9Zt4h z->!v>#LweF^|@Uyybu6&DgJ`Fq_Nt~L=3*Ps2H_94RbtlJW9e3fW;Hh-)>ef(Aom? zvdD>Vg95TOb9>TB5C&S!7WF2#wR*#^LSA zSe}@u>J94CJ~~Fii5F~dF`Ej<5$)d|5oW%$U?U{Cw5TcA$-N}d*+KJ@$ds6)ht8fI zV$o+6n*UrrP~U>844s&Snf*Ao_P7^mE>jr1ig%*4FFbBG8%2%67GwPt0r`c2>w=4> zH8bcZ6;F$&+|Hhq}3@SJxl7DFdJZ5W8^J>&y>kosRVY_^>5;GYK zJBv(*s~b~WGT5ColD$uE86Ic7Of3nO(3FTjVpnojo^Q0&*iWY$YD`$=jCx8p>rCTn zR-IM!aq@rwpbmhLwdwQ-Yj0;kS=SzOoO(W9a$C=K?_Cs!iXwrUySAt>C7ZL+7xSXe zpOXvcV|aPEa8FU-ov&@LAER-0o6mhKWjQ{7cOm0}1Ma(+*qm~MPGoj=b?UGI8;y11 zQ{F6N=)6n)VQwMH>nZ>bOA)VRcHw&9+928Dj}9^hNu82ub-7K=L?a)Ic`iq&sOI4X|ZZ^I+6H2_TPk!vvdL2Sg(f|{Co zgU!BFQ3*-Ut%LmevI=;CamHZu;C5|6l9+h_mGu(9N>`gJ>}oYO)HGaV^)$(QCXF|d zLzchs<*ae@6Q*i8B?`W745y$!xwPDCyj=c0!`7!&79Bp2n#>!dS z$>Vf|LgvbCju+VV85tQd$Xt#GX8=>*V{ACYq=_>7@zs92AWA)1y*4;8uIAVu1TFLV zNR~Nm1oS$$>kaT%#YuH=`Mv*VgmhevGGn}c#_nOvJ}M_`ud#&Q1sCu8o(plZ!!tlE z)5Eod4Ep+GirJTxZ%yU1mxk6{u*LG!ORn73(by5AEB!*8ylcFvtzYZiQ~n!*-O}}_ zCJ^toGiL2)Qo1?HS_7L!=LX~Ej9_q7<9qE(ud&?mSpUc~p8_{XbzmTi=cAK=0QjSQ zHBM+M=@7a^%$D5I?#ufcx8J(_N|HUD739OuFBknsDmKEk+eepJy0`Aqwfx-|xY#9mb|CvI()@h?*Cfv4w|$$r0qNh(CTZy@rzJ zp}b^OZDqwu$bX{>uC$O*WS@$=0nPPu);Lh$d^!>A9dg{{J9q?MqF_paeE2UoC@j9u zkwg6s^^%ieo|P_7C-G)dx~qv~q$|tOD(I>52aTZ|c#i;-YP`qK^Ly?yi=~8hHsmg)z|m1MYsAYOT6_R|_B>J+}P~i~nOC z(3tfIW}x^E1<#L#>6$vG;v*X3XKS|~xCb-BTiOsF&KOr%6Zt8}QQamAnTeAPpTnUD z0Sgpfd9Po;Hk|ZmmpKSm+EsLC#xNe{*xJGOog!ga(sA~mr+Mxh4134@Ck0J#KBHir zVM_?j#LUc;MM`$G31UqMh5jNse_?&q?us+hL(j#bq@<)G6{#d;UT)Bc@bIMZdr1#O zfQkt3u@XlCQ`EuamtP{Hl^4ra5Kus51@!IAMY1X+vrk93_e*alarqEMJ$UD{0)Tb= zyRY2;>2Cxs3Ly9E%3oqz{*nj;`YrOmR`P5C5*rAlp&w8(GgV=!`75U{=ihYWfMUVv zU=L-UE{g46(0hQ=94H;kQrK_mQ5!K5^&eeE+u<$I+04)39;kF&6{ch7SoLlorVly7 zt=kH$()qtWTQz8M&Vn_*2P2+xC0)5L_f@Xk5Ab1@#hUxr6>2p3zLM_){gJfsa>LNH z`H4^o`AMFUlC{0T?DH4fF`sLO2#=P|AGnq;fm&0QT)V$>+a($Sr2f>!j_8@_E zw=Hozn#a}k0a?_k7WaH;g?{X!DI$`3LPT|a3^nZfH>%E zk=1AiWIOtd;PN+v#{1D5|EY=M&XO)%Z$xnO*4DR~Lv@-3j7QuH?a@L?^Q=kVMC&zz zLt5)lnvX;N#@(CUS1iq{kxxSpwIgGPKO&;lhy0*Mb}7v**2Pxo{<|oPH6QlViLgMs z{fh4f|L4m4vtcvA1#DA!u(}Cd4Nm1PeRE$D%Iq!bosLIcU5rzofdXw~a}(SYqLgQA z4m*!HS3;rIEzSA2)*%mA7j-#eBB+xg|o4-fhYVcy?nb$&;$vie9+8p@0JfsnI4`Zwii)yd0zb!l+%F^`Y{rv$&%g zujbP03l*kZ$5Hp&UV)(`i|!8r#ZbrE*5hUqlc*p>6+$vit+% z^*Z7sHd`$XQBnUItNFA~5r}-v+M>6ol7^GFj0_AH@`~8ktx+1fC!6MwJ;$`d{y07A zZY|?`NovwJXLECB`3TnxJ-0pUb!3uwh<$MZ@EYrt6yZwWr!L|Taxmq`3WHAm(60Ho zlya$tA79^dGAmR!H=A~R!{j6`F3yPSa;k1#EpV7l;BqZ-S>Fmb)o{m% zD$xl!J%pBfeH+x~&`R+%Hp_ITTlbhFE!jJD5&g)eG^al}>X7nc+bX@|j~+elhL;r7DBLaU|<4@!O$W(ac>gA(op5j)2! z5zOMfRL{4L`xig_qWYWpu3Y3@c!k!~=c~y)pK6)3td9s+YPfg5a#lkXb-CYOGsWR_ zxS&-fMka0$J}h0 zZeb|)eVF`y?b7ySN1wh|iHvUJ4jXe(hCetvugMYc1Y?GxvQewaC^W}Y+Xfv+{`#M$~Yv~WW@SQ zKhQsSvob9}@brzlt|a+$WIT@O2p`mEze}sVZwi2!z7rCLXBcs{@Y=4Y4&x=8 zhC{(qeU`H&9zC)h^-G#q1@{bwjbNj~uKC2WT(|9_78j*gCgWbumPY`MxYiwUpZ*#M z5}cr~hmlvEgSytbM(*kvk{~ZCJOvd&H*bUKDTZK?Q%QQWFETf-sWnre&O;6I`i^lY zYaUp@k(A!Zqb;Mxe?~;Y>k9|R7~dx<63&JRC@h#9??G0WcRrr}Ge&{uK-Dn3juQot zkf~~nM8V^_wLUY^DfuxAF6$4al@h%4f>6quKIxjb+Z|&*^S@-$Q=z{pNz+*bCQzJZ zS|{k4$1?~FpZgV9Gnh2yRWZQ5#D!s_>g~4srFxX@8{Wzf1I1Eiv!OZ-nHLF)_-N4~ zXsrh{7YGY~S4n@CK;8kw26Dex%EwsmzpUfnf>X!9h&eY=D+y!G*7@Qd*HAOi1GQ>G zC*4ebJxTI+ma^bvEX3 za#;c0unG;gS9@_2kXZLyt(^;{d3U$>i`Igp$L#yV&)R8m*)_jlaoc6!rr#}$QszFH zZr&{qQ3sChU?FDAxlZQt1u}vvqe#KU+&N8}TkpCo6*8 zId3ixGyAiD)^|C-4O?`jQqXO?CMfn3FsDYT2u_mO0z7O_6}}6VLaUfxqk?0w`Z4$< zGVr2A#)>-tvR{!JkSPAERIiuV_061WP?qwfgOk+Bb=7DUoVR+j zp>A%u+s%l`3CSM8MtGT2Vrpi%MRr^Ix{Y(;cX~`Xdpwu7&ck3c8*WrmC%}eDRESXY`!XFJ}T?;py=_7oxkS6)^g>a}mqu7v-!C#g#c=+t^` zFO?(Gw_%)yhRl9$8_ON(H1`CCJ$Mxq!;u2ZSV;-^#=i+tY5RL{zKTH|pNLk6|3qhE zq*gqTHl~B_1fTWwOxcJE6U|EU`_2KlQrDs?Zk-Tcrw#v^e~UOq0sxaw8D|%kOgA(} zBoD9)FKc%8_L5}jUVp46dJcaABh0m zlFHQlt#x5qt*-m9WsQ#Epe+;g2aMBJZMPYhvYN$&9ECKa-WvhNzv9?+E;&;x9^8J& ziSxKsQBRu}tVl3`4%bL?-J>O#&2}eE_7G@yNcrZS$?PvJS7FV6_57CQRY1HNO=|m_ zJ*7D;&*I^SKZowR7sOTDRsR&(I8c*CLfO3;J`SXz8?PcWn4g(|c*f;pZ(v2Lz-1ZK zictjuQWpiAIXtG$?xe;y{Vk`x$WM~y1(%(O=b1(nR;%Dxcs60~ z6Ivpv|C~lx=^Z?(zwpqPvoE6qzSSP@hDO{$M@<2gbj^EIs2S5oNmW>tR zgT4!=Q;OYks#%F6+grBfcly_TuHG?G*Ya*}=&n=GCVTD!n%0VC*}8C<5fH=T&Sf9b zw|Pn>D|V44=cQ<|IQv`KU6eaJqnNqsmYB#nnKpqg;8G67?ri5yW~@r-+#Q$ivP#C4 zQ>lC>Z%E2>`*ErGe0$~E+hMx?Zt_!pGhm4$`Ob)7(p1VKX z16&O%r@dgyQNF0XcMX62+%cmbDbg|0y}EDQ5^50KZ2^JbvS5>LvjV4f+W|P9uoLgC zQ(T-f``#NAk2&{t+i(1k&fGt!=5-K*F!EA3f9{=M)zxu0J3AXG6Fl8>;BcytBFEuy zcymamcz_buH*2@`2iuIrp<8t+#oH0)BY7g^a_T&{(&t_1_(j~+e#nBi15l0|yj4Bb zC_5ZyR&rCv*34KN*jZXWVeV`dhfw`sW0ma#$M2;0S6Nsv2A@JhpRFdVGyp!K96FB! zblTlOwrtq1l1btOXl7@}rQ~194qV;Z9y=SzHaV(G{pO}96Ky#B&^4j8S>@cUN8@FG zMCj{#XqgYiOw0hY1p_nB4hQqe?%}+-(aZlMi+3k($CU=u-FH&)%TCJQe6+-?FAeq$ z#|zAqG`)jGh09AX>0kz$q)|u=H|2|bA=?bjn`y6sq=X{1bTHxMK2Z3*bMuz6kEyqP z76a(;JAMKwb#h4oXkZ@qx^++jQ+?FyTm&>S_H0nYlQH2R`4-@?A*;IVyzdVNWR3U> zCRNDL{vy!st+iAC@F67yq`Y_5NO&Ao0DjmOC^i3r&0>*6aVNa*{h+KoH75SaE^WoW zg7RD<^i1*7DJc*F+M(FLkjeJ1T&uMAe?Io>o{J{N z@O@0E6~f}IEwPz*1T4<2jw`>E#-qIhAVFdvg|gsCpbX<3F6yILRlNEqHnC`+$A>}~ zUNdMA()14uWYTJ%Dtr9xim#75=Zsph_~>*>ey;0|&_Y%xao;uh$l!4D65aHxdI(T{ zTpIlcC&}bKsM4JsFZBnK zA$Qb|$QVJ$=jbpnH-lqJ-5babxE{B}eWcQ!1^k9|GL+jrYU^wu-UDX>SeWP)041)z zs#%)H-Z$QN)GG=$gubQWJKdg5c0k0A&2^zL6%Q;w`7M4Q*3G(&hJEyl<|*i!h8rk; z?QUTDxjVBU5BG9%=;kKTnRJ%=G8Tc&X&N`6kE4j`dgt~={aeynu$3CknYR7UInwK^ zQ0^(KO=Wc4(;J%@9u(J;SeowXAbC!)8uQcH*&k)K<(}zR6`eCZuPR+b=N)FpZ5{EL z+@lmk`>CmGb{6Ohe)Fq9os;_!O^I_74`?5YnKFK(MzKtplTYx^jrY&x+zy>jwpJFI zf?{IhUL4*$H>ZiB{DWE2)7vU7!Ha_w2h;o#q>tA-SbhW-@IJ<^%Yg#h+1Y-omgZoL zWTYia9O#n_dDwGv7>%-GTv=wjFNrr8%MG8c&y4l45?^n=-4!?RY`gb~V*BwFGqc?) zf&L~)Br9Y0WdBKT&+Z2RDs0Y?#(&q{jDtU{2cnT}qYV@q1z> zOfl}|-)C!v*|wwfjC2olCo#}Owe_U#u4hJ1(&D2atnc%dbtjhFgWK&O`;#}a4$0d7 zMUp$HNBur=L{~2=S3z`ZOKnZq8E!mRL4z~V%v6@wN=wYu)fN2Ym%WeM|99oCHMK3R zdYXH!eNvuk>m6%#4oI!h$L_W0=wW4Gx`AE-Nhdd_)#}kE;4`}#H^P|R(NP;dgxC%e zHOtr3RAWZTT2`y-S^P!ti#t9z_L?T!%F0nPYa<5_D zb^a9|OU2C3Dov1HBp;2xNuy#oOui-d>iHVoV7uNY6_qt!+aMTK{6Z^%!@k=p_fx%b z10?ZH6he^7f%2)8)mZrQ+hu%E- z`DNzmjk$bTopY$Nn4EnD7=kq1G*od`*6-^v8T05#OZkaz@Q-jAAcWuvhwGtu6OGO_ zr>c78o{y%tu2*A`eFeg537CY>Ygp(!}s#uI71sXs=rDeKt%KcU`i!_E; zmQ%q12x%*k?=7HYAl=Y>q_KN(5!#CwtD3s;zR*9Y!z8w+ zH~eMVW=I2?6w$bkD(pAx14?=)?P7Z9i}BXhWc(Ed;< zhBo_~<`oepfH8h+P^HeVIDs^L)>KoQ^{#?vJBxIjk4r4ML)2^!z1uKIyaGzB=NhQ@ z_m_lJD(fhi{-*Q>4NF>nd}&-c!`RgCnG&MRx8sExxcde1arc2P?|(E`;>l$6D(f?} zKat!0MwN4@dU|a?G0ztnS^47R(@yS#s66%3KGP$IbAO$`Qh0iw)$8X}%UZZ?j=OtI z|BRAF&W`n!wUAll<%(-#A`+#dVbVtL=on9yPv??7=5HqvaKn0Yg^Olt>ZtHeYs{Pt z(q8#;B-T;n=ikOyZ0i0zno6!u9awJndmzPcz@Gk%xiL8fm4myV2+jR_1{}e?c<7lF z&z#BRG31?04w5{;;PVxXTd43eh0D>VNtyw(+TIhU^BSxy)PK+VWoE$MzZcw|s*m`E zcNJw1a6(UTSiVI-pZ^BtpYh0S zA(wef3BZz1K``re(s|1gx)eNs+=GE#$RPv#9AL@tEjlyTt&G0Zl!-C8Zt66z;lLz$ zrkLdz{Z~z0P7;rT!&1Z`J9$Z;%}$>^_2C(xr8PS!X@5abO=0K<^joAnWlD z234PbX#p~1^;&x>i6aIhvXNktWL7@aps%C260~*4#H@O{F zvbX9Of?iLlP4h`KUHas2K6gC1<>d1Ec5U3a$(@pTtI+K}73chhZq|OB4xO>2weANe zN}jm8ee)hDmGRqp-bYu5_~HM;UQ`-f_ao@Xhddg6xlUdal2AJ|&KINuNhAK;HMFA* zhb?}5oRK6x_>y|}pegGKTYNWn6HwfuYeID{_rp1KG4MBc+q6t$d}gnSrB%WPswvVN z;wkHCY-rGGFEgt-r|wEdIOe@gqi4WdAeTO^^|LmbHU)m= za?lUi0+3O#31~uI<}iVi0Ak^u>mOrtW{i;)51u$m#s=Z;mJ&Tgs3#Cq(!zGw%?OM&nT;a zEI0RS31~yzVTgWB;hNjy?C2icP2r;WJJ$-Y&BzbP$BTw{(+v5iT9dxtdTMuSmkW8u z@|vBL+5U3>^qO;xz`cEcs=d5AyB*YR?*#6Czy_Ofn;8Nxh?ydhp$wz#u83B|qW9db zLJ|q?b&@?ia~t)*aicre#xsZDZCVy>M@?2~_j(Mxn zz|}g}Mkq}oJLGp8I~8s=Fir#@GmS63ABY;+Po>+p@piA?gXChCt_UK+eRA3vNA>^ z)&Hs7iv&Y=O}gyO(PAE0$5dq=pv$c_Gqc?*iGZ(=bAHDa5&Rzy7^(9X?=0S2s${7R za@{T;r>43fHNWxm!^XC>Gm~6JVx(VhCG{E^k?oJAcl?O|<82?GA8kS^CV244@28G@ z@G;+5swhVFaU!(NZW|+4!zLtwwo@@@HetMSBKA?iIa^(c!oV^Ppx~f#k6w+bnEU7& zqcX*fek;YZO6COAa8a!&mpPlN%_jx_4cCv}+U9k{Jf8T*Oh-WAWr$PQ0AJaEOjs`h z$)fyq&4G7J{28l|gp5j3KAQsW?W71=9P7G{J}DTf?!=@`IP{L0rMi@(kVV;*wJ%GoipmsAE>MlbY{|Tu5oR6IjJCb*^s)0#r z8$(S7Gr2=HEQxZh)8`)z;Zm29_RN`^+?M$yz>1GzRW`H!sj1LOZ!VX942B9n6dp?A zv4`7QM9jPJ!be>m3=99QPoQ4M(xDlB0V(f|DC7MrKjRz^Px&|&TC2oviWb>#=!$ydapJ(30sD&2C7qr>GTKTV0phPQqkO8GaXA` zfSR7-MUj=}dk2&C+nd+amyO=ukA9ul1eWet1=EE;ZDZHg_&nXh;d_llR;wISaWKd> zLO|p-!kKFv&sZ{DowsZBi`LgbiU3cOk(Z}SD4U_Hsc{0Cm74mZuAnEQBt3%t?gn+~ z=KEdd(z|or$N=FV5Nyc1prr}hm-R%xac)#PuDsz^8F;^a3im0;&o^&jg)Sf91 z&q$_`@qU#e7gHPFIa;9=*<7MkiB%8&rbD5A*vI#+F|8>k^35wLl@!!D94+;JysSwp zNZ#=*fuk@Lvo4=1IQeHyAgBFhMN4}yzUgd9)7>=Yn|YElK%L8WnyR2hXYQnTniwHw znL{gXxTo75!U~y+Tu}iHan5%I$yEKZ9*vHa&@ z)4bo@`SwOajQsTIf5Y>ySKA)j0=;2k*R7-4R`ALAz7(OL5bs z-9gd+e(H_P@cqx9+Ls1Pzwj>nY$}wHi2T)J?CI9mW9T74OOL;&P7O?fk#C1OS?w$` z=hE6rF!$1Z{#iC~cjn~K;oI2OOwd5-ox+#vvFcW-R(Zs6H?iX8X;qGMMOj%m7gtnx z_#2ej1J{{J|2~AAOWz76!jNqS+f6VUv+ESeQ;&i0MRt5C+X5!Z5MYYv_QTaU zSgDiT(Yau)_ttS3ypFP^&-se&=osMSzD-uISwa|Wucq!1#(R2yZ^BBd{xxPZnw41x zh~V9#m-W|k2ylR5PW{uw7&-DfPSTH;o4fMZ%H3Lb&*c%1+RU1morVdNW{NL8kVxN| zAYq|l@TlRAEUK@J_3AT)H65*%)g&EnjpK)ke48NL0`s_rRI2Qth_vHiknF^YF0@qr zMo@ew-t&7d2+fgIv89pw02vi7iz7(AjXJu~G&X-pWV?srPWUWRQ=BV7J&At+ZSUr?g_Mhn3mW6t}Ci4HM7cXiojXaD(89@Zft zVfz19*;huzv2ERUP7)vj1PFnk!4n8>!3mnsSaA0sjR$uU+!F{6A;D>+vBn#BYuur6 z3GNQB;M{ZHx%WHY81MaIbkV!3YFF*O=GtqnHFx@VPu?skpt^J%(9S8ZHD|dkmP1?o zbU3ir?*cV+54bF=HU7E}gh2|bq6RA~zT}Q99^|nBN;KfZab<@~80)_7B?Jp7-n3b1 z*!l?rhg{`(eUKCXhed?8F&v288y6(^Uhg$G)sbx#j2->It{~dIHxA;-KQy6VJAf)`ltv zyV`HV;49a|dnsHiWTDc>)9}2agxmsDP$wq)>MyygIs_lK`Mkz8$P-sg_&z)sPXC4Y z-COZ_W%+OO3hD3=jKD|md3vk7H>+Sp z(h@9q006fT#BD6|{@r_**C(4u4|6Q}H4+W)&-T5D9KWYo4;CG_OUL7yrdJ%d6Q&}c zG-hlm3ZzycH)qzG4%xY{5X&ARvde;vqjjeTKL;kvvvQY>Ya~}biM$&g_bS6a3@5{r zBO=)8FU3-MHnbPLAe4N0Hnkkc==+4MZcg%9D_X_2G}G^G1G=5(g4`ZlQ3y7+Do@8= z#9hh{akO725$3q%)xgEfDvNZ82Rpx4HEqrmVI%`g#3!B({*)Ni zvq#+B+dQ*NhT|jduu1Wox5<*;YHb&d+jXTZp<$ z4^|B%i9*fMBOKop)=IOMOhiD&uJo)beI{Qpnm?akQu?ZJk$$uW2qY0d6Zg)D>_4n|9ZW0;>cU$#>Z~8GA^!L9g~~;Vp=JkS>-sg=dBrQ z#ccmLt1eQ|{PY02?S(}khRVD6DDlZV2HvefCcL<(hHU1jlOFA0Qu;M5KbiMaP82=B zTD@%Z^56xOg{5ITcd;=Lhn05oYkH|4`Mdid7RPDJs8^!hR#Q488$A$2G!YCN(o+WW1q(Nw_k-eLTm|#{qeWi&R{MiU*6U^8%2d zQ}6l)AR|HAIkK1`%pv7${>WbBh5&((zRSDo!quV&Sr6sdaoNWtDg=$v=0znMfBR6B z%Q&48YTbQ{tz{>Ksadql?lg5bxsE*5X6VFf3! zd`%YHz&JTNugjYR2bOhxa{=ak0axY1FdH3IUv~d4aPkZ( zdN6aVoEjN$Lpg3!yUAJEjdXCi5+6Ge(k47w5BK$e$%8>uP@F==rwB+GRNu$amu5U8 zB#AQSv95}`t1T+Qx-p50NH18{WE`Pm?)wRy9{UGQ7}@O zn0ib?t@xc}t&YiJbt^SUTpou_AC=2L&E;j5egY zjD2ll4LUX&xyZ(ID6haAMDqOnd=tHat1)#*KqP>MAv0Yd&+}b=KH_*4?^=3pmL~U) zV#u~ost;kKAUM>s{C--a5pSIr!nm*fGemVsdBvg%;iA$iw;#@Y+?8;(l6Lza06(%F)4YNmoGhG0AYD@00fk>IJRe8xdL7YTxOi z+f`DudDwaMOg{ZurZ0Wlqf&9YWdd1{Cx}g`=}af|eL{%?W=CeA(VlEd(_5$*YQ$fm zjoQ2n(=)_WA!%r~FCYJ;Vv%WTD6f?eV;X%_k8?yX17{J`A}#Upz=;YqK~!zGs7ZwpL2`Cc z$l@djA8~7-hLH8WJbnXBFX|A)G)kcvvurSBiSKortoyWZp0dXLXkd@B94+G>ZAeeXf(gyiZJwVdu(z<%7l9NTCCwF1nmxhVT@~Cu zIwv&0`mcznqt@Iz4N@5UCnpoj$={@2lh<8W3RQEwSr8BjtSFdi91x+80b=qZ)-^P) z=Zp8FT9LaO+}%uk6?3@HIPcGfih1qY+0JzeJQBQ2d4PUln6>O*>&%?TWf8@p`pb|6 z00Qh>a>w#D*{k?;n^os5AL3d|b$m2&l#ls~r;_rCXw}k0t~O2OcWf20tu98E9F~rG z^NwVjzi;kV^V)B*uy>>|y`GfcqH;%YtbD!9_IDA;=@9hrh2)rP(I5WaDI3dVj#qm^@6}8VgX?LaQSy8RgIF-bTws9BbC;rM>6FgT26ZHG~+{ z-HgqqGCqMKRNm5^$pxntS6U4AWe1yFkS4D8cKE!lE&@gd^Xsp? zgz~#`dml*eOcGVI3qcYiY!pJwSxL^wwC?_T^JRkLB+PGyrxDqtorWGp^5hA3U9@Jd zDwdTG&=zwuX9QE@z2?e9;MRE%Jtr@!~d9Yj@e@xb_ayyr{YppDJVoTVMIhNK!5 z(O(5)Hg!&QD>*2TPnSjly6XA2=s=p&50f5O>^bG4%uv8Ina=9ca+Q6{heA^$kd)uv z?e^u5*D+os&R{&A%&a4}YRb#YOZTsx-d{mJpcuLafqcK}5d#BIh+81Acd4Gno)*N^ zKn(-^l-^XY_?(h(myqY;9+2Y(TEA6TEWE8n`P+ea|0_qvM|I8Py7!kHw?RZ{=DaJ5 zKSbs5+Bau7gC=jBh|(!FSeV&Isp&bOffDPEIH%R^*JdTG0k=qBLK9mB<0$s6M%338ZbF0#c$@(x3gm-JhjK8{j!Mes_eJwOo9T zD5{+Lyvb4w(#lxRx0$-pjLg&LdE*0Qq&#aN7zVnacB>WXeRx}4``5u^reyRh27JaqZt=+p@mFv2D^~LSUjzg))V+Oqa%Jw-|hhm&1e> zRExXL(`WXHQCx#&NmR;g4r`Mii909Z+?X2Aov&SGPBW=8mox1Kef*tyI7e>kfR7AL zHuzukmK*ili5F8TUKSQkV%DyuDiWS$=Ra4d^4b`>$hK6{_Z&L<8O{Ew02ag)T;np= z5??O%x`#iOC~mf#J?ASE$zLcUF2%Y0cL356%Z@cl0w-VY9$<#-rQ?qOE@3dCMcUY0s4nA!)_7L4v zIo0bt&ax8;^qK-NW+>gKDA@1TeH>X@>J9cAT*w0O)_J$@#&M*3Bo|7(#Rax0Hi%Yb~FO;u9(&x+Skog5qhiR6ulyH3?e zX+Q|o9hzAO=mh(T)+9Yt2u>Li^ibM&Zc6nh|2&3^(5C+uma_2t3AfC_G`{7R^ETP( z#G(|>mj$`yg{5DEGu%{SO;IB7FkqzWF)t%~hZErZdTtj5YDlq1xmW;<=ZFBtO8sq$ z;MHLSS=ls74ts#M7c}bWC~9dAcnM^(f46<4#JAlC+@>1HQi@6%nD<{EVg5>Y(GT`E z2!;qV!!xESLJ{VOT_@s&Z3)IY#G(u)PJ#s>IRbKfK9vU~fr0w8ZuM33Zds&y*Z=*X zDs$gpw0H-sb$+OIF_xY>AtmVpK3jkY&x6UF{ZHXE)$mu!e@fs!}C zbNz=~86{fdAM-aKYz0n8_|&-8N%n)xq|2}j>VV9G>gma2-3nG;&+MKOpkLmtM!a+r zOV-MNPTc&frgPTGn{i6jV8g4L?)u{raQ+FvWmc+GW3LwA}`OMt?qrjefW0HGo+0atoLS#zy(m1805{ zI*059JkA55VL0Hi0pq)bIRh94JrNTUu@Sp=Zf7UsOHGs+oBL2Zu4x@1=6wWd(0%(~ z={k|NOb$nFgWRt>qoj;-kp)TdB!%pi@^*j(0f;2CEo2k={IYX5rPtHL%C7mD2u1`l zt;@yz$Db}z4*Q0Gn4H!$-2E8F?G+VB;~qs|&6nvb!^O$&ki0>e6WiBS`H0)R0I*!% zO$W|J+R<9FY{)DJm&%ggP<_0B@5?c&8-k*-i{e(8QV;BjR$k(RMM<01J}I&*ieN;~ zu6>MG8Zo-L7p-9^ijVw1*G@~X@(&}DtGEq?F6FgUt@X_)@WIDcjs(266HLPn&EfFzD2vOKbe=P8T{rF{k(2`s7XEN`FnAp4u@TW#x>B z8@UAG5Kcg>Fk2OA)O z;R-Ij-F#yJ)bqma4^yyxPy;BAO+xjWme^bxlAY& zVrv9t>Ic1f!AB)wo26$%a2I6Qx1l*_FVy!$q+78kC+bG

w`n$@R}~sXp^f-t-iE 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 a*A$JGDJ-s~i?qNXNJUBGF-pNK literal 0 HcmV?d00001 diff --git a/doc/images/yacs_c_07.png b/doc/images/yacs_c_07.png new file mode 100644 index 0000000000000000000000000000000000000000..5b363b4abd4e87fd284fc65419a5d9e48aba7e40 GIT binary patch literal 5023 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 literal 0 HcmV?d00001 diff --git a/doc/images/yacs_c_08.png b/doc/images/yacs_c_08.png new file mode 100644 index 0000000000000000000000000000000000000000..fcd0527378e353d257fb3dcf8c9bdbd46dd84cb6 GIT binary patch literal 3447 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 literal 0 HcmV?d00001 diff --git a/doc/images/yacs_c_09.png b/doc/images/yacs_c_09.png new file mode 100644 index 0000000000000000000000000000000000000000..8f1282bad77d5a43138cceeb997113564063c048 GIT binary patch literal 4461 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 Kqg4HA(EkCTz@WYW literal 0 HcmV?d00001 diff --git a/doc/images/yacs_d_01.png b/doc/images/yacs_d_01.png new file mode 100644 index 0000000000000000000000000000000000000000..3963ecc9f1d1b67bed3a9d6e92a26a0d4a6e2c26 GIT binary patch literal 1833 zcmV+^2iEwBP) zdr%Wc9LG02Ob|pAwNo&Lhcsv_U~#GzLGUpcTG}CMgd)R3`@kv+z7Pfyqyi%)P;?4T z5#v;}BI7F#uc*8fivo^NOADhIV3;}xXtgyONczV*=Rxy;O9-%cpJABIH+#E#`{j4H zd$&8#q*5uMKoO(yZUDttL0O9|l(ooWg8$&s%o?wDQ0R-MMQ;XACd0ls|6!TI8$+Qt zxQ)J8dbqWCB-s@NN?#l0qf+Pdk_nWC9!Z4>Ds}z#Hc)3RtcH=wAW)g)K*g{sp{a!z zY6z5u9=rfgFw|iE_BMtJYbDtg#HxY7V44k?ooF4C?9tIyEpb=>UVMKvQ<|~R(rYFGtJh2 z?%n?I?S&yKI?mkO!tWEV^w9%iEuY9pYos3gJm{8mkNqCfDqUZ;613KYVFCa!GB#2w zh}+hos7_oXo^7v z06_jyKB@!9XYwPHy*zy?Z@!bWh71UGhHvm(#g4>ufugU_w=B9$Xe%@_d2814nB}={xq2H$VfStP4SZBH zB6X7-Ove(uz))UbC``xfN&NreNY0n6SXN<`VZ%hWKb!5(hH0;OFPQM=dwcV}HJ3KA zo<>pV5z1O*p{zv~%35R@D{Ey3WEvI#P+;$C^@7UYrlJ;ER7`%>M)|;H8M=V|5hWES zz$GITc(9PwZ*SwF;Wvi3G_$A`jguN~qc65tmAW7!3uP^`47nf&2M3R1Qz-O8K|ujb zP*IC4Lq^EWu{ZF;DEuyi$qT6lhT1oVz#N&bIR$RtLKwGqt7y36(0 z$GXe)`s!}Y<(xfO6#3)U{7!TR>V`*q)QYo;;W~1qLMhHN&`z5tUA>O(_J*koRkSZw zHKCi_zS6Mtvn98$G?+3>G5vY(ixYc){^M5bthv_V>6`7{>;M1_C3i1=FMj-}XZjpV z|0qANAP;pSMg%i5V2^+4v8xOVMrhg>E~`F(0lj73HUL0=XHIWdUtYB6QFDjA3u{Ye zsI@JLRwnC$_Ne8>bH!Q3iUEZ2PO&<&(2@sD6CI&SZsHOU#RmblLhTj zyKsfGwe8H@?Z>U>&RpQZ#`OEuzt>&5b3EoG0DxxnX8+v^-tsd^MGkIu?wrNp>6dY#sZ-f8iR^`}G*`l2 zHj2HxB!}SEX#ha*L0&<^*|?Q_Gs~$P;{u>)=fcViIoki%(>bhJVd)_n#L-l=DKA=7 zo_F2em9-@^lyHN|hKglxh`ss2h`twz{L3F|*&8XKtVI^eT4bTDMHb3hWTC7@7P44N zhMCVW$YL!CQSmeiKD97>Q^pjsg)C6_ppk?ffgZ!HMK4}S3yu1pdZ