Doublet Streamline Model Physics Knowledge
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.
When This Skill Applies
- Modifying streamline geometry calculations (bipolar coordinates)
- Changing transport solvers (hydrodynamic, chemical, thermal)
- Implementing or modifying breakthrough curve integration
- Working with Green's function kernels for thermal transport
- Debugging unexpected breakthrough behavior
- Planning changes to physics-related code
- Explaining why the model behaves a certain way
Core Physics Reference
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.
Workflow A: Physics Validation
Use this workflow when reviewing or planning code changes.
Step 1: Identify affected transport type
Determine which transport physics is affected:
- Hydrodynamic: Streamline geometry, time-of-flight, velocity field
- Chemical: Capacity-limited reaction, logistic traveling wave
- Thermal: Fluid-matrix exchange, Bessel function kernel
Step 2: Check coordinate system consistency
The model uses multiple coordinate systems:
- Cartesian (x, y) for plotting
- Bipolar (ξ, β) for streamline parameterization
- Polar about streamline center (R, φ) for local calculations
Verify transformations are applied correctly.
Step 3: Verify breakthrough integration
Breakthrough curves integrate over all streamlines:
C_prod(t) = (1/π) ∫_0^π C(β, t) dβ
Check that:
- Integration weights are correct (trapezoidal or custom)
- β limits span [0, π] (or arrived streamlines only)
- Singularities at β → 0, π are handled
Step 4: Check Green's function stability (thermal)
For thermal transport, the Bessel kernel G(τ, t) can overflow:
- Verify exponent recentering is applied
- Check that i1e (scaled Bessel I1) is used instead of i1
- Verify prefix integrals use cumulative_trapezoid
Step 5: Report findings
Summarize:
- Which transport type is affected
- Any coordinate transformation issues
- Any integration boundary issues
- Any numerical stability concerns
- Recommendations for correction
Workflow B: Physics Reasoning
Use this workflow when explaining behavior, debugging, or proposing solutions.
For explaining physics concepts:
- Identify the relevant equations and parameters
- State the physical interpretation
- Explain cause-and-effect relationships
- Use the derivation steps from DERIVATIONS.md to show connections
For debugging simulation issues:
- Identify which transport type shows unexpected behavior
- Check if the issue relates to:
- Breakthrough timing (τ calculation)
- Front retardation (reaction capacity)
- Thermal lag (fluid-matrix exchange rates)
- Trace through the analytical solution
- Check edge cases against SANITY_CHECKS.md
For proposing physics-consistent changes:
- Identify which equations are affected
- Show how new terms integrate into the transport equations
- Demonstrate that mass/energy balance is preserved
- Identify any new sanity checks needed
Quick Reference: Module Structure
| 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 |
Key Physical Constraints
These must always hold:
- Streamline geometry: Streamlines are circular arcs through (±a, 0)
- Travel time bounds: T(β=0) = 4πna²/(3Q) is minimum arrival time
- Velocity singularity: v → ∞ at wells (handled by coordinate transformation)
- Conservation: Integrated flux across all streamlines equals Q
- Retardation: Chemical front travels at speed v·C_inj/(C_inj + S_0)
- Thermal equilibrium: As t → ∞, Tf → Tm → T_inj (behind the front)
Transport Type Classification
| 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) |
Dimensionless Groups
| 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 |
1---2name: doublet3description: Validates code and provides physics reasoning for the 2-D injection-production doublet model using streamline methods. Use when modifying streamline geometry, transport calculations (hydrodynamic, chemical, thermal), breakthrough curves, or Green's function kernels. Also use when debugging simulation behavior or explaining physics concepts.4---5
6# Doublet Streamline Model Physics Knowledge
7
8This 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.
9
10## When This Skill Applies
11
12- Modifying streamline geometry calculations (bipolar coordinates)
13- Changing transport solvers (hydrodynamic, chemical, thermal)
14- Implementing or modifying breakthrough curve integration
15- Working with Green's function kernels for thermal transport
16- Debugging unexpected breakthrough behavior
17- Planning changes to physics-related code
18- Explaining why the model behaves a certain way
19
20## Core Physics Reference
21
22The model tracks transport in a 2-D potential flow field between an injector (+a, 0) and producer (-a, 0):
23
24| Module | Transport Type | Solution Method |
25|--------|----------------|-----------------|
26| Hydrodynamic | Pure advection | Time-of-flight along streamlines |
27| Chemical | Advection + capacity-limited reaction | Logistic traveling wave |
28| Thermal | Advection + fluid-matrix exchange | Bessel-function Green's kernel |
29
30Key state variables:
31
32| Variable | Symbol | Meaning | Units |
33|----------|--------|---------|-------|
34| Take-off angle | β | Angle at which streamline leaves injector | rad |
35| Time-of-flight | τ(β) | Travel time from injector to producer | s |
36| Arc position | φ | Angle along circular streamline | rad |
37| Concentration | C(φ,t) | Solute mass fraction | kg/kg |
38| Capacity | S(φ,t) | Remaining reaction capacity | kg/kg |
39| Fluid temperature | Tf(φ,t) | Fluid temperature along streamline | °C |
40| Matrix temperature | Tm(φ,t) | Rock matrix temperature | °C |
41
42For detailed equations, see [EQUATIONS.md](EQUATIONS.md).
43For symbol definitions and units, see [SYMBOLS.md](SYMBOLS.md).
44For derivation logic, see [DERIVATIONS.md](DERIVATIONS.md).
45For edge cases and sanity checks, see [SANITY_CHECKS.md](SANITY_CHECKS.md).
46
47---
48
49## Workflow A: Physics Validation
50
51Use this workflow when reviewing or planning code changes.
52
53### Step 1: Identify affected transport type
54
55Determine which transport physics is affected:
56- **Hydrodynamic**: Streamline geometry, time-of-flight, velocity field
57- **Chemical**: Capacity-limited reaction, logistic traveling wave
58- **Thermal**: Fluid-matrix exchange, Bessel function kernel
59
60### Step 2: Check coordinate system consistency
61
62The model uses multiple coordinate systems:
63- Cartesian (x, y) for plotting
64- Bipolar (ξ, β) for streamline parameterization
65- Polar about streamline center (R, φ) for local calculations
66
67Verify transformations are applied correctly.
68
69### Step 3: Verify breakthrough integration
70
71Breakthrough curves integrate over all streamlines:
72```
73C_prod(t) = (1/π) ∫_0^π C(β, t) dβ
74```
75
76Check that:
77- Integration weights are correct (trapezoidal or custom)
78- β limits span [0, π] (or arrived streamlines only)
79- Singularities at β → 0, π are handled
80
81### Step 4: Check Green's function stability (thermal)
82
83For thermal transport, the Bessel kernel G(τ, t) can overflow:
84- Verify exponent recentering is applied
85- Check that i1e (scaled Bessel I1) is used instead of i1
86- Verify prefix integrals use cumulative_trapezoid
87
88### Step 5: Report findings
89
90Summarize:
91- Which transport type is affected
92- Any coordinate transformation issues
93- Any integration boundary issues
94- Any numerical stability concerns
95- Recommendations for correction
96
97---
98
99## Workflow B: Physics Reasoning
100
101Use this workflow when explaining behavior, debugging, or proposing solutions.
102
103### For explaining physics concepts:
104
1051. Identify the relevant equations and parameters
1062. State the physical interpretation
1073. Explain cause-and-effect relationships
1084. Use the derivation steps from [DERIVATIONS.md](DERIVATIONS.md) to show connections
109
110### For debugging simulation issues:
111
1121. Identify which transport type shows unexpected behavior
1132. Check if the issue relates to:
114 - Breakthrough timing (τ calculation)
115 - Front retardation (reaction capacity)
116 - Thermal lag (fluid-matrix exchange rates)
1173. Trace through the analytical solution
1184. Check edge cases against [SANITY_CHECKS.md](SANITY_CHECKS.md)
119
120### For proposing physics-consistent changes:
121
1221. Identify which equations are affected
1232. Show how new terms integrate into the transport equations
1243. Demonstrate that mass/energy balance is preserved
1254. Identify any new sanity checks needed
126
127---
128
129## Quick Reference: Module Structure
130
131| Module | Purpose | Key Functions |
132|--------|---------|---------------|
133| `doublet.py` | Main model (streamlines, chemical, thermal) | `Tf`, `Ctf`, `Cxf`, `Ttf`, `Txf`, `breakthrough` |
134| `streamlines.py` | Bipolar coordinate streamlines | `streamline_bipolar`, `streamtube_width` |
135| `diffusion.py` | Green's kernel solver with diffusion | `solve_kernel_capacity`, `cxfD`, `ctDf` |
136| `thermal.py` | Thermal kernel (alternative impl.) | `thermal_kernel_Tf_Tm_xvec_t` |
137| `thermal2.py` | Optimized thermal solver | `G_grid_efficient`, `run_breakthrough`, `Tprodf` |
138| `notebook_widgets.py` | Interactive Jupyter visualizations | `visualize_*` functions |
139
140---
141
142## Key Physical Constraints
143
144These must always hold:
145
1461. **Streamline geometry**: Streamlines are circular arcs through (±a, 0)
1472. **Travel time bounds**: T(β=0) = 4πna²/(3Q) is minimum arrival time
1483. **Velocity singularity**: v → ∞ at wells (handled by coordinate transformation)
1494. **Conservation**: Integrated flux across all streamlines equals Q
1505. **Retardation**: Chemical front travels at speed v·C_inj/(C_inj + S_0)
1516. **Thermal equilibrium**: As t → ∞, Tf → Tm → T_inj (behind the front)
152
153---
154
155## Transport Type Classification
156
157| Transport | Governing Equation | Solution Type |
158|-----------|-------------------|---------------|
159| Hydrodynamic | ∂C/∂t + v·∇C = 0 | Method of characteristics |
160| Chemical (no diffusion) | ∂C/∂t + v·∇C = -kCS | Logistic traveling wave |
161| Chemical (with diffusion) | ∂C/∂t + v·∇C = D∇²C - kCS | Green's function convolution |
162| Thermal | ∂Tf/∂t + v·∇Tf = -γ(Tf - Tm) | Bessel kernel (Eq. 47) |
163| Matrix | ∂Tm/∂t = β(Tf - Tm) | Exponential convolution (Eq. 48) |
164
165---
166
167## Dimensionless Groups
168
169| Group | Definition | Physical Meaning |
170|-------|------------|------------------|
171| Retardation R | (C_inj + S_0)/C_inj | Front slowdown factor |
172| Damköhler Da | k·τ | Reaction extent over travel time |
173| Péclet Pe | v·L/D | Advection vs diffusion |
174| β·τ | (exchange rate)·(travel time) | Matrix equilibration extent |
175| γ·τ | (exchange rate)·(travel time) | Fluid cooling extent |