On se propose ici d’installer flopy et les programmes USGS nécessaires, dans le but d’utiliser non seulement MODFLOW, mais aussi le code MT3DMS qui permettra de mettre en œuvre des simulations de transport de contaminants en milieu poreux.
flopy étant une librairie pour python 3, il vous faudra disposer de python 3 sur votre machine pour l’utiliser.
Si vous n'avez pas encore python sur votre machine, installez python 3.
Sous windows, l'installation la plus légère se fait avec l'installeur (python-3.8.2-amd64.exe par exemple) à télécharger sur
https://www.python.org/downloads/release
Il existe des solutions plus complètes, qui sont des environnements de programmation en python, comme anaconda, spyder, pycharm, etc. mais elles peuvent paraissent surdimensionnées et sont plutôt dédiées à une utilisation intensive de python.
Si vous avez python mais que c'est une version python 2 (c’est le cas sur Mac, python est présent dans OS X, mais c’est a priori python 2), il faut installer python 3, nécessaire pour les versions récentes de flopy.
(de manière générale, python 2 ayant arrêté son développement fin 2019, il est préférable de passer à python 3 comme version principale; il existe un utilitaire, 2to3, qui vous permettra de transformer en version 3 vos scripts python 2)
pip est l’outil indispensable pour installer les librairies (package) python (sauf pour les utilisateurs d’Anaconda, qui utiliseront conda). Il va servir à installer flopy et les librairies nécessaires à son fonctionnement: numpy et matplotlib.
Si on a une version suffisamment récente de python 3 (à partir de la 3.4), alors le 'package manager' pip est inclus dans python. Sinon, on peut mettre à jour python 3, ou installer pip (aller sur https://pypi.org/project/pip/).
Pour vérifier que pip est installé, ouvrir une “session dos” (c'est à dire l'interface en lignes de commande, par la commande cmd.exe), et taper
C:\...>pip --version
attention: si vous avez python 2.7 encore actif sur votre machine, il se peut que le pip actif installe les librairies pour python 2, alors que les versions récentes de flopy demandent python 3.5 au moins. Il faudra alors utiliser pip3 et non pip. Pour voir à quelle version correspond le pip par défaut, la commande 'pip show pip' (et 'pip3 show pip') affichera dans quel répertoire, celui de python 2 ou de python 3, se trouve pip (ou pip3). Sur ma machine, par exemple, c'est encore Python 2.7 qui est le python par défaut, j'utilise donc pip3 pour installer numpy, matplotlib, flopy pour travailler sous python 3 ...
pour installer une librairie pour python, il suffit alors, toujours dans une session en ligne de commande, de taper
pip install librairie
en l'occurence :
C:\...>pip install numpy
C:\...>pip install matplotlib
C:\...>pip install flopy
(il est possible que la dernière commande suffise: c’est pip qui se chargera de vérifier que les librairies nécessaires à flopy sont présentes, et dans des versions suffisamment récentes, et qui installera ces librairies si nécessaire)
Dans le cas où on utilise une distribution Anaconda, on passe par conda pour installer flopy:
conda install -c conda-forge flopy
Flopy permet de construire les fichiers d’entrée de MODFLOW et autres programmes USGS et d’en exploiter les résultats, mais ne contient pas les programmes eux-mêmes: il va devoir lancer les exécutables (mf2005.exe, mt3dms.exe, etc) qui auront été au préalable enregistrés sur votre machine.
Ces exécutables ont été regroupés par l’USGS sur un dépôt github:
https://github.com/MODFLOW-USGS/executables
Il faut télécharger le fichier zip correspondant à votre système (windows 64 ou 32 bits, ou Mac, ou Linux). Créer un répertoire, par exemple C:\MyProgs\USGS\ et y décompresser ce zip.
On a le choix ici entre différentes options.
On peut intervenir sur les variables d’environnement: on peut ajouter ce répertoire des exécutables USGS au PATH du système (liste des chemins où le système va chercher les exécutables).
Cela peut se faire (windows) en ligne de commande:
setx PATH=%PATH%;C:\MyProgs\USGS\ici, %PATH% reprend la valeur courante de PATH, on y concatène le nouveau chemin C:\MyProgs\USGS\, et on assigne cette nouvelle liste à la variable PATH.
Plus simplement, on peut intervenir au niveau du script flopy.
Cela se fait sur l’appel au module flopy initial, celui qui initialise le problème et donne le nom du programme utilisé (ici modflow version 2005):
sous windows, si le PATH n’a pas été modifié, on donne le chemin complet :
modelname = 'tutorial1' mf= flopy.modflow.Modflow( modelname, exe_name='C:\MyProgs\USGS\mf2005.exe')
sous windows, si le PATH a été modifié, on donne uniquement son nom, sans chemin :
mf= flopy.modflow.Modflow( modelname, exe_name='mf2005.exe')
sous linux, si mf2005 a été placé dans /usr/bin/:
mf= flopy.modflow.Modflow( modelname, exe_name='mf2005')
Plus simplement encore, on peut placer mf2005.exe (autres exécutables USGS que pourra appeler flopy) dans le répertoire où se trouve le script à exécuter. Son chemin complet est alors simplement le nom du programme, mf2005.exe.
Caveat: il est préférable de créer un répertoire spécifique pour les scripts python - flopy. Il faut que ce répertoire soit dans une zone pour laquelle vous avez les droits d’écriture, par exemple dans ‘mes documents’ ou équivalent. On m’a signalé que par exemple quand tutorial01.py est dans C:\Program Files\USGS\ il y a risque d’erreur du type ‘permission denied’.