Ginoux (GOCART2G)¶
Overview¶
Implements the Ginoux dust emission algorithm from the GOCART2G framework. This multi-bin scheme computes size-resolved dust emissions using the Marticorena (1997) dry-soil threshold friction velocity with Ginoux moisture modification. Unlike the legacy dust scheme, this version resolves multiple particle size bins and uses component wind vectors.
References: - Marticorena, B., et al. (1997), Modeling wind erosion, Annales Geophysicae, 15, 1381–1388. - Ginoux, P., et al. (2001), Sources and distributions of dust aerosols, JGR, 106, 20255–20273.
Registration Names¶
- Native C++:
"ginoux" - Fortran bridge:
"ginoux_fortran"
Configuration Parameters¶
| YAML Key | Type | Default | Description |
|---|---|---|---|
ch_du |
double | 0.8e-9 | Dust emission tuning constant |
grav |
double | 9.81 | Gravitational acceleration [m/s²] |
num_bins |
int | 5 | Number of dust size bins |
particle_radii |
sequence[double] | (none) | Particle radii per bin [m]; overrides num_bins if provided |
Import Fields¶
| Field Name | Units | Description |
|---|---|---|
u10m |
m/s | 10-meter zonal wind component |
v10m |
m/s | 10-meter meridional wind component |
surface_soil_wetness |
fraction | Surface soil wetness [0–1] |
land_mask |
dimensionless | Land mask (1 = land) |
lake_fraction |
fraction | Lake fraction [0–1] |
dust_source |
dimensionless | Dust source / erodibility map |
particle_radius |
m | Particle radius per bin (3D: 1 × 1 × nbins) |
Export Fields¶
| Field Name | Units | Description |
|---|---|---|
ginoux_dust_emissions |
kg/m²/s | Size-resolved dust emission flux (3D: nx × ny × nbins) |
Algorithm¶
For each grid cell on land:
- Compute 10-m wind speed from components:
w10m = sqrt(u² + v²). - For each size bin:
a. Compute particle diameter:
d = 2 * radius. b. Compute Marticorena dry-soil threshold friction velocity:- Reynolds number:
Re = 1331 * (100*d)^1.56 + 0.38 u_thresh0 = 0.13 * sqrt(ρ_soil * g * d / ρ_air) * sqrt(1 + 6e-7/(ρ_soil * g * d^2.5)) / sqrt(1.928 * Re^0.092 − 1)c. Apply Ginoux moisture modification:- If
gwettop ≥ 0.5: no emission (threshold = 0) - Otherwise:
u_thresh = max(0, u_thresh0 * (1.2 + 0.2 * log10(max(1e-3, gwettop))))d. Ifw10m > u_thresh: emission = ch_du * dust_source * (1 − fraclake) * w10m² * (w10m − u_thresh)
- Reynolds number:
YAML Configuration Example¶
physics:
- name: ginoux
config:
ch_du: 0.8e-9
grav: 9.81
num_bins: 5
particle_radii: [0.73e-6, 1.4e-6, 2.4e-6, 4.5e-6, 8.0e-6]
Implementation Notes¶
- Available as both native C++ (Kokkos) and Fortran bridge implementations
- Produces multi-bin (3D) output; the third dimension is the size bin index
- Uses
Kokkos::pow,Kokkos::sqrt,Kokkos::log10,Kokkos::max, andKokkos::roundfor GPU portability - Particle radii can be provided via config or read from the
particle_radiusimport field - The
particle_radiusimport field is indexed as(0, 0, n)— it stores per-bin values in the third dimension - Physical constants: soil density = 2650 kg/m³, air density = 1.25 kg/m³ (hard-coded in kernel)