Motivation
Eines der wichtigsten Puzzleteile bei der Optimierung der Produktivität von Öl- und Gasfeldern ist die Analyse der historischen Förderdaten. Fehlerresistente Verfahren zur Analyse von Förderdaten, wie z. B. die Degressionskurvenanalyse (DCA), unterstützen Förderingenieure bei der Bewertung von produktivitätsbezogenen Metriken für Bohrungen, wie z. B. Degressionsraten, durchschnittliche Öl- und Gasförderraten und die kumulative Förderung. Noch wichtiger ist, dass diese Techniken eine Prognose der Öl- und Gasförderung ermöglichen, um die aktuelle finanzielle Leistung und die langfristige Rentabilität einer Anlage genau zu bewerten.
Die Techniken zur Analyse von Förderdaten stützen sich auf mathematische Modelle, die auf den Parametern der Bohrungsleistung basieren, um historische Öl- und Gasförderdaten mittels Regressionsanalyse anzupassen. Bei der DCA werden beispielsweise mathematische Funktionen verwendet, die einen exponentiellen Rückgang aufweisen. Die Arps-Gleichung ist wohl der beliebteste und am weitesten verbreitete DCA-Ansatz in der Öl- und Gasindustrie. Wie die meisten DCA-Modelle bietet auch Arps mehrere entscheidende Vorteile gegenüber komplexeren Techniken wie der Raten-Transienten-Analyse. Erstens ist die DCA kostengünstig im Rechenaufwand und einfach zu implementieren. Zweitens weist die DCA eine geringe Anzahl von Parametern auf, sodass die Regressionsergebnisse leichter zu interpretieren sind. Und drittens ermöglicht die DCA die Verarbeitung großer Datensätze, wie z. B. umfangreicher historischer Förderaufzeichnungen von einzelnen oder mehreren Bohrungen. Wie bei jedem anderen Modell ist jedoch die Qualität der Eingabedaten von entscheidender Bedeutung, um ein physikalisch valides DCA-Modell für die Datenanalyse, Förderprognosen und die Erdölwirtschaft zu erhalten.
In diesem Paper erklären wir, wie man mit MATLAB® einen DCA-basierten Datenanalyse-Workflow für Öl- und Gasförderdaten entwickelt und bereitstellt. Wir besprechen, wie historische Förderdatensätze formatiert und vorverarbeitet, benutzerdefinierte Regressionsmodelle erstellt, eine Förderprognose generiert und eine erdölwirtschaftliche Analyse durchgeführt wird. Unser Hauptziel ist es, aufzuzeigen, wie MATLAB mit einfachen, aber fehlerresistenten Softwareentwicklungsverfahren dazu beitragen kann, die Komplexität des Workflows zu erfassen und zu lösen. Zu Demonstrationszwecken werden wir historische Öl- und Gasförderberichte verwenden, die auf der Website der Texas Railroad Commission (TRRC) öffentlich zugänglich sind.
Production Data Analysis Web-App
Wir beschreiben die wichtigsten Phasen des Workflows zur Analyse von Öl- und Gasförderdaten in MATLAB und stellen einige bewährte Praktiken zur Softwareentwicklung und -implementierung vor, die für die Entwicklung und Anpassung zuverlässiger und wartbarer Softwareanwendungen für die Öl- und Gasförderung von Bedeutung sind.
Obwohl unsere App online bereitgestellt wird, können die Endbenutzer mit der Webanwendung auf die gleiche Weise interagieren wie mit jeder anderen herkömmlichen Desktop-Anwendung. Abbildung 1 zeigt den Tab „Import“ in der App zum Ziehen und Ablegen von historischen Förderdatensätzen. Sobald ein Datensatz hinzugefügt wurde, führt die App verschiedene Verfahren zur Datenvorverarbeitung durch und stellt die resultierenden Daten in den entsprechenden Diagrammen dar. Die mit dem Datenimport und der Datenvorverarbeitung verbundenen Prozesse werden in den Abschnitten Datenimport bzw. Datenvorverarbeitung im Detail erläutert.
Nach dem Importieren der Daten können die Nutzer eine DCA-Regressionsanalyse durchführen. Abbildung 2 zeigt den Tab „Regression“ in der App, auf dem die Regressionseinstellungen angepasst und ausgewählt werden können und auf dem ausgewählt werden kann, ob die durchschnittliche Förderrate oder die kumulativen Förderdaten einer bestimmten Fluidphase, entweder Öl oder Gas, zur Anpassung des Modells verwendet werden sollen. Bitte beachten Sie, dass die App es dem Benutzer auch ermöglicht, den Start- und Endpunkt für das Regressionsfenster zu wählen, was die Analyse flexibler macht, um DCA-Regressionen für bestimmte Zeiträume zu erstellen, die für die Bewertung des Förderungsverhaltens von Interesse sind, z. B. vor und nach einem Bohrungseingriff. Sobald alle Parameter definiert sind, können die Benutzer auf die Option Fit Data für den zugrunde liegenden Optimierungsalgorithmus klicken, um den Satz von DCA-Parametern zu ermitteln, der am besten zu dem Datensatz passt. Die App zeigt dann eine Zusammenfassung der verwendeten Parameter zusammen mit dem Bestimmungskoeffizienten (R2) für jede Fluidphase an. Weitere Einzelheiten zum DCA-Verfahren finden Sie im Abschnitt Analyse der Degressionskurve.
Um eine Öl- und Gasförderprognose anhand des DCA-Modells zu erstellen, müssen die Benutzer nur festlegen, wie viele Jahre im Voraus prognostiziert werden sollen. Die App berechnet dann die durchschnittlichen Förderraten und die Gesamtförderung für beide Fluidphasen getrennt. Wie in Abbildung 3 zu sehen ist, ermöglicht die App es, die voraussichtliche Zeit in Jahren mithilfe eines Schiebereglers oder eines numerischen Textfelds anzugeben. Wenn die bevorzugte Prognosezeitoption geändert wird, werden die durchschnittlichen Förderraten und die Diagramme der kumulierten Förderung automatisch aktualisiert.
Die Durchführung einer wirtschaftlichen Erdölanalyse auf Grundlage der Förderprognosedaten ist die letzte Stufe dieses Workflows der Förderdatenanalyse. Die wirtschaftliche Analyse von Erdölvorkommen wird von Asset-Managern genutzt, um in jeder Phase – von der Feldanalyse bis zur Analyse einzelner Bohrungen – fundierte Entscheidungen zu treffen. Um eine neue Prognose in der App zu erstellen, werden die Daten sofort auf den Tab „Economics“ übertragen, wo der Benutzer weitere Parameter wie Steuern, Investitionsausgaben (CAPEX), Betriebskosten (OPEX) sowie Öl- und Gaspreise ändern kann. Anschließend aktualisiert die App automatisch die Kapitalwertkurve im Diagramm, indem sie intern den Kapitalwert (Net Present Value, NPV), den Break-even-Punkt, den Rezessionspunkt (falls zutreffend), die interne Rentabilitätsrate und die Kapitalrendite berechnet. Abbildung 4 zeigt ein Beispiel für eine NPV-Kurve, die vom negativen in den positiven Bereich übergeht (Break-even-Punkt), einen Maximalwert erreicht (maximaler NPV) und dann abzufallen beginnt, was darauf hindeutet, dass der Betrieb des Bohrlochs ab diesem Zeitpunkt zu teuer wird. Darüber hinaus zeigt die App auch den höchsten prognostizierten NPV zusammen mit dem geschätzten Zeitpunkt der Realisierung an. Wir erörtern diese Einzelheiten der Umsetzung im Abschnitt Wirtschaftliche Analyse.
Im Folgenden werden einige Funktionen der Softwareentwicklung in MATLAB näher erläutert, die für die von uns entwickelte Webanwendung zur Analyse von Öl- und Gasförderdaten eingesetzt werden.
Softwarearchitekturen
Im vorherigen Abschnitt haben Sie wahrscheinlich bemerkt, dass die Komponenten der App eine lineare Beziehung aufweisen, bei der die Eingabe einer Komponente von der Ausgabe einer anderen Komponente abhängt. Zum Beispiel hängt der DCA-Tab von den Daten ab, die der Import-Tab bereitstellt, der wiederum von dem Datensatz abhängt, den der Benutzer bereitstellt. Der Tab „Economics“ hängt von der Förderprognose ab, die vom Tab „Prognose“ geliefert wird, so wie dieser wiederum vom DCA-Modell abhängt, das vom Tab „DCA“ bereitgestellt wird. Hierbei handelt es sich um ein klassisches Beispiel für das Muster der Pipes-and-Filter-Softwarearchitektur. Angesichts dieser bekannten Softwarearchitektur stützen wir uns bei der Anwendungslogik auf deren Entwurfsmuster-Konzepte. In Tabelle 1 werden die Komponenten bzw. Filter mit ihren jeweiligen Aufgaben, Eingängen und Ausgängen beschrieben.
Komponente | Aufgabe | Eingänge | Ausgänge |
Datenimport |
|
|
|
Datenvorverarbeitung |
|
|
|
Analyse der Abstiegskurve |
|
|
|
Förderprognose |
|
|
|
Wirtschaftliche Analyse |
|
|
|
Neben diesen Komponenten haben wir zwei übergreifende Module eingerichtet: "Analysen" und "Ergebnisse". Diese Bauelemente decken gemeinsam die Hauptaufgaben eines bestimmten Teils des Prozesses ab. In Abbildung 5 ist die betreffende Softwarearchitektur dargestellt.
Die Pipes-and-Filter-Architektur bietet mehrere Vorteile, z. B. die Möglichkeit, komplexe Workflows in unabhängige, kooperative Komponenten aufzuteilen, wodurch die Software leicht zu debuggen und zu warten ist. Außerdem lässt sich die Funktionalität Ihres Programms durch Hinzufügen neuer Komponenten erweitern – die einzige Voraussetzung hierfür ist, dass neue Komponenten über Anwendungsprogrammierschnittstellen (API) verfügen, die mit Ihren Pipes bzw. Software-Konnektoren kompatibel sind. Eine Möglichkeit, das Ergebnis-Subsystem zu erweitern, wäre beispielsweise eine Berichtskomponente, die mit dem MATLAB Report Generator™ Berichte erstellt, die speziell auf die Anforderungen von Förderingenieuren oder Asset-Managern zugeschnitten sind.
Beispielhafte Förderdaten
Mithilfe des TRRC-Tools Public GIS Viewer haben wir eine Population von 200 Bohrlöchern erstellt, die nach dem Zufallsprinzip im Schwarzölfenster des Eagle Ford Shale in Südtexas ausgewählt wurden. Als Nächstes erstellten wir mit der Mapping Toolbox™ das in Abbildung 6 dargestellte Blasendiagramm für die kumulative Ölproduktion.
Die durchschnittliche tägliche Ölproduktion der Bohrlöcher in Karnes County aus dieser Population, die Öl aus der Lower Eagle Ford-Formation fördern, ist in Abbildung 7 dargestellt. Beachten Sie den Rückgang der täglichen Ölproduktion, der einem Potenzgesetz ähnelt – genau das, was Arps DCA beschreiben soll.
Für die in diesem Artikel beschriebene Methode zur Analyse der Förderdaten haben wir ein Bohrloch nach dem Zufallsprinzip aus der Gesamtpopulation der zuvor genannten Bohrlöcher ausgewählt. Um seine Anonymität zu wahren, wird es in diesem Artikel einfach als „Beispielbohrloch“ bezeichnet. Bohrloch-Metadaten wie Betreiber, Standort usw. werden nicht weitergegeben.
Workflow zur Förderdatenanalyse
Im vorangegangenen Abschnitt wurde die Grundlage für den in unserer Web-App verwendeten Workflow zur Förderdatenanalyse gelegt. Dieser Abschnitt konzentriert sich auf die Softwareimplementierung der im Abschnitt Softwarearchitektur genannten Komponenten und zeigt insbesondere, wie die für jede Komponente erforderliche Funktionalität mit MATLAB erstellt werden kann. Da wir davon ausgehen, dass die Benutzer über grundlegende Programmierkenntnisse verfügen, haben wir in diesem Paper auch Links zu zusätzlichen Ressourcen mit weiteren Details zu diesen Schritten angegeben.
Der Workflow besteht aus fünf verschiedenen Unterabschnitten. In Datenimport beschreiben wir den Prozess des Imports von TRRC-Datensätzen in MATLAB und einige der Herausforderungen, die mit dieser speziellen Art von Datenstruktur verbunden sind. Im Abschnitt Datenvorverarbeitung werden die verschiedenen in MATLAB verfügbaren Optionen zur Datenbereinigung und Ausreißererkennung untersucht und Möglichkeiten zur Automatisierung dieses Prozesses erörtert. Die Definition von maßgeschneiderten Regressionsmodellen in MATLAB, wie z. B. Arps DCA, und ihre Anwendung für die Förderprognose werden in den Unterabschnitten Degressionskurvenanalyse bzw. Förderprognose behandelt. Schließlich wird in Wirtschaftliche Analyse erläutert, wie man benutzerdefinierte Wirtschaftsindikatoren verwendet, um finanzielle Erkenntnisse aus den Prognosen zur Öl- und Gasförderung zu gewinnen.
Datenimport
Die Arbeit mit typischen Datentypen wie Excel®-Tabellen, CSV-Dateien, Bild-, Audio- und Videodateien und vielen anderen wird durch die fehlerresistenten Datenimportfunktionen von MATLAB erleichtert. Obwohl wir den Fokus auf lokal gespeicherte Daten legen, möchten wir an dieser Stelle darauf hinweisen, dass MATLAB über integrierte Schnittstellen zu Cloud-Diensten wie Amazon® Web Services, Microsoft® Azure® und Google Cloud Platform™ (siehe Nutzung von MATLAB und Simulink in der Cloud) sowie zu relationalen und NoSQL-Datenbanken über die Database Toolbox™ verfügt.
Vorbereiten eines Datensatzes für ein Beispielbohrloch
Die Aufzeichnungen über die Öl- und Gasförderung unseres Beispielbohrlochs werden in einer lokalen CSV-Datei gespeichert, die der Formatierung der TRRC-Vorlage entspricht. Obwohl Tabellen aus CSV-Dateien gelesen und direkt in MATLAB importiert werden können, birgt diese spezielle Vorlage einige Schwierigkeiten. Zum einen gibt es eine Mischung aus numerischen Daten (wie z. B. die Netto-Öl- und Gasförderung) und Metadaten (einschließlich des Namens des Betreibers, des Standorts usw.). Zum anderen fehlen einige Datenpunkte, die als NO RPT
gekennzeichnet sind. Und zuletzt ist das Datumsformat ein wenig ungewöhnlich, da es nicht den genauen Tag angibt, an dem ein bestimmter Bericht aufgezeichnet wurde. In Abbildung 8 ist ein Screenshot des Datensatzes des Beispielbohrlochs zu sehen.
Trotz dieser Problematik ist MATLAB in der Lage, diesen Datensatz mit dem Import-Tool zu verarbeiten. Mit dieser grafischen Anwendung können Sie die Importparameter weiter anpassen, indem Sie die Datentypen angeben, die den einzelnen Spalten entsprechen, den gewünschten Datenbereich definieren und auswählen, ob Zeilen mit fehlenden Dateneinträgen einbezogen werden sollen.
Hier wählten wir zunächst Number
als geeigneten Datentyp aus und markierten die Öl- und Gasförderdaten in der Tabelle. Als Nächstes haben wir einen eigenen Datumstyp für die Werte in Spalte 1 definiert, damit MATLAB die Berichtsdaten korrekt lesen und verarbeiten kann. Anschließend wurden die Spalten 1, 2 und 4, der relevante Datensatz, in reportDates
, netOil
und netGas
umbenannt.
Erstellen einer benutzerdefinierten Importfunktion
Nachdem wir die notwendigen Schritte zur Vorbereitung und zum korrekten Import des Datensatzes des Beispielbohrlochs durchgeführt hatten, nutzten wir die Codegenerierungsfunktionen in MATLAB, um die Funktion wellDataParser
zu erstellen, die die zuvor beschriebenen Schritte zur Datenvorbereitung automatisch durchführt. Die Funktion wellDataParser
kann verwendet werden, um TRRC-Datensätze aus CSV-Dateien direkt von der MATLAB-Befehlszeile aus zu importieren. Diese Funktion gibt eine Tabelle mit Rohdaten aus, die in der folgenden Analyse verwendet werden können, so wie im Abschnitt Softwarearchitektur beschrieben.
Da der wellDataParser
als White-Box-Funktion erstellt wurde, können Sie ihn so verändern, dass er weitere Funktionalitäten unterstützt. Wir haben zum Beispiel den letzten Tag eines bestimmten Berichtsdatums berechnet und alle Berichtsdaten in reportDates
umstrukturiert (siehe Abbildung 9).
Profi-Tipp: Sie können Datastores in Verbindung mit der Parallel Computing Toolbox™ verwenden, um Hunderte oder sogar Tausende von TRRC-Datensätzen gleichzeitig zu importieren.
Datenvorverarbeitung
Wie wir im letzten Abschnitt gesehen haben, enthalten Datensätze gelegentlich ungültige oder fehlende Elemente, wie Inf
- oder NaN
-Werte. Diese lassen sich durch Anwendung der integrierten MATLAB-Funktion rmmissing
auf den Datensatz leicht entfernen. Allerdings können Daten auch Anomalien enthalten, die bei einer visuellen Überprüfung nur schwer zu erkennen sind.
Bereinigung eines Förderdatensatzes
Glücklicherweise können inkonsistente Daten mithilfe der Data Cleaner-App bereinigt werden. Diese App untersucht und visualisiert die Daten und definiert Regeln für die Erkennung von Ausreißern. Abbildung 10 zeigt einen Auszug aus der Data Cleaner-App mit einer visuellen Analyse von netOil
und netGas
aus unserem Beispielbohrloch. Nachdem wir die für die Bereinigung unserer Datensammlung erforderlichen Aktionen definiert hatten, erstellten wir mit der Data Cleaner-App die speziell angepasste Funktion wellDataCleaner
, in der die von uns in der App durchgeführten Vorverarbeitungsaktionen enthalten sind.
Datenerweiterung (Data Augmentation)
Der Datensatz ist zu diesem Zeitpunkt sauber. Der nächste Schritt besteht darin, die Variablen für die DCA-Regressionsanalyse zu definieren, insbesondere die Betriebszeit (d. h. die Fließzeit), die durchschnittlichen täglichen Öl- und Gasraten und die kumulative Öl- und Gasförderung. Da es sich bei wellDataCleaner
um eine White-Box-Funktion handelt, fügten wir den erforderlichen Code zur Berechnung der fehlenden Merkmale flowTime
, oilRate
, gasRate
, cumOil
und cumGas
hinzu und setzten sie in die Ausgabetabelle ein, um die Anforderungen des Softwarearchitektur-Plans zu erfüllen. Abbildung 11 zeigt die vorverarbeitete Tabelle für unser Beispielbohrloch.
Fortschritte in der Softwarearchitektur
Die Entwicklung der Analyse-Pipeline für Förderdaten ist in Abbildung 12 dargestellt, wobei die benutzerdefinierten MATLAB-Funktionen wellDataParser
und wellDataCleaner
die Softwarekomponenten für den Datenimport und die Datenvorverarbeitung bezeichnen. Der blaue Pfeil in dieser Abbildung stellt die Rohtabelle dar, die das Ergebnis der ersten Funktion ist und von der zweiten als Eingabe verwendet wird. In MATLAB kann die Beziehung zwischen diesen beiden Teilen wie folgt hergestellt werden:
>> well = wellDataParser("sampleWellData.csv"); >> well = wellDataCleaner(well);
Der obige Code veranschaulicht deutlich die Pipe, die die Komponenten Datenimport und Datenvorverarbeitung verbindet. Beachten Sie, dass der wellDataCleaner
den Speicher effektiv nutzt, indem er das Bohrlochobjekt an Ort und Stelle ändert, anstatt ein neues zurückzugeben.
Profi-Tipp: MATLAB bietet zahlreiche Beispiele für die Verwendung der Data Cleaner-App. Weitere Informationen finden Sie in der MATLAB-Dokumentation.
Analyse der Abstiegskurve
Viele Fachleute betrachten die Arps-Gleichungen als Standardmodell für die DCA bei der Analyse von Öl- und Gasförderdaten. Die am weitesten verbreitete Gleichung ist der hyperbolische Rückgang auf Ratenbasis, der die Abnahme der durchschnittlichen Tagesproduktion im Laufe der Zeit als Funktion von drei Regressionsparametern beschreibt – Anfangsrate \( q_{i} \) (Volumen/Tag), Rückgangrate \( D \) (1/Tag) und \( b \)-Faktor – und in Bezug auf eine Referenzzeit \( t_{i} \) (Tage). Diese Gleichung ist wie folgt definiert:
\( q(t; t_{i}) = \frac{q_{i}}{[1 \ + \ bD(t \ - \ t_{i})]^{\frac{1}{b}}} \)
wobei \( q(t; t_{i}) \) die Förderrate bei \( t > t_{i} \) darstellt. Die zweite Gleichung, die sich auf die kumulative Förderung bezieht, ergibt sich aus der Integration von Gleichung 1 über die Zeit, vom Bezugszeitpunkt \( t_{i} \) bis zum Zeitpunkt \(t\) > \( t_{i} \). Die förderbasierte Arps-Gleichung ist daher wie folgt definiert:
\( Q(t; t_{i}) = Q_{i} + \frac{q_{i}^{b}}{D(b \ - \ 1)}(q^{1-b}(t; t_{i}) - q_{i}^{1-b}) \)
wobei \( Q(t;t_{i}) \) die kumulierte Förderung bei \( t>t_{i} \) darstellt. Dabei ist zu beachten, dass in Gleichung 2 die kumulative Ausgangsförderung \( Q(t_{i}) ≡ Q_{i} \) als einen Parameter enthält. Dieser Parameter kann aus den Förderaufzeichnungen eines Bohrlochs entnommen oder als zusätzlicher Regressionsparameter definiert werden. Tabelle 2 gibt einen Überblick über die Einheiten, die wir für die DCA-Analyse gewählt haben.
Flüssigkeit | Förderrate | Kumulierte Förderung |
Öl | Barrels pro Tag (bbl/Tag) |
Barrels (bbl) |
Gas | Millionen Standardkubikfuß pro Tag (MMscf/Tag) |
Millionen Standardkubikfuß (MMscf) |
Erstellen von DCA-Regressionsmodellen
Mithilfe des Curve Fitter aus der Curve Fitting Toolbox™ wurden individuelle DCA-Regressionsmodelle auf Basis der Gleichungen 1 und 2 für jede Flüssigkeitsphase unabhängig voneinander erstellt. Vorausgesetzt, dass sich die well
-Tabelle in Ihrem Workspace befindet, werden wir Sie hier durch die vier Schritte führen, die wir zur Entwicklung einer ratenbasierten DCA-Regression für die durchschnittliche tägliche Ölförderung verwendet haben:
- Schritt 1: Importieren Sie
well
und weisen Siewell.flowTime
undwell.oilRate
jeweils x- und y-Daten zu. Beachten Sie, dass die Ölrate nach etwa 120 Tagen ihren Höchststand erreicht und dann abnimmt, weshalb Sie keine Daten vor diesem Zeitpunkt einbeziehen sollten. - Schritt 2: Verwenden Sie die Option Custom Equation, um das ratenbasierte DCA-Modell zu erstellen. MATLAB versucht, die Regression auf die richtige Art und Weise durchzuführen, was wahrscheinlich aufgrund von Konvergenzproblemen scheitern wird, die dadurch entstehen, dass ein oder mehrere Regressionsparameter zu nahe an Null herankommen oder negativ oder extrem groß werden. Lösen Sie dieses Problem, indem Sie für jeden Parameter physikalisch sinnvolle Grenzen festlegen. Eine gute Anfangsschätzung für jeden Parameter hilft dem Algorithmus auch, schneller zu konvergieren.
- Schritt 3: Überprüfen Sie die zusammenfassenden Statistiken der Aktion und vergewissern Sie sich, dass die sich ergebenden Regressionsparameter angemessen sind und innerhalb der angegebenen Grenzen liegen. MATLAB zeigt die Werte und ihre 95-%-Konfidenzintervalle an. Die sich daraus ergebende quadratische Fehlersumme R2 und die Wurzel des mittleren quadratischen Fehlers (Root Mean Square Error, RMSE) geben einen besseren Einblick in die Güte der Regression. MATLAB bezeichnet diese zusammenfassende Statistik als Anpassungsgüte (
gof
). - Schritt 4: Verwenden Sie die Export-Option, um eine Funktion zu erzeugen, die das resultierende Regressionsmodell zusammen mit der
gof
-Statistik enthält.
Um die übrigen DCA-Regressionen zu erstellen, wurden die gleichen Schritte nochmals durchgeführt. Folglich konnten wir die Funktionen getDCAParamRate
und getDCAParamProd
zur Durchführung von DCA-Regressionen für die Öl- bzw. Gasphase auf der Grundlage der Gleichungen 1 und 2 erstellen und ändern. Abbildung 13 zeigt eine Ansicht der Curve Fitter-App, die den Beginn eines bestimmten Schrittes anzeigt.
Die Regressionsparameter und \( R^{2} \) für jede DCA-Regression und Fluidphase in unserem Beispielbohrloch sind in Tabelle 3 aufgeführt. Da die kumulierten Förderdaten im Allgemeinen glatter sind als die durchschnittlichen Tagessätze, ist es nicht überraschend, dass die förderbasierte DCA die höchsten \( R^{2} \) -Werte liefert.
Ratengestützte DCA | Förderbasierte DCA | |||
Öl | Gas | Öl | Gas | |
\( 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 |
\( R^{2} \) score | 0.945 | 0.784 | 0.999 | 0.997 |
Wir haben getDCAParamRate
und getDCAParamProd
so konzipiert, dass sie die alleinige Verantwortung für die Berechnung der DCA-Parameter für die Gleichungen 1 und 2 tragen. Sie sind jedoch nicht in der Lage, die kumulierte Produktivität oder die durchschnittliche Tagesproduktion vorherzusagen. Aus diesem Grund ist es erforderlich, DCA-Modelle durch die Entwicklung von MATLAB-Funktionen zu operationalisieren, die die DCA-Regressionsparameter als Eingaben akzeptieren und das gewünschte Ergebnis, wie z. B. die Durchflussrate oder das Volumen, ausgeben können.
Zu diesem Zweck haben wir unserer Architektur zwei Funktionen hinzugefügt, flowRate(t,dcaParam)
und cumulProd(t,dcaParam)
, wobei t
entweder ein positiver Skalar oder ein Vektor positiver Skalare ist und dcaParam
eine MATLAB-Struktur ist, die \( q_{i} \), \(Q_{i} \), \( b \), \(D \) und \( t_{i} \) enthält. Bei diesen beiden Funktionen handelt es sich um Utility-Funktionen, d. h., sie sind nicht unbedingt von einem bestimmten Datensatz abhängig, sondern von den DCA-Regressionsparametern. Daher können künftig sowohl flowRate
als auch cumulProd
in einem unabhängigen Utility-Paket zusammengefasst werden.
Wir haben diese beiden Funktionen verwendet, um die DCA-Regression für unseren Datensatz sowohl förderbasiert als auch ratenbasiert zu vergleichen. Ein Vergleich der förderbasierten und der ratenbasierten DCA-Methode zur Untersuchung der durchschnittlichen täglichen Öl- und Gasförderung ist in den Abbildungen 14a und 14b dargestellt. Beide Regressionsmodelle schneiden bei der Schätzung der Förderraten gut ab und führen zu Ergebnissen, die durchaus vergleichbar sind.
In den Abbildungen 15a und 15b wird die prognostizierte kumulative Öl- bzw. Gasförderung mit der gemeldeten historischen Förderung verglichen. Wie bei den durchschnittlichen Tagesraten bewähren sich beide DCA-Modelle auch bei der Vorhersage der kumulativen Förderung und zeigen ein sehr ähnliches Ergebnis.
Fortschritte in der Softwarearchitektur
Abbildung 16 zeigt den aktuellen Stand des Workflows. Der Zusatz einer Utility-Softwarekomponente, die von der DCA-Komponente zur Berechnung der erwarteten Durchschnittsrate und der kumulativen Förderzahlen verwendet wird, ist hier ein wichtiger Punkt.
Wir hatten die Möglichkeit, dieses Utility-Paket direkt in die Komponente zu integrieren. Angesichts der Instandhaltung und des verantwortungsvollen Designs haben wir uns jedoch entschieden, sie getrennt zu halten. Die Wartbarkeit wurde durch diesen Ansatz erheblich verbessert, da die Komponenten unabhängig voneinander gebaut und gewartet werden können, solange sich ihre Funktionssignaturen nicht ändern. Ebenso haben wir die Flexibilität erhöht, sodass in Zukunft auch weitere DCA-Modelle hinzugefügt werden können, ohne den Workflow zu unterbrechen.
Darüber hinaus wird der Code durch die getrennte Aufbewahrung von Utility-Funktionen allgemein lesbarer, sodass jemand, der daran arbeiten möchte, genau weiß, welche Aufgabe die einzelnen Teile haben, was wiederum den Zeitaufwand für die Codierung verringert.
Ein modulares Softwaredesign, wie das hier vorgeschlagene, ist weitaus einfacher zu warten und zu erweitern, als Hunderte oder gar Tausende von Codezeilen in „allmächtige“ Funktionen zu packen, die schwierig zu testen und zu verwalten sind, auch wenn dies im Vorfeld teurer erscheinen mag.
Förderprognose
Für diese Softwarekomponente haben wir die aus der DCA-Komponente abgeleiteten Regressionsparameter genutzt, um die künftige Öl- und Gasförderung anhand der im vorherigen Abschnitt erörterten Utility-Funktionen flowRate
und cumulProd
zu schätzen. Da nun alle für die Erstellung einer Förderprognose erforderlichen Funktionen zur Verfügung standen, mussten wir den Code für deren Abruf schreiben.
Dabei haben wir die Funktion generateForecast
geschaffen, die well
-DCA-Regressionsparameter für jedes Fluid enthält und die Prognosezeit als Eingangsargumente anfordert, und daraus eine vollständige Förderprognose erzeugt, indem sie die folgenden internen Aufgaben ausführt:
- Generierung eines Vektors zukünftiger Durchflusszeiten
- Erzeugen eines Vektors zukünftiger Daten
- Berechnung von Öl- und Gasrückgangsraten
- Berechnung der kumulierten Öl- und Gasförderung
Als Ergebnis gibt generateForecast
eine neue Tabelle mit demselben Format wie die ursprüngliche Eingabetabelle zurück, nur dass die Fördermetriken zukunftsorientierte Werte sind, die mit dem DCA-Modell erzeugt wurden.
Im folgenden Unterabschnitt wird beschrieben, wie generateForecast
funktioniert. Wir sind davon ausgegangen, dass die Förderprognose einen Kalendermonat nach dem letzten gemeldeten Datum beginnt und monatlich gemeldet wird, bis sie den vorgesehenen Prognosezeitpunkt erreicht.
Erstellung einer Förderprognose
Die sich ergebende Öl- und Gasprognose für unser Beispielbohrloch für die nächsten 50 Jahre, beginnend am 31. Januar 2024, ist in Abbildung 17 dargestellt. Im Vergleich zu seinem ratenbasierten DCA-Äquivalent prognostiziert das förderbasierte DCA-Modell einen etwas steileren Rückgang der Ölförderung im Laufe der Zeit, wie in Abbildung 17a zu sehen ist. Abbildung 17b zeigt jedoch, dass der Unterschied in den Projektionen für die durchschnittliche tägliche Gasförderung ausgeprägter zu sein scheint.
Der Unterschied zwischen den Prognosemodellen wird bei der kumulierten Öl- und Gasförderung deutlicher, wie die Abbildungen 18a und 18b zeigen. Dabei ist zu beachten, dass der Unterschied in der prognostizierten kumulativen Förderung mehr als 50.000 Barrel Öl und 300 Millionen Standardkubikfuß Gas beträgt, was zu Unsicherheiten bei der wirtschaftlichen Bewertung des Gebiets führen kann.
Da verschiedene Modelle zu unterschiedlichen Förderschätzungen führen können, ist es wichtig, mit verschiedenen DCA-Modellen zu experimentieren und dasjenige auszuwählen, das dem Förderverhalten des untersuchten Feldes am ehesten entspricht. Eine Möglichkeit, diese Entscheidung zu treffen, ist die Nutzung von Förderdaten aus bestehenden Bohrlöchern, um den Vergleich von Modellen zu erleichtern. Zu diesem Zweck können Sie in Erwägung ziehen, der DCA-Komponente weitere DCA-Modelle hinzuzufügen, was jedoch die Komplexität Ihrer Funktionen erhöhen wird. Um dies zu vermeiden, können Sie stattdessen auf ein objektorientiertes Design zurückgreifen, bei dem jedes Objekt einem DCA-Modell entspricht. Auf diese Weise erhöhen Sie die Wartbarkeit und Zuverlässigkeit Ihres Systems, da diese Objekte separat verwaltet werden können, genau wie die Pipes-and-Filter-Softwarearchitektur selbst.
Fortschritte in der Softwarearchitektur
Abbildung 19 veranschaulicht den Fortschritt, den wir mit unserer Softwarearchitektur bis zu diesem Punkt gemacht haben. Wie bereits erwähnt, nutzt die Förderprognosekomponente das im vorherigen Abschnitt erstellte DCA-Utility-Paket, um eine Prognose der Öl- und Gasförderung zu erstellen.
Wirtschaftliche Analyse
Der letzte Schritt in unserem Workflow besteht darin, eine Förderprognose in Finanzmetriken umzusetzen. Asset-Manager stützen sich auf diese Art von Analyseinformationen, die gemeinhin als Erdölökonomie bezeichnet werden, um Entscheidungen über die Beibehaltung oder Veräußerung von Förderquellen zu treffen. Investoren nutzen diese Analyse, um die Rentabilität des Erwerbs bestehender Bohrlöcher zu bewerten. Die Vertrauenswürdigkeit jeder erdölwirtschaftlichen Analyse hängt jedoch in hohem Maße von der Genauigkeit der Förderprognose und der damit verbundenen Finanzmetriken ab.
Beispiel für einen Bewertungsfall
Nehmen wir an, ein Investor ist am Kauf unseres Beispielbohrlochs interessiert. Der Asset-Eigentümer erklärt sich bereit, es für 1,8 Millionen US-Dollar (USD) zu verkaufen. Ihr Ziel ist es, festzustellen, ob diese Investition finanziell tragfähig ist. Damit Sie eine bessere Entscheidung treffen können, gibt Ihnen der Eigentümer einige zusätzliche Informationen:
- Betriebskosten des Bohrlochs (OPEX): 2.000 $/Monat
- Ölförderungssteuer: 36%
- Gasförderungssteuer: 16%
Darüber hinaus empfiehlt Ihre Finanzabteilung, bei der Analyse einen Abzinsungssatz von 10% und durchschnittliche Öl- und Gaspreise von 80 $/Barrel bzw. 2,78 $/Tausend Kubikfuß zu berücksichtigen. Zudem möchten Sie die Schwankungen der Öl- und Gaspreise einbeziehen, um die Widerstandsfähigkeit Ihrer Investition bei starken Marktschwankungen besser zu verstehen.
Wir haben die Preisvariabilität in die MATLAB-Funktion econAnalysis
integriert, die wir für die Durchführung der gesamten wirtschaftlichen Analyse entwickelt haben. Diese Funktion nimmt eine Prognosetabelle und eine MATLAB-Struktur mit den erforderlichen Finanzparametern (z. B. Abzinsungssätze, CAPEX, OPEX, Steuersätze usw.) und berechnet den Netto- und kumulativen Cashflow, Break-even- und Rezessionspunkte sowie den internen Zinsfuß (IRR). Zur Berechnung des IRR haben wir xirr
aus der Financial Toolbox™ verwendet.
Ergebnisse für die Wirtschaftlichkeit von Erdöl
In Abbildung 21 ist der resultierende Kapitalwert für dieses Projekt dargestellt, aus dem Sie mehrere Schlussfolgerungen ziehen können. Erstens: Wenn Sie sich entscheiden, das Projekt voranzutreiben, könnten Sie bis zum oder um den 11. Februar 2026 die Gewinnzone erreichen. Der IRR ist ein weiterer wichtiger Indikator für den Erfolg Ihres Projekts. Eine weitere interessante Beobachtung ist, dass Sie fast 5 Millionen US-Dollar verdienen werden, wenn Sie dieses Projekt mindestens bis Dezember 2053, also fast 30 Jahre lang, fortführen. Bitte beachten Sie, dass diese Analyse keine zukünftigen Ausgaben für Wartung, steigende Betriebskosten usw. berücksichtigt, sodass die optimistische Rendite irreführend sein kann. Die NPV-Kurve zeigt jedoch, dass Sie bis zum 31. Dezember 2031, d. h. acht Jahre nach Beginn Ihres Projekts, etwa 3 Mio. US-Dollar einnehmen könnten, was einer Rendite von 166,7% entsprechen würde.
Fortschritte in der Softwarearchitektur
Mit dem Abschluss der wirtschaftlichen Analyse ist der Workflow der Förderdatenanalyse beendet. Wie in Abbildung 22 dargestellt, blieb die Architektur in diesem Stadium unverändert, da die Funktion der wirtschaftlichen Analyse des Erdöls keine Entwicklung oder Integration von externen Utility-Komponenten erforderte. Die Flexibilität, ergänzende Module und Utility-Pakete hinzuzufügen, bleibt jedoch erhalten.
Zusammenfassung
In diesem Paper haben wir eine Pipes-and-Filter-Softwarearchitektur entwickelt, um die Analyse von Öl- und Gasförderdaten zu automatisieren. Wir haben jeden einzelnen Schritt des Workflows analysiert und detailliert beschrieben und dabei gezeigt, wie wir mit MATLAB komplizierte Prozesse durchführen konnten, für die wir sonst stundenlang in einer anderen Programmiersprache programmieren müssten.
Außerdem haben wir gezeigt, wie man automatisch MATLAB-Funktionen erstellt, die komplexe Aufgaben mit einem einzigen Funktionsaufruf erledigen können. Wir sprachen auch über die Vorteile eines modularisierten Softwaredesigns in Bezug auf Wartbarkeit und Zuverlässigkeit, wobei wir auch feststellten, dass zusätzliche Datenformate, Bereinigungstechniken, DCA-Modelle und andere Utility-Pakete für die Erstellung von Diagrammen und Abbildungen in Zukunft erforderlich sein könnten.
Abschließend sei darauf hingewiesen, dass wir uns bewusst dafür entschieden haben, keine komplexen Methoden zur Softwareentwicklung, wie z. B. objektorientiertes Design, zu erörtern, da dieser Artikel lediglich als Einführungsmaterial gedacht ist. Nichtsdestotrotz handelt es sich bei MATLAB um eine objektorientierte Programmiersprache, sodass Sie die Erkenntnisse aus diesem Artikel uneingeschränkt nutzen können, um Softwarearchitekturen zu erstellen, die auf bestimmte Anwendungsfälle wie Bereitstellung in der Cloud und C/C++ Codegenerierung zugeschnitten sind.
Website auswählen
Wählen Sie eine Website aus, um übersetzte Inhalte (sofern verfügbar) sowie lokale Veranstaltungen und Angebote anzuzeigen. Auf der Grundlage Ihres Standorts empfehlen wir Ihnen die folgende Auswahl: .
Sie können auch eine Website aus der folgenden Liste auswählen:
So erhalten Sie die bestmögliche Leistung auf der Website
Wählen Sie für die bestmögliche Website-Leistung die Website für China (auf Chinesisch oder Englisch). Andere landesspezifische Websites von MathWorks sind für Besuche von Ihrem Standort aus nicht optimiert.
Amerika
- América Latina (Español)
- Canada (English)
- United States (English)
Europa
- 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)