Validates code and provides physics reasoning for the 2-D injection-production doublet model using streamline methods...
This skill provides physics knowledge for the 2-D doublet (injection-production well pair) model using streamline methods. The model solves advection-reaction-dispersion problems along circular streamlines in a potential flow field.
The model tracks transport in a 2-D potential flow field between an injector (+a, 0) and producer (-a, 0):
| Module | Transport Type | Solution Method |
|---|---|---|
| Hydrodynamic | Pure advection | Time-of-flight along streamlines |
| Chemical | Advection + capacity-limited reaction | Logistic traveling wave |
| Thermal | Advection + fluid-matrix exchange | Bessel-function Green's kernel |
Key state variables:
| Variable | Symbol | Meaning | Units |
|---|---|---|---|
| Take-off angle | β | Angle at which streamline leaves injector | rad |
| Time-of-flight | τ(β) | Travel time from injector to producer | s |
| Arc position | φ | Angle along circular streamline | rad |
| Concentration | C(φ,t) | Solute mass fraction | kg/kg |
| Capacity | S(φ,t) | Remaining reaction capacity | kg/kg |
| Fluid temperature | Tf(φ,t) | Fluid temperature along streamline | °C |
| Matrix temperature | Tm(φ,t) | Rock matrix temperature | °C |
For detailed equations, see EQUATIONS.md. For symbol definitions and units, see SYMBOLS.md. For derivation logic, see DERIVATIONS.md. For edge cases and sanity checks, see SANITY_CHECKS.md.
Use this workflow when reviewing or planning code changes.
Determine which transport physics is affected:
The model uses multiple coordinate systems:
Verify transformations are applied correctly.
Breakthrough curves integrate over all streamlines:
C_prod(t) = (1/π) ∫_0^π C(β, t) dβ
Check that:
For thermal transport, the Bessel kernel G(Ï„, t) can overflow:
Summarize:
Use this workflow when explaining behavior, debugging, or proposing solutions.
| Module | Purpose | Key Functions |
|---|---|---|
doublet.py |
Main model (streamlines, chemical, thermal) | Tf, Ctf, Cxf, Ttf, Txf, breakthrough |
streamlines.py |
Bipolar coordinate streamlines | streamline_bipolar, streamtube_width |
diffusion.py |
Green's kernel solver with diffusion | solve_kernel_capacity, cxfD, ctDf |
thermal.py |
Thermal kernel (alternative impl.) | thermal_kernel_Tf_Tm_xvec_t |
thermal2.py |
Optimized thermal solver | G_grid_efficient, run_breakthrough, Tprodf |
notebook_widgets.py |
Interactive Jupyter visualizations | visualize_* functions |
These must always hold:
| Transport | Governing Equation | Solution Type |
|---|---|---|
| Hydrodynamic | ∂C/∂t + v·∇C = 0 | Method of characteristics |
| Chemical (no diffusion) | ∂C/∂t + v·∇C = -kCS | Logistic traveling wave |
| Chemical (with diffusion) | ∂C/∂t + v·∇C = D∇²C - kCS | Green's function convolution |
| Thermal | ∂Tf/∂t + v·∇Tf = -γ(Tf - Tm) | Bessel kernel (Eq. 47) |
| Matrix | ∂Tm/∂t = β(Tf - Tm) | Exponential convolution (Eq. 48) |
| Group | Definition | Physical Meaning |
|---|---|---|
| Retardation R | (C_inj + S_0)/C_inj | Front slowdown factor |
| Damköhler Da | k·τ | Reaction extent over travel time |
| Péclet Pe | v·L/D | Advection vs diffusion |
| β·τ | (exchange rate)·(travel time) | Matrix equilibration extent |
| γ·τ | (exchange rate)·(travel time) | Fluid cooling extent |