CO2 Lumped Parameter Model Physics Knowledge
This skill provides physics knowledge for the 0-D CO2 lumped-parameter model implemented in the co2lpm package.
When This Skill Applies
- •Modifying code that implements concentration evolution equations
- •Changing ODE solver logic or state variable handling
- •Implementing or modifying emissions partitioning (field, plant, degassing)
- •Debugging unexpected simulation behavior
- •Planning changes to physics-related code
- •Explaining why the model behaves a certain way
- •Working with pressure reversal scenarios
Core Physics Reference
The model tracks reservoir CO2 concentration over time during geothermal extraction. Key state variables:
| Variable | Symbol | Meaning | Units |
|---|---|---|---|
| Pressure | P(t) | Reservoir pressure (relative to hydrostatic) | Pa |
| Concentration | C(t) | CO2 mass fraction in reservoir fluid | kg/kg |
| Upflow rate | q_up | Mass rate into reservoir from depth | kg/s |
| Outflow rate | q_out | Mass rate leaving reservoir to surface | kg/s |
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 equations
Determine which equations from EQUATIONS.md are affected by the change:
- •Pressure evolution: E1 (exponential pressure decline)
- •Concentration ODE: E2-E4 (with and without delay)
- •Emissions: E5-E8 (degassing, field, plant, total)
- •Solubility: E9-E10
Step 2: Check dimensional consistency
Using SYMBOLS.md, verify that:
- •All terms in an equation have matching units
- •ODE coefficients (alpha, beta, gamma, delta) have correct units
- •Source terms have correct rate units (kg/s for mass)
Step 3: Verify mass balance
Changes must preserve:
- •CO2 mass conservation in the reservoir
- •Correct partitioning between dissolved, degassed, and emitted CO2
Step 4: Check sanity conditions
Verify the change doesn't violate sanity checks S1-S5 in SANITY_CHECKS.md.
Step 5: Report findings
Summarize:
- •Which equations are affected
- •Any dimensional inconsistencies found
- •Any mass balance violations
- •Any sanity check 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 between variables
- •Use the derivation steps from DERIVATIONS.md to show how equations connect
For debugging simulation issues:
- •Identify which state variables are behaving unexpectedly
- •Check if the issue relates to:
- •Pressure reversal (q_eff > q_0c)
- •Delay effects (tau > 0)
- •Solubility limiting (degas=True)
- •ODE coefficient calculation
- •Trace through the analytical solution (gamma_exact or Cf_dde)
- •Check edge cases against SANITY_CHECKS.md
For proposing physics-consistent changes:
- •Identify which equations are affected
- •Show how new terms integrate into the ODE system
- •Demonstrate that mass balance remains satisfied
- •Identify any new sanity checks needed
Quick Reference: Module Structure
| Module | Purpose | Key Functions/Classes |
|---|---|---|
model.py | Core LPM class | LumpedParameterModel, StateArrays |
parameters.py | Dataclasses for inputs | ReservoirParams, OperationParams, ChemistryParams |
solvers.py | ODE/DDE solvers | pressure_exp, integrate_ode, dde_solve |
postproc.py | Emissions calculation | emissions() |
utils.py | CO2 solubility | solubility_linear, solubility_slope_vs_T |
scenarios.py | Preset configurations | high_gas(), low_gas(), delay_demo() |
Key Physical Constraints
These must always hold:
- •Concentration non-negative: C(t) >= 0
- •Solubility limit: C(t) <= C_s(P) when degas=True
- •Pressure reversal: Occurs when q_eff > q_0c (extraction exceeds critical rate)
- •Steady state exists: C_inf = alpha/beta (no delay) or alpha/(beta-gamma) (with delay)
- •Delay stability: For tau > 0, the characteristic root lambda_1 must have negative real part
Scenario Classification
| Scenario | Key Parameters | Behavior |
|---|---|---|
| High-gas (Ohaaki-like) | degas=True, high C0 | Solubility-limited, significant degassing |
| Low-gas (Wairakei-like) | degas=False, low C0 | No degassing, concentration dilutes |
| Concentrating | fC < critical | CO2 accumulates in reservoir |
| Diluting | fC > critical | CO2 decreases in reservoir |
| Reversal | fq*q0 > q0c | Outflow reverses direction |
| Delay | tau > 0 | Breakthrough lag, DDE dynamics |