1. Introduction

Spherefun is a part of Chebfun for computing with functions on the sphere. The underlying approximation scheme is based on representing function on the sphere by certain structure-preserving low rank approximants [1]. Mathematically, most functions are of infinite rank on the sphere with a notable exception being spherical harmonic functions. However, many functions are numerically of low rank. When a function is of low rank, Spherefun is surprisingly efficient.

2. Is atmospheric temperature of low rank?

Recently, we were asked: Is the atmospheric temperature of the earth of low rank? In this example, we apply Spherefun to one atmospheric dataset and find that it can be well approximated by a low rank function.

Here is a data set on a 529x1024 latitude-longitude grid containing the global atmospheric temperature (in Kelvin) of earth on 12-July-2005 obtained from the National Oceanic and Atmospheric Administration (NOAA) Earth System Research Laboratory:

load AtmosphericData

We can use Spherefun to construct an approximation of $f$ and visualize the dataset:

f = spherefun( Temp );
surf(f), colormap(jet), colorbar, axis off, view([50 0]), hold on
spherefun.plotEarth('k-'), hold off

The last line includes the landmasses of earth on the plot.

We can find out more about the underlying data set by looking at the rank:

f
f =
   spherefun object
       domain        rank    vertical scale
     unit sphere     185          3.1e+02

Spherefun calculated the rank of $f$ as 185. Since the dataset is of size 529x1024, we regard this as of low rank. For a precise defintion, see [2].

3. Investigating the atmospheric temperature

There are over a hundred commands in Spherefun and we can now investigate properties of atmospheric temperature over the earth. Before we begin, we convert the function to units of Celsius by subtracting 273.15.

f = f - 273.15;

What is the mean temperature of the earth?

mean2( f )
ans =
  16.367643667365925

What is the temperature at the North and South pole?

f( 0, 0, 1 ) % North pole
f( 0, 0, -1) % South pole
ans =
   0.624920062687727
ans =
 -44.513990845477139

This confirms that the atmospheric temperature data was taken during summer in the Northern hemisphere.

What is the temperature along the equator?

plot( f( :, pi/2 ) )   % In spherical coordinates.
xlabel('Longitude, \lambda'), ylabel('Temperature (Celsius)')

What do the isolines look line?

contour( f, -40:5:40, 'LineWidth', 2 ), axis off, view([50 5]), hold on
spherefun.plotEarth('k-'), hold off

What is the zonal mean temperatue?

zonalMean = mean(f,2);
plot(zonalMean), xlim([0 pi])
xlabel('Co-latitude, \theta'), ylabel('Temperature (Celsius)')

4. Poisson solver

We can also compute the steady heat profile with an external source of $f$, assuming there are no internal heat sinks or sources. This requires solving Poisson's equation on the sphere.

[n, m] = length( f );
steadyHeat = spherefun.Poisson( -(f - mean2(f)), 0, m, n );
plot( f ), colormap(jet), axis off, view([50 0]), hold on
spherefun.plotEarth('k-'), title('Original dataset'), snapnow, hold off

plot( steadyHeat ), colormap(jet), axis off, view([50 0]), hold on
spherefun.plotEarth('k-'), title('Steady Heat'), snapnow, hold off

5. Gaussian filter

It is common to smooth data by applying a Gaussian filter. Spherefun allows you to do this with the filter command, which is the continuous analogue of the MATLAB command with the same name. Here, is the result after applying a Gaussian filter:

g = smooth( f, 0.01 );
surf(f), colormap(jet), axis off, view([50 0]), hold on
spherefun.plotEarth('k-'), title('Original dataset'), snapnow, hold off
surf(g), colormap(jet), axis off, view([50 0]), hold on
spherefun.plotEarth('k-'), title('Filtered dataset'), snapnow, hold off

This type of filter has been demonstrated to be particularly attractive for smoothing global climate data [3].

References

[1] A. Townsend, H. Wilber, and G. B. Wright, Computing with functions in spherical and polar geometries I. The sphere, submitted, 2016.

[2] A. Townsend, Computing with functions in two dimensions, PhD Thesis, University of Oxford, 2014.

[3] K. Marvel, D. Ivanova, and K. E. Taylor, Scale space methods for climate model analysis, J. Geophys. Res. Atmospheres, 118, 5082-5097, 2013