I am not a proponent of making up fictitious data, but for the purposes of demonstrating technology, why not? This post is the third in a three-part follow-up from the private beta I did in Calgary a few weeks ago. You can check out the IPython Notebook version too. If you want more of this in person, sign up at the bottom or drop us a line. We want these examples to be easily readable, especially if you aren't a coder, so please let us know how we are doing.
Start by importing some packages that you'll need into the workspace,
Define a borehole path
We define the trajectory of a borehole, using a series of x, y, z points, and make each component of the borehole an array. If we had a real well, we load the numbers from the deviation survey just the same.
But since we want the borehole to be continuous and smoothly shaped, we can up-sample the borehole by finding the B-spline representation of the well path,
Define frac ports
Let's define a completion program so that our wellbore has 6 frac stages,
and let's make it so that each one emanates from equally spaced frac ports spanning the bottom two-thirds of the well.
Make a set of 3D axes, so we can plot the well path and the frac ports.
Set a colour for each stage by cycling through red, green, and blue,
Define microseismic points
One approach is to create some dimensions for each frac stage and generate 100 points randomly within each zone. Each frac has an x half-length, y half-length, and z half-length. Let's also vary these randomly for each of the 6 stages. Define the dimensions for each stage:
Plot microseismic point clouds with 100 points for each stage. The following code should launch a 3D viewer scene in its own window:
You can swap out the last line in the code block above with
mplt.points3d(x_event, y_event, z_event, size, mode='sphere', color=stage_color[i]) to colour each event by its corresponding stage.
A day of geocomputing
I will be in Calgary in the new year and running a one-day version of this new course. To start building your own tools, pick a date and sign up: