Objectif
L’analyse des données historiques de production est l’un des éléments les plus importants du mécanisme d’optimisation de la productivité des gisements de pétrole et de gaz. Des techniques robustes d’analyse des données de production, telles que l’analyse de la courbe de déclin (Decline Curve Analysis, DCA), aident les ingénieurs de production à évaluer les indicateurs liés à la productivité des puits, tels que les taux de déclin, les taux moyens de production de pétrole et de gaz ainsi que la production cumulée. Mais surtout, ces techniques permettent de prévoir la production de pétrole et de gaz afin d’évaluer avec précision les performances financières actuelles et la viabilité à long terme d’un actif.
Les techniques d’analyse des données de production s’appuient sur des modèles mathématiques basés sur les paramètres de performance des puits pour ajuster les données historiques de production de pétrole et de gaz au moyen d’une analyse de régression. La DCA, par exemple, utilise des fonctions mathématiques présentant une décroissance de type exponentiel. L’équation d’Arps est sans doute la méthode de DCA la plus courante et la plus utilisée dans l’industrie du pétrole et du gaz. Comme la plupart des modèles de DCA, l’équation Arps présente plusieurs avantages importants par rapport à d’autres techniques plus complexes telles que l’analyse transitoire de débit. Tout d’abord, la DCA demande peu de calculs et elle est simple à implémenter. Ensuite, la DCA comporte un petit nombre de paramètres et les résultats de la régression sont donc plus faciles à interpréter. Enfin, la DCA peut traiter des jeux de données volumineux, tels que des historiques de production denses provenant d’un ou plusieurs puits. Cependant, comme pour tout autre modèle, la qualité des données d’entrée est essentielle pour obtenir un modèle de DCA physiquement valide pour l’analyse de données, la prévision de la production et l’analyse de l’économie pétrolière.
Dans cet article, nous expliquons comment utiliser MATLAB® pour développer et déployer un workflow d’analyse de données basé sur la DCA pour les données de production de pétrole et de gaz. Nous expliquons également comment formater et prétraiter les jeux de données de production historiques, créer des modèles de régression personnalisés, générer une prévision de production et effectuer une analyse de l’économie pétrolière. Notre principal objectif est de montrer comment MATLAB peut aider à synthétiser et résoudre les problèmes liés à la complexité du workflow en appliquant des pratiques de développement logiciel simples mais robustes. À des fins de démonstration, nous utiliserons les rapports historiques de production de pétrole et de gaz publiés sur le site web de la Texas Railroad Commission (TRRC).
Application web d’analyse des données de production
Nous allons décrire les principales étapes du workflow pour effectuer une analyse des données de production de pétrole et de gaz dans MATLAB, ainsi que quelques bonnes pratiques en matière de développement et d’implémentation de logiciels, utiles pour concevoir et personnaliser des applications logicielles plus fiables et plus faciles à maintenir pour l’analyse de la production de pétrole et de gaz.
Même si notre application est déployée en ligne, les utilisateurs finaux peuvent interagir avec l’application web de la même manière qu’avec n’importe quelle application de bureau classique. La figure 1 montre l’onglet d’importation de l’application, qui permet de glisser-déposer les historiques de production. Lorsqu’un jeu de données est ajouté, l’application effectue diverses opérations de prétraitement des données et retranscrit les résultats obtenus sur les tracés correspondants. Les processus associés à l’importation et au prétraitement des données sont expliqués en détail dans les sections Importation des données et Prétraitement des données.
Après avoir importé les données, les utilisateurs peuvent effectuer une analyse de régression DCA. La figure 2 montre l’onglet « Regression » de l’application qui permet d’ajuster les paramètres de régression et de choisir s’il convient d’utiliser le taux de production moyen ou les données de production cumulées d’une phase de fluide particulière, que ce soit pour le pétrole ou le gaz, pour ajuster le modèle. Notez que l’application permet également à l’utilisateur de choisir les points de départ et d’arrivée de la fenêtre de régression, ce qui rend l’analyse plus flexible. Il est ainsi possible de créer des régressions DCA sur des périodes d’intérêt spécifiques afin d’évaluer le comportement de la production, par exemple, avant et après une intervention sur un puits. Une fois tous les paramètres définis, les utilisateurs peuvent cliquer sur l’option Fit Data pour que l’algorithme d’optimisation sous-jacent détermine quel est l’ensemble de paramètres le plus adapté pour la DCA en fonction du jeu de données. L’application affiche ensuite un résumé des paramètres utilisés ainsi que le coefficient de détermination (R2) pour chaque phase de fluide. Nous fournissons plus de détails sur le processus de DCA à la section Analyse de la courbe de déclin.
Pour créer une projection de la production de pétrole et de gaz basée sur le modèle de DCA, il suffit de définir sur combien d’années doit porter la prévision. L’application calcule alors les taux de production moyens et la production totale pour les deux phases de fluide séparément. Comme le montre la figure 3, l’application permet à l’utilisateur de spécifier la durée en années de la période de prédiction à l’aide d’un curseur ou d’un champ de texte numérique. Si la durée sélectionnée est modifiée, les taux de production moyens et les graphiques de production cumulée sont automatiquement mis à jour.
L’analyse de l’économie pétrolière, réalisée à partir des données de prévision de la production, constitue la dernière étape de ce workflow d’analyse des données de production. Les analyses de l’économie pétrolière sont utilisées par les gestionnaires d’actifs pour prendre des décisions éclairées à chaque étape, de l’analyse globale d’un gisement à l’analyse de chaque puits. Pour créer une nouvelle prévision dans l’application, les données sont instantanément transférées dans l’onglet « Economics », où l’utilisateur peut modifier des paramètres tels que les taxes, les dépenses d’investissement (CAPEX), les dépenses d’exploitation (OPEX) et les prix du pétrole et du gaz. Ensuite, l’application met automatiquement à jour la courbe de la valeur actuelle nette (Net Present Value, NPV) sur le graphique en calculant en interne cette valeur, le seuil de rentabilité, le point de récession (le cas échéant), le taux de rentabilité interne et le retour sur investissement. Dans l’exemple présenté à la figure 4, la courbe NPV passe d’une valeur négative à une valeur positive (seuil de rentabilité), atteint une valeur maximale (NPV maximale), puis commence à décroître, ce qui indique que l’exploitation du puits sera trop coûteuse à partir de ce moment-là. L’application indique également la NPV prévue la plus élevée ainsi que la date estimée de réalisation. Nous abordons en détail ces questions d’implémentation à la section Analyse économique.
Nous allons maintenant passer en revue certaines capacités de développement logiciel de MATLAB utilisées dans l’application web que nous avons développée pour exécuter le workflow d’analyse des données de production de pétrole et de gaz.
Architecture logicielle
Vous avez probablement remarqué à la section précédente que les composants de l’application présentent une relation linéaire, c’est-à-dire que l’entrée d’un composant dépend de la sortie d’un autre composant. Par exemple, l’onglet « DCA » dépend des données fournies par l’onglet « Import », lesquelles dépendent elles-mêmes du jeu de données fourni par l’utilisateur. L’onglet « Economics » dépend des prévisions de production fournies par l’onglet « Forecast », lequel dépend du modèle de DCA fourni par l’onglet « DCA ». Il s’agit d’un exemple classique du modèle d’architecture logicielle de canaux et de filtres. Cette architecture logicielle étant bien connue, la logique de notre application repose sur ces concepts de modèle de conception. Le tableau 1 décrit les composants, ou filtres, ainsi que leurs responsabilités, les entrées et les sorties.
Composant | Responsabilités | Entrées | Sorties |
Importation des données |
|
|
|
Prétraitement des données |
|
|
|
Analyse de la courbe de déclin (DCA) |
|
|
|
Prévision de la production |
|
|
|
Analyse économique |
|
|
|
Outre ces éléments, nous avons mis en place deux modules globaux : Analyses et résultats. Ensemble, ces éléments assemblés assurent les tâches principales d’une partie donnée du processus. La figure 5 illustre l’architecture logicielle en question.
L’architecture de canaux et de filtres offre plusieurs avantages, notamment la possibilité de diviser des workflows complexes en composants indépendants et coopératifs, ce qui facilite le débuggage et la maintenance du logiciel. En outre, vous pouvez étendre la fonctionnalité de votre programme en ajoutant de nouveaux composants, la seule condition étant que ces derniers disposent d’interfaces de programmation d’application (API) compatibles avec vos canaux ou connecteurs. Par exemple, pour étendre votre sous-système Résultats, vous pouvez inclure un composant Rapport qui utilise MATLAB Report Generator™ pour générer des rapports spécifiquement conçus pour les ingénieurs de production ou les gestionnaires d’actifs.
Exemple de données de production
À l’aide de l’outil Public GIS Viewer de la TRRC, nous avons créé une population de 200 puits sélectionnés de manière aléatoire dans la zone de production de pétrole lourd du schiste d’Eagle Ford, dans le sud du Texas.
Avec l’outil Public GIS Viewer de la TRRC, nous avons créé une population de 200 puits sélectionnés de manière aléatoire dans la zone de production de pétrole lourd dans le schiste d’Eagle Ford, dans le sud du Texas. Nous avons ensuite utilisé Mapping Toolbox pour générer le graphique à bulles de la production cumulée de pétrole présenté à la figure 6.
La figure 7 présente la production journalière moyenne de pétrole des puits du comté de Karnes figurant dans cette population, qui produisent du pétrole issu de la formation inférieure d’Eagle Ford. Notez la diminution du taux de production journalière de pétrole, qui ressemble beaucoup à un déclin suivant une loi de puissance, ce déclin même que la méthode DCA d’Arps est censé décrire.
Pour la méthode d’analyse des données de production décrite dans cet article, nous avons sélectionné au hasard un puits dans la population de puits mentionnée précédemment. Pour préserver son anonymat, nous l’appellerons simplement « puits échantillon » tout au long de cet article. Les métadonnées relatives à ce puits, telles que son exploitant, son emplacement, etc. ne seront pas divulguées.
Workflow d’analyse des données de production
La section précédente a posé les bases du workflow d’analyse des données de production adopté dans notre application web. Cette section se concentre sur l’implémentation logicielle des composants mentionnés à la section Architecture logicielle. Elle explique comment utiliser MATLAB pour construire la fonctionnalité requise pour chaque composant. Les utilisateurs étant supposés avoir des connaissances de base en programmation informatique, nous avons inclus dans ce document des liens vers des ressources additionnelles qui donnent plus de détails sur ces étapes.
Le workflow est divisé en cinq sous-sections. Dans Importation des données, nous décrivons le processus d’importation des jeux de données de la TRRC dans MATLAB et certaines difficultés que pose ce type de structuration des données. Dans Prétraitement des données, nous explorons les différentes options disponibles dans MATLAB pour le nettoyage des données et la détection des valeurs aberrantes et nous voyons comment automatiser ce processus. La définition de modèles de régression sur mesure dans MATLAB, comme la DCA d’Arps, et leur application pour la prévision de la production, sont respectivement abordées aux sous-sections Analyse de la courbe de déclin (DCA) et Prévision de la production. Enfin, dans Analyse économique, nous expliquons comment utiliser des indicateurs économiques définis par l’utilisateur pour obtenir des informations financières à partir des prévisions de production de pétrole et de gaz.
Importation des données
Les robustes capacités d’importation de données de MATLAB facilitent le travail avec des types de données courants tels que les feuilles de calcul Excel®, les fichiers CSV (valeurs séparées par une virgule), les fichiers image, les fichiers audio et vidéo, etc. Bien que nous nous intéressions ici aux données stockées localement, nous tenons à souligner que MATLAB dispose d’interfaces prédéfinies pour les services cloud comme Amazon® Web Services, Microsoft® Azure® et Google Cloud Platform™ (voir Utilisation de MATLAB et Simulink dans le cloud), ainsi que de bases de données relationnelles et NoSQL via Database Toolbox™.
Préparation d’un jeu de données sur le puits échantillon
L’enregistrement de la production de pétrole et de gaz de notre puits échantillon est conservé dans un fichier CSV local au même format que le modèle de la TRRC. Bien que les tableaux provenant de fichiers CSV puissent être lus et importés directement dans MATLAB, ce format présente quelques difficultés. Tout d’abord, il contient un mélange de données numériques (production nette de pétrole et de gaz, par exemple) et de métadonnées (nom de l’exploitant, emplacement, etc.). Ensuite, certains points de données sont manquants et sont étiquetés comme NO RPT
. Enfin, le format de datetime est un peu inhabituel puisqu’il n’indique pas le jour exact d’enregistrement d’un rapport. Une capture d’écran du jeu de données sur le puits échantillon est présentée à la figure 8.
Malgré ces difficultés, MATLAB est toujours en mesure de traiter ce jeu de données grâce à l’outil d’importation. Il s’agit d’une application graphique qui vous permet de personnaliser les paramètres d’importation en indiquant les types de données correspondant à chaque colonne, en définissant la plage de données qui vous intéresse et en choisissant d’inclure ou non les lignes pour lesquelles il manque des données.
Ici, nous avons commencé par sélectionner le type de données Number
(numériques) et par mettre en surbrillance les données de production de pétrole et de gaz du tableau. Ensuite, nous avons défini un type de datetime personnalisé pour les valeurs de la colonne 1 afin que MATLAB puisse lire et traiter correctement les dates des rapports. Ceci fait, nous avons renommé les colonnes 1, 2 et 4 respectivement reportDates
, netOil
et netGas
.
Création d’une fonction d’importation personnalisée
Après avoir suivi les étapes nécessaires pour préparer et importer correctement le jeu de données du puits échantillon, nous avons utilisé les fonctionnalités de génération de code de MATLAB pour créer la fonction wellDataParser
, qui effectue automatiquement les étapes de préparation des données décrites précédemment. La fonction wellDataParser
peut être utilisée pour importer directement depuis la ligne de commande MATLAB des jeux de données de la TRRC provenant de fichiers CSV. Cette fonction renvoie un tableau contenant des données brutes qui peuvent être utilisées dans l’analyse qui suit, comme décrit à la section Architecture logicielle.
Comme wellDataParser
est créé en tant que fonction type boîte blanche, vous pouvez la modifier pour supporter d’autres fonctionnalités. Nous avons, par exemple, calculé le dernier jour d’une date de rapport donnée et refactorisé toutes les dates de rapport dans reportDates
, comme le montre la figure 9.
Conseil de pro : Vous pouvez utiliser des datastores avec Parallel Computing Toolbox™ pour importer simultanément des centaines, voire des milliers de jeux de données de la TRRC.
Prétraitement des données
Comme nous l’avons vu dans la dernière section, les jeux de données présentent parfois des éléments non valides ou manquants, tels que les valeurs Inf
ou NaN
. Ceux-ci peuvent être facilement supprimés en appliquant au jeu de données la fonction MATLAB prédéfinie rmmissing
. Mais les données peuvent également contenir des anomalies difficiles à identifier par une inspection visuelle.
Nettoyage d’un jeu de données de production
Heureusement, les données incohérentes peuvent être nettoyées à l’aide de l’application Data Cleaner. Cette application permet d’explorer et de visualiser les données, et de définir des règles pour la détection des valeurs aberrantes. La figure 10 présente une capture d’écran de l’application Data Cleaner avec une analyse visuelle des valeurs netOil
et netGas
de notre puits échantillon. Après avoir défini les actions nécessaires pour purger notre collection de données, nous avons utilisé l’application Data Cleaner pour créer la fonction personnalisée wellDataCleaner
, qui contient les actions de prétraitement que nous avions effectuées dans l’application.
Augmentation des données
Le jeu de données est maintenant nettoyé. L’étape suivante consiste à définir les variables pour effectuer l’analyse de régression DCA, à savoir le temps opératoire (c’est-à-dire le temps d’écoulement), les taux de production journaliers moyens et la production cumulée de pétrole et de gaz. Comme wellDataCleaner
est une fonction type boîte blanche, nous avons ajouté le code nécessaire pour calculer les caractéristiques manquantes flowTime
, oilRate
, gasRate
, cumOil
et cumGas
, et les insérer dans le tableau de sortie conformément aux exigences du plan d’architecture logicielle. La figure 11 montre le tableau prétraité pour notre puits échantillon.
Progression dans l’architecture logicielle
Le développement du pipeline d’analyse des données de production est illustré à la figure 12. Les fonctions MATLAB personnalisées wellDataParser
et wellDataCleaner
désignent les composants logiciels pour l’importation et le prétraitement des données. La flèche bleue dans cette illustration représente le tableau brut résultant de la première fonction et utilisé comme entrée par la seconde. Dans MATLAB, la mise en relation de ces deux composants peut être réalisée de la façon suivante :
>> well = wellDataParser("sampleWellData.csv"); >> well = wellDataCleaner(well);
Le code ci-dessus illustre clairement le canal reliant les composants d’importation et les composants de prétraitement des données. Comme vous pouvez l’observer, wellDataCleaner
utilise efficacement la mémoire en modifiant l’objet « well » (puits) en place plutôt que d’en renvoyer un nouveau.
Conseil de pro : MATLAB fournit de nombreux exemples d’utilisation de l’application Data Cleaner. Veuillez vous référer à la documentation de MATLAB pour plus d’informations.
Analyse de la courbe de déclin (DCA)
De nombreux spécialistes considèrent les équations d’Arps comme le modèle standard de DCA pour l’analyse des données de production de pétrole et de gaz. L’équation la plus répandue est le déclin hyperbolique basé sur le débit, qui décrit la décroissance de la production quotidienne moyenne dans le temps en fonction de trois paramètres de régression — le débit initial \( q_{i} \) (volume/jour), le taux de déclin \( D \) (1/jour) et le facteur \( b \) — par rapport à un temps de référence \( t_{i} \) (jours). Cette équation est définie comme suit :
\( q(t; t_{i}) = \frac{q_{i}}{[1 \ + \ bD(t \ - \ t_{i})]^{\frac{1}{b}}} \)
où \( q(t; t_{i}) \) représente le taux de production à \( t > t_{i} \). La deuxième équation relative à la production cumulée est obtenue après intégration de l’équation 1 par rapport au temps, à partir du temps de référence \( t_{i} \) jusqu’au temps \(t\) > \( t_{i} \). Par conséquent, l’équation d’Arps basée sur la production est définie comme suit :
\( Q(t; t_{i}) = Q_{i} + \frac{q_{i}^{b}}{D(b \ - \ 1)}(q^{1-b}(t; t_{i}) - q_{i}^{1-b}) \)
où \( Q(t;t_{i}) \) représente la production cumulée à \( t>t_{i} \). Comme vous pouvez l’observer, l’équation 2 comprend la production cumulée de départ \( Q(t_{i}) ≡ Q_{i} \) dans les paramètres. Ce paramètre peut être obtenu à partir de l’enregistrement de la production d’un puits ou défini comme un paramètre de régression supplémentaire. Le tableau 2 résume les unités que nous avons adoptées pour l’analyse de la courbe de déclin.
Fluide | Taux de production | Production cumulée |
Pétrole | Barils par jour (bbl/day) |
Barils (bbl) |
Gaz | Millions de pieds cubes standard par jour (MMscf/day) |
Millions de pieds cubes standard (MMscf) |
Création de modèles de régression DCA
Nous avons créé des modèles de régression DCA sur mesure basés sur les équations 1 et 2 pour chaque phase de fluide indépendamment en utilisant Curve Fitter dans Curve Fitting Toolbox™. À présent, en supposant que le tableau well
(puits) se trouve dans votre espace de travail, nous allons vous guider à travers les quatre étapes que nous avons utilisées pour développer une régression DCA basée sur le débit pour la production journalière moyenne de pétrole :
- Étape 1 : importez
well
et attribuez les données x et y respectivement àwell.flowTime
etwell.oilRate
. Notez que la valeur oilRate (débit de prétrole) atteint son maximum puis commence à diminuer à environ 120 jours. Par conséquent, vous ne devez inclure aucune donnée avant ce point. - Étape 2 : utilisez l’option Custom Equation (Équation personnalisée) pour créer un modèle de DCA basé sur le débit. MATLAB tentera d’effectuer la régression de la bonne manière, ce qui échouera probablement en raison de problèmes de convergence causés par un ou plusieurs paramètres de régression trop proches de zéro ou devenant négatifs ou extrêmement grands. Résolvez ce problème en définissant des limites physiques significatives pour chaque paramètre. Une bonne estimation initiale de chaque paramètre permettra également à l’algorithme de converger plus rapidement.
- Étape 3 : vérifiez les statistiques sommaires de l’opération et veillez à ce que les paramètres de régression résultants soient raisonnables et se situent dans les limites spécifiées. MATLAB affichera leurs valeurs et leurs intervalles de confiance à 95 %. La somme des erreurs résultantes, R2, et la racine de l’erreur quadratique moyenne (RMSE) permettent de mieux comprendre la qualité de la régression. MATLAB nomme cette statistique sommaire « goodness of fit » (
gof
), qui signifie qualité de l’ajustement. - Étape 4 : utilisez l’option Export pour générer une fonction qui contient le modèle de régression résultant ainsi que les statistiques
gof
.
Pour créer les autres régressions DCA, nous avons suivi les mêmes étapes. Ainsi, nous avons pu créer et modifier les fonctions getDCAParamRate
et getDCAParamProd
pour exécuter des régressions DCA pour les phases de pétrole et de gaz, à partir des équations 1 et 2 respectivement. La figure 13 montre une capture d’écran de l’application Curve Fitter indiquant où commencer une étape spécifique.
Les paramètres de régression et \( R^{2} \) pour chaque régression DCA et phase de fluide de notre puits échantillon sont répertoriés dans le tableau 3. Les données de production cumulées étant généralement plus uniformes que les débits journaliers moyens, il n’est pas surprenant que la DCA basée sur la production produise les scores \( R^{2} \) les plus élevés.
DCA basée sur le débit | DCA basée sur la production | |||
Pétrole | Gaz | Pétrole | Gaz | |
\( Q_{i} \) | 192095 | 84475.5 | 192095 | 84475.5 |
\( q_{i} \) | 1530.6 | 984.06 | 1098.68 | 698.46 |
\( b \) | 1.1398 | 1.279 | 0.9388 | 0.7806 |
\( D \) | 0.0089 | 0.004 | 0.0045 | 0.0015 |
Score \( R^{2} \) | 0.945 | 0.784 | 0.999 | 0.997 |
Nous avons conçu les fonctions getDCAParamRate
et getDCAParamProd
pour qu’elles soient les seules en charge du calcul des paramètres de la DCA pour les équations 1 et 2. Elles sont toutefois incapables de prévoir la productivité cumulée ou la production journalière moyenne. Il est donc nécessaire d’opérationnaliser les modèles de DCA en développant des fonctions MATLAB qui acceptent les paramètres de régression DCA en tant qu’entrées et puissent produire le résultat requis, tel que le débit ou le volume.
À cette fin, nous avons ajouté deux fonctions à notre architecture, flowRate(t,dcaParam)
et cumulProd(t,dcaParam)
, où t
est soit un scalaire positif, soit un vecteur de scalaires positifs et dcaParam
une structure MATLAB qui contient \( q_{i} \), \(Q_{i} \), \( b \), \(D \) et \( t_{i} \). Ces deux fonctions sont des fonctions utilitaires, ce qui signifie qu’elles ne dépendent pas nécessairement d’un jeu de données spécifique, mais plutôt des paramètres de régression de la DCA. En conséquence, flowRate
et cumulProd
peuvent être regroupés dans un package utilitaire indépendant.
Nous avons utilisé ces deux fonctions pour comparer la régression DCA pour notre ensemble de données, qu’elles soient basées sur la production ou sur le débit. Les figures 14a et 14b présentent une comparaison des méthodes de DCA basées sur la production et sur le débit pour l’examen de la production journalière moyenne de pétrole et de gaz. Les deux modèles de régression permettent d’estimer les taux de production de manière satisfaisante et donnent des résultats tout à fait comparables.
Les figures 15a et 15b comparent les prévisions de production cumulée de pétrole et de gaz avec la production historique déclarée. Comme pour les taux journaliers moyens, les deux modèles de DCA permettent de prédire la production cumulée de manière satisfaisante et obtiennent des résultats très similaires.
Progression dans l’architecture logicielle
La figure 16 illustre l’état actuel du workflow. L’ajout d’un composant logiciel utilitaire, que le composant DCA utilise pour calculer le taux moyen prévu et les chiffres de production cumulés, est un point clé qu’il convient de souligner.
Nous avions la possibilité d’inclure ce package utilitaire directement dans le composant. Toutefois, pour des raisons de maintenance et compte tenu du modèle de design axé sur la responsabilité, nous avons choisi de les séparer. Cette approche a permis de faciliter considérablement la maintenance car les composants peuvent être construits et maintenus indépendamment tant que leurs signatures fonctionnelles ne changent pas. De même, nous avons ajouté de la flexibilité afin qu’il soit possible à l’avenir d’ajouter d’autres modèles de DCA sans perturber le workflow.
En outre, le fait de séparer les fonctions utilitaires rend le code plus lisible en général. Ainsi, si une autre personne veut travailler dessus, elle saura exactement ce que chaque partie est censée faire, ce qui réduira le temps de codage.
Un design modulaire des logiciels tel que celui proposé ici, même s’il peut sembler plus coûteux au départ, est beaucoup plus facile à maintenir et à développer que l’accumulation de centaines, voire de milliers de lignes de code dans des fonctions « toute puissantes », difficiles à tester et à gérer.
Prévision de la production
Pour ce composant logiciel, nous avons exploité les paramètres de régression dérivés du composant DCA pour estimer la production future de pétrole et de gaz à l’aide des fonctions utilitaires flowRate
et cumulProd
présentées dans la section précédente. Toutes les fonctions nécessaires pour générer une prévision de production étant désormais disponibles, nous avons dû écrire le code permettant de les invoquer.
Pour ce faire, nous avons créé la fonction generateForecast
, qui prend comme arguments d’entrée les paramètres de régression DCA well
pour chaque fluide et les demandes de temps de prévision. Cette fonction permet de générer une prévision de production complète en effectuant les tâches internes suivantes :
- Génération d’un vecteur de temps d’écoulement futurs
- Génération d’un vecteur de dates futures
- Calcul des taux de déclin de pétrole et de gaz
- Calcul de la production cumulée de pétrole et de gaz
Ainsi, generateForecast
renvoie un nouveau tableau avec le même format que le tableau d’entrée original, sauf que les métriques de production sont des valeurs prospectives générées avec le modèle de DCA.
La sous-section suivante décrit le fonctionnement de generateForecast
. Nous avons supposé que les prévisions de production commençaient un mois calendaire après la dernière date de déclaration et qu’elles seraient communiquées tous les mois jusqu’à l’échéance prévue.
Génération des prévisions de production
La figure 17 présente les prévisions de production de pétrole et de gaz de notre puits échantillon pour les 50 prochaines années, à partir du 31 janvier 2024. Par rapport au modèle de DCA basé sur le débit, le modèle basé sur la production prévoit une diminution légèrement plus forte de la production de pétrole au fil du temps, comme le montre la figure 17a. Cependant, la figure 17b montre une différence plus prononcée entre les projections pour la production journalière moyenne de gaz.
La différence entre les modèles de prévision devient plus significative pour la production cumulée de pétrole et de gaz, comme le montrent les figures 18a et 18b. Notez que la différence entre les prévisions de production cumulée est de plus de 50 000 barils de pétrole et de 300 millions de pieds cubes standard de gaz, ce qui peut introduire des incertitudes dans l’évaluation économique du projet.
Étant donné que les estimations de production peuvent varier en fonction du modèle utilisé, il est essentiel de tester différents modèles de DCA et de sélectionner celui qui correspond le mieux au comportement de production du gisement étudié. Un moyen de prendre cette décision consiste à exploiter les données de production des puits existants afin de faciliter la comparaison des modèles. Pour cela, vous pouvez ajouter d’autres modèles de DCA au composant DCA, mais cela augmenterait la complexité de vos fonctions. Pour éviter cela, vous pouvez recourir à un design orienté objet où chaque objet correspond à un modèle de DCA. Vous facilitez ainsi la maintenance et améliorez la fiabilité de votre système car ces objets peuvent être gérés séparément, tout comme l’architecture logicielle des canaux et des filtres.
Progression dans l’architecture logicielle
La figure 19 illustre la progression dans notre architecture logicielle jusqu’à ce stade. Comme nous l’avons mentionné précédemment, le composant de prévision de la production s’appuie sur le package utilitaire DCA créé dans la section précédente pour générer des perspectives de production de pétrole et de gaz.
Analyse économique
La dernière étape de notre workflow consiste à traduire les prévisions de production en métriques financières. Les gestionnaires d’actifs s’appuient sur ce type d’analyse de l’économie pétrolière (« petroleum economics » en anglais) pour prendre des décisions concernant le maintien ou la cession de l’activité des puits. Les investisseurs utilisent cette analyse pour évaluer la viabilité de l’achat de puits existants. Cependant, la fiabilité de toute analyse de l’économie pétrolière dépend fortement de l’exactitude des prévisions de production et des métriques financières associées.
Exemple de cas d’évaluation
Supposons qu’un investisseur soit intéressé par l’achat de notre puits échantillon. Le propriétaire de l’actif accepte de le vendre pour 1,8 million de dollars (USD). Votre objectif est de déterminer si c’est un bon investissement sur le plan financier. Pour éclairer votre décision, le propriétaire vous fournit quelques informations supplémentaires :
- Coût d’exploitation du puits (OPEX) : 2 000 $/mois
- Taxe sur la production de pétrole : 36 %
- Taxe sur la production de gaz : 16 %
En outre, pour l’analyse, votre service financier recommande de prendre en considération un taux d’actualisation de 10 % et des prix moyens de 80 dollars le baril de pétrole et de 2,78 dollars les mille pieds cubes de gaz. Enfin, vous souhaitez introduire la variabilité des prix du pétrole et du gaz afin de mieux évaluer la robustesse de votre investissement face aux fortes fluctuations du marché.
Nous avons inclus la fonctionnalité de variabilité des prix dans la fonction MATLAB econAnalysis
que nous avons créée pour réaliser l’ensemble de l’analyse économique. Cette fonction utilise un tableau de prévisions et une structure MATLAB contenant les paramètres financiers requis (par exemple, taux d’actualisation, CAPEX, OPEX, taux d’imposition, etc.) pour calculer les flux de trésorerie nets et cumulés, les seuils de rentabilité et de récession, ainsi que le taux de rendement interne (Internal Rate of Return, IRR). Nous nous sommes appuyés sur xirr
de Financial Toolbox™ pour calculer l’IRR.
Résultats d’analyse de l’économie pétrolière
La figure 21 présente la valeur actuelle nette (Net Present Value, NPV) obtenue pour ce projet. Vous pouvez en tirer plusieurs conclusions. Tout d’abord, si vous décidez de poursuivre dans cette acquisition, vous pourriez atteindre le seuil de rentabilité aux alentours du 11 février 2026. L’IRR est un autre indicateur important de la santé de votre projet. Autre observation intéressante : vous gagnerez près de 5 millions de dollars si vous maintenez ce projet au moins jusqu’en décembre 2053, soit pendant presque 30 ans. Il faut savoir que cette analyse ne tient pas compte des dépenses futures liées à l’entretien, à l’augmentation des coûts d’exploitation, etc. Il se peut donc que le rendement annoncé soit trop optimiste. Cependant, la courbe NPV montre que vous pourriez gagner environ 3 millions de dollars USD d’ici le 31 décembre 2031, c’est-à-dire huit ans après le début de votre projet, ce qui représenterait un retour sur investissement de 166,7 %.
Progression dans l’architecture logicielle
L’achèvement de l’analyse économique marque la fin du workflow d’analyse des données de production. Comme le montre la figure 22, l’architecture est restée inchangée à ce stade car la fonction d’analyse de l’économie pétrolière n’a pas nécessité le développement ou l’intégration de composants utilitaires externes. Néanmoins, l’ajout de modules complémentaires et de packages utilitaires reste possible.
Résumé
Dans cet article, nous avons développé une architecture logicielle de canaux et de filtres pour automatiser l’analyse des données de production de pétrole et de gaz. Grâce à l’étude minutieuse et approfondie de chaque étape du workflow, nous avons montré comment MATLAB nous a permis de réaliser des tâches complexes qui auraient nécessité des heures de codage dans un autre langage de programmation.
Nous avons également expliqué comment créer automatiquement des fonctions MATLAB capables d’effectuer des tâches complexes avec un seul appel de fonction. Nous avons également évoqué les avantages d’une architecture logicielle modulaire sur le plan de la maintenance et de la fiabilité, tout en soulignant que d’autres formats de données, techniques de nettoyage, modèles de DCA et packages utilitaires pour la création de courbes et de figures pourraient s’avérer nécessaires à l’avenir.
Enfin, il convient de préciser que nous avons délibérément choisi de ne pas aborder les pratiques avancées de conception de logiciels, telles que la conception orientée objet, étant donné que cet article a été rédigé en guise d’introduction. MATLAB est néanmoins un langage de programmation orienté objet. Vous avez donc toute liberté d’utiliser ce que vous avez appris dans cet article pour créer des architectures logicielles adaptées à des cas d’utilisation spécifiques tels que le déploiement sur le cloud et la génération de code C/C++.
Sélectionner un site web
Choisissez un site web pour accéder au contenu traduit dans votre langue (lorsqu'il est disponible) et voir les événements et les offres locales. D’après votre position, nous vous recommandons de sélectionner la région suivante : .
Vous pouvez également sélectionner un site web dans la liste suivante :
Comment optimiser les performances du site
Pour optimiser les performances du site, sélectionnez la région Chine (en chinois ou en anglais). Les sites de MathWorks pour les autres pays ne sont pas optimisés pour les visites provenant de votre région.
Amériques
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)