`air_pressure` documentation

`air_pressure` computes pressure from the baromometric forumula for a US Standard Atmosphere.

See also `air_density`.

Back to Climate Data Tools Contents

## Contents

## Syntax

P = air_pressure(h)

## Description

`P = air_pressure(h)` returns the pressure `P` in pascals corresponding to the heights `h` in geometric meters above sea level.

## Example 1: Pressure profile

The US Standard Atmosphere formula is valid to 86 km above sea level, so let's look at air pressure from sea level to 85 km:

h = 0:85e3; p = air_pressure(h); figure plot(p/1000,h/1000) axis tight box off ylabel 'height above sea level (km)' xlabel 'pressure (kPa)'

The formula uses a piecewise function that calculates an equation based on different constants for different layers of the atmosphere. The bases of those layers are at 0, 11, 20, 32, 47, 51, and 71 km above sea level. For context, we can plot those layer bases as horizontal lines using `hline`:

LayerBases = [0 11 20 32 47 51 71]; hline(LayerBases,':','color',rgb('gray'))

Pro tip: For some applictions it may be helpful to display the x axis on a log scale. To do that, we could have plotted the data with `semilogx` instead of using the `plot` function above, or we can change the x scale to log like this:

set(gca,'xscale','log')

## Example 2: Comparison to reanalysis surface pressure

Consider this global gridded surface pressure data, and we'll just look at the means surface pressure from the year 2017:

lat = ncread('ERA_Interim_2017.nc','latitude'); lon = ncread('ERA_Interim_2017.nc','longitude'); t = ncread('ERA_Interim_2017.nc','time'); sp = ncread('ERA_Interim_2017.nc','sp'); % Calculate mean surface pressure: spm = mean(sp,3); % Plot the mean surface pressure: figure imagescn(lon,lat,spm'/1000) cb = colorbar; ylabel(cb,'surface pressure (kPa)') caxis([50 105])

The first thing you may notice in the figure above, is that surface pressure roughly corresponds to surface topography. Let's show that by overlaying topographic contours. Use `topo_interp` to get surface and seafloor topography, set underwater topography to zero, and overlay contours:

% Get a Lat,Lon grid from the lat,lon arrays: [Lat,Lon] = meshgrid(lat,lon); % Get the surface topography: z = topo_interp(Lat,Lon); % Set underwater values of topography to zero: z(z<0) = 0; hold on contour(Lon,Lat,z,'k');

Clearly there's a relationship between surface pressure and suface topography. Display the relationship as a scatterplot

figure scatter(spm(:)/1000,z(:),8,Lat(:),'filled') cb = colorbar; ylabel(cb,'latitude') cmocean delta xlabel 'surface pressure (kPa)' ylabel 'surface elevation (m)' axis tight

Neat scatterplot, but how does it compare to the theoretical elevation-only dependent air pressure from the US Standard Atmosphere?

p = air_pressure(z); hold on plot(p(:)/1000,z(:),'r.') legend('ERA-Interim','US Standard Atmosphere')

Want a quantitative measure of how well the theory copares to the reanalysis data? There are many ways to quantify that relationship, like correlation coefficients and p values. Another measure of mismatch is the the root-mean-square difference between the two:

```
rms([spm(:) - p(:)],'omitnan')/1000
```

ans = 1.8792

The rms difference is about 1.88 kPa.

## Author Info

This function is part of the Climate Data Toolbox for Matlab. The function and supporting documentation were written by Chad A. Greene of the University of Texas at Austin.