/manager

Oil Field manager

Primary LanguageTypeScriptMIT LicenseMIT

Oil Field Manager

Oil Field Manager is a project to demonstrate my abilities:

  1. To develop a single page application using React with proper routing settings;
  2. To visualize the information provided by the Completion and Production csv files;
  3. To maintain good user experience and performance while working with fairly large dataset;
  4. Provide the ability to search information associated with files and displays updated results.

App context

Imagine you are a field engineer who manages oil wells and want to optimize the production of your field. In order to tune the advance ML models correctly, you want to explore historical dataset in order to understand the physical properties of the field better. You have the production records and completion records of the wells.

SourceFiles

Completions

Columns

wellName wellAPI boreID compSubId Type X Y TD IsHorizontal reservoir faultBlock compartment maxBHP long lat

Production

Columns

year month wellAPI boreID completionGroupSubId bhp oil water gas waterInj compl flowDays pressure status

Relationships

These files are related to each other by the following column definitions.

Completions Column Production Column
wellAPI = wellAPI
boreID = boreID
compSubId = completionGroupSubId

Dashboard

This app provides you the ability to filter based on wells, reservoirs (wells that are next to each other could drill into different reserviors with completely different physical properities and thus have radically different outputs), and type in the main control area. They can control four views: the map, the list, the monthly crude oil production stream chart, and the aggregated gross production chart.

Screen Shot 2022-09-28 at 11 15 57 PM

Map

On the map, injectors and producers are marked by the water drop icon and oil rig icon. You can also see the relationship between the wells, as wells drilling from different reservoirs are marked by different color icons.

Screen Shot 2022-09-28 at 11 18 12 PM Screen Shot 2022-09-28 at 11 18 27 PM

List

With the filter controls, you can explore the data details using the table. Due to size of the data, I set up the table with pages and virtual scrolling. You can sort the multiple colmns. For example, this shows you for well 18, what are the dates that it produced the most water. Screen Shot 2022-09-28 at 11 24 32 PM

Streamgraph

Streamgraph shows the monthly crude oil production by different reserviors. Screen Shot 2022-09-28 at 11 30 04 PM

Gross production over time

Gross production chart is a dual-axis chart that shows the monthly production of crude oil (in barrels), gas (in barrel equivalence), and water (in mscf) over time. It is the aggregated result from the selected wells and reserviors. (Only producers have production data). Screen Shot 2022-09-28 at 11 31 21 PM

You can use it on individual well to verify if the data makes sense. Screen Shot 2022-09-28 at 11 34 06 PM

Use case:

You can select a group of wells, use the four views to cross verify your analysis, and remove noise wells, so you can get a higher quality dataset to train the ML model. Screen Shot 2022-09-28 at 11 36 39 PM Screen Shot 2022-09-28 at 11 37 20 PM Screen Shot 2022-09-28 at 11 37 31 PM Screen Shot 2022-09-28 at 11 41 37 PM

Tools used

This app is built with create-react-app, with the following tools:

Due to time limit, there are more I would like to add to the project. For instance, add tooltip or interactions to the markers on the map view, and add more guidance and description texts and tooltips to charts and labels. If the file is 10 times larger than right now, then I would move the calculation and data transformation part to workers, let the calculation happen quietly behind the sceen, so that the UI won't freeze. Moving it to microservices (like OData and etc) may be another solution.