p4zlys
Overview
The p4zlys module implements the calcium carbonate (CaCO₃) dissolution and precipitation processes in the PISCES model. This module calculates the degree of calcite saturation in seawater and computes the resulting dissolution or precipitation rates and its loss to the sediment pool.
Module Name: p4zlys
Model: PISCES (NEMO 5.0)
Subroutines: p2z_lys, p4z_lys, p4z_lys_init
The four main steps modelled are:
- Calculation of chemical parameters : pH and H⁺ and CO₃²⁻ concentrations
- Degree of saturation (Ω): Calculation to determine whether the water is undersaturated or supersaturated with CaCO\(_3\)
- Dissolution rate: Two regimes depending on the degree of saturation, with different reaction orders
- Update of tracers: DIC, alkalinity and particulate CaCO₃
Physical and Chemical Background
Calcite Saturation State
The saturation state (Ω) of calcite in seawater is defined as: \(\Omega = {{\ce{[Ca^{2+}] \cdot [CO3^{2-}]}} \over Ksp}\)
Where:
- [Ca²⁺]: Calcium ion concentration (mol/kg)
- [CO₃²⁻]: Carbonate ion concentration (mol/kg)
- Ksp: Stoichiometric solubility product of CaCO₃ (mol\(^2\)/kg\(^2\))
Saturation Conditions
- Ω > 1: Supersaturation → Precipitation favored
- Ω = 1: Saturation equilibrium
- Ω < 1: Undersaturation → Dissolution occurs
Model Implementation
1. Chemical Concentration Calculations
Hydrogen Ion Concentration [H⁺]
The hydrogen ion concentration is computed iteratively using the solve_at_general subroutine, which solves the carbonate system equilibrium equations:
zhinit(ji,jj,jk) = hi(ji,jj,jk) / (zdens + rtrn)
CALL solve_at_general(zhinit, zhi, Kbb)
hi(ji,jj,jk) = zhi(ji,jj,jk) * zdens
Carbonate Ion Concentration [CO₃²⁻]
Calculated from dissolved inorganic carbon (DIC) and equilibrium constants:
zco3(ji,jj,jk) = tr(ji,jj,jk,jpdic,Kbb) * ak13(ji,jj,jk) * ak23(ji,jj,jk) /
(zhi(ji,jj,jk)**2 + ak13(ji,jj,jk) * zhi(ji,jj,jk) +
ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn)
Where:
- ak13: First dissociation constant (H₂CO₃ ⇌ H⁺ + HCO₃⁻)
- ak23: Second dissociation constant (HCO₃⁻ ⇌ H⁺ + CO₃²⁻)
pH Calculation
2. Saturation State Computation
Calcium Concentration
Salinity-dependent calcium concentration:
Where:
- calcon = 1.03×10⁻² mol/kg: Mean calcium concentration in seawater
Saturation State (Ω)
zdens = rhop(ji,jj,jk) / 1000.0
zomegaca = (zcalcon * zco3(ji,jj,jk)) / (aksp(ji,jj,jk) * zdens + rtrn)
Excess Saturation
3. Dissolution Rate Calculation
The dissolution rate depends on the saturation state, with two distinct kinetic regimes:
Regime A: Strong Undersaturation (Ω < 0.8)
High-order reaction kinetics:
Parameters:
- kdca: Dissolution rate constant (month⁻¹)
- nca: Reaction order (typically ~4.5)
Characteristics:
- Fast dissolution rate
- Dominant in deep, undersaturated waters
Regime B: Near-Saturation (Ω ≥ 0.8)
Reduced-order kinetics:
Characteristics:
- Slower dissolution rate
- Transition regime near saturation equilibrium
- Prevents unrealistic dissolution at near-equilibrium conditions
4. Tracer Updates
The dissolution process affects three biogeochemical tracers:
Dissolved Inorganic Carbon (DIC)
Increases by the amount of CaCO₃ dissolved
Total Alkalinity (ALK)
Increases by twice the dissolution rate (2 equivalents per CaCO₃)
Reaction:
Particulate CaCO₃ (CAL)
Decreases by the amount dissolved
Implementation
PISCES-Simple
p2z_lys: Flux-Based Approach
Key Features:
- Computes CaCO₃ production not explictly resolved by PISCES-Simple from vertical flux
- Integrates vertical transport via sinking velocity (wsbio4)
- Calculates export fluxes at specific depths (e.g., 100m)
- Tracks CaCO₃ sedimentation to seafloor
Vertical Transport:
zwsbio = wsbio4(ji,jj,jk) / rday
zdepexp = exp(-ztra(ji,jj,jk) * e3t(ji,jj,jk,Kmm) / zwsbio)
zcaco3(ji,jj,jk) = prodcal(ji,jj,jk) * rfact2r / ztra(ji,jj,jk) *
(1.0 - zdepexp) + zcaco3(ji,jj,jk-1) * zdepexp
Bottom Sink:
PISCES-Operational/Research
p4z_lys: Concentration-Based Approach
Key Features:
- Direct dissolution based on local CaCO₃ concentration
- Simpler implementation without explicit vertical transport
- Local equilibrium approach
Dissolution:
Namelist Parameters
Configuration via the nampiscal namelist block:
Parameters
| Parameter | Description | Typical Value | Units |
|---|---|---|---|
| kdca | Dissolution rate constant | 1.0-10.0 | month⁻¹ |
| nca | Reaction order for dissolution | 4.0-5.0 | dimensionless |
Internal Constants
| Constant | Value | Description |
|---|---|---|
| calcon | 1.03×10⁻² | Mean [Ca²⁺] in seawater (mol/kg) |
| rmtss | nyear_len × rday / 12 | Seconds per month |
Diagnostic Outputs
The module provides several diagnostic fields for analysis:
Available Diagnostics
| Field | Description | Units |
|---|---|---|
| PH | pH value | - |
| CO3 | Carbonate ion concentration | mmol/m³ |
| CO3sat | Saturation carbonate concentration | mmol/m³ |
| DCAL | Calcite dissolution rate | mmol/m³/s |
| PCAL | Calcite production rate | mmol/m³/s |
| EPCAL100 | Calcite export at 100m (p2z only) | mmol/m²/s |
| EXPCAL | Calcite export profile (p2z only) | mmol/m³/s |
Output Calculations
pH:
CO₃ concentration (mmol/m³):
CO₃ saturation:
Scientific Background and References
Key Physical Processes
- Temperature dependence: Via equilibrium constants (ak13, ak23, aksp)
- Pressure dependence: Via solubility product (aksp)
- Salinity dependence: Via calcium concentration adjustment
- Density effects: Proper unit conversion using seawater density (rhop)
Model Assumptions
- Instantaneous chemical equilibrium for carbonate system
- Magnesium carbonate effects implicitly included
- No kinetic barriers to dissolution at strong undersaturation
- Smooth transition between kinetic regimes
Implementation Notes
Numerical Considerations
- Division by zero protection: Use of
rtrn(small threshold value) - Exponential stability: Careful handling of exp() calculations in p2z_lys
- Time stepping: Explicit forward Euler scheme
- Unit conversions: Proper handling of mol/kg vs mol/m³
Usage
Initialization
Time Integration
! For p4z version (concentration-based)
CALL p4z_lys(kt, knt, Kbb, Krhs)
! For p2z version (flux-based with vertical transport)
CALL p2z_lys(kt, knt, Kbb, Kmm, Krhs)
Typical Workflow
- Read model configuration and namelist parameters
- Initialize carbonate chemistry module
- At each time step:
- Compute chemical equilibrium
- Calculate saturation state
- Determine dissolution rate
- Update biogeochemical tracers
- Output diagnostics
Dependencies
Modules
oce_trc: Shared ocean-tracer variablestrc: Passive tracer common variablessms_pisces: PISCES source-minus-sink variablesp4zche: Chemical model (carbonate equilibrium)p4zsink: Particle sinking (for p2z_lys)prtctl: Print control for debuggingiom: I/O manager for diagnostics
External Functions
solve_at_general: Iterative solver for carbonate systemtiming_start/stop: Performance profilingiom_use/put: Diagnostic output
Document Version: 1.0
Last Updated: October 2025
Source code: NEMO 5.0