Simulation de production du puits au séparateur et DSL de corrélations PVT
Travail antérieur à SIMYL Research d’un membre de l’équipe ; la provenance est à la fin de la fiche.
Problème
Une startup de logiciels pour l’ingénierie de production pétrolière, dont le responsable a fait partie, devait calculer les propriétés des fluides en fonction de la pression, du volume et de la température (PVT) avec les corrélations publiées dans la littérature, chacune avec ses unités, sa plage de validité et son origine, et les utiliser dans un simulateur de la production depuis le fond du puits jusqu’au séparateur. Écrire chaque corrélation à la main en C++ était lent et source d’erreurs d’unités et de plage.
Intervention
- Un langage dédié (DSL) en Ruby pour définir chaque corrélation de façon déclarative : nom, famille, unité du résultat, paramètres avec leurs unités et leurs plages, synonymes, description des données d’origine, référence bibliographique et équation. Un générateur produit le code C++ à partir de ces définitions.
- Une bibliothèque en C++ qui exécute les corrélations avec des grandeurs physiques typées : une unité incompatible ou un résultat hors plage sont signalés comme une erreur, et non comme un nombre silencieusement faux. Elle comprend des outils d’ajustement de corrélations et une batterie de tests.
- Le module d’unités est né dans ce projet et a continué d’évoluer comme bibliothèque indépendante,
uconv, aujourd’hui en C++20. - Sur cette base a été construit le backend de simulation de la production depuis le fond du puits jusqu’au séparateur.
Résultats consignés
- 188 corrélations PVT de pétrole, de gaz et d’eau, organisées en 35 familles, définies dans le DSL et publiées avec leur référence bibliographique dans
back-pvt, sous licence GPL-3.0. - L’historique public de
back-pvtva de juillet 2016 à avril 2018, avec 1 282 commits du responsable et 65 d’une autre personne. - La bibliothèque d’unités est toujours maintenue :
uconva un historique de mars 2017 à 2026, avec intégration continue.
Limites
La startup n’a pas eu de clients, donc le simulateur n’a pas été utilisé en production avec des tiers ; il a fonctionné en développement et en tests internes, et ses composants spécifiques n’ont pas été publiés. Les chiffres de cette fiche sont des décomptes vérifiables dans les dépôts, pas des résultats commerciaux.
Provenance
Travail antérieur de Leandro Rabindranath León, membre de SIMYL Research, comme développeur principal d’une startup dont il a fait partie : conception du DSL, de la bibliothèque et du backend de simulation, jusqu’en 2018. Une autre personne a collaboré à la documentation. Code publié en logiciel libre : back-pvt et uconv.