Salome HOME
Changing version to 5.1.4
[modules/multipr.git] / README
1 MODULE SALOME MULTIPR
2 =====================
3 Par EDF/CS, 02/2007
4
5
6 Description
7 -----------
8 MULTIPR est un module pour la plateforme SALOME (v3.2).
9 Le module sert au partitionnement et a la decimation de maillages tetraedriques (TETRA10),
10 dans le but de pouvoir visualiser d'importants volumes de donnees scientifiques.
11
12
13 Contenu de ce fichier
14 ---------------------
15 I.    INSTALLATION/COMPILATION
16 II.   L'APPLICATION AUTONOME EN LIGNE DE COMMANDE multipr
17 III   LE MODULE SALOME MULTIPR
18
19
20 *******************************************************************************
21 *
22 * I. INSTALLATION/COMPILATION
23 *
24 *******************************************************************************
25
26 A. Information generales
27 ------------------------
28 MULTIPR a besoin des prerequis suivants:
29     1. Salome V3.2
30     2. MESPLITTER (branche MED sur CVS : WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline)
31     3. MED fichier v2.3
32     4. METIS v4.0.1 (version NON modifiee par EDF)
33     5. SCOTCH v4
34
35 A propos de MEDSPLITTER :
36 MEDSPLITTER est un partitionneur de fichiers MED qui repose sur le format MED v2.3
37 et les outils METIS et SCOTCH. L'outil a ete developpe par Vincent Bergeaud du CEA.
38 Dans le cadre du module MULTIPR, MEDSPLITTER est utilise pour partitionner des grains
39 (scenario a 2 echelles).
40     
41
42
43 B. Installation/compilation
44 ---------------------------
45
46
47    B.1. Se procurer le module MED/MEDSPLITTER compatible avec MULTIPR
48    ------------------------------------------------------------------
49    
50 1. Charger la branche CVS WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline dans le repertoire MED sur le server d'OpenCascade
51    > cvs -d ":pserver:salome2anonymous@www.opencascade.com:/home/server/cvs/MED" login
52    rntlrntl   (<--- mot de passe)
53    > cvs -d ":pserver:salome2anonymous@www.opencascade.com:/home/server/cvs/MED" checkout -kk -RP -r WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline MED_SRC
54    > cvs -d ":pserver:salome2anonymous@www.opencascade.com:/home/server/cvs/MED" logout
55    (note : MEDPLITTER peut également être compilé à partir de la branche CVS BR_SPLITTER_improved)
56    
57 2. Modifier le code pour utiliser MED fichier v2.3 :
58    A. Supprimer les 6 fichiers suivants :
59       MED_SRC/src/medmem/MEDMEM_MEDMEMchampLire.hxx/cxx
60       MED_SRC/src/medmem/MEDMEM_MEDMEMgaussEcr.hxx/cxx
61       MED_SRC/src/medmem/MEDMEM_MEDMEMprofilEcr.hxx/cxx
62    B. Mettre a jour le fichier medmem/Makefile.in en supprimant les 6 lignes correspondantes
63    C. Mettre a jour le fichier MEDMEM_MedFieldDriver22.hxx
64       1. Dans la section "includes, supprimer les 3 lignes #include "MEDMEM_MEDMEMchampLire.hxx" ...
65       2. Remplacer ces lignes par l'inclusion de l'API MED :
66          namespace med_2_2 
67          {
68              extern "C" 
69              { 
70                  #include <med.h>
71                  #include <med_proto.h>
72              }
73          }
74       3. Effectuer les changements suivants (utiliser l'API MED fichier v2.3) :
75          MEDMEMchampLire -> MEDchampLire
76          MEDMEMgaussEcr  -> MEDgaussEcr
77          MEDMEMprofilEcr -> MEDprofilEcr
78          => En tout, il y a 4 lignes a changer
79       
80
81    B.2. Prerequis a la compilation du module MED/MEDSPLITTER
82    ---------------------------------------------------------
83    
84 3. Verifier que la variable d'environnement LD_LIBRARY_PATH ne pointe pas vers un repertoire MED
85 4. Verifier que la variable d'environnement MED_ROOT_DIR n'est pas definie
86 5. Installer METIS v4.0.1 (soit <METIS_DIR> le repertoire d'installation)
87    A. Charger le source sur http://glaros.dtc.umn.edu/gkhome/metis/metis/download
88    B. Decompresser l'archive : tar -zxvz metis-4.0.tar.gz
89    C. Puis make dans le repertoire
90    D. Verifier que tout est OK : depuis \Graph, lancer ./mtest 4elt.graph
91 6. Verifier que la bibliotheque boost v1.32 ou + est installee
92    A. Bien verifier que le paquet libboost_program_option est inclu (ce paquet est utilise par MEDSPLITTER)
93    B. Ajouter la variable d'environnement export BOOSTDIR=/usr, si nécessaire
94    C. Si necessaire, dans /usr/lib, ajouter le lien 
95       ln -s libboost_program_options.so libboost_program_options-gcc-mt.so
96       (droits administrateur necessaires)
97       
98
99    B.3. Compilation du module MED/MEDSPLITTER
100    ------------------------------------------
101    
102 7. Pour compiler la branche MED WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline avec SALOME V3.2.2 (Debian Sarge)
103    Dans le repertoire SALOME v3.2.2 :
104    A. Sourcer prerequis-Sarge-slash-usr.sh et envSalome-V3_2_2.sh
105    B. Verifier que la variable d'environnement MED2HOME pointe bien vers
106       MED fichier v2.3
107 8. Pour compiler avec METIS v4.0.1 precedemment charge : 
108    Renommer la fonction log2 en log2_ dans metis\lib\proto.h  
109    (sinon, un conflit se produit)
110    
111 Depuis le repertoire MED contenant WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline :
112 9. Creer un repertoire Build et un repertoire MED au cote de MED_SRC
113 10. Dans le repertoire MED_SRC, faire ./build_configure
114 11. Depuis le repertoire Build, faire (en remplacant les <...> par les bons répertoires) 
115     ../MED_SRC/configure --prefix=<PATH>/MED --enable-splitter=yes --with-metis=<METIS_DIR> --with-scotch=<SCOTCH_DIR>
116     --enable-production=yes --disable-debug  
117 12. Puis : make
118 13. Puis : make install
119
120
121    B.4. Tester l'installation du module MED/MEDSPLITTER
122    ----------------------------------------------------
123    
124 14. Definir la variable d'environnement MED_ROOT_DIR (=<PATH>/MED)
125 15. Eventuellement, mettre a jour les variables d'environnement LD_LIBRARY_PATH et PYTHONPATH
126 16. Pour verifier que MEDMEM est bien installe :
127     Depuis le repertoire <PATH>/MED : python bin/salome/testMedMemGeneral.py
128 17. Pour verifier que MEDSPLITTER est bien installe :
129     A. Dans <PATH>/MED/bin/salome, creer le repertoire tests : mkdir tests
130     B. Puis : 
131        ./test_SPLITTER_indivisible
132        ./test_SPLITTER_square
133        ./medsplitter --input-file=<PATH>/MED/share/salome/resources/med/pointe_import22.med --output-file=toto --ndomains=2 --meshname=maa1
134
135
136    B.5. Compiler le module MULTIPR
137    -------------------------------
138    
139 18. Creer un repertoire Build et un repertoire MULTIPR au cote de MULTIPR_SRC
140 19. Dans le repertoire MULTIPR_SRC, faire ./build_configure
141 20. Depuis le repertoire Build, faire (en remplacant les <...> par les bons répertoires) 
142     ../MULTIPR_SRC/configure --prefix=<PATH>/MULTIPR --enable-production=yes --disable-debug  
143 21. Puis : make
144 22. Puis : make install
145
146
147 Information supplementaire :
148 Pour compiler MULTIPR, les 8 variables d'environnement suivantes doivent etre definies :
149 KERNEL_ROOT_DIR, GUI_ROOT_DIR, MED_ROOT_DIR, MED2HOME, HDF5HOME, OMNIORBDIR, CASROOT, QTDIR
150 L'existence de ces variables est teste par le script build_configure.
151     
152
153 *******************************************************************************
154 *
155 * II. L'APPLICATION AUTONOME EN LIGNE DE COMMANDE multipr
156 *
157 *******************************************************************************
158
159 Tests de l'application autonome en ligne de commande multipr
160 ------------------------------------------------------------
161 L'application "multipr" se trouve dans .../bin/salome
162
163 1. Affichage de la page d'aide
164    
165    $ ./multipr 
166    
167 2. Autotest complet de l'application
168
169    $ ./multipr --auto /data
170    (ou /data designe le repertoire dans lequel se trouve le fichier agregat100grains_12pas.med)
171    
172 3. Affichage de la liste des maillages et des champs d'un fichier MED sequentiel :
173   
174    $ ./multipr --info agregat100grains_12pas.med
175    
176 4. Affichage de toutes les informations concernant un maillage :
177    
178    $ ./multipr --info agregat100grains_12pas.med MAIL
179    
180 5. Partitionnement (1 echelle) : 
181    Extraction des grains du maillage MAIL dans le fichier agregat100grains_12pas.med
182    
183    $ ./multipr --part1 agregat100grains_12pas.med MAIL
184    
185 6. Partitionnement (2 echelles) :
186    Decoupage du grain numero 98 en 3 parties :
187    
188    $ ./multipr --part2 agregat100grains_12pas_grains_maitre.med MAIL_98 3
189    
190 7. Decimation :
191    Creation de 3 resolutions du grain numero 99 en prenant :
192    comme reference le 12e pas de temps du champ SIG_____SIEF_ELGA_______________
193    comme seuil pour la resolution MEDIUM : 10
194    comme seuil pour la resolution BASSE : 25
195    comme rayon pour le calcul du voisinage : 0.3
196    
197    $ ./multipr --decim agregat100grains_12pas_grains_maitre.med MAIL_99 SIG_____SIEF_ELGA_______________ 12 Filtre_GradientMoyen 10 25 0.3 
198
199 8. Messages d'erreur :
200    Les exemples suivants sont des commandes erronees :
201    
202    $ ./multipr --part1 agregat100grains_12pas.m MAIL
203    ... MULTIPR: FileNotFoundException (MULTIPR_Mesh.cxx, line 663): MED file not found
204    
205    $ ./multipr --part1 agregat100grains_12pas.med MAILLAGE
206    ... MULTIPR: IllegalStateException (MULTIPR_Mesh.cxx, line 747): mesh not found in the given MED file
207    
208    $ ./multipr --part2 agregat100grains_12pas.med MAIL 2
209    ... MULTIPR: IOException (MULTIPR_API.cxx, line 106): waiting for a distributed MED file (not a sequential one)
210    
211    $ ./multipr --part2 agregat100grains_12pas_grains_maitre.med MAIL_95 0
212    ... MULTIPR: IllegalArgumentException (MULTIPR_API.cxx, line 97): pNbParts should be >= 2
213
214    $ ./multipr --decim agregat100grains_12pas_grains_maitre.med MAIL_99 SIG_____SIEF_ELGA_______________ 14 Filtre_GradientMoyen 10 25 0.3 
215    ... MULTIPR: IllegalArgumentException (MULTIPR_DecimationFilter.cxx, line 100): invalid field iteration (14)
216    
217    $ ./multipr --decim agregat100grains_12pas_grains_maitre.med MAIL_99 SIG_____SIEF_ELGA___________TEST 12 Filtre_GradientMoyen 10 25 0.3 
218    MULTIPR: IllegalArgumentException (MULTIPR_DecimationFilter.cxx, line 99): field not found
219
220    etc.
221    
222
223 *******************************************************************************
224 *
225 * III. LE MODULE SALOME MULTIPR
226 *
227 *******************************************************************************   
228    
229 Lancer le module salome seul : ./bin/salome/runAppli depuis le repertoire MULTIPR
230
231
232
233
234