A climatology class that allows users to define their own height profiles of scalar parameters. The climatology class can hold an unlimited number of different profiles, each indexed by a unique CLIMATOLOGY_HANDLE. Different scalar parameters can be on different grids within the same class instance.
Each profile consists of a height-grid definition and the values on that grid. The height grid can either be re-used or changed for subsequent families of values. The algorithm uses spline or piecewise linear interpolation of the values on the height grid.
The height-grid is specified as an array of heights above sea-level in ascending order expressed in meters. Note that radiative transfer models will normally require the grid to cover the entire range of the atmosphere from 0.0 meters to the top of the atmosphere, typically 100,000 meters. The height grid is set by calling SetProperty( “Heights”, h ).
The user can request that logarithmic or linear interpolation be used by calling SetProperty( “DoLogInterpolation”, xx ). This value is in effect for all the grids stored in the object. The default value is linear.
The user can specify the value returned for heights above or below the heights grid by calling SetPropertyArray( “BadValue”, xx ). This value is in effect for all subsequent grids until it is changed. The default value is NaN.
Values are set on the current grid by calling SetPropertyUserDefined. The current grid settings are copied and combined with the value array and a new entry made for this grid array. If a grid for this species already exists it is replaced.
A Matlab example is shown below. Note that the class ignores latitude, longitude and mjd values and only uses the height value passed in by the user to function GetParameter:
Climate = ISKClimatology(‘USERDEFINED_PROFILE’) h = (0:100)*1000.0; v = h.*h + 1.0; climate.SetProperty(“DoLogInterpolation”, 1); climate.SetProperty( “Heights”, h ); climate.SetPropertyUserDefined('SKCLIMATOLOGY_O3_CM3', v); [ok, value] = climate.GetParameter( 'SKCLIMATOLOGY_O3_CM3', [50,102, 35000.0, 53000]);
(int n) [Default: 0]¶
Instructs the object to perform logarithmic or linear interpolation of the scalar profile on the height-grid. Logarithmic interpolation is implemented as linear interpolation of the logarithm of the scalar profile followed by an exponentiation.
n Setting 0 Scalar profiles are interpolated linearly in altitude. 1 Scalar profiles are interpolated using logarithmic interpolation.
Instructs the object how to interpolate between values on the height grid
n Setting 0 Fit a bezier spline to the height-grid points 1 Perform piecewise linear interpolation between points.
Sets the height grid that will be used in subsequent calls to
SetPropertyUserDefined(). The heights must be in ascending order and specify the height of the grid point above sea level in meters. The default is an empty array.
Sets the value to be returned for heights outside the range of the height grid. The default is NaN.