Drilling Order
The Drilling Order options extends the Optimizer with per-contour configuration, drilling-priority controls and on-the-fly re-sequencing — so a Development Plan can model real fields where every Block Contour has its own constraints, geology or strategy, while still producing a single coherent, re-orderable plan.
Location: Dev Plan → Optimizer (right-hand panel of every Block Contour entry and at the foot of the parameters block).
1. Quick concepts
Before diving in, three terms you will see repeatedly:
| Term | What it means |
|---|---|
| Block Contour | An area of the field to develop. Each one has its own set of optimizer parameters and its own drilling priorities. |
| Drilling order | The sequence in which PADs and wells are drilled. Computed by the backend; surfaced on the map as the PAD N label and the well-name number. |
| Layout | The PADs and wells currently graphed on the map. It can come from the Optimizer, from a re-sequencing run, from a manual upload, or any combination. |
The Optimizer now reasons per Block Contour, not per project. The same project can have, for example, Block Contour 1 with tight well spacing and short laterals and Block Contour 2 with wide spacing and long laterals — each optimized with its own parameters.
2. Block Contour configuration
2.1 Selecting a Block Contour
At the top of the parameters panel there is a Block contour selector. Pick the contour you want to edit; the parameters block below switches to that contour’s saved configuration.
- Switching the selector commits the current edits to the previously selected contour, then loads the next one — you do not lose changes.
- Default labels follow the order of the contours in the right-hand list
(
Block Contour 1,Block Contour 2, …). If you rename a contour, the custom name is used everywhere — selector, request to the backend, map.
2.2 Apply to all
Next to the selector there is an Apply to all button.
- It takes the parameters currently on screen and copies them into the configuration of every Block Contour at once.
- The button is enabled only when there are at least two Block Contours.
- It does not run the optimizer; it just propagates the settings.
Use it whenever you want a uniform configuration across the field, then tweak only the contours that need to differ.
3. Drilling Order section
At the foot of the parameters panel you will find the Drilling order section.
3.1 First priority and Second priority
Two dropdowns that define the drilling sequence within the selected contour:
- First priority —
North to South,South to North,East to West,West to East. - Second priority — restricted to the perpendicular axis of the first one. If you change the first priority to a North/South axis, the second priority options switch to East/West (and vice versa).
These priorities travel with each Block Contour’s configuration, so two contours can have completely different drilling sequences.
3.2 Apply reorder
Pressing Apply reorder re-sequences the wells of the currently graphed layout using the chosen priorities without re-running the optimizer.
- Requires that a layout already exists (the button is disabled if there are no PADs on the map).
- The map is updated as soon as the backend responds. Only the well numbers (drilling order) change; the geometry stays in place.
4. Per-contour Optimize
Below the priorities there is a centred Optimize “Block Contour X” button.
- Runs the optimizer only for the contour selected in the Block contour selector, leaving the rest of the layout untouched.
- The button shows the targeted contour name in its label so you can be sure of the scope at a glance.
- Works whether or not a layout was previously computed:
- If a layout exists, it is sent to the backend as context so the re-optimized contour integrates with the rest.
- If no layout exists, the endpoint runs a fresh optimization for that contour alone.
This is the recommended way to iterate on one contour without disturbing the others.
5. Reordering Block Contours
The right-hand panel lists every Block Contour with a drag handle on the left side of each row.
5.1 Drag to reorder
Grab a row by the handle and drop it where you want it in the list. The order of the list is the drilling order at the contour level — the contour at the top is drilled first.
- Default labels (
Block Contour 1,Block Contour 2, …) are frozen onto the row the first time you drag, so they don’t shift around after the move. Custom names are always preserved. - The order is sent to the backend in the next request as the
orderproperty of each Block Contour (1-based).
5.2 Automatic re-sequencing
If a layout already exists when you reorder, the FE automatically asks the backend to re-sequence every PAD and well to reflect the new contour order. The map updates as soon as the response arrives.
You will see a toast (“Re-sequencing wells for the new contour order…”) during the request. The footer buttons Optimize and Apply are disabled until the operation finishes, so two requests can’t overlap.
If no layout exists, the reorder is purely visual; the next Optimize run will pick up the new ordering.
6. Manual uploads
You can mix optimizer output with manually-imported geometry. The Import button (top-right of the Optimizer window) gives you two flows:
6.1 Importing Block Contours
Use the Contours tab of the Import dialog and provide a Shapefile or a GeoJSON file. Two modes:
- Append — imported contours are added at the end of the existing
list. New Block Contours therefore enter the drilling order last (their
orderis greater than every existing one). - Replace — the existing list is wiped and replaced with the imported one.
You can drag-reorder them afterwards (see section 5).
6.2 Importing wells (PADs)
Use the JSON tab of the Import dialog and provide a file conforming to the Optimizer template. Two modes:
- Append — imported PADs are added at the end of the layout.
Their well names start at
max(existing well number) + 1so they never collide with the optimizer’s numbers. - Replace — wipes the layout and uses the imported one only.
Manually imported PADs are flagged internally as manual, which has two consequences explained below.
6.3 How manual uploads interact with the Optimizer
When you press the footer Optimize with a layout that already contains manual PADs:
- The optimizer receives only the contours and parameters — it does not know that your manual PADs exist.
- The backend response replaces the layout with the optimizer’s PADs.
- The FE then re-appends your manual PADs at the end of the layout with new sequential names (greater than every optimizer well).
What this implies in practice:
- Manual PADs survive the Optimize run; their geometry is preserved.
- Manual PADs are not part of the optimizer’s computation, so if they fall inside a Block Contour you are optimizing, the optimizer may place its own PADs on top of them.
- After an Optimize, the manual PADs sit at the end of the array. To integrate them into the global drilling order, drag any contour or press Apply reorder — both of those go through endpoints that receive the full layout (manuals included) and re-sequence everything.
7. Wells Inventory
The Wells Inventory floating window (icon next to the totals at the bottom of the Optimizer) shows every well of the current layout in a table:
- It is enabled as soon as there is any PAD on the map — you don’t need to press Apply first.
- It pulls data from the currently graphed layout. If the layout has been Applied, it uses the persisted devplan inventory; otherwise it reads the live layout from the Optimizer.
Use it to scan wells by PAD, landing or well name, and to export the inventory.
8. Naming on the map
Two conventions worth knowing because they show up everywhere:
8.1 PAD labels
The PAD N label on the map uses the pad_order returned by the
backend — the drilling order of the drill site (1-based). Two PADs
that share a drill site (north + south fan) share the same pad_order,
so you may see the same label on both sides of the same point. That is
expected.
For PADs that do not have a pad_order (e.g. manuals before any
backend run), the label falls back to the array index.
8.2 Well labels
The number you see next to each well on the map is the drilling-order
number the backend assigned (the well’s well_name). After Optimize,
reorder, drag-reorder of contours or per-contour optimization, these
numbers reflect the real perforation sequence — well 1 is drilled
first.
Manual wells are numbered locally by the FE, starting at
max(existing) + 1, so they never collide with the optimizer numbers
but their values are FE-assigned until a re-sequence run involves them.
9. Save with Apply
The footer Apply button persists the current layout and parameters into the Development Plan:
- Saves the full layout (optimizer + manuals).
- Saves the per-contour configurations (so reopening the project loads exactly what you saw).
- Marks downstream modules (Type Wells, Wells Setup) as requires reload so they re-derive from the new layout.
Optimize and reorder operations live in the Optimizer until you press Apply. Closing the Optimizer without applying loses the in-memory changes.
10. Common workflows
Workflow A — Single-contour iteration
- Select the Block Contour you want to tune in the Block contour selector.
- Edit the parameters in the panel.
- Press the centred Optimize “Block Contour X” button to run the optimizer for that contour only.
- Repeat for each contour, then press Apply when satisfied.
Workflow B — Uniform field, then targeted tweaks
- Set the parameters once in the form.
- Press Apply to all to propagate them to every contour.
- Switch to a specific contour, change the parameters that need to differ.
- Press the footer Optimize to run the full optimizer.
- Press Apply.
Workflow C — Re-sequence an existing layout
- Have a computed layout (Optimize or Apply previously).
- Choose your First and Second priority in the Drilling order section.
- Press Apply reorder — wells are re-numbered to reflect the new priorities, geometry stays in place.
Workflow D — Reorder Block Contours and re-sequence wells
- Have a computed layout.
- Drag a Block Contour in the right-hand list to a new position.
- The FE automatically asks the backend to re-sequence every PAD and well; the map updates as soon as the response arrives.
Workflow E — Use a manual layout as a base
- Import a GeoJSON / Shapefile of contours and / or a JSON of PADs via the Import button.
- Edit the contour parameters as needed.
- Run Optimize (full or per-contour) or Apply reorder to integrate / re-sequence with the rest.
11. FAQ
Why do well numbers change after an Optimize / reorder? Well numbers are the drilling order. Each Optimize / reorder operation computes a new order, so the numbers are expected to change.
I dragged a contour but the map didn’t update. Why? If there is no computed layout yet, the drag is purely visual — the next Optimize run will pick up the new order. Press Optimize to apply it.
Two PADs have the same PAD N label. Bug?
No — those two PADs share a drill site (north + south fans). The
backend gives them the same pad_order on purpose.
Manual PADs disappeared after running Optimize. They should not. They are re-appended at the end of the layout after the optimizer response. If you don’t see them, scroll / pan the map — they may be off-screen, or check the totals at the bottom of the Optimizer to confirm their count.
Can I rename a Block Contour? Yes. The text field next to each contour in the right-hand list is editable. Custom names persist and are used everywhere (selector, request, map, inventory).
Does Apply to all overwrite drilling priorities too? Yes. Apply to all copies the full parameters block, including First and Second priority, to every Block Contour. Use it deliberately.
12. Reference — Endpoints behind the scenes
For transparency, the buttons map to these backend endpoints:
| Action | Endpoint |
|---|---|
| Footer Optimize | dev_plan/contour_optimization/ |
| Per-contour Optimize | dev_plan/single_contour_optimization/ |
| Apply reorder | dev_plan/contour_reorder/ |
| Drag-reorder of a contour (with layout) | dev_plan/change_contour_order/ |
You do not need to know them to use the module; they are documented here only as a reference when filing tickets.