Index of /L2B_UNC/v3.0

[ICO]NameLast modifiedSizeDescription

[PARENTDIR]Parent Directory  -  
[   ]TUD-L2B-EWH_UNC-GRACEv3-DDK2-2002_2020-0.5x0.5.nc2026-02-10 16:55 2.6G 
[   ]TUD-L2B-EWH_UNC-GRACEv3-DDK3-2002_2020-0.5x0.5.nc2026-02-10 17:00 2.6G 
[   ]TUD-L2B-EWH_UNC-GRACEv3-DDK4-2002_2020-0.5x0.5.nc2026-02-10 17:06 2.6G 
[   ]TUD-L2B-EWH_UNC-GRACEv3-DDK5-2002_2020-0.5x0.5.nc2026-02-10 17:11 2.6G 
[   ]TUD-L2B-EWH_UNC-GRACEv3-DDK6-2002_2020-0.5x0.5.nc2026-02-10 17:17 2.6G 
[   ]TUD-L2B-EWH_UNC-GRACEv3-DDK7-2002_2020-0.5x0.5.nc2026-02-10 17:22 2.6G 
[DIR]CLIM_LEAKAGE/2026-02-18 17:08 -  
[DIR]CLIM/2026-02-18 17:10 -  
[TXT]README.html2026-02-19 15:43 25K 
[DIR]noSLR/2026-02-19 16:13 -  

TUD-L2B-EWH_UNC-GRACE v3 DDK{i} 0.5x0.5

TUD-L2B-EWH_UNC-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc

Product description

This dataset provides gridded Equivalent Water Height (EWH), which are equivalent to Terrestrial Water Storage Anomalies (TWSA) on land. These quantities have been derived from data collected by GRACE and GRACE-FO. The underlying Spherical Harmonic (SH) gravity field models were filtered using the DDK{i} (i=2,...,7) decorrelation filter (Kusche et al., 2009) on a 0.5° × 0.5° global grid. Each file contains monthly fields from 2002–2020, corresponding directly to the unconstrained SH gravity field models. All weighted mean and uncertainty components include gravity signal from degree 2 to 60. Weights are assigned to each GRACE solution based on the inverse square of its root-mean-square (RMS) error over the open ocean, normalized so that the sum of weights equals one. The RMS values are calculated relative to the COST-G RL02.1 monthly solutions (Meyer, U., et al. 2025), which serve as a benchmark. Coefficients \(C_{2,0}\) and \(C_{3,0}\) are replaced using TN-14v3 (https://doi.org/10.1029/2019GL085488). This dataset includes the geocenter motion (TN-13, degree-1) as a separate variable layer integrated directly into the data product, whereas prominent tidal components (S2, P1, S1, K1, and unmodelled R3) are provided in the ancillary TUD-L2B-CLIM dataset.

The novelty in this product is the consolidation of multiple official GRACE Level-2 spherical harmonic solutions and their uncertainty propagation into a single multi-component uncertainty budget, which includes:

  • the Global Isostatic Adjustment (GIA) trend (Bagge, M., et al. 2023),
  • the Atmosphere and Ocean De-aliasing Level-1B (AOD1B) product (based on AOe07) (Shihora, L., et al. 2024),
  • the solution disparity (includes effects of parametrisation and ocean tide models),
  • the filtering leakage (Dobslaw, H., et al. 2020), with finally
  • the degree-1 uncertainty (Swenson, S., D. Chambers, and J. Wahr 2008).
  • This layered GRACE(-FO) Level-2B data product allows the user to have a complete and transparent overview of all uncertainty components and directly apply those to their data assimilation strategies or other applications.

    File name format

    TUD-L2B-EWH_UNC-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc
    i = 2, 3, 4, 5, 6, or 7 (DDK filter level applied)
    Ancillary post-processing climatological and aliasing tidal fits:
    TUD-L2B-EWH_CLIM-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc
    i = 2, 3, 4, 5, 6, or 7 (DDK filter level applied)
    
    And for leakage:
    TUD-L2B-EWH_CLIM_LEAKAGE-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc
    i = 2, 3, 4, 5, 6, or 7 (DDK filter level applied)
    
    Lastly, the noSLR dataset (this only includes ewh_mean, ewh_unc_sols, and weights):
    TUD-L2B-EWH_UNC_noSLR-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc
    i = 2, 3, 4, 5, 6, or 7 (DDK filter level applied)
    

    Period

    04/2002 - 12/2020

    Dimensions

    (time, lat, lon)

    Variable Definitions

    1. ewh_mean – weighted mean of all processed GRACE solutions. Method: inverse-variance weighting using open-ocean RMS → gives higher weight to cleaner (less noisy) solutions.
    2. ewh_degree1 – ewh degree 1 component (\(C_{1,0}\), \(C_{1,1}\), \(S_{1,1}\)). Important for oceanic studies.
    3. ewh_unc_degree1 – ewh degree 1 uncertainty component propagated from (\({\rm STD}(C_{1,0})\), \({\rm STD}(C_{1,1})\), \({\rm STD}(S_{1,1})\)).
    4. ewh_unc_sols – solution disparity uncertainty. Standard deviation of the solutions after filtering & gridding. Represents effects of processing differences:
    5. ewh_unc_degree20 – ewh C_20 uncertainty component propagated from (\({\rm STD}(C_{2,0})\)).
    6. ewh_unc_degree30 – ewh C_30 uncertainty component propagated from (\({\rm STD}(C_{3,0})\)).
    7. ewh_unc_aod1b – AOD1B background model uncertainty. Computed as monthly RMS of 6-hourly AOD1B residuals (AOe07) (Shihora et al., 2024).
    8. ewh_mean_leakage – estimated mean leakage due to filtering. Calculated based on the methodology of Dobslaw et al. (2020). Provides an estimate of the signal lost or redistributed during filtering:
      i             DDK7   DDK6   DDK5   DDK4   DDK3   DDK2
                   Scale factor  4.4    4.5    4.0    4.5    3.9    2.9
      ewh_mean_leakage = scale factor × fractional leakage.
    9. ewh_unc_leakage – uncertainty of the leakage estimate. Scale factors (Dobslaw et al., 2020) for different DDK levels.
    10. ewh_gia_mean – ensemble mean of GIA trend [cm/year]. Mean of 56 GIA models (Bagge et al., 2023)
    11. ewh_gia_unc – uncertainty on the GIA trend [cm/year]. Standard deviation across the 56 GIA model ensemble.

    Units

    Total uncertainty

    ewh_unc_GRACE2(t) = ewh_unc_sols2(t) + ewh_unc_aod1b2(t) + ewh_unc_degree12(t) + ewh_unc_degree202(t) + ewh_unc_degree302(t)

    If the user wishes to correct for GIA, the effect on the monthly uncertainty can be computed as:

    ewh_unc_corrGIA(t) [cm] = ewh_gia_unc * abs(t-t0)
    t0 = reference epoch (e.g., 01/01/2008, GGM05C)

    Post-processing of GRACE(-FO)

    ewh_corr(t) = ewh_mean(t) - ewh_gia_mean*(t-t0) - ewh_AliasingTides(t),

    where t is in years, and one can compute ewh_AliasingTides(t) using the ancillary data product:

    TUD-L2B-EWH_CLIM-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc,

    which contains the cosine and sine coefficients \(C_k\) and \(S_k\) of the \(k^{th}\) tide. For further details, see Section "Additional Post-processing Features".

    Additional Post-processing Features

    To further facilitate the user, we provide a full climatological fit, which most importantly includes the aliasing tidal coefficients \(C_k\) and \(S_k\), provided in

    TUD-L2B-EWH_CLIM-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc,

    as
    ewh_clim(t) = A + B*(t-t0) + 0.5*C*(t-t0)^2 +
    	D*cos(2pi*(t-t0)) + E*sin(2pi*(t-t0)) +
    	F*cos(4pi*(t-t0)) + G*sin(4pi*(t-t0)) +
    	ewh_AliasingTides(t).

    where t0=2008.0, and

    ewh_AliasingTides(t) = Σk C_k*cos(omega_k*(t-t0)) + S_k*sin(omega_k*(t-t0)),

    with omega_k being the angular aliasing frequency \(2\pi f_k\) of the \(k^{th}\) tide.

    All coefficients are provided in units of equivalent water height (EWH) (variable name: ewh_mean_beta), with dimensions (coeff: 17, lat: 360, lon: 720). The coeff dimension corresponds to the following parameters:

    1. bias – constant offset (A) [cm]
    2. trend – linear trend (B) [cm/yr]
    3. acc – quadratic acceleration term (C) [cm/yr2]
    4. annual_cos – annual cosine term (D) [cm]
    5. annual_sin – annual sine term (E) [cm]
    6. semiannual_cos – semi-annual cosine term (F) [cm]
    7. semiannual_sin – semi-annual sine term (G) [cm]
    8. {tide_k}_cos – cosine tidal term (Ck) [cm]
    9. {tide_k}_sin – sine tidal term (Sk) [cm]

    Here, tide_k ∈ {S2, S1, P1, K1, R3}. For user convenience, the variable t_clim may be used, which denotes the centred time array, defined as t_clim = (t - t0) with t0 = 2008.0. This formulation is directly compatible with the provided coefficients.

    Please note that the coeff-dimension name convention is the same for the TUD-L2B-EWH_CLIM_LEAKAGE-GRACEv3-DDK{i}-2002_2020-0.5x0.5.nc ancillary data product (variable name: ewh_mean_leakage_beta).

    Example: Accessing the coefficients using xarray (Python)

    
    import numpy as np
    import xarray as xr
    import pandas as pd
    
    # function
    def fractional_year(time):
        """Convert datetime array to absolute fractional years."""
        t = pd.DatetimeIndex(time)
        year = t.year
        doy = t.dayofyear
        days_y = np.where(t.is_leap_year, 366, 365)
        return year + (doy - 1) / days_y
    
    # path to files
    path_ = "Path/to/your/files" # <== change your path here!
    
    # version string 
    version_str = "v3"
    # Open coefficient dataset (no time dimension)
    i_level = 4  # <== choose here your desired filtering strength
    ds_beta = xr.open_dataset(path_ + f"TUD-L2B-EWH_CLIM-GRACE{version_str}-DDK{i_level}-2002_2020-0.5x0.5.nc")
    varname_clim = "ewh_mean_beta"  # <- variable name for climatology
    
    # Open main EWH dataset to obtain time axis (and or correct later results)
    ds_ewh = xr.open_dataset(path_ + f"TUD-L2B-EWH_UNC-GRACE{version_str}-DDK{i_level}-2002_2020-0.5x0.5.nc")
    ewh_tot = ds_ewh["ewh_mean"]
    
    # Construct time array in decimal years
    time = ds_ewh.time
    t_years = fractional_year(time)
    print(t_years)
    
    # Time relative to reference epoch
    # Reference epoch (decimal years)
    tref = 2008.0
    dt = t_years - tref
    
    # Extract coefficients (lat, lon)
    beta = ds_beta[varname_clim]
    
    A = ds_beta[varname_clim].sel(coeff="bias")
    B = ds_beta[varname_clim].sel(coeff="trend")
    C = ds_beta[varname_clim].sel(coeff="acc")
    D = ds_beta[varname_clim].sel(coeff="annual_cos")
    E = ds_beta[varname_clim].sel(coeff="annual_sin")
    F = ds_beta[varname_clim].sel(coeff="semiannual_cos")
    G = ds_beta[varname_clim].sel(coeff="semiannual_sin")
    
    # Reconstruct climatological EWH (time, lat, lon)
    ones_ = xr.DataArray(
            np.ones_like(dt),
            dims=("time",),
            coords={"time": ds_ewh.time},
        )
    
    t_year_centered = xr.DataArray(
            dt,
            dims=("time",),
            coords={"time": ds_ewh.time},
        )
    
    # Expand bias explicitly to time dimension
    signal = beta.sel(coeff="bias").expand_dims(time=t_year_centered.time)
    
     # Polynomial terms
    # if "bias" in beta.coeff:
    #     signal = signal + beta.sel(coeff="bias")*ones_
    
    if "trend" in beta.coeff:
        signal = signal + beta.sel(coeff="trend") * t_year_centered
    
    if "acc" in beta.coeff:
        signal = signal + 0.5 * beta.sel(coeff="acc") * (t_year_centered ** 2)
    
    # Annual & semiannual
    omega_ann = 2 * np.pi
    omega_semi = 2 * np.pi * 2
    
    if "annual_cos" in beta.coeff:
        signal = signal + beta.sel(coeff="annual_cos") * np.cos(omega_ann * t_year_centered)
        signal = signal + beta.sel(coeff="annual_sin") * np.sin(omega_ann * t_year_centered)
    if "semiannual_cos" in beta.coeff:
        signal = signal + beta.sel(coeff="semiannual_cos") * np.cos(omega_semi * t_year_centered)
        signal = signal + beta.sel(coeff="semiannual_sin") * np.sin(omega_semi * t_year_centered)
    
    # Optional: remove selected tidal aliasing terms
    remove_tides = ["S2", "S1", "P1", "R3",  "K1"]
    tides_aliasing_periods = [160.6, 319.1, 170.8, 150.6, 2630]
    
    remove_tides = ["S2", "P1"]
    tides_aliasing_periods = [160.6, 170.8]
    
    
    # initialise
    ewh_aliasing = 0.0
    
    for tide, tide_period in zip(remove_tides, tides_aliasing_periods):
    
        # Retrieve coefficients [cm]
        Ck_cos = beta.sel(coeff=f"{tide}_cos")
        Sk_sin = beta.sel(coeff=f"{tide}_sin")
    
        # Convert period to years
        T_k = tide_period / 365.25
        omega_k = 2 * np.pi / T_k
    
        # Reconstruct tidal aliasing contribution
        ewh_tide_k = (
            Ck_cos * np.cos(omega_k * t_year_centered)
            + Sk_sin * np.sin(omega_k * t_year_centered)
        )
    
        ewh_aliasing += ewh_tide_k
    
    # corrected signal from tidal components
    ewh_corr = ewh_tot - ewh_aliasing
    
    
    

    Version

    Update: February 2026

    Version: v3

    Contact

    Lead developer: Michal Cuadrat-Grzybowski
    Email: M.Cuadrat-Grzybowski-1@tudelft.nl

    Citation Instructions

    If you use this dataset, please cite:

    Cuadrat-Grzybowski, M., and De Teixeira da Encarnação, J. (2026).
    TUD-L2B-EWH_UNC-GRACEv3: Global 0.5°x0.5° monthly equivalent water height user-friendly dataset with comprehensive uncertainty decomposition (solution disparity, AOD1B uncertainty, DDK leakage error, low-degree coefficient treatment, and GIA ensemble error)
    4TU.ResearchData.
    DOI: http://doi.org/10.4121/4fc748e8-01c7-4f06-87da-653937b078f7

    References