A Python package for creating detailed well architecture diagrams and visualizations. This tool provides comprehensive well diagram generation capabilities with support for multiple tubular sections, cement visualization, and packer placement.
- Comprehensive tubular section visualization with customizable parameters
- Multiple cement section support with accurate representation
- Packer placement and visualization capabilities
- Automatic scaling and dimension handling
- Detailed component labeling and information display
- Support for complex well configurations
Install using pip:
pip install wellarchitecturedesignHere's a complete example demonstrating the main features of the package:
from wellarchitecturedesign import Tubular, Cement, Well, Tubing, Packer
# Define tubular sections
t0 = Tubular(name="conductor", inD=7.25, outD=8, weight=58, top=0, low=250)
t1 = Tubular(name="surface", inD=6.25, outD=6.75, weight=47, top=0, low=2000, shoeSize=7)
t2 = Tubular(name="intermediate", inD=5.5, outD=5.75, weight=39, top=0, low=3750, shoeSize=6,
info="this is very expensive!")
t3 = Tubular(name="production", inD=4.75, outD=5, weight=39, top=0, low=5200, shoeSize=5.25)
t4 = Tubular(name="liner", inD=3.75, outD=4, weight=27, top=4800, low=6500, shoeSize=4.5)
# Add tubing
tubing = Tubing(name="tubing", inD=2.75, outD=3.5, weight=15.5, top=0, low=6000)
# Define cement sections
c0 = Cement(top=0, low=2000, tub0=t0, tub1=t1)
c1 = Cement(top=1800, low=3750, tub0=t2, tub1=t1)
c2 = Cement(top=3500, low=5200, tub0=t2, tub1=t3)
# Add packers
p1 = Packer(depth=4000, inner_tubular=tubing, outer_tubular=t3, packer_type="tubing")
p2 = Packer(depth=5500, inner_tubular=tubing, outer_tubular=t4, packer_type="tubing")
p3 = Packer(depth=5000, inner_tubular=t4, outer_tubular=t3, packer_type="casing")
# Create and configure well
well = Well(name="Test Well 001", kop=5000)
# Add components to well
well.addTubular(t0)
well.addTubular(t1)
well.addTubular(t2)
well.addTubular(t3)
well.addTubular(t4)
well.addTubular(tubing)
well.addPacker(p1)
well.addPacker(p2)
well.addPacker(p3)
# Generate visualization
well.visualize()This code generates:
name: Component identifierinD: Inner diameter (inches)outD: Outer diameter (inches)weight: Weight per foot (lb/ft)top: Starting depth (ft)low: Ending depth (ft)shoeSize: Shoe diameter (inches, optional)info: Additional information (optional)
top: Upper depth limitlow: Lower depth limittub0: Primary tubular componenttub1: Secondary tubular component
depth: Installation depthinner_tubular: Interior tubular componentouter_tubular: Exterior tubular componentpacker_type: Type specification ("tubing" or "casing")
name: Well identifierkop: Kick-off point depthtopVerView: Top view extentmdl: Mudline depth
- Python >=3.7
- numpy >=1.21.0
- matplotlib >=3.4.0
This project is licensed under the MIT License - see the LICENSE file for details.
I started this project because I had some free time in grad school, and this was never meant to be a full-fleshed project. I updated this project because I had some free time at work. If you think the structure of this project is messed-up, it was doomed from the get go ig lol