Mirror of MED File source
LGPL-3.0 License
Obtenir la derniere version
Installer la bibliotheque MED
2.1 Plates-formes supportees 2.2 Logiciels necessaires a l'installation 2.3 Lancement de l'installation sous UNIX
Utilisation des tests et des makefiles associes
Utilitaires
Documentation
Joindre les correspondants MED
La version la plus recente de la bibliotheque MED se trouve sur le serveur : https://www.salome-platform.org/downloads/current-version
Pour compiler et installer la librairie MED ainsi que sa batterie de programmes tests et ses utilitaires, verifiez tout d'abord que vous disposez d'un environnement adquat puis appliquez les instructions suivantes.
2.1 Plates-formes supportees et testes
PCs LINUX 32/64 WINDOWS10
2.2 Logiciels necessaires a l'installation de MED 5
a. hdf5-1.12.z (http://www.hdfgroup.org/HDF5). a1. Variable d'environement HDF5HOME positionne l'emplacement d'HDF5 ou utilisation de l'option --with-hdf5= l'tape de configuration. Si aucune option n'est utilise, MED cherche hdf dans /usr.
b. libz b1. Si vous compilez en dynamique la bibliothque hdf5 doit pouvoir tre trouve soit dans le systme (/usr/lib) soit par la variable LD_LIBRARY_PATH.
c. compilateur C, C++ et eventuellement F77 et/ou F90
d. eventuellement SWIG-4.1.1 si vous configurez med-fichier avec hdf5// ou with-med_int=long.
2.3 Lancement de l'installation sous UNIX
Dans le repertoire des sources : ./configure --prefix= make make check make installcheck make install ou make install-strip
Remarques :
Une interface python est disponible depuis la version 3.0.7. Elle peut tre desactive par l'option --disable-python. Elle ne peut tre active en mode static --disable-shared. La bibliothque medfichier embarque les interfaces .cc et .py gnres par swig pour les options med_int=int et med_int=long. L'outil swig n'est donc pas requis moins de compiler med avec une version // d'hdf. Il faut alors regnrer les interfaces swig en prcisant l'option --with-swig. Une fois construite en version //, si vous utiliser la mme arborescence pour construire une version de medfichier avec une version squentielle d'HDF il faut de nouveau activer l'option --with-swig pour regnrer les interfaces swig sans MPI ( l'identique des versions initialement embarques). La version de swig utilis par med-3.3 est actuellement 2.0.9. Si vous utilisez un compilateur tel que gcc-6.4 il faut utiliser une version 3 de swig.
la bibliothque MED utilise le C++ depuis sa version 2.3.2.
Il est possible de compiler uniquement la bibliotheque MED en version statique ou dynamique en utilisant respectivement les options du configure --disable-shared ou --disable-static.
Dans le cas d'une compilation statique, il est necessaire de prciser le(s) nom(s) et le(s) chemin(s) d'accs la bibliothque C++ pour l'dition des liens des tests fortran (soit au moment du configure soit la commande make ) :
ex : make FTLDFLAGS="-L/usr/lib/gcc-lib/i486-linux/3.3.5/" FTLIBS="-lstdc++"
Pourquoi cette exception la gnration des tests fortran en mode statique ? :
L'utilisation du linker C++ automatiserait l'apport de la bibliothque C++ dont le nom n'est pas standardis. Malheureusement, certains conpilateurs fortran ne proposent pas une bibliothque comme libfrtbegin.a du g77 (contenant le main) mais ajoutent le main l'dition des liens par un fichier spcifique main.o. La consquence est que les autotools ne peuvent dtecter cette situation et l'dition des liens C++ aucun main n'est dfini. A cause de ces spcificits, nous avons choisi de laisser une dition des liens via le fortran. Lors d'une utilisation de bibliothques dynamiques sur des plateformes qui supportent les dpendances entre bibliothques il n'est pas necessaire de dfinir le FTLDFLAGS car une dpendance la bibliothque C++ est inscrite dans la bibliothque med.
Pour compiler les tests en Fortran90 vous devez utiliser l'option
--with-f90= ou positionner la variable d'environement F90 et indiquer --with-f90 :
Configurez par la commande : ./configure --prefix= F77=pgf90 --with-f90=pgf90
Il est necessaire d'utiliser le compilateur F90 galement pour compiler l'interface fortran de la biliothque (variable F77).
Pour compiler la bibliotheque en mode debug utilisez :
./configure --prefix= CFLAGS=-g FFLAGS=-g [FCFLAGS=-g]
Pour enlever les symboles de debugging dans le repertoire d'installation faire
make install-strip au lieu de make install
Vous pouvez indiquez vos propres options de compilation : ./configure MAKE= CC= CFLAGS= F77= FFLAGS= FCFLAGS= CXX= CXXFLAGS= --prefix=
Pour spcifier o se trouve HDF5 sans utiliser la variable d'environnement HDF5HOME utilisez : --with-hdf5=
Pour dsactiver l'affichage de messages d'erreur sur la sortie erreur utilisez l'option --enable-msgerr=false ou --disable-msgerr.
Si elle est bien utilise, la bibliothque ne devrait pas afficher d'erreur.
MED se base sur la taille des entiers F77 pour dfinir la taille du med_int. Les options de compilation concernant la taille des entiers fortran sont testes l'tape de configuration par l'execution d'un test. Si la dtection ne fonctionne pas, ou si vous utilisez un cross-compiler vous pouvez spcifier le type C du med_int par l'option --with-med_int=<mon type "C", int, long ...>. La taille de l'entier Fortran doit correspondre au type "C".
Utilisation des tests et des makefiles associes :
Sous Linux avec compilateur Fortran PGI et GNU C/C++.
./configure F77="pgf90" --with-f90="pgf90" --with-med_int=int
Dans cette configuration :
Le test de la taille du med_int choue car des symboles dfinis dans des bibliothques F77 PGI ne sont pas fournis l'dition des liens du test. Ce test possde un programe principal en C et une routine F77. Le problme est que si l'on ajoute le contenu de $(FTLIBS) l'dition des liens, le test fontionne avec PGI mais plus sous G77/GCC pour cause d'une dfinition multiple du main ( par le test c et par la bilbiothque libfrtbegin ).
Sous Linux avec compilateur gfortran avec entiers fortran 64bits
./configure --prefix=/local/med-3.0.0_64.bin --with-f90=gfortran F77=gfortran FFLAGS="-fdefault-integer-8" FCFLAGS="-fdefault-integer-8"
Ne pas oublier de positionner FCFLAGS pour que les bonnes options soient utilises pour le Fortran 90.
En version Parallle
A l'tape du configure MED repre si l'hdf utilis t configur avec une version parallle d'HDF5 (statique ou dynamique). Si une version parallle d'HDF5 est utilise, les compilateurs CC, CXX, F77 seront positionns par dfaut mpicc (ou commande quivalente), mpiCC (ou commande quivalente) et mpif77 (ou commande quivalente). Il est possible de surcharger ces variables.
export LAMMPIF77=gfortran ../Dev_V3.0b_fayolle/configure --with-hdf5=/local/hdf5-1.8.4p1_par.bin FC=mpif77 --with-f90=mpif77 FTLIBS=-llammpi++ --prefix=/local/med-3.0.0.bin
Dans cette exemple les compilateurs CC, CXX, F77 seront positionns par dfaut mpicc, mpiCC et mpif77. Puisque l'on active les tests fortran 90, il est necessaire de positionner galement FC mpif77 si vous ne possdez pas de wrapper mpif90. Le positionnement FTLIBS=--lampi++ est necessaire pour l'dition des liens des tests fortran qui seront fait en F77 ou FC (cf explication prcdente sur la compilation statique).
Ex: ../Dev_V3.0b_fayolle/configure --with-hdf5=/local/hdf5-1.8.4p1_par.bin FC=mpif77 FCFLAGS="-fdefault-integer-8" --with-f90=mpif77 FFLAGS="-fdefault-integer-8" FTLIBS="-llammpi++" --prefix=/local/med-3.0.0a2.bin
export LAMMPIF77=gfortran ../Dev_V3.0b_fayolle/configure --prefix=/local/med-3.0.0.bin --with-hdf5=/local/hdf5-1.8.4p1_par.bin/ --disable-shared FTLDFLAGS=-L/usr/lib/gcc/x86_64-linux-gnu/4.1.2/ FTLIBS="-lstdc++ -llammpi++"
./configure --disable-shared --prefix=/local/med-3.0.0.bin --with-hdf5=/local/hdf5-1.8.2_par.bin/ CC=mpicc LDFLAGS="-lm -lz" CXX=mpiCC FTLDFLAGS="-L/usr/lib/gcc/x86_64-linux-gnu/4.1.2/ -L/usr/lib/lam/lib" FTLIBS="-lstdc++ -llammpio -llammpi++ -llamf77mpi -lmpi -llam -lutil -ldl" pas de wrapper mpif90
L'exemple suivant permet d'installer les executables, bibilothques, modules python, tests et documentation dans des rpertoires spcifs par l'utilisateur :
../Dev_V3.0b_fayolle/configure --prefix=/tmp/MED1_unused_here --exec-prefix=/tmp/MED1_exec_prefix_for_python --with-f90 --with-hdf5=/local/hdf5-1.8.14.bin --with-swig=/local/swig-2.0.9 --bindir=/tmp/MED1/bin --libdir=/tmp/MED1/lib --includedir=/tmp/MED1/include --docdir=/tmp/MED1/doc --disable-static --enable-installtest
Notez l'option --enable-installtest qui demande explicitement d'installer les tests.
Sous Solaris :
/* Pour utiliser Workshop 6.0*/ export LD_LIBRARY_PATH=/logiciels/public/zlib-1.1.4/lib: /home/med/hdf5-1.6.4.SUN4SOL2/lib:/logiciels/workshop-6.0/SUNWspro/lib export PATH=/logiciels/workshop-6.0/SUNWspro/bin/:$PATH export F90=f90
./configure CC="cc" CFLAGS="-O" F77="f90 -silent" FFLAGS="-O2" CXX="CC" --prefix=/tmp/med-3.0.0.sun --with-hdf5=/home/med/hdf5-1.6.4.SUN4SOL2/ --with-f90 --disable-shared LDFLAGS="-L/logiciels/public/zlib-1.1.4/lib/" FTLDFLAGS="-L/logiciels/workshop-6.0/SUNWspro/WS6/lib/" FTLIBS="-lcx -lCrun -lCstd"
Notez l'apparition du -silent qui permet au configure de detecter correctement la capacit de ce compilateur gnrer une bibliothque dynamique. Sans ce flag f77 crit sur la stderr le nom de la routine en cours de compilation ce qui est dtect comme une erreur au configure.
Sous OSF/1 :
Par dfaut le configure utilis positionne la taille des entiers 64bits, pour dsactiver cette fonctionnalit utiliser --disable-int64. Prendre garde positionner les FFLAGS fortran de faon adquate (-integer_size 64).
F77=f90 FFLAGS="-fast -r8 -integer_size 64 -arch host -tune host" CC=cc CFLAGS="-g0 -verbose -std -O4 -arch host -tune host -ansi_args -fp_reorder -readonly_strings -inline speed" HDF5HOME=/home05/med/hdf5-1.6.4 F90=f90
./configure --prefix=/home05/med/med-3.0.0 --with-f90
./configure --prefix=/home02/salome/ERIC/med-3.0.0_64.bin --with-f90=ifort FFLAGS="-i8" FCFLAGS="-i8"
export ZLIB_PREFIX=/home/projets-bgq/systel/LIBRARY/zlib-1.2.7/arch/zumbrota export HDF5_PREFIX=/home/projets-bgq/systel/LIBRARY/hdf5-1.8.8/arch/zumbrota export PATH=$PATH:$HDF5_PREFIX/bin/tools/ export MED_SRC=$HOME/med-3.0.7
$MED_SRC/./configure --prefix=$MED_PREFIX --disable-shared --disable-python CC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpicc F77=/bgsys/drivers/ppcfloor/comm/xl/bin/mpif77 FC=/bgsys/drivers/ppcfloor/comm/xl/bin/mpif90 CXX=/bgsys/drivers/ppcfloor/comm/xl/bin/mpic++ CXXFLAGS="-qlanglvl=redefmac" --with-hdf5=$HDF5_PREFIX --with-med-int=int LDFLAGS="-L$ZLIB_PREFIX/lib" FTLIBS="-L/bgsys/linux/RHEL6.3_V1R2M0-36/opt/ibmcmp/vacpp/bg/12.1/lib64/ -libmc++ -L/bgsys/linux/RHEL6.3_V1R2M0-36/usr/lib/gcc/ppc64-redhat-linux/4.4.4/lib64 " --build=ppc64 --host=powerpc
Remarque importante : Il peut tre necessaire de modifier la variable prefer_static_libs yes dans la fonction func_mode_link du fichier libtool gnr au ./configure.
MED_SRC=$HOME/med-3.0.5 MED_PREFIX=/gpfs/home/med/med-3.0.5.bin/arch/bgp HDF5_PREFIX=/gpfs/home/saturne/opt/hdf5-1.8.6/arch/bgp ZLIB_PREFIX=/gpfs/home/saturne/opt/zlib-1.2/arch/bgp
$MED_SRC/./configure --prefix=$MED_PREFIX --disable-shared CC=mpixlc F77=mpixlf77 FC=mpixlf90 CXX=mpixlcxx CXXFLAGS="-DMPICH_SKIP_MPICXX -DMPICH_IGNORE_CXX_SEEK" --with-hdf5=$HDF5_PREFIX --with-med-int=int --disable-shared LDFLAGS="-L$ZLIB_PREFIX/lib" FTLIBS="/opt/ibmcmp/vacpp/bg/9.0/bglib/libibmc++.a /bgsys/drivers/V1R4M2_200_2010-100508P/ppc/gnu-linux/powerpc-bgp-linux/lib/libstdc++.a" --build=ppc64 --host=ppc
Trois utilitaires sont compils et installs dans /bin. Ce sont :
Toute la documentation est presente dans le rpertoire d'installation /share/doc/. Il s'agit d'une documentation au format HTML.
Par e-mail : [email protected]