K14¶
Overview¶
Implements the Kok et al. (2014) dust emission scheme (K14). This is the most physically detailed dust scheme in CECE, incorporating Shao threshold friction velocity, Zender gravimetric soil moisture, Fécan moisture correction, configurable clay parameterization, MacKinnon drag partition, Laurent erodibility, IGBP vegetation masking, and the Kok (2012, 2014) vertical dust flux formulation.
References: - Kok, J.F., et al. (2012), An improved dust emission model, ACP, 12, 7413–7430. - Kok, J.F., et al. (2014), An improved dust emission model — Part 2, ACP, 14, 13023–13041. - MacKinnon, D.J., et al. (2004), A geomorphological approach, JGR, 109, F01013. - Laurent, B., et al. (2008), Modeling mineral dust emissions, ACP, 8, 395–409. - Fécan, F., et al. (1999), Annales Geophysicae, 17, 149–157.
Registration Names¶
- Native C++:
"k14" - Fortran bridge:
"k14_fortran"
Configuration Parameters¶
| YAML Key | Type | Default | Description |
|---|---|---|---|
ch_du |
double | 0.8e-9 | Global dust emission tuning constant |
f_w |
double | 1.0 | Soil moisture scaling factor |
f_c |
double | 1.0 | Clay fraction scaling factor |
uts_gamma |
double | 1.65e-4 | Shao inter-particle cohesion parameter [kg/s²] |
undef |
double | 1.0e15 | Undefined/sentinel value |
grav |
double | 9.81 | Gravitational acceleration [m/s²] |
von_karman |
double | 0.4 | Von Kármán constant |
opt_clay |
int | 0 | Clay parameterization option (0=Kok2014, 1=ItoKok2017-v1, 2=ItoKok2017-v2) |
num_bins |
int | 5 | Number of dust size bins |
Import Fields¶
| Field Name | Units | Description |
|---|---|---|
friction_velocity |
m/s | Surface friction velocity (u*) |
soil_temperature |
K | Soil temperature |
volumetric_soil_moisture |
fraction | Volumetric soil moisture |
air_density |
kg/m³ | Surface air density |
roughness_length |
m | Aeolian roughness length (z0) |
height |
m | Reference height for wind |
u_wind |
m/s | Zonal wind at reference height |
v_wind |
m/s | Meridional wind at reference height |
land_fraction |
fraction | Land fraction [0–1] |
snow_fraction |
fraction | Snow cover fraction [0–1] |
dust_source |
dimensionless | Dust source / preferential source map |
sand_fraction |
fraction | Fractional sand content [0–1] |
silt_fraction |
fraction | Fractional silt content [0–1] |
clay_fraction |
fraction | Fractional clay content [0–1] |
soil_texture |
index | Soil texture class (1–12) |
vegetation_type |
index | IGBP vegetation type |
vegetation_fraction |
fraction | Green vegetation fraction [0–1] |
Export Fields¶
| Field Name | Units | Description |
|---|---|---|
k14_dust_emissions |
kg/m²/s | Size-resolved dust emission flux (3D: nx × ny × nbins) |
Algorithm¶
The K14 kernel executes 13 steps per grid cell:
-
Skip check: Skip cells with no land fraction or invalid roughness (z0 ≥ 5e-4 m or z0 ≤ 0).
-
Shao threshold friction velocity: Compute smooth-surface threshold using particle properties:
u_ts = sqrt(a_n * ((ρ_p/ρ_air)*g*D_p + γ/(ρ_air*D_p)))where D_p = 75 μm, ρ_p = 2650 kg/m³. -
Gravimetric soil moisture (Zender): Convert volumetric to gravimetric moisture:
w_g = 100 * f_w * ρ_water / ρ_soil / (1 − v_sat) * w_top, wherev_sat = 0.489 − 0.126 * f_sand. -
Fécan moisture correction: Compute dry limit from clay content (
w_gt = 14*clay² + 17*clay), thenH_w = sqrt(1 + 1.21*(w_g − w_gt)^0.68)ifw_g > w_gt. -
Clay parameterization (
opt_clay): 0(default, Kok 2014):k_gamma = clay1(Ito & Kok 2017 v1): Piecewise — 0.05 if clay < 0.05, clay if 0.05–0.2, 0.2 if clay > 0.2-
2(Ito & Kok 2017 v2):k_gamma = 1/(1.4 − clay − silt)or1/(1 + clay − silt) -
Smooth roughness length: Look up z0s from soil texture class using a 12-element table of characteristic diameters divided by 30.
-
MacKinnon drag partition:
R = 1 − ln(z0/z0s) / ln(0.7*(122.55/z0s)^0.8), clamped to 1.0 for z0 ≤ z0s or z0 ≥ z0_max. -
Soil friction velocity:
u = R * u*. -
Soil threshold friction velocity:
u_t = u_ts * H_w. -
Laurent erodibility: Compute erodibility from roughness length:
f_erod = 0.7304 − 0.0804*log10(100*z0)for z0 in [3e-5, 5e-4], else 1.0. Texture 15 (ice) returns 0. -
IGBP vegetation mask: Allow emissions only from open shrublands (type 7) and barren (type 16), modulated by green vegetation fraction (GVF < 0.8).
-
Final erodibility:
f_erod = f_erod * f_veg * f_land * (1 − f_snow), further scaled bydust_sourceif available. -
Kok vertical dust flux: If
f_erod > 0andu > u_t:- Standardized threshold:
u_st = max(u_t * sqrt(ρ_air/ρ_a0), 0.16) - Dust coefficient:
C_d = 4.4e-5 * exp(−2*(u_st − 0.16)/0.16) - Flux:
C_d * f_erod * k_gamma * ρ_air * (u² − u_t²)/u_st * (u/u_t)^(2.7*(u_st−0.16)/0.16) - Scale by
ch_duand replicate across all bins.
- Standardized threshold:
YAML Configuration Example¶
physics:
- name: k14
config:
ch_du: 0.8e-9
f_w: 1.0
f_c: 1.0
opt_clay: 0
num_bins: 5
uts_gamma: 1.65e-4
Implementation Notes¶
- Available as both native C++ (Kokkos) and Fortran bridge implementations
- Requires 17 import fields — the most input-intensive scheme in CECE
- Produces multi-bin (3D) output; currently all bins receive the same flux value (no size-resolved distribution)
- Uses GPU-portable
Kokkos::math functions throughout the kernel - The
opt_clayparameter selects between three published clay parameterizations - Physical constants (a_n, D_p, ρ_p, ρ_water, ρ_soil, z0_max) are hard-coded as
constexprin the kernel - The smooth roughness lookup table contains 12 entries corresponding to USDA soil texture classes