Hi Ethan,
thanks for your comments!
It does say that a "coordinate variable is associated with its
definition by the value of the standard_name [and formula_terms]
attributes". Which means you need a coordinate variable (i.e., a 1-D
variable whose name matches its dimension name) for each vertical
dimension, in your case "levm(levm)" and "levi(levi)".
Got it. Which would then be the standard_name for levm / levi?
Best practice is to fill the vertical coordinate variables with
approximate pressure level values and provide separate 1-D variables for
the formula terms. This allows applications that don't understand
dimensionless vertical coordinates (or don't want to go through all the
calculations) to use the vertical coordinate variables as a "reasonable"
approximation of pressure levels.
Okay, I see. Again, which standard name should I give the variables?
CF1.4 only has air_pressure, but I would need something like
air_pressure_at_interfaces / air_pressure_at_midpoints.
2) It looks like you are using the a/b formula rather than the ap/b
formula which means you need a "p0" term in your formula_terms attribute.
No, actually, I am using the ap/b formula. Thanks for pointing out the
mistake.
3) None of the netCDF libraries automatically calculate the pressure
values from dimensionless coordinates. The netCDF C library does not
include features to deal with CF. The CF side of things is left to a
separate library, libcf. However, I don't believe libcf currently
include handling of dimensionless coordinates. The netCDF Java library
includes capabilities to deal with various parts of the CF specification
including dimensionless coordinates. I'm not sure what other libraries
deal with CF dimensionless coordinates.
Okay, I see. In the example I mentioned, there is the vertical dimension
variable indeed filled with approximate pressure levels, which made me
believe that it was actually nc calculating the data. Which was
obviously a stupid thought, because the dimensions wouldn't match ...
Thanks for clarifying this!
Cheers,
Andreas