... | @@ -6,7 +6,7 @@ Cette page liste et détaille les activités de Julien Veyssier pendant ses deux |
... | @@ -6,7 +6,7 @@ Cette page liste et détaille les activités de Julien Veyssier pendant ses deux |
|
|
|
|
|
# IRIP
|
|
# IRIP
|
|
|
|
|
|
L'objectif du contrat était de reprendre le travail (déjà commencé par Christine Barachet) d'implémentation d'un plugin QGIS pour la méthode IRIP. Ce plugin est donc une interface graphique à IRIP-batch qui est lui-même une réécriture d'IRIP-SNCF. Pendant le développement du plugin, il a également été question d'optimisation des performances de l'outil pour ramener ses temps d'exécution à des valeurs raisonnables.
|
|
L'objectif du contrat était de reprendre et continuer le travail de Christine Barachet d'implémentation d'un plugin QGIS pour la méthode IRIP. Ce plugin est donc une interface graphique à IRIP-batch qui est lui-même une réécriture d'IRIP-SNCF. Pendant le développement du plugin, il a également été question d'optimisation des performances de l'outil pour ramener ses temps d'exécution à des valeurs raisonnables.
|
|
|
|
|
|
La tâche principale durant ce contrat a été de permettre d'éviter l'utilisation de la librairie PCRaster qui empêchait l'utilisation du plugin sous Windows.
|
|
La tâche principale durant ce contrat a été de permettre d'éviter l'utilisation de la librairie PCRaster qui empêchait l'utilisation du plugin sous Windows.
|
|
|
|
|
... | @@ -50,14 +50,68 @@ Au fur et à mesure de l'utilisation du plugin, pendant son développement, il a |
... | @@ -50,14 +50,68 @@ Au fur et à mesure de l'utilisation du plugin, pendant son développement, il a |
|
|
|
|
|
Dans le cadre de la thèse de Bastien Richard, un modèle multi-agent doit être couplé avec un modèle de croissance des plantes et un modèle hydrologique. Je suis intervenu sur le couplage en général mais plus particulièrement sur le couplage avec le modèle hydro.
|
|
Dans le cadre de la thèse de Bastien Richard, un modèle multi-agent doit être couplé avec un modèle de croissance des plantes et un modèle hydrologique. Je suis intervenu sur le couplage en général mais plus particulièrement sur le couplage avec le modèle hydro.
|
|
|
|
|
|
|
|
Le travail effectué pour ce couplage en particulier est réutilisable dans d'autres contextes, pour d'autres couplage ou n'importe quel projet qui nécessite une communication avec un modèle J2K.
|
|
|
|
|
|
## Communication avec un modèle J2K
|
|
## Communication avec un modèle J2K
|
|
|
|
|
|
réutilisable, générique etc..
|
|
Pour interagir avec un modèle J2K, un ensemble d'éléments ont été développés.
|
|
|
|
|
|
|
|
* Un module de communication qui stoppe le modèle en début de pas de temps et est à l'écoute d'éventuelles commandes envoyées par des programmes extérieurs.
|
|
|
|
* Des modules spécifiques permettant la modifications de certaines valeurs internes du modèle
|
|
|
|
* Deux modules génériques permettant plus de souplesse pour modifier n'importe quel attribut du modèle
|
|
|
|
|
|
|
|
### Module de communication
|
|
|
|
|
|
|
|
Ce module gère principalement 2 aspects :
|
|
|
|
* L'ordonnancement de l'exécution du modèle
|
|
|
|
* L'interaction avec les variables internes du modèles
|
|
|
|
|
|
|
|
Pour l'ordonnancement, ce module bloque l'exécution du modèle à chaque pas de temps. L'entité extérieure qui pilote peut ainsi choisir quand elle veut faire avancer le modèle avec des envois de commandes.
|
|
|
|
|
|
|
|
À part les commandes concernant l'ordonnancement, ce module comprend aussi des commandes qui permettent l'interaction avec les deux types de modules cités par la suite.
|
|
|
|
|
|
|
|
### Modules spécifiques
|
|
|
|
|
|
|
|
Certaines interactions avec le modèle ne sont pas triviales et doivent prendre en compte les unités, les effets de bord de l'interaction et ont une influence sur plusieurs attributs du modèle. C'est la cas par exemple des modules d'irrigation qui doivent respecter des conditions en relation avec les caractéristiques du sol.
|
|
|
|
|
|
|
|
L'interaction avec ces modules se fait en envoyant à chaque début de pas de temps les valeurs (d'irrigation par exemple) que l'ont veut imposer au modèle.
|
|
|
|
|
|
|
|
### Modules génériques
|
|
|
|
|
|
|
|
On peut aussi éventuellement simplement modifier un attribut régulièrement à l'intérieur du modèle. Pour cela on peut placer un module "générique" à l'endroit précis ou la modification doit prendre effet. Le programme externe (pilote) s'adresse aux modules génériques en utilisant leurs noms pour les différencier. On peut ainsi influer sur n'importe quelle valeur interne du modèle au beau milieu de l'exécution d'un pas de temps. Ces opérations sont à effectuer avec précaution (avec une bonne connaissance du fonctionnement du modèle) puisque leur aspect générique ne permet pas de vérifier l'unité des valeurs, leur cohérence etc...
|
|
|
|
|
|
|
|
## Script de couplage
|
|
|
|
|
|
|
|
Pour faciliter la communication avec le modèle J2K, des outils ont été développés sous la forme de fonctions R. Ces fonctions permettent d'interagir avec le modèle hydrologique sans avoir besoin de reformater les données manipulées. On continue à manipuler des données sous forme de vecteur et de dataframe.
|
|
|
|
|
|
|
|
## Outil de visualisation de données multi-dimensionnelles
|
|
|
|
|
|
|
|
Un outil sous forme de page web a été développé pour permettre la visualisation statique des données produites par un modèle ou un couplage de modèles.
|
|
|
|
|
|
|
|
Cet outil prend des données tabulaires en entrée.
|
|
|
|
|
|
## Outils de calcul d'aires
|
|
Il propose une vue en 3D en laissant le choix des 3 colonnes de données à utiliser pour les 3 axes de la représentation.
|
|
|
|
|
|
|
|
Il propose aussi une vue en 2D capable de superposer des séries de données en choisissant 2 axes (2 colonnes de données) et en sélectionnant les lignes selon une condition sur une colonne.
|
|
|
|
|
|
## hru-delin
|
|
## hru-delin
|
|
|
|
|
|
|
|
hru-delin est utilisé par le couplage de Bastien Richard pour produire l'environnement de simulation.
|
|
|
|
|
|
|
|
Mon travail sur hru-delin a d'abord été motivé par son lien avec les travaux sur le couplage de modèles. L'objectif premier était de faire évoluer l'outil pour permettre son utilisation sur nos machines personnelles.
|
|
|
|
|
|
|
|
Les développements liés à hru-delin sont détaillés ensuite dans un chapitre dédié.
|
|
|
|
|
|
|
|
## Conclusion
|
|
|
|
|
|
|
|
Les briques logicielles nécessaires au couplage avec un modèle J2K ont été développées ainsi qu'une documentation en vue d'une réutilisation de ces outils dans d'autres contexte.
|
|
|
|
|
|
|
|
Il reste un grand nombre d'idées qui n'ont pas été concrétisées :
|
|
|
|
* produire des outils de validation et de controle comme un module de calcul de bilan hydrologique
|
|
|
|
* une visualisation dynamique de l'évolution des entités spatiales dans le temps
|
|
|
|
* des outils pour automatiser la production d'environnements de simulation à partir de données géospatiales
|
|
|
|
* ...
|
|
|
|
|
|
# hru-delin
|
|
# hru-delin
|
|
|
|
|
|
hru-delin est un outil permettant de produire des HRU à partir de données de terrain en vue d'utiliser certains outils tels que des modèles hydro J2K.
|
|
hru-delin est un outil permettant de produire des HRU à partir de données de terrain en vue d'utiliser certains outils tels que des modèles hydro J2K.
|
... | @@ -66,6 +120,8 @@ Il est utilisé par les modèles de Bastien Richard. Pour lui faciliter la tâch |
... | @@ -66,6 +120,8 @@ Il est utilisé par les modèles de Bastien Richard. Pour lui faciliter la tâch |
|
|
|
|
|
En résumé, on peut désormais utiliser cet outil sur n'importe quelle machine personnelle, il est plus rapide grace à la parallélisation des trois quarts des calculs, il est utilisable sous Windows (dans QGIS), il est en Python pur et il a subit un bon nombre de corrections.
|
|
En résumé, on peut désormais utiliser cet outil sur n'importe quelle machine personnelle, il est plus rapide grace à la parallélisation des trois quarts des calculs, il est utilisable sous Windows (dans QGIS), il est en Python pur et il a subit un bon nombre de corrections.
|
|
|
|
|
|
|
|
Les deux projets de développement sont [hru-delin](https://gitlab.irstea.fr/julien.veyssier/hru-delin/-/wikis/home) et [hru-delin-qgis](https://gitlab.irstea.fr/julien.veyssier/hru-delin-qgis/-/wikis/home).
|
|
|
|
|
|
## Portage à Grass7
|
|
## Portage à Grass7
|
|
|
|
|
|
hru-delin, jusqu'à la version 5, n'est utilisable qu'avec grass6 qui n'est plus maintenu depuis plusieurs années et n'est plus disponible dans les distributions GNU/Linux courantes. Il n'était donc utilisable que sur une machine d'Irstea Lyon (penelope) maintenue avec grass6. Cela provoquait des difficultés aux utilisateurs qui devaient se connecter à cette machine à distance et partager ces ressources pour utiliser hru-delin.
|
|
hru-delin, jusqu'à la version 5, n'est utilisable qu'avec grass6 qui n'est plus maintenu depuis plusieurs années et n'est plus disponible dans les distributions GNU/Linux courantes. Il n'était donc utilisable que sur une machine d'Irstea Lyon (penelope) maintenue avec grass6. Cela provoquait des difficultés aux utilisateurs qui devaient se connecter à cette machine à distance et partager ces ressources pour utiliser hru-delin.
|
... | @@ -74,10 +130,25 @@ hru-delin est maintenant adapté à Grass7 et peut donc fonctionner sur n'import |
... | @@ -74,10 +130,25 @@ hru-delin est maintenant adapté à Grass7 et peut donc fonctionner sur n'import |
|
|
|
|
|
## Parallélisation
|
|
## Parallélisation
|
|
|
|
|
|
|
|
Dans les étapes 2, 3 et 4, les boucles de haut niveau sur les bassins ou sur les HRUs sont celles qui consomment le plus de ressources. Les itérations de ces boucles sont la plupart du temps indépendantes entre elles ce qui permet de les paralléliser assez simplement.
|
|
|
|
|
|
|
|
La parallélisation actuelle d'hru-delin fait gagner à peu près `0.8 * nombre_de_coeurs`. Cela a déjà permis, par exemple, de réduire le temps d'exécution d'hru-delin d'une semaine à moins de 2 jours (sur une même machine) pour des calculs sur le bassin du Rhône.
|
|
|
|
|
|
## Portage à Windows
|
|
## Portage à Windows
|
|
|
|
|
|
|
|
Le portage d'hru-delin à grass7 lui a permis de s'exécuter sur des machines récentes mais il restait tout de même beaucoup d'appels systèmes (awk, sed, grep...) qui le rendait uniquement compatible avec GNU/Linux. La conversion en Python de tous les appels à des programmes externes permet désormais son utilisation sur Windows.
|
|
|
|
|
|
|
|
La compatibilité avec MacOS est proche. Il reste quelques adaptations à faire au niveau du multiprocess (parallélisation).
|
|
|
|
|
|
## Abandon des dépendances à Java
|
|
## Abandon des dépendances à Java
|
|
|
|
|
|
|
|
hru-delin effectue une détection et correction des cycles dans la topologie des HRUs. Cette opération était faite par un programme externe (ZirkelKill) écrit en Java. Après avoir obtenu les sources de ce programme, il a été réécrit en Python.
|
|
|
|
|
|
|
|
Cela a plusieurs bénéfices :
|
|
|
|
* on reste dans le même langage, on facilite le débuggage, la maintenance, les corrections potentielles...
|
|
|
|
* on facilite l'installation d'hru-delin en supprimant la dépendance à Java
|
|
|
|
* on augmente la portabilité aux environnement ne disposant pas de Java
|
|
|
|
|
|
## Amélioration diverses
|
|
## Amélioration diverses
|
|
|
|
|
|
## Plugin QGIS |
|
## Plugin QGIS |
|
|
|
\ No newline at end of file |