2 Copyright (C) 2015-2016 EDF
4 This file is part of SALOME HYDRO module.
6 SALOME HYDRO module is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
11 SALOME HYDRO module is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
16 You should have received a copy of the GNU General Public License
17 along with SALOME HYDRO module. If not, see <http://www.gnu.org/licenses/>.
19 #########################################
21 #########################################
23 * **Géoréférencement** : Le système de projection à utiliser dépend de
24 la localisation géographique de l'étude et doit être choisi et noté
25 pour faciliter la reprise de l'étude. En France métropolitaine, la
26 projection de référence est Lambert 93.
28 * **Repère Local** : Les coordonnées planes, **toujours exprimées en mètres**,
29 dans la projection utilisée correspondent souvent à des grands nombres.
30 Par exemple, les coordonnées en Lambert 93 d'un point du territoire
31 métropolitain sont par exemple de l'ordre de (400 000, 6 500 000).
32 Le repère local consiste en un simple décalage de l'origine, permettant
33 de manipuler de plus petits nombres.
34 Pour améliorer la précision numérique dans les différentes étapes de
35 l'étude (géométrie, maillage, calcul...),
36 **il est très fortement recommandé de prendre un repère local**.
38 * **ligne de contrainte** Ligne sur laquelle le maillage va s'appuyer.
39 Dans SALOME, ces lignes sont définies dans la Géométrie (module GEOM) en tant que "edge".
40 Toutes les lignes que l'on construit dans le module HYDRO ne sont pas forcément gardées dans la géométrie.
42 * **axe hydraulique** Ligne d'écoulement d'une rivière.
43 Souvent obtenue en reliant les points bas d'une succession de profils en travers.
45 * **ligne de crête** Ligne reliant les points les plus haut d'une digue.
47 * **partition** Zones et Régions
49 manipulation des vues dans SALOME
50 ====================================
57 Le zoom est centré par défaut.
58 Activation avec la molette de la souris : pour pouvoir activer le zoom avec la molette de la souris :
59 file / preferences (sélectionner le module SALOME) / 3D viewer / zooming style / relative au curser
60 Un zoom relatif au curseur est centré sur la partie au tour de la position du curseur
61 alors qu’un zoom centré prend en compte toute la zone.
63 Pour zoomer sur une donnée de l’arbre :
65 Sélectionner la donnée de l’arbre.
66 Dans la barre d’outils en haut choisir « Fit All »
78 Affichage des données dans les fenêtres
79 ---------------------------------------
81 Par un clic sur le petit œil à côté de la couche d’intérêt dans la fenêtre Object Browser
82 Par un clic droit dans l’arbre de gauche (dans la fenêtre Object Browser) sur la couche d’intérêt
83 utiliser les différentes possibilités ::
85 /show/ show only / hide / hide only / hide all /
90 SALOME propose différents viewers :
92 VTK pour les vues 3D (module MESH) et OCC pour les vues 2D (pour la géométrie).
93 On les retrouve via les onglets qui apparaissent à l’écran.
95 Principales étapes d'une étude avec SALOME-HYDRO
96 ==================================================
98 SALOME contient l’ensemble des modules nécessaires au lancement d’une étude Telemac.
100 L’application SALOME-HYDRO concentre les modules HYDRO et HYDRO-SOLVER au sein de la plate-forme SALOME
101 et intègre le système Telemac2D.
103 La figure ci-dessous résume les étapes générales et les outils utilisés au sein de la plate-forme SALOME :
107 Figure 1 : Etapes d’une étude hydraulique avec la plate-forme Salomé
109 L’étude se déroulera en passant par les différents modules de SALOME :
113 * GEOM : pour dessiner la CAO
123 * on crée ou importe des lignes de contour d'objets naturels (rivières, iles...)
124 et artificiels (digues, canaux, obstacles...),
126 * on importe des champs de bathymétrie / altimétrie, ou des séries de profils de rivière,
128 * on constitue des objets,
130 * on constitue des cas de calculs en choisissant les objets utiles au cas,
131 on regroupe les zones en régions (= faces de la géométrie finale),
133 * on exporte le cas vers GEOM,
135 * on ajuste le cas dans GEOM,
137 * on maille dans SMESH,
139 * on calcule l'interpolation en Z,
141 * on définit le paramétrage physico numérique du calcul (fichier cas),
143 * on exécute le calcul,
145 * on dépouille les résultats
147 Dans le module HYDRO lui-même, la logique d’enchaînement des étapes est la suivante (voir les différents types d’objets manipulés dans l’arbre de gauche) :
151 L’idée est de partir d’images satellitaires et/ou de cartes de la zone à mailler
152 pour situer les différents éléments de l’étude., Ces images devront être géoréférencées
153 dans le même système de coordonnées que l’ensemble des données (Lambert93 par exemple).
154 Il peut s’agir de capture d’écran du géoportail par exemple. (cf chapitre 6)
158 Les bathymétries constituées de nuages de points et/ ou de profils qui constituent le modèle de terrain
159 sur lequel va s’appuyer le maillage sont importées dans le projet (cf chapitre 7).
163 Les polylines (importées et/ou construites dans SALOME) permettent de définir les contours pour
164 le futur maillage et des différents éléments qui seront à prendre en compte.
165 Les poylignes splines permettent de définir des contours sans que le maillage qui
166 s’y appuiera ne doive utiliser strictement les points de la ligne. Seule la forme générale compte.
167 On peut tracer les lignes de contrainte à la souris ou les importer à partir d’un fichier (cf chapitre 8).
171 Il s’agit des éléments constitués par exemple de l’emprise d’un domaine, d’îles, …..
172 ou une région du domaine étudié à laquelle on associe une bathymétrie
176 La création d’objets "naturels" et "artificiels" permet de définir les zones à mailler
177 et les bathymétries à y associer (cf. chapitre 9).
179 * ARTIFICIAL OBJECTS :
181 Il s’agit de construire des éléments tels que des digues ou des canaux de géométrie connue.
183 * CALCULATION CASES :
185 Lors de la définition du cas de calcul on sélectionne les objets à mailler et on résout les conflits
186 de recouvrement des bathymétries (cf. chapitre 10)
188 Il s’agit ici de la description d’un déroulement type, des allers-retours entre les différentes étapes
189 sont tout à fait possibles et se produiront certainement.
194 Il est possible d’importer des plans, cartes, et photos dans le module Hydro dans le dossier Images de l’arbre objet.
195 L’idée est de partir d’images satellitaires et/ou de cartes de la zone à mailler, géoréférencées dans le même système de coordonnées que l’ensemble des données (Lambert93 par exemple). (cf chapitre 6)
196 Il est possible de récupérer l’intersection de deux images, de les fusionner, de restreindre une image à partir d’une polyline.
200 Il est possible de fusionner les images ce qui crée un nouvel objet « Fuse_N »
202 Autres options de traitement d'images
204 Import de Bathymetries
205 =======================
209 visualisation : si Z < 0: caché par cartes. inverser la vue, ou decaler Z pour avoir des valeurs positives.
212 Import d'objets de type lignes
213 ==================================
218 définition : lignes dans le plan XY, généralement utilisées pour définir des contours, des zones.
219 Il est possible d’importer des polylines au format sinusX dans le dossier Polylines de l’arbre objet du module Hydro.
226 Deux types de profils : géoréférencés ou non:
227 les profils géo sont définis dans XYZ, les autres dans XZ (XY)
228 Utilité : section de digue, de canal, de rivière
229 Une seule section pour un canal ou une digue, une série de profils pour une rivière.
230 La valeur Z=0 correspond à la ligne de crête.
231 On considère uniquement des profils symétriques (par rapport à la ligne de crête).
233 Il est également possible d’importer des profils au format sinusX dans le dossier Profils de l’arbre objet du module Hydro
240 rivière décrite par une succession de profils en travers, ordonnés via une ligne amont-aval qui passe par ces profils.
241 Cette ligne peut être l'axe hydraulique, mais ce n'est pas obligatoire.
243 Récupération de données de bathymetrie d'un ancien maillage
244 =============================================================
246 Il est possible de récupérer un ancien maillage d’un cas d’étude, en le transformant avec un convertisseur
247 intégré dans SALOME-HYDRO du format selafin (.slf) au format .med (format dédié pour la plate-forme Salomé en général).
251 A partir de l’ancien maillage, il peut être nécessaire d’appliquer une translation (par exemple +2 000 000)
252 à la position y des nœuds pour passer en système de géoréférencement connu (par exemple LambertIIEtendu).
256 Puis la bathymétrie (champ de fond Z) est récupérée à l’aide d’un script Python qui crée un fichier .xyz
257 (position x du nœud, position y du nœud, Champ Z associé).
258 Ce fichier .xyz est converti en Lambert93 grâce au logiciel libre Circé .
262 Ensuite les positions des nœuds des bords sont récupérées à l’aide d’un script Python qui parcourt les nœuds,
263 constate si ils sont au bord et crée un fichier dans lequel chaque bord récupéré est mis en forme pour un import direct
264 dans le module HYDRO (la mise en forme est celle du type polyligne, voir paragraphe 8).
265 On peut isoler de cette façon le contour de l’emprise, des piles de ponts, et les îles éventuelles.
272 Afin de mettre en place notre modèle de terrain, le module Hydro nous permet de définir des contours, des zones.
274 Les contours types polylines sont nécessaires à la création de la géométrie.
275 Ils permettent la construction de l’emprise du modèle, des îles, du lit mineur d’un fleuve...
277 On peut superposer les contours à la bathymétrie ou aux cartes pour s’aider, visualiser.
279 On peut créer des digues ou des routes dans le modèle à l’aide de polylines.
284 Dans SALOME les polylignes sont des polylignes (séries de segments,
285 pour décrire un objet géométrique) ou des splines (suite d’arcs, lissé,
286 pour décrire une courbure naturelle, qui s’adaptera à la finesse de la discrétisation).
287 L’utilisation de splines permet de définir des contours sans que le maillage qui s’y appuie
288 ne s’accroche à tous les points de la ligne : seule la forme générale compte.
289 On choisit l’un des deux modes au départ.
290 Puis la création du contour se fait par clic directement dans l’IHM.
291 Il est possible d’éditer le contour par la suite et de déplacer un ou plusieurs points
292 ou bien d’en ajouter. On peut également changer après coup le type d’une ligne : polyligne simple ou spline.
294 On peut tracer les lignes de contrainte à la souris, ou les importer à partir d’un fichier.
296 Pour créer une polyligne :
298 Dans le module HYDRO :
300 * Clic droit sur POLYLINES / Create polyline
302 * (ou MenuHYDRO, Create polyline)
304 On peut définir des « sections », i.e. des portions de polylignes,
305 ce qui peut être utile pour gérer des connexions de polylignes.
306 Créer une polyligne de type spline fermée pour délimiter la zone à mailler par exemple.
308 Dans la partie droite de l’écran une fenêtre apparaît :
310 * Saisir le nom de la ligne (par défaut le premier nom est « Polyline_1 »)
312 * Cliquer sur le bouton ‘Insert section’
314 En bas, à droite de l’écran, apparaît une zone de saisie : « Add element »
316 * Saisir le nom de la section
318 * Choisir le type (polyline ou spline)
320 * Cocher ou décocher : ‘Closed’
322 * En haut de la zone section, cliquer sur le bouton « Addition Mode »
324 * Cliquer les points de la ligne dans la zone principale de l’écran, sur la carte (onglet OCC Viewer)
326 * Terminer la ligne par un double-clic
328 En recliquant sur « Addition Mode », on peut ajouter des points à la polyligne
329 En cliquant sur « Modification mode », on peut sélectionner les points :
330 les coordonnées des points apparaissent alors en bas à droite sous forme de table.
331 Il est possible d’en modifier les valeurs de X et/ou de Y, ou de déplacer les points sur la vue OCC.
333 Le clic sur « Apply » ferme la fenêtre de polyline. Pour la modifier :
335 * clic droit sur le nom de la polyline dans la colonne de gauche et « Edit Polyline ».
337 « Detection Mode » : permet de sélectionner toute la ligne en cliquant dessus.
339 L’action « Remove » permet de supprimer une section d’une courbe qui en comporte déjà plusieurs.
340 Le bouton « join selected sections » est actif quand deux sections de la même courbe
341 sont sélectionnées (à éviter avec des courbes fermées).
342 Il relie le dernier point de la première courbe sélectionnée au premier point de la deuxième courbe sélectionnée.
344 Pour transformer une section ouverte en section fermée (ou inversement) après saisie :
346 * sélectionner le mode modification
348 * clic droit sur le nom de la sélection
350 * set closed (ou set open)
352 profils de digue ou canal
353 --------------------------
356 dessin grossier de la forme, selection des points, affichage du tableau de coordonnées et modification
363 Création d'objets "naturels" type "zone immersible"
364 ===================================================
366 distinguer les iles du reste
368 Créer une zone immersible consiste à créer une face géométrique à partir d’un des contours dessinés précédemment.
369 On renseigne donc pour cela la polyline (obligatoire) sur laquelle va reposer la face et la bathymétrie (facultative)
370 que l’on souhaite associer à cette zone géographique.
373 Remarque : la bathymétrie est facultative dans la création d’une zone immersible car on n’a pas forcément
374 d’altitudes associées à chaque zone construite mais on souhaite tout de même que les contours de ces zones
375 soient pris en compte pour la partition qui va créer notre modèle plus tard.
376 Par exemple, le cas des îles est typique : nous n’avons pas de topographie associée à l’île de la centrale nucléaire
377 mais nous souhaitons que le contour soit inscrit dans le modèle numérique de terrain.
378 Il est également possible de changer l’ordre d’affichage des différentes zones pour une meilleure
379 visibilité du futur modèle (voirFigure 13).
381 Caractère submersible ou non
383 Création d'objets "naturels" type "stream"
384 ==========================================
386 Il faut, soit l'axe hydraulique, soit une ligne reliant les profils pour les ordonner.
387 les profils sont importés.
389 Création d'objet "artificiel" type digue ou canal
390 =================================================
392 Le module Hydro permet la création de d’objets digues dans le dossier Artificial Objects de l’arbre objet du module Hydro.
393 Une digue se crée en 5 étapes :
395 * D’abord, il faut créer l’axe de la digue en tant que polyline (XY, en vue de dessus),
397 * Ensuite, il faut créer la ligne de crête de la digue en tant que profil
398 ((XZ, XY, altitude en fonction de l'abcisse curviligne sur l'axe)
400 * Ainsi que la section de la digue en tant que profil également (XZ, ligne brisée),
402 * Puis, il faut créer une polyline3D dans le dossier de même nom dans Hydro.
403 Cela permet d’associer l’axe de la digue avec le profil d’altitude,
405 * Enfin, il faut créer un objet digue dans le dossier Artificial Objects,
406 en associant la polyline3D avec le profil de section de la digue (voirFigure 10)
408 Pour un canal, même démarche, mais remplacer ligne de crête par axe hydraulique.
410 Vérifier effet géoréférencement
415 objets géométriques complexes (bâtiments...) importés depuis GEOM, pour constituer des zones non submersibles ("iles" ou assimilés)
417 Tables de coefficients de Strickler
418 ===================================
427 Constitution d'un cas de calcul
428 ================================
430 Pour démarrer un nouveau cas de calcul :
432 * clic droit sur le dossier CALCULATION CASE de l’arbre objet du module HYDRO
434 * create Calculation case
436 Première étape d’un cas de calcul, l’utilisateur choisit les différents objets métiers créés précédemment
437 qui vont participer au modèle de terrain qu’il souhaite générer.
439 Figure 14 : Création d’un cas de calcul
440 Dans cette étape, on sélectionne les objets à mailler.
441 Dans la deuxième étape, HYDRO propose une série de segments
442 (contours des différents objets choisis précédemment « nomObjet_outer »).
443 L’utilisateur sélectionne ceux qui sont pertinents pour son calcul (ils seront visibles dans le module géométrie).
444 Le choix des contours à considérer permet de définir des régions homogènes et s’affranchir de contraintes
445 supplémentaires dans le maillage.
446 En créant le cas de calcul, HYDRO crée une série de groupes de segments qui peuvent être utiles à l’utilisateur pour son calcul.
448 Première étape d’un cas de calcul, l’utilisateur choisit les différents objets métiers créés précédemment
449 qui vont participer au modèle de terrain qu’il souhaite générer.
453 Notion de partition : le decoupage en faces élémentaires ou zones : dessin explicatif
455 On peut regrouper des zones en régions homogènes dans la structure du maillage visée,
456 pour s’affranchir des contours que l'on ne veut pas garder en tant que lignes de contraintes.
458 SALOME indique les zones de recouvrement des différents objets pour lesquelles il faut choisir une bathymétrie
459 (si plusieurs bathymétries existent sur une même zone).
460 Il est possible de sélectionner une des bathymétries
461 (par exemple la campagne de bathymétrie la plus récente, ou le min ou le max des bathy).
463 Il faut ensuite exporter le cas de calcul en tant que « géométrie SALOME » (à préciser) : Plus tard ???
465 * Clic droit sur Calculation case
467 * Export calculation case = fabrique une entrée dans GEOMETRY
469 Géométrie: Module GEOM
470 ======================
472 Une fois le cas de calcul terminé et exporté il apparait dans le module GEOM
473 il faut se déplacer vers ce module pour pouvoir le visualiser et le modifier.
474 Dans GEOM, on voit notre cas de calcul sous le nom HYDRO_Case_N auquel est attaché le (ou les) contour(s)
475 choisis au moment au moment de la définition du cas de calcul.
477 Il se peut qu’on ait besoin de séparer certaines parties :
479 * Faces : pour mailler de façon différentes certaines zones
481 * Segments : pour définir les conditions aux limites.
483 Pour cela on crée des groupes à partir de l’entité géométrique initiale soit par un clic droit
484 sur cette entité ensuite create groupe soit en allant sur New Entity / Group / Create group.
485 Lorsque la fenêtre de dialogue s’ouvre on vérifie bien que le nom de l’entité figure dans Main Shape,
486 ensuite on choisit le type de groupe que l’on souhaite créer (groupe de points, de segments, de faces ou d’objet 3D).
487 Après on sélectionne les parties qui nous intéressent une à une en cliquant à chaque fois sur Add.
489 Dans ce module, on peut aussi définir des points fixes de notre maillage
490 (qui vont par exemple correspondre à des points de mesure).
491 Ceci doit être fait avant la définition des groupes.
492 En effet, on commence par créer nos points (New Entity /Basic /Point en donnant leur coordonnées dans le bon système),
493 ensuite on fusionne ces points avec notre objet de départ en utilisant La fonction Operations / Partion
494 et en sélectionnant les objets à fusionner
495 (il faut maintenir la touche Ctrl enfoncée et cliquer sur les objets dans l’arbre à gauche).
496 Une fois la partition créée on commence la définition des groupes qui nous intéressent
497 (y compris les points qu’on vient de créer). Ces manipulations peuvent paraître redondantes mais elles sont primordiales.
498 On effet la partition permet de créer un lien entre l’entité géométrique de base et les objets qu’on ajoute.
499 Ces liens seront aussi visibles par le mailleur qui va les considérer comme des points fixe du maillage.
500 La définition des différents groupes va nous permettre d’isoler les nœuds qui appartiennent à ces groupes
501 à fin de pouvoir les manipuler de façon différente plus tard.
503 Maillage: Module SMESH
504 =======================
508 Contrôle des lignes de contrainte, des tailles de mailles
509 Sous maillage /groupe géometrique
510 Maillage d'une digue, d'un canal,
511 Maillage d'une riviere (lit mineur)
512 Maillage des autres régions.
517 En hydrodynamique il est primordial de connaître la valeur de la bathymétrie en chaque nœud de calcul.
518 Pour le moment on dispose d’un premier script qui permet d’interpoler la bathymétrie sur le maillage.
519 Ce script utilise un algorithme qui prend juste la valeur du Z du point le plus proche.
520 Donc si on ne dispose que d’un seul fichier de bathymétrie on conseille d’utiliser l’algorithme de TELEMAC3D
521 qui fait une interpolation linéaire sur le quadrangle le plus proche en donnant juste le nom du fichier (XYZ)
522 avec le mot clé FICHIER DES FONDS. Ceci dit TELEMAC n’accepte pas plusieurs fichiers
523 (il n’aime pas quand on a plusieurs valeurs pour le même point).
524 A terme Il faudrait améliorer le script (traduire l’algorithme de TELEMAC3D je le ferai qd j’aurais un peu de temps).
526 Interpolation avec le Script actuel :
527 D’abord exporter le maillage en MED (il faut que des groupes de nœuds soit créés pour chaque région)
529 Modifier l’entête du script, en indiquant le nom du cas de calcul,
530 le fichier du maillage MED et la correspondance entre les groupes de nœuds et les régions définies dans le cas de calcul
531 (rappelant que c’est à ce niveau qu’on définit la bathymétrie de chaque région) Pour lui dire où lire la bathymétrie::
533 nomCas = 'Nom du cas Case 1'
534 fichierMaillage = 'chemin absolu du fichier Mesh.med'
535 dicoGroupeRegion= dict(NomGroupeDeNoeuds1 = 'Case_1_Region1',
536 NomGroupeDeNoeuds2 = 'Case_1_Region2',
540 Dans l’optique d’utiliser Homard (disponible dans Salomé) à fin de raffiner le maillage selon
541 le gradient de bathymétrie, il y a un deuxième script qui crée un champ Z,
542 mais Homard casse le lien entre la géométrie et le maillage et ça devient compliquer de redéfinir les conditions aux limites.
546 Si on veut donner la bathymétrie dans le fichier de maillage il faut utiliser le deuxième script
547 tout en changeant le nom de Z pour que l’information soit compréhensible pour TELEMAC3D
548 (TELEMAC3D s’attend à un champ avec un nom appartenant à une liste prédéfinie).
551 :ref:`ref_notionsPrealables`