USC CiSoft & Chevron
17 Years at USC CiSoft · 7 as a Chevron Consultant
For 17 years, through 2026, I managed the software lab at USC’s Center for Interactive Smart Oilfield Technologies (CiSoft), part of the Viterbi School of Engineering, including 7 years as a Chevron consultant. This page collects the software I built and led there: production-optimization solvers, waterflood connectivity analytics, computational-geometry engines, and petrophysical modeling tools, all shipped as tested, versioned software running on real field data.
Selected Work
Three flagship systems from the lab, then the rest of the bench. Every image below is a real rendered output from the tool described, not a mockup.
01 · Field-Development Optimization
WellScheduler
Multi-cycle production scheduler · v1.0.6 · Python
Schedules well start/stop cycles across a multi-year horizon to maximize field output under a shared facility capacity limit. Each well is modeled with an exponential decline curve, cycle degradation, shut-in threshold, and recovery period. Three solvers on one problem: greedy heuristic, genetic algorithm, and MILP, cross-validated against each other on every run. On the run shown here the greedy heuristic matched the MILP schedule to within 0.04% of total production while solving about twelve times faster.
Also in this theme: drilling-rig logistics
Rig Routing GA
Weighted multi-depot multiple-TSP · MATLAB
Schedules a fleet of drilling rigs across a field, each rig returning to its own depot: a multi-depot multiple travelling-salesman problem solved with a genetic algorithm. The petroleum-specific part is the objective: the distance matrix is weighted by each well’s drilling-priority and non-productive-time indices, so tours bend toward high-value wells instead of merely minimizing kilometres. Three rigs over roughly fifty wells converged from ~440 to a total weighted distance of 110.02 across 1,000 generations.
02 · Computational Geometry
VoronoiAI2025
Weighted & segment Voronoi engine · desktop + WebAssembly
Models territory and drainage areas where a point is a well and a segment is a horizontal lateral. A “mirror-reflection” re-architecture made every cell a finite convex polygon, eliminating an entire class of infinite-region and degenerate-input bugs, then extended to power diagrams, exact parabolic-arc segment cells, and centroidal relaxation. One dependency-light core runs identically on the desktop and in the browser via Pyodide.
Same engine, eleven industries: four shown
03 · Waterflood Analytics
InterwellConnectivity
8-project .NET solution · OData service ↔ WinForms client
Quantifies which injector is feeding which producer across a mature waterflood, computing a well allocation factor for every injector–producer pair using an FIR capacitance model and a multivariate-regression alternative, both built on a custom matrix library. A genuine n-tier product: a WCF/OData service over Entity Framework, a rich client with a reusable interactive map control on an ArcGIS basemap, dedicated ETL and data-cleaning tools, and packaged MSI installers.
04 · Production Forecasting
Decline Analysis
Sparse-data decline-curve analysis · VB.NET MDI + Python
Fits Arps decline curves to well production histories that report irregularly, then forecasts remaining recovery. Four models: classic exponential by closed-form logarithmic regression, plus exponential, harmonic and hyperbolic solved by handing the selected points to scipy’s differential evolution over a process boundary and reading back Qi, Di, b and R². The user picks the decline interval by clicking two points on the chart; events, stop and end dates are marked inline, and cumulative recovery is reported both analytically and trapezoidally.
Pointed at any production database: a six-step mapping wizard
The Rest of the Bench
Supporting tools from the same lab: petrophysics, soft computing, industry interoperability, and combinatorial optimization.
Log Viewer
Petrophysics · VB.NET
MDI well-log viewer with custom-extended charting controls: multi-curve depth plots of porosity, permeability, saturation and resistivity, moving-average QC envelope bands, and interactive picking of geological zone tops and bottoms.
FuzzyNew
Soft computing · Python
Fuzzy-logic reservoir-quality scoring from geological inputs. Generalized the inference engine from hardcoded 3- and 4-input branches to arbitrary N inputs, and vectorized preprocessing for a ~100× speedup at roughly one-million-row scale.
Petrel Workflow
Interoperability · VB.NET
Bridges Schlumberger Petrel property exports and the fuzzy reservoir model, streaming multi-million-row 3D grid files with column projection, then merging model results back into a Petrel-importable grid.
Evolutionary Optimizer
Optimization · VB.NET
General-purpose real-coded genetic optimizer for any user-typed math expression, evaluated at runtime: tournament selection, crossover, per-gene mutation, elitism, and an immigration operator for population diversity.
Focus Areas
The kinds of problems the software lab took on.
- 📈 Field-development optimization: deciding when to run every well under a shared facility constraint, solved three ways in parallel (mixed-integer programming, genetic algorithms, and greedy heuristics) so the fast method could be validated against the exact one.
- 🧭 Computational geometry: Voronoi, power and segment diagrams for drainage and catchment areas, with centroidal relaxation and exact parabolic-arc cells, shipped to both desktop and the browser from a single code core.
- 🛰️ Waterflood & production analytics: FIR capacitance and regression models quantifying injector–producer connectivity, delivered as a multi-tier .NET platform with a GIS map control over real production field data; plus decline-curve forecasting fitting exponential, harmonic and hyperbolic models to sparse histories by global optimization.
- 🧪 Petrophysics & soft computing: fuzzy-logic reservoir-quality scoring, well-log interpretation and zone picking, and interoperability with industry-standard reservoir-modeling platforms such as Schlumberger Petrel.
Let’s Connect
More about my background and independent projects on the about page, or reach out directly.