MODULE SALOME MULTIPR ===================== Par EDF/CS, 02/2007 Description ----------- MULTIPR est un module pour la plateforme SALOME (v3.2). Le module sert au partitionnement et a la decimation de maillages tetraedriques (TETRA10), dans le but de pouvoir visualiser d'importants volumes de donnees. Contenu de ce fichier --------------------- I. INSTALLATION/COMPILATION II. L'APPLICATION AUTONOME EN LIGNE DE COMMANDE multipr III LE MODULE SALOME MULTIPR ******************************************************************************* * * I. INSTALLATION/COMPILATION * ******************************************************************************* A. Information generales ------------------------ MULTIPR a besoin des prerequis suivants: 1. Salome V3.2 2. MESPLITTER (branche CVS WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline) 3. MED fichier v2.3 4. METIS v4.0.1 (version NON modifiee par EDF) 5. SCOTCH v4 A propos de MEDSPLITTER : MEDSPLITTER est un partitionneur de fichiers MED qui repose sur le format MED v2.3 et les outils METIS et SCOTCH. L'outil a ete developpe par Vincent Bergeaud du CEA. Dans le cadre du module MULTIPR, MEDSPLITTER est utilise pour partitionner des grains (scenario a 2 echelles). B. Installation/compilation --------------------------- B.1. Se procurer le module MED/MEDSPLITTER compatible avec MULTIPR ------------------------------------------------------------------ 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 > cvs -d ":pserver:salome2anonymous@www.opencascade.com:/home/server/cvs/MED" login rntlrntl (<--- mot de passe) > 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 > cvs -d ":pserver:salome2anonymous@www.opencascade.com:/home/server/cvs/MED" logout (note : MEDPLITTER peut également être compilé à partir de la branche CVS BR_SPLITTER_improved) 2. Modifier le code pour utiliser MED fichier v2.3 : A. Supprimer les 6 fichiers suivants : MED_SRC/src/medmem/MEDMEM_MEDMEMchampLire.hxx/cxx MED_SRC/src/medmem/MEDMEM_MEDMEMgaussEcr.hxx/cxx MED_SRC/src/medmem/MEDMEM_MEDMEMprofilEcr.hxx/cxx B. Mettre a jour le fichier medmem/Makefile.in en supprimant les 6 lignes correspondantes C. Mettre a jour le fichier MEDMEM_MedFieldDriver22.hxx 1. Dans la section "includes, supprimer les 3 lignes #include "MEDMEM_MEDMEMchampLire.hxx" ... 2. Remplacer ces lignes par l'inclusion de l'API MED : namespace med_2_2 { extern "C" { #include #include } } 3. Effectuer les changements suivants (utiliser l'API MED fichier v2.3) : MEDMEMchampLire -> MEDchampLire MEDMEMgaussEcr -> MEDgaussEcr MEDMEMprofilEcr -> MEDprofilEcr => En tout, il y a 4 lignes a changer B.2. Prerequis a la compilation du module MED/MEDSPLITTER --------------------------------------------------------- 3. Verifier que la variable d'environnement LD_LIBRARY_PATH ne pointe pas vers un repertoire MED 4. Verifier que la variable d'environnement MED_ROOT_DIR n'est pas definie 5. Installer METIS v4.0.1 (soit le repertoire d'installation) A. Charger le source sur http://glaros.dtc.umn.edu/gkhome/metis/metis/download B. Decompresser l'archive : tar -zxvz metis-4.0.tar.gz C. Puis make dans le repertoire D. Verifier que tout est OK : depuis \Graph, lancer ./mtest 4elt.graph 6. Verifier que la bibliotheque boost v1.32 ou + est installee A. Bien verifier que le paquet libboost_program_option est inclu (ce paquet est utilise par MEDSPLITTER) B. Ajouter la variable d'environnement export BOOSTDIR=/usr, si nécessaire C. Si necessaire, dans /usr/lib, ajouter le lien ln -s libboost_program_options.so libboost_program_options-gcc-mt.so (droits administrateur necessaires) B.3. Compilation du module MED/MEDSPLITTER ------------------------------------------ 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) Dans le repertoire SALOME v3.2.2 : A. Sourcer prerequis-Sarge-slash-usr.sh et envSalome-V3_2_2.sh B. Verifier que la variable d'environnement MED2HOME pointe bien vers MED fichier v2.3 8. Pour compiler avec METIS v4.0.1 precedemment charge : Renommer la fonction log2 en log2_ dans metis\lib\proto.h (sinon, un conflit se produit) Depuis le repertoire contenant WP1_2_3_17-01-2007_Data_format_at_entry_of_visualization_pipeline : 9. Creer un repertoire Build et un repertoire MED au cote de MED_SRC 10. Dans le repertoire MED_SRC, faire ./build_configure 11. Depuis le repertoire Build, faire (en remplacant les <...> par les bons répertoires) ../MED_SRC/configure --prefix=/MED --enable-splitter=yes --with-metis= --with-scotch= --enable-production=yes --disable-debug 12. Puis : make 13. Puis : make install B.4. Tester l'installation du module MED/MEDSPLITTER ---------------------------------------------------- 14. Definir la variable d'environnement MED_ROOT_DIR (=/MED) 15. Eventuellement, mettre a jour les variables d'environnement LD_LIBRARY_PATH et PYTHONPATH 16. Pour verifier que MEDMEM est bien installe : Depuis le repertoire /MED : python bin/salome/testMedMemGeneral.py 17. Pour verifier que MEDSPLITTER est bien installe : A. Dans /MED/bin/salome, creer le repertoire tests : mkdir tests B. Puis : ./test_SPLITTER_indivisible ./test_SPLITTER_square ./medsplitter --input-file=/MED/share/salome/resources/med/pointe_import22.med --output-file=toto --ndomains=2 --meshname=maa1 B.5. Compiler le module MULTIPR ------------------------------- 18. Creer un repertoire Build et un repertoire MULTIPR au cote de MULTIPR_SRC 19. Dans le repertoire MULTIPR_SRC, faire ./build_configure 20. Depuis le repertoire Build, faire (en remplacant les <...> par les bons répertoires) ../MULTIPR_SRC/configure --prefix=/MULTIPR --enable-production=yes --disable-debug 21. Puis : make 22. Puis : make install ******************************************************************************* * * II. L'APPLICATION AUTONOME EN LIGNE DE COMMANDE multipr * ******************************************************************************* Tests de l'application autonome en ligne de commande multipr ------------------------------------------------------------ L'application "multipr" se trouve dans .../bin/salome 1. Affichage de la page d'aide $ ./multipr 2. Autotest complet de l'application $ ./multipr --auto /data (ou /data designe le repertoire dans lequel se trouve le fichier agregat100grains_12pas.med) 3. Affichage de la liste des maillages et des champs d'un fichier MED sequentiel : $ ./multipr --info agregat100grains_12pas.med 4. Affichage de toutes les informations concernant un maillage : $ ./multipr --info agregat100grains_12pas.med MAIL 5. Partitionnement (1 echelle) : Extraction des grains du maillage MAIL dans le fichier agregat100grains_12pas.med $ ./multipr --part1 agregat100grains_12pas.med MAIL 6. Partitionnement (2 echelles) : Decoupage du grain numero 98 en 3 parties : $ ./multipr --part2 agregat100grains_12pas_grains_maitre.med MAIL_98 3 7. Decimation : Creation de 3 resolutions du grain numero 99 en prenant : comme reference le 12e pas de temps du champ SIG_____SIEF_ELGA_______________ comme seuil pour la resolution MEDIUM : 10 comme seuil pour la resolution BASSE : 25 comme rayon pour le calcul du voisinage : 0.3 $ ./multipr --decim agregat100grains_12pas_grains_maitre.med MAIL_99 SIG_____SIEF_ELGA_______________ 12 Filtre_GradientMoyen 10 25 0.3 8. Messages d'erreur : Les exemples suivants sont des commandes erronees : $ ./multipr --part1 agregat100grains_12pas.m MAIL ... MULTIPR: FileNotFoundException (MULTIPR_Mesh.cxx, line 663): MED file not found $ ./multipr --part1 agregat100grains_12pas.med MAILLAGE ... MULTIPR: IllegalStateException (MULTIPR_Mesh.cxx, line 747): mesh not found in the given MED file $ ./multipr --part2 agregat100grains_12pas.med MAIL 2 ... MULTIPR: IOException (MULTIPR_API.cxx, line 106): waiting for a distributed MED file (not a sequential one) $ ./multipr --part2 agregat100grains_12pas_grains_maitre.med MAIL_95 0 ... MULTIPR: IllegalArgumentException (MULTIPR_API.cxx, line 97): pNbParts should be >= 2 $ ./multipr --decim agregat100grains_12pas_grains_maitre.med MAIL_99 SIG_____SIEF_ELGA_______________ 14 Filtre_GradientMoyen 10 25 0.3 ... MULTIPR: IllegalArgumentException (MULTIPR_DecimationFilter.cxx, line 100): invalid field iteration (14) $ ./multipr --decim agregat100grains_12pas_grains_maitre.med MAIL_99 SIG_____SIEF_ELGA___________TEST 12 Filtre_GradientMoyen 10 25 0.3 MULTIPR: IllegalArgumentException (MULTIPR_DecimationFilter.cxx, line 99): field not found etc. ******************************************************************************* * * III. LE MODULE SALOME MULTIPR * ******************************************************************************* Lancer le module salome seul : ./bin/salome/runAppli depuis le repertoire MULTIPR