6 ================================================================
7 Rappels sur la plate-forme SALOME
8 ================================================================
11 ================================================================
13 - **Module SALOME** : un module SALOME est un regroupement de composants SALOME. Il réside dans un répertoire
14 dont la structure est standardisée. Ses composants sont décrits dans un fichier XML de nom <module>Catalog.xml.
16 - **Composant SALOME** : c'est l'équivalent SALOME d'un code de calcul. Il peut prendre la forme d'une bibliothèque dynamique ou
19 - **Service SALOME** : chaque composant a un ou plusieurs services. Un service est l'équivalent d'une subroutine Fortran, d'une
20 fonction C, d'une méthode C++ ou Python. Seuls les services de composant peuvent être couplés avec le coupleur YACS.
21 Le couplage est réalisé en connectant les ports d'entrée-sortie dont sont dotés les services.
22 Ces ports peuvent être de deux types : dataflow ou datastream.
24 - **Port dataflow** : un port dataflow est un point de connexion pour l'échange de données. Il a un nom qui est le
25 nom de la variable échangée, un type qui indique le type de donnée (double, long, string, ...) et un sens (entrée
26 ou sortie). On peut connecter un port dataflow entrant avec un port dataflow sortant d'un type compatible.
27 La variable portée par le port est échangée en fin de service (port sortant) et en début de service (port entrant).
28 Aucun échange de donnée n'a lieu pendant l'exécution du service.
30 - **Port datastream** : un port datastream permet l'échange de données pendant l'exécution. Comme un port dataflow, il
31 a un nom, un type et un sens mais il a en plus un mode de dépendance itératif (I) ou temporel (T).
32 On peut connecter un port datastream entrant uniquement avec un port datastream sortant de même type.
33 Il peut exister plusieurs classes de port datastream.
34 Ici, on ne traitera que des ports datastream CALCIUM.
36 - **Coupleur YACS** : c'est un module SALOME qui permet d'éditer et d'exécuter des schémas de couplage qui sont
37 principalement sous la forme d'un fichier XML. Le module fournit une interface utilisateur graphique pour
38 éditer un schéma, l'exécuter et suivre son exécution.
40 - **Instance de composant** : on peut avoir plusieurs exemplaires du même composant qui sont exécutés par SALOME
41 dans une même session. Pour distinguer ces exemplaires, on parle d'instance de composant. On peut faire un parallèle
42 avec les termes code de calcul (composant) et exécution (instance de composant).
44 - **Container** : Processus SALOME qui exécute les composants. Il a la responsabilité de charger (bibliothèque dynamique
45 ou module Python) et d'enregistrer les composants. Le choix des containers peut avoir de l'importance si on veut
46 qu'un composant ne soit pas dans le même exécutable qu'un autre.
48 - **Application SALOME** : ensemble de modules SALOME intégrés dans la plate-forme SALOME. Cette plate-forme
49 est batie sur les modules de base KERNEL et GUI qui fournissent les services de lancement des composants
50 et d'intégration dans l'IHM graphique. Une application SALOME fournit plusieurs scripts qui permettent
51 de lancer l'application (runAppli), de se mettre dans l'environnement de l'application (runSession) et d'autres
52 plus internes comme le lancement distant (runRemote)
54 Modules et composants SALOME
55 ==================================================
56 Dans son principe, la plate-forme SALOME est décomposée en une plate-forme
57 de base nommée module KERNEL et une collection de modules divers.
59 Un module est un produit compilable et installable qui se concrétise par une arborescence source qui doit
60 respecter les règles générales SALOME et qui comprend une procédure de construction, installation qui
61 respecte également les règles SALOME.
62 Chaque module est géré en configuration dans un module CVS
63 indépendant. Chaque module peut livrer des versions à son rythme dans le respect des règles de
64 cohérence de SALOME. A chaque module est associée une base de tests de non régression.
66 Un module a des dépendances avec les autres modules (utilise, est utilisé).
67 Le module KERNEL constitue la base de la plate-forme SALOME.
68 Tous les autres modules dépendent du module KERNEL.
70 ===================================== ========= ============= ==================================
71 Thèmes Modules Utilise Est utilisé par
72 ===================================== ========= ============= ==================================
73 Architecture KERNEL MED, GEOM, SMESH, VISU,YACS
74 Architecture MED KERNEL SMESH, VISU
75 Géométrie GEOM KERNEL SMESH
76 Maillage SMESH KERNEL, MED
77 Supervision YACS KERNEL
78 Visualisation VISU KERNEL, MED
79 ===================================== ========= ============= ==================================
81 Un module contient un ou plusieurs composants SALOME. Un composant SALOME est un objet CORBA qui
82 respecte les règles SALOME et qui est déclaré à SALOME au moyen d'un catalogue. Un composant SALOME
83 peut être doté d'une interface utilisateur graphique (GUI) qui doit elle-même respecter les règles
87 ======================
88 Dans SALOME, les composants sont dynamiquement chargeables. Cette propriété est obtenu
89 en utilisant un mécanisme de container.
91 Dans ses grandes lignes, un container est un serveur CORBA dont l'interface dispose
92 des méthodes nécessaires pour effectuer le chargement déchargement de l'implémentation
93 d'un composant SALOME. Pour effectuer le chargement d'un composant, on appellera la méthode
94 load_impl du container.
96 La mécanique de base du chargement d'un composant est dépendante du langage d'implémentation choisi.
98 En C++, la plate-forme utilise le chargement dynamique de bibliothèque (dlopen) et un mécanisme de fonction
99 factory dont le nom doit être <Module>Engine_factory (par exemple GEOMEngine_factory, pour GEOM).
100 Cette fonction doit retourner l'objet CORBA effectif qui est le composant SALOME.
102 En Python, la plate-forme utilise le mécanisme d'import de Python (import <Module>) et instancie
103 le composant SALOME Python en utilisant une classe (ou une factory) de même nom (<Module>) pour
108 Construction et utilisation d'une application SALOME
109 =========================================================
110 Ce document explique comment configurer, installer et utiliser votre propre
111 application SALOME à partir d'une liste de modules préinstallés.
116 Une application SALOME est construite à partir d'une liste de modules (GEOM, SMESH, ASTER...) de
117 base de la plate-forme ou utilisateurs.
118 Elle consiste en un jeu de scripts shell et de répertoires qui permettent d'exécuter l'application
119 dans différents contextes.
121 Un utilisateur peut définir plusieurs applications SALOME. Ces applications
122 sont utilisables à partir d'un même compte utilisateur. Elles peuvent utiliser
123 les mêmes modules (KERNEL ou autre). L'application SALOME est indépendante de KERNEL
124 et **ne doit pas être installée dans KERNEL_ROOT_DIR**.
126 Les prérequis utilisés par chaque application peuvent être différents.
128 Une session SALOME lancée à partir d'une application SALOME peut s'exécuter
129 sur plusieurs calculateurs.
131 Pour une installation d'application multi-machines, les modules et les prérequis
132 doivent être installés sur toutes les machines impliquées. Il n'est pas nécessaire
133 d'installer tous les modules sur toutes les machines à part KERNEL.
134 L'utilisateur SALOME doit avoir un compte sur chaque machine. L'accès aux machines
135 distantes est réalisé par rsh ou ssh. Ces accès doivent être configurés pour
136 un usage sans password. Les comptes peuvent être différents sur les différentes
142 \g@addto@macro\@verbatim\small
146 Créer une application SALOME
147 ------------------------------
148 On crée une application SALOME avec l'outil appli_gen.py que l'on trouve dans l'installation du module KERNEL.
149 Cet outil construit l'application en partant d'un fichier de configuration au format XML qui décrit la liste
150 des modules à utiliser (nom, chemin d'installation), le fichier qui positionne l'environnement
151 pour les prérequis de SALOME et optionnellement le répertoire des exemples SALOME (SAMPLES_SRC).
153 La commande à utiliser est la suivante::
155 python <KERNEL_ROOT_DIR>/bin/salome/appli_gen.py --prefix=<install directory> --config=<configuration file>
157 où <configuration file> est le nom du fichier de configuration et <install directory> est le nom du répertoire
158 dans lequel on veut créer l'application. <KERNEL_ROOT_DIR> indique le répertoire d'installation du module KERNEL.
160 On peut créer le fichier de configuration en modifiant une copie du fichier ${KERNEL_ROOT_DIR}/bin/salome/config_appli.xml.
163 En voici un exemple::
166 <prerequisites path="/data/tmplgls/secher/SALOME_V4.1.1_MD08/env_products.sh"/>
168 <!-- variable name <MODULE>_ROOT_DIR is built with <MODULE> == name attribute value -->
169 <!-- <MODULE>_ROOT_DIR values is set with path attribute value -->
170 <!-- attribute gui (defaults = yes) indicates if the module has a gui interface -->
171 <module name="KERNEL" gui="no" path="/data/SALOME_V4.1.1/KERNEL_INSTALL"/>
172 <module name="GUI" gui="no" path="/data/SALOME_V4.1.1/GUI_4.1.1"/>
173 <module name="MED" path="/data/SALOME_V4.1.1/MED_4.1.1"/>
174 <module name="GEOM" path="/data/SALOME_V4.1.1/GEOM_4.1.1"/>
175 <module name="SMESH" path="/data/SALOME_V4.1.1/SMESH_4.1.1"/>
176 <module name="YACS" path="/data/SALOME_V4.1.1/YACS_4.1.1"/>
177 <module name="VISU" path="/data/SALOME_V4.1.1/VISU_4.1.1"/>
178 <module name="HELLO" path="/data/SALOME_V4.1.1/HELLO1_4.1.1"/>
179 <module name="PYHELLO" path="/data/SALOME_V4.1.1PYHELLO1_4.1.1"/>
180 <module name="NETGENPLUGIN" path="/data/SALOME_V4.1.1/NETGENPLUGIN_4.1.1"/>
182 <samples path="/data/SALOME_V4.1.1/SAMPLES/4.1.1/SAMPLES_SRC"/>
185 Quelques règles à suivre
186 ------------------------------
188 Le répertoire d'application doit être créé sur tous les calculateurs qui devront exécuter des composants de cette application.
189 La méthode la plus simple est de créer le répertoire d'application en utilisant le même chemin relatif par rapport au
190 répertoire HOME sur chaque machine. Si ce n'est pas souhaité, il est possible d'utiliser des chemins différents suivant
191 les calculateurs mais il faudra le préciser dans le fichier de configuration CatalogRessources.xml.
193 Le répertoire d'application contient des scripts pour initialiser les variables d'environnement et faire des exécutions.
195 L'environnement est initialisé par des scripts placés dans le sous répertoire env.d. Les scripts pour SALOME sont créés
196 au moment de la création de l'application mais l'utilisateur peut ajouter ses propres scripts. Il suffit qu'ils aient
197 comme suffixe .sh. Ces scripts doivent être installés sur toutes les machines de l'application.
199 L'application SALOME fournit à l'utilisateur 4 scripts d'exécution :
201 - **runAppli** lance une session SALOME (à la manière de ${KERNEL_ROOT_DIR}/bin/salome/runSalome).
202 - **runSession** permet de se connecter, dans un shell avec un environnement conforme, à une session SALOME lancée
203 précédemment. Sans argument, le script ouvre un shell interactif. Avec arguments, il exécute la commande
204 fournie dans l'environnement de l'application SALOME.
205 - **runConsole** ouvre une console python connectée à la session SALOME courante. Il est également possible d'utiliser
206 runSession puis de lancer python.
209 Les fichiers de configuration de l'application sont :
211 - **SALOMEApp.xml** : ce fichier est semblable au fichier par défaut qui se trouve dans ${GUI_ROOT_DIR}/share/SALOME/resources/gui.
212 Il peut être adapté aux besoins de l'utilisateur.
213 - **CatalogRessources.xml** : ce fichier décrit tous les calculateurs que l'application peut utiliser. Le fichier initial
214 ne contient que la machine locale. L'utilisateur doit ajouter les machines à utiliser. Si on veut utiliser
215 des répertoires d'application quelconques sur les différents calculateurs, il faut préciser dans ce fichier
216 leur localisation avec l'attribut appliPath::
218 appliPath="my/specific/path/on/this/computer"