The question

NOAA helpfully provides model outputs from the Global Data Assimilation System (GDAS) for the past 10 days (https://nomads.ncep.noaa.gov/pub/data/nccf/com/gfs/prod/). Products include netCDF files with 3D profiles (e.g., gdas.t00z.atmf000.nc) and GRB files with 696 2D fields (e.g., gdas.t00z.pgrb2.0p25.f000) with fields described here: https://www.nco.ncep.noaa.gov/pmb/products/gfs/gdas.t00z.pgrb2.0p25.f000.shtml. The netCDF files are at about 2 mrad (0.117°) and the GRB files are 0.25° (about 4.36 mrad).

The GRB files contain a "CWAT" field or total column Cloud Water [kg m-2], which is what I am trying to reproduce from the netCDF cloud water profiles [kg kg-1]. I'm interested in the finer resolution and separating out Cloud Ice as well. How do I go about converting kg kg-1 to kg m-2 for cloud water, matching what NOAA is doing?

What I've tried

This question is similar to How to convert the units of specific cloud liquid water from ERA5 (kg/kg) to kg/m2? but I can't quite get my results to match the GRB files.

Some of the fields in the netCDF files include profiles (127 layers) of cloud water qCL [kg kg-1], difference in geopotential altitude Δz [m], difference in pressure Δp [Pa], cloud ice qCI [kg kg-1], specific humidity q [kg kg-1], and temperature (K) as well as profiles of things like wind, ozone, rain, snow, and graupel. Arrays that are 2D include lat, lon, surface pressure, and surface geopotential altitude.

I obtain pressure p with a cumulative sum of Δp from the top of the atmosphere. TCCW is total column cloud water.

Mdry air = 28.9644 g mol-1

Mwater = 18.01528 g mol-1

ε = Mwater / Mdry air = 0.62198

εrto = (1 - ε) / ε = 0.60777

R = 8.3144598 J mol-1 K-1

Rdry = R/Mdry air = 0.28706 J g-1 K-1

ρ = p/(T Rdry (1 + εrto q) ) × 10-3 kg m-3

TCCW = Σ ρ(qCL + qCI)Δz kg m-2

I perform 2D interpolation to match the coarser grid. My inner 95 percentile results are up to a factor of 2 off on the low end and up to about 30% off on the high end.

Parts I'm unsure on, may not matter or may point to user error

  • I'm assuming the denominator in cloud water is for moist air. Though it could also be dry air, or total air (including gas phase and condensed phases - the latter doesn't seem to make much difference). I've tried all of these.
  • I think the GRB "CWAT" field is for liquid and ice in clouds because that matches better.
  • Summing up the Δp profiles does not equal the surface pressure. Differences are both positive and negative.
  • Summing up the Δz profiles leads to a maximum of about 10 km, but I would have expected closer to 40 km assuming a minimum pressure around 0.01 Pa.

Of course a coding bug is always a possibility too.

Other places I've looked

Lots of NOAA webpages. I also tried looking through the help pages associated with the United Forecast System (UFS) model. I saw there is a github (https://github.com/ufs-community/ufs-weather-model) and help pages, but it seems more geared towards data producers rather than users.



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.