13.07.2015 Views

CDO Climate Data Operators - Fedora Project Packages GIT ...

CDO Climate Data Operators - Fedora Project Packages GIT ...

CDO Climate Data Operators - Fedora Project Packages GIT ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>CDO</strong> User’s Guide<strong>Climate</strong> <strong>Data</strong> <strong>Operators</strong>Version 1.0.1August 2006Uwe SchulzweidaMax-Planck-Institute for Meteorology


Contents1. Introduction 51.1. Building from sources . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51.1.1. Compilation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.1.2. Installation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2. Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61.2.1. Options . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.2. <strong>Operators</strong> . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.3. Combining operators . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71.2.4. Operator parameter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3. Grid description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.1. Predefined grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81.3.2. Grids from data files . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.3. SCRIP grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.4. PINGO grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3.5. <strong>CDO</strong> grids . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 101.4. Time axis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.1. Absolute time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.2. Relative time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.4.3. Conversion of the time . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 111.5. Parameter table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.6. Missing values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 121.6.1. Mean and average . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 132. Reference manual 142.1. Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152.1.1. INFO - Information and simple statistics . . . . . . . . . . . . . . . . . . . . . . . . 162.1.2. SINFO - Short information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 172.1.3. DIFF - Compare two datasets field by field . . . . . . . . . . . . . . . . . . . . . . . 182.1.4. NINFO - Print the number of variables, levels or times . . . . . . . . . . . . . . . . . 192.1.5. SHOWINFO - Show variables, levels or times . . . . . . . . . . . . . . . . . . . . . . 202.1.6. FILEDES - <strong>Data</strong>set description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212.2. File operations . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 222.2.1. COPY - Copy datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2.2. REPLACE - Replace variables . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 232.2.3. MERGE - Merge datasets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 242.2.4. SPLIT - Split a dataset . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 252.2.5. SPLITTIME - Split time steps of a dataset . . . . . . . . . . . . . . . . . . . . . . . 262.3. Selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 272.3.1. SELECT - Select fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 282.3.2. SELTIME - Select time steps . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 302.3.3. SELBOX - Select a box of a field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 312.4. Conditional selection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 322.4.1. COND - Conditional select one field . . . . . . . . . . . . . . . . . . . . . . . . . . . 332.4.2. COND2 - Conditional select two fields . . . . . . . . . . . . . . . . . . . . . . . . . . 332.4.3. CONDC - Conditional select a constant . . . . . . . . . . . . . . . . . . . . . . . . . 342.5. Comparison . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 352.5.1. COMP - Comparison of two fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . 362


ContentsContents2.13.3. VARDUP - Variable duplication . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 942.13.4. GRADSDES - GrADS data descriptor file . . . . . . . . . . . . . . . . . . . . . . . . 952.13.5. ROTUV - Rotation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 962.13.6. MASTRFU - Mass stream function . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96A. Hints for PINGO user 98B. Grid description examples 99B.1. Example of a curvilinear grid description . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 99B.2. Example description for unstructured grid cells . . . . . . . . . . . . . . . . . . . . . . . . . 100Operator index 1014


1. IntroductionThe <strong>Climate</strong> <strong>Data</strong> <strong>Operators</strong> (<strong>CDO</strong>) software is a collection of many operators for standard processing ofclimate and forecast model output. The operators include simple statistical and arithmetic functions, dataselection and subsampling tools, and spatial interpolation. <strong>CDO</strong> was developed to have the same set ofprocessing functions for GRIB and netCDF datasets in one package.The <strong>Climate</strong> <strong>Data</strong> Interface (CDI) is used for the fast and file format independent access to GRIB andnetCDF datasets. The local data formats SERVICE, EXTRA and IEG are also supported.There are some limitations for GRIB and netCDF datasets. A GRIB dataset must be consistent, similar tonetCDF. That means all time steps must have the same variables, and within a time step each variable mayoccur only once. NetCDF datasets are supported only with 2-dimensional, 3-dimensional and 4-dimensionalvariables and the attributes should follow the GDT, COARDS or CF Conventions.The user interface and some operators are similar to the PINGO package. There are also some operatorswith the same name as in PINGO but with a different meaning. Appendix A gives an overview of thoseoperators.The main <strong>CDO</strong> features are:• More than 250 operators available• Modular design and easily extendable with new operators• Very simple UNIX command line interface• A dataset can be processed by several operators, without storing the interim results in files• All operators handle datasets with missing values• Fast processing of large datasets• Support of many different grid types• Tested on many UNIX/Linux systems, Cygwin, and MacOS-X1.1. Building from sourcesThis section describes how to build <strong>CDO</strong> from the sources on a UNIX system. <strong>CDO</strong> uses the GNU configureand build system to compile the source code. The only requirement is a working ANSI C compiler.First go to the download page (http://www.mpimet.mpg.de/cdo) to get the latest distribution, if you donot already have it.To take full advantage of <strong>CDO</strong> features the following additional library should be installed.• Unidata netCDF library (http://www.unidata.ucar.edu/packages/netcdf/index.html) version3 or higher. This is needed to read/write netCDF files with <strong>CDO</strong>.5


UsageIntroduction1.1.1. CompilationCompilation is now done by performing the following steps:1. Unpack the archive, if you haven’t already done that:gunzip cdo-$VERSION.tar.gztar xf cdo-$VERSION.tarcd cdo-$VERSION# uncompress the archive# unpack it2. Run the configure script:./configureOr with netCDF support:./configure --with-netcdf=For an overview of other configuration options use./configure --help3. Compile the program by running make:makeThe program should compile without problems and the binary (cdo) should be available in the src directoryof the distribution.1.1.2. InstallationAfter the compilation of the source code do a make install, possibly as root if the destination permissionsrequire that.make installThe binary is installed into the directory /bin. defaults to /usr/local but can bechanged with the --prefix option of the configure script.Alternatively, you can also copy the binary from the src directory manually to some bin directory in yoursearch path.1.2. UsageThis section descibes how to use <strong>CDO</strong>. The syntax is:cdo [Options] [<strong>Operators</strong>]6


IntroductionUsage1.2.1. OptionsAll options must be pleaced before the first operator. The following options are available for all operators:-a Convert from a relative to an absolute time axis.-b Set the number of bits for the output precision. The valid precisions dependson the file format:grb 1 - 32nc, nc2, srv, ext, ieg 32/64For srv, ext and ieg format a L or B can be added to set the byteorderto Little or Big endian.-f Set the output file format. The valid file formats are:File formatGRIB version 1netCDFnetCDF version 2SERVICEEXTRAIEGgrbncnc2srvextieg-g Define the default grid description by name or from file.Available grid names are: tgrid, rx, gme-h Help information for the operators.-m Set the default missing value (default: -9e+33).-R Convert GRIB data from reduced to regular grid.-r Convert from an absolute to a relative time axis.-t Set the default parameter table name or file.Predefined tables are: echam4 echam5 mpiom1-V Print the version number.-v Print extra details for some operators.1.2.2. <strong>Operators</strong>There are more than 250 operators available. A detailed description of all operators can be found in theReference Manual section.1.2.3. Combining operatorsAll operators with one output stream can pipe the result directly to an other operator. The operator mustbegin with ”-”, in order to combine it with others. This can improve the performance by:Use• reducing unnecessary disk I/O• parallel processingcdo sub -dayavg ifile2 -timavg ifile1 ofileinstead ofcdo timavg ifile1 tmp1cdo dayavg ifile2 tmp2cdo sub tmp2 tmp1 ofilerm tmp1 tmp27


Grid descriptionIntroduction1.2.4. Operator parameterSome operators need one or more parameter.• STRINGUnquoted characters without blanks and tabs.names pressure and tsurf:The following command select variables with the• FLOATcdo selvar,pressure,tsurf ifile ofileFloating point number in any representation. The following command sets the range between 0 and273.15 of all fields to missing value:cdo setrtomiss,0,273.15 ifile ofile• INTEGERA list of integers can be specified by first/last[/inc]. To select the days 5, 6, 7, 8 and 9 use:cdo selday,5/9 ifile ofileThis is the same as:cdo selday,5,6,7,8,9 ifile ofile1.3. Grid descriptionIn the following situations it is necessary to give a description of a horizontal grid:• Changing the grid description (operator: setgrid)• Horizontal interpolation (operator: interpolate, remapXXX and genXXX)• Generating variables (operator: const, random)As now described, there are several possibilities to define a horizontal grid. Predefined grids are availablefor global regular, gaussian or icosahedral-hexagonal GME grids.1.3.1. Predefined gridsThe following pre-defined grid names are available: rx, tgrid and gmeGlobal regular grid: rxrx defines a global regular grid. The number of the longitutes and the latitudes canbe selected at will. The longitudes starts at 0 ◦ with an increment of (360/) ◦ . The latitudes go fromsouth to north with an increment of (180/) ◦ .Global gaussian grid: tgridtgrid defines a global gaussian grid. Each valid triangular resolution can be used for . Thelongitudes starts at 0 ◦ with an increment of (360/nlon) ◦ . The gaussian latitudes go from north to south.8


IntroductionGrid descriptionGlobal icosahedral-hexagonal GME grid: gmegme defines a global icosahedral-hexagonal GME grid. NI is the number of intervals on a main triangleside.1.3.2. Grids from data filesYou can use the grid description from an other datafile. The format of the datafile and the grid of thedata field must be supported by this program. Use the operator ’sinfo’ to get short informations aboutyour variables and the grids. If there are more then one grid in the datafile the grid description of the firstvariable will be used.1.3.3. SCRIP gridsSCRIP is a Spherical Coordinate Remapping and Interpolation Package. It is using a common grid descriptionin netCDF. You can use it to describe curvilinear grids or unstructured grid cells. For moreinformation about this format see [SCRIP]. This grid description format is only available if the programwas compiled with netCDF support.SCRIP grid description example of a curvilinear MPIOM1 GROB3 grid (only the netCDF header):n e t c d f grob3s {dimensions :g r i d s i z e = 12120 ;g r i d x s i z e = 120 ;g r i d y s i z e = 101 ;g r i d c o r n e r s = 4 ;g r i d r a n k = 2 ;v a r i a b l e s :i n t g r i d d i m s ( g r i d r a n k ) ;f l o a t g r i d c e n t e r l a t ( g r i d y s i z e , g r i d x s i z e ) ;g r i d c e n t e r l a t : u n i t s = ” d e g r e e s ” ;g r i d c e n t e r l a t : bounds = ” g r i d c o r n e r l a t ” ;f l o a t g r i d c e n t e r l o n ( g r i d y s i z e , g r i d x s i z e ) ;g r i d c e n t e r l o n : u n i t s = ” d e g r e e s ” ;g r i d c e n t e r l o n : bounds = ” g r i d c o r n e r l o n ” ;i n t g r i d i m a s k ( g r i d y s i z e , g r i d x s i z e ) ;g r i d i m a s k : u n i t s = ” u n i t l e s s ” ;g r i d i m a s k : c o o r d i n a t e s = ” g r i d c e n t e r l o n g r i d c e n t e r l a t ” ;f l o a t g r i d c o r n e r l a t ( g r i d y s i z e , g r i d x s i z e , g r i d c o r n e r s ) ;g r i d c o r n e r l a t : u n i t s = ” d e g r e e s ” ;f l o a t g r i d c o r n e r l o n ( g r i d y s i z e , g r i d x s i z e , g r i d c o r n e r s ) ;g r i d c o r n e r l o n : u n i t s = ” d e g r e e s ” ;// g l o b a l a t t r i b u t e s :: t i t l e = ” grob3s ” ;}1.3.4. PINGO gridsPINGO uses a very simple grid description in ASCII format to describe regular longitude/latitude or globalgaussian grids. All PINGO grid description files are supported by <strong>CDO</strong>. For more information about thisformat see [PINGO].PINGO grid description example of a T21 gaussian grid:Grid D e s c r i p t i o n F i l e( Comments s t a r t at non d i g i t c h a r a c t e r s and end at end o f l i n e )F i r s t part : The dimensions .64 32 = Number o f l o n g i t u d e s and l a t i t u d e sSecond part : The l i s t e d l o n g i t u d e s .2 means e q u i d i s t a n t l o n g i t u d e s9


Grid descriptionIntroduction0.000000 5.625000 = Most western and second most western l o n g i t u d eThird part : The l i s t e d l a t i t u d e s .32 means a l l 32 l a t i t u d e s are given i n the f o l l o w i n g l i s t :8 5 . 7 6 1 8 0 . 2 6 9 7 4 . 7 4 5 6 9 . 2 1 3 63.679 58.143 52.607 47.0704 1 . 5 3 2 3 5 . 9 9 5 3 0 . 4 5 8 2 4 . 9 2 0 19.382 13.844 8 . 3 0 7 2 . 7 6 9−2.769 −8.307 −13.844 −19.382 −24.920 −30.458 −35.995 −41.532−47.070 −52.607 −58.143 −63.679 −69.213 −74.745 −80.269 −85.7611.3.5. <strong>CDO</strong> gridsAll supported grids can be also described with the <strong>CDO</strong> description ASCII formatted file. The followingkeywords can be used to describe a grid:gridtype STRING type of the grid (gaussian, lonlat, curvilinear, cell)gridsize INTEGER size of the gridxsize INTEGER size in x direction (number of longitudes)ysize INTEGER size in y direction (number of latitudes)xvals FLOAT ARRAY x values of the gridyvals FLOAT ARRAY y values of the gridxnpole FLOAT x value of the north pole (rotated grid)ynpole FLOAT y value of the north pole (rotated grid)nvertex INTEGER number of the vertices for all grid cellsxbounds FLOAT ARRAY x bounds of each gridboxybounds FLOAT ARRAY y bounds of each gridboxxfirst, xinc FLOAT, FLOAT macros to define xvals with a constant incrementyfirst, yinc FLOAT, FLOAT macros to define yvals with a constant incrementWhich keywords are necessary depends on the gridtype.default values or the array size for the different grid types.The following table gives an overview of thegridtype lonlat gaussian curvilinear cellgridsize xsize*ysize xsize*ysize xsize*ysize ncellxsize nlon nlon nlon gridsizeysize nlat nlat nlat gridsizexvals xsize xsize gridsize gridsizeyvals ysize ysize gridsize gridsizexnpole 0ynpole 90nvertex 2 2 4 nvxbounds 2*xsize 2*xsize 4*gridsize nv*gridsizeybounds 2*ysize 2*ysize 4*gridsize nv*gridsizeThe keywords nvertex, xbounds and ybounds are optional if the area weights are not needed.<strong>CDO</strong> grid description example of a T21 gaussian grid:g r i d t y p e = g a u s s i a nx s i z e = 64y s i z e = 32x f i r s t = 0x i n c = 5 . 6 2 5y v a l s = 8 5 . 7 6 8 0 . 2 7 7 4 . 7 5 6 9 . 2 1 6 3 . 6 8 5 8 . 1 4 5 2 . 6 1 4 7 . 0 74 1 . 5 3 3 6 . 0 0 3 0 . 4 6 2 4 . 9 2 1 9 . 3 8 1 3 . 8 4 8 . 3 1 2 . 7 7−2.77 −8.31 −13.84 −19.38 −24.92 −30.46 −36.00 −41.53−47.07 −52.61 −58.14 −63.68 −69.21 −74.75 −80.27 −85.7610


IntroductionTime axis<strong>CDO</strong> grid description example of a global regular grid with 60x30 points:g r i d t y p e = l o n l a tx s i z e = 60y s i z e = 30x f i r s t = −177x i n c = 6y f i r s t = −87y i n c = 6For a lon/lat grid with an rotated pole, the north pole must be defined. As far as you define the keywordsxnpole/ynpole all coordinate values are for the rotated system.<strong>CDO</strong> grid description example of a regional rotated lon/lat grid:g r i d t y p e = l o n l a tx s i z e = 81y s i z e = 91x f i r s t = −19.5x i n c = 0 . 5y f i r s t = −25.0y i n c = 0 . 5xnpole = −170ynpole = 3 2 . 5Example <strong>CDO</strong> descriptions of a curvilinear and an unstructured grid can be found in Appendix B.1.4. Time axisA time axis describes the time for every timestep. Two time types are available: absolute time and relativetime. <strong>CDO</strong> tries to maintain the actual type of the time axis for all operators. The operators for timerange statistic (e.g.: monavg, ymonavg, ...) create an absolute time axis.1.4.1. Absolute timeAn absolute time axis has the current time to each time step. It can be used without knowledge of thecalendar. This is preferably used by climate models. In netCDF files the relative time axis is representedby the unit of the time: ”day as %Y%m%d.%f”.1.4.2. Relative timeA relative time is the time relative to a fixed reference time. The current time results from the referencetime and the elapsed interval. The result depends on the calendar used. <strong>CDO</strong> supports the standardGregorian, 360 days, 365 days and 366 days calendars. The relative time axis is preferably used by weatherforecast models. In netCDF files the relative time axis is represented by the unit of the time: ”time-unitssince reference-time”, e.g ”days since 1989-6-15 12:00”.1.4.3. Conversion of the timeSome programs which work with netCDF data can only process relative time axes. Therefore it may benecessary to convert from an absolute into a relative time axis. This conversion can be done for eachoperator with the <strong>CDO</strong> option ’-r’. To convert a relative into an absolute time axis use the <strong>CDO</strong> option’-a’.11


Parameter tableIntroduction1.5. Parameter tableA parameter table is an ASCII formated file to convert code numbers to variable names. Each variable hasone line with the code number, the name and the description with optional units in a blank separated list.It can be used only for GRIB, SERVICE, EXTRA and IEG formated files. The <strong>CDO</strong> option ’-t ’sets the default parameter table for all input files. Use the operator ’setpartab’ to set the parameter tablefor a specific file.Example of a <strong>CDO</strong> parameter table:134 aps s u r f a c e p r e s s u r e [ Pa ]141 sn snow depth [m]147 a h f l l a t e n t heat f l u x [W/m∗ ∗ 2 ]172 slm land sea mask175 albedo s u r f a c e albedo211 s i c e d i c e depth [m]1.6. Missing valuesAll operators can handle missing values. The default missing value for GRIB, SERVICE, EXTRA andIEG files is −9e + 33. The <strong>CDO</strong> option ’-m ’ overwrites the default missing value. In netCDFfiles the variable attribute ’ FillValue’ is used as a missing value. The operator ’setmissval’ can be used toset a new missing value.The <strong>CDO</strong> use of the missing value is shown in the following tables, where one table is printed for eachoperation. The operations are applied to arbitrary numbers a, b, the special case 0, and the missingvalue miss. For example the table named ”addition” shows that the sum of an arbitrary number a andthe missing value is the missing value, and the table named ”multiplication” shows that 0 multiplied bymissing value results in 0.addition b missa a + b missmiss miss misssubtraction b missa a − b missmiss miss missmultiplication b 0 missa a ∗ b 0 miss0 0 0 0miss miss 0 missdivision b 0 missa a/b miss miss0 0 miss missmiss miss miss missmaximum b missa max(a, b) amiss b missminimum b missa min(a, b) amiss b missThe handling of missing values by the operations ”minimum” and ”maximum” may be surprising, but the12


IntroductionMissing valuesdefinition given here is more consistent with that expected in practice. Mathematical functions (e.g. log,sqrt, etc.) return the missing value if an argument is the missing value or an argument is out of range.All statistical functions ignore missing values, treading them as not belonging to the sample, with theside-effect of a reduced sample size.1.6.1. Mean and averageAn artificial distinction is made between the notions mean and average. The mean is regarded as astatistical function, whereas the average is found simply by adding the sample members and dividing theresult by the sample size. For example, the mean of 1, 2, miss and 3 is (1 + 2 + 3)/3 = 2, whereas theaverage is (1 + 2 + miss + 3)/4 = miss/4 = miss. If there are no missing values in the sample, the averageand mean are identical.13


2. Reference manualThis section gives a description of all operators. Similar operators are grouped to modules. For easierdescription all single input files are named ifile or ifile1, ifile2, etc., and an unlimited number ofinput files are named ifiles. All output files are named ofile or ofile1, ofile2, etc. Further thefollowing notion is introduced:i(t)i(t, x)o(t)o(t, x)Timestep t of ifileElement number x of the field at timestep t of ifileTimestep t of ofileElement number x of the field at timestep t of ofile14


Reference manualInformation2.1. InformationThis section contains modules to print information about datasets. All operators print there results tostandard output.Here is a short overview of all operators in this section:infoinfovmapsinfosinfovdiffdiffvncodenvarnlevelnyearnmonndatentimeshowcodeshowvarshowstdnameshowlevelshowyearshowmonshowdateshowtimevardesgriddesvct<strong>Data</strong>set information listed by code number<strong>Data</strong>set information listed by variable name<strong>Data</strong>set information and simple mapShort dataset information listed by code numberShort dataset information listed by variable nameCompare two datasets listed by code numberCompare two datasets listed by variable nameNumber of codesNumber of variablesNumber of levelsNumber of yearsNumber of monthsNumber of datesNumber of time stepsShow codesShow variable namesShow standard namesShow levelsShow yearsShow monthsShow datesShow time stepsVariable descriptionGrid descriptionVertical coordinate table15


InformationReference manual2.1.1. INFO - Information and simple statisticsSynopsis ifilesDescriptionThis module writes information about the structure and contents of all input datasets to standardoutput. The information displayed depends on the actual operator.<strong>Operators</strong>info<strong>Data</strong>set information listed by code numberPrints information and simple statistics for each field of all input datasets. For each fieldthe operator prints one line with the following elements:• Date and Time• Code number and Level• Size of the grid and number of Missing values• Minimum, Mean and MaximumThe mean value is computed without the use of area weights!infovmap<strong>Data</strong>set information listed by variable nameThe same as operator info but using the name instead of the code number to identify thevariables.<strong>Data</strong>set information and simple mapPrints information, simple statistics and a map for each field of all input datasets. Themap will be printed only for fields on a rectangular grid.ExampleTo print information and simple statistics for each field of a dataset use:cdo i n f o i f i l eThis is an example result of a dataset with one 2D variable over 12 time steps:−1 : Date Time Code Level S i z e Miss : Minimum Mean Maximum1 : 1987−01−31 12:00 139 0 2048 1361 : 232.77 266.65 305.312 : 1987−02−28 12:00 139 0 2048 1361 : 233.64 267.11 307.153 : 1987−03−31 12:00 139 0 2048 1361 : 225.31 267.52 307.674 : 1987−04−30 12:00 139 0 2048 1361 : 215.68 268.65 310.475 : 1987−05−31 12:00 139 0 2048 1361 : 215.78 271.53 312.496 : 1987−06−30 12:00 139 0 2048 1361 : 212.89 272.80 314.187 : 1987−07−31 12:00 139 0 2048 1361 : 209.52 274.29 316.348 : 1987−08−31 12:00 139 0 2048 1361 : 210.48 274.41 315.839 : 1987−09−30 12:00 139 0 2048 1361 : 210.48 272.37 312.8610 : 1987−10−31 12:00 139 0 2048 1361 : 219.46 270.53 309.5111 : 1987−11−30 12:00 139 0 2048 1361 : 230.98 269.85 308.6112 : 1987−12−31 12:00 139 0 2048 1361 : 241.25 269.94 309.2716


Reference manualInformation2.1.2. SINFO - Short informationSynopsis ifileDescriptionThis module writes information about the structure of all input datasets to standard output. Theinformation displayed depends on the actual operator.<strong>Operators</strong>sinfoShort dataset information listed by code numberPrints short information of a dataset. The information is divided into 4 sections. Section1 prints one line per variable with the following information:• institute and source• parameter table and code number• horizontal grid size and number• number of vertical levels and zaxis numbersinfovSection 2 and 3 gives a short overview of all horizontal and vertical grids. And the lastsection contains short information of the time axis.Short dataset information listed by variable nameThe same as operator sinfo but using the name instead of the code number and parametertable to identify the variables.ExampleTo print short information of a dataset use:cdo s i n f o i f i l eThis is the result of an ECHAM5 dataset with 3 variables and 12 time steps:−1 : I n s t i t u t Source Table Code Time Typ Grid S i z e Num L e v e l s Num1 : MPIMET ECHAM5. 3 128 129 constant R4 2048 1 1 12 : MPIMET ECHAM5. 3 128 130 v a r i a b l e R4 2048 1 4 23 : MPIMET ECHAM5. 3 128 139 v a r i a b l e R4 2048 1 1 1H o r i z o n t a l g r i d s :1 : g a u s s i a n > s i z e : dim = 2048 nlon = 64 n l a t = 32l o n g i t u d e : f i r s t = 0 l a s t = 354.375 i n c = 5.625l a t i t u d e : f i r s t = 85.7605871 l a s t = −85.7605871V e r t i c a l g r i d s :1 : s u r f a c e : 02 : p r e s s u r e Pa : 92500 85000 50000 20000Time a x i s : 12 s t e p sYYYY−MM−DD hh :mm YYYY−MM−DD hh :mm YYYY−MM−DD hh :mm YYYY−MM−DD hh :mm1987−01−31 12:00 1987−02−28 12:00 1987−03−31 12:00 1987−04−30 12:001987−05−31 12:00 1987−06−30 12:00 1987−07−31 12:00 1987−08−31 12:001987−09−30 12:00 1987−10−31 12:00 1987−11−30 12:00 1987−12−31 12:0017


InformationReference manual2.1.3. DIFF - Compare two datasets field by fieldSynopsis ifile1 ifile2DescriptionCompares the contents of two datasets field by field. The input datasets must have the same structureand the fields must have the same header information and dimensions.<strong>Operators</strong>diffCompare two datasets listed by code numberProvides statistics on differences between two datasets. For each pair of fields the operatorprints one line with the following information:• date and time• code number and level• size of the grid and number of missing values• occurrence of coefficient pairs with different signs• occurrence of zero values• maxima of absolute difference of coefficient pairs• maxima of relative difference of non-zero coefficient pairs with equal signsdiffvCompare two datasets listed by variable nameThe same as operator diff. Using the name instead of the code number to identify thevariable.ExampleTo print the difference for each field of two datasets use:cdo d i f f i f i l e 1 i f i l e 2This is an example result of the difference of two datasets with one 2D variable and 12 time steps:Date Time Code Level S i z e Miss : S Z A b s d i f f R e l d i f f1 : 1987−01−31 12:00 139 0 2048 1361 : F F 0.00010681 4.1660 e−072 : 1987−02−28 12:00 139 0 2048 1361 : F F 6.1035 e−05 2.3742 e−073 : 1987−03−31 12:00 139 0 2048 1361 : F F 7.6294 e−05 3.3784 e−074 : 1987−04−30 12:00 139 0 2048 1361 : F F 7.6294 e−05 3.5117 e−075 : 1987−05−31 12:00 139 0 2048 1361 : F F 0.00010681 4.0307 e−076 : 1987−06−30 12:00 139 0 2048 1361 : F F 0.00010681 4.2670 e−077 : 1987−07−31 12:00 139 0 2048 1361 : F F 9.1553 e−05 3.5634 e−078 : 1987−08−31 12:00 139 0 2048 1361 : F F 7.6294 e−05 2.8849 e−079 : 1987−09−30 12:00 139 0 2048 1361 : F F 7.6294 e−05 3.6168 e−0710 : 1987−10−31 12:00 139 0 2048 1361 : F F 9.1553 e−05 3.5001 e−0711 : 1987−11−30 12:00 139 0 2048 1361 : F F 6.1035 e−05 2.3839 e−0712 : 1987−12−31 12:00 139 0 2048 1361 : F F 9.3553 e−05 3.7624 e−0718


Reference manualInformation2.1.4. NINFO - Print the number of variables, levels or timesSynopsis ifileDescriptionThis module prints, according to the actual operator, the number of variables, levels or times of theinput dataset.<strong>Operators</strong>ncodenvarnlevelnyearnmonndatentimeNumber of codesPrints the number of variables with different code numbers.Number of variablesPrints the number of variables with different names.Number of levelsPrints the number of levels for each variable.Number of yearsPrints the number of different years.Number of monthsPrints the number of different combinations of years and months.Number of datesPrints the number of different dates.Number of time stepsPrints the number of time steps.ExampleTo print the number of variables in a dataset use:cdo nvar i f i l eTo print the number of month in a dataset use:cdo nmoni f i l e19


InformationReference manual2.1.5. SHOWINFO - Show variables, levels or timesSynopsis ifileDescriptionThis module prints, according to the actual operator, the variables, levels or times of the input dataset.<strong>Operators</strong>showcodeshowvarshowstdnameshowlevelshowyearshowmonshowdateshowtimeShow codesPrints the code number of all different variables.Show variable namesPrints the name of all different variables.Show standard namesPrints the standard name of all different variables.Show levelsPrints all levels for each variable.Show yearsPrints all different years.Show monthsPrints all different months.Show datesPrints all different dates.Show time stepsPrints all time steps.ExampleTo print the code number of all variables in a dataset use:cdo showcode i f i l eThis is an example result of a dataset with three variables:129 130 139To print all months in a dataset use:cdo showmon i f i l eThis is an examples result of a dataset with an annual cycle:1 2 3 4 5 6 7 8 9 10 11 1220


Reference manualInformation2.1.6. FILEDES - <strong>Data</strong>set descriptionSynopsis ifileDescriptionThis module prints, according to the actual operator, the description of the variables, the grids or thevertical coordinate table.<strong>Operators</strong>vardesgriddesvctVariable descriptionPrints a table with a description of all variables. For each variable the operator printsone line listing the code, name, description and units.Grid descriptionPrints the description of all grids in a file.Vertical coordinate tablePrints the vertical coordinate table.ExampleAssume an input dataset having three variables with the names geosp, t and tslm1. To print thedescription of these variables use:Result:cdo vardes i f i l e129 geosp s u r f a c e g e o p o t e n t i a l ( orography ) [mˆ2/ s ˆ 2 ]130 t temperature [K]139 tslm1 s u r f a c e temperature o f land [K]Assume all variables of the dataset are on a T21 gausssian grid. To print the grid description of thisdataset use:Result:cdo g r i d d e s i f i l eg r i d t y p e : g a u s s i a ng r i d s i z e : 2048xname : lonxlongname : l o n g i t u d ex u n i t s : d e g r e e s e a s tyname : l a tylongname : l a t i t u d ey u n i t s : d e g r e e s n o r t hx s i z e : 64y s i z e : 32x f i r s t : 0xinc : 5.625y v a l s : 85.76058 80.26877 74.74454 69.21297 63.67863 58.1429 52.606547.06964 41.53246 35.99507 30.4575 24.91992 19.38223 13.844488.306702 2.768903 −2.768903 −8.306702 −13.84448 −19.38223−24.91992 −30.4575 −35.99507 −41.53246 −47.06964 −52.6065−58.1429 −63.67863 −69.21297 −74.74454 −80.26877 −85.7605821


File operationsReference manual2.2. File operationsThis section contains modules to perform operations on files.Here is a short overview of all operators in this section:copycatreplacemergemergetimesplitcodesplitvarsplitlevelsplitgridsplitzaxissplitrecsplithoursplitdaysplitmonsplitseassplityearCopy datasetsConcatenate datasetsReplace variablesMerge datasets with different fieldsMerge datasets sorted by date and timeSplit codesSplit variablesSplit levelsSplit gridsSplit zaxisSplit recordsSplit hoursSplit daysSplit monthsSplit seasonsSplit years22


Reference manualFile operations2.2.1. COPY - Copy datasetsSynopsis ifiles ofileDescriptionThis module contains operators to copy or concatenate datasets. Each input dataset must have thesame variables with complete time steps.<strong>Operators</strong>copycatCopy datasetsCopies all input datasets to ofile.Concatenate datasetsConcatenates all input datasets and append the result to the end of ofile. If ofile doesnot exist it will be created.ExampleTo change the format of a dataset to netCDF use:cdo −f nc copy i f i l e o f i l e . ncAdd the option ’-r’ to create a relative time axis, as is required for proper recognition by GrADS orFerret:cdo −r −f nc copy i f i l e o f i l e . ncTo concatenate 3 datasets with different time steps of the same variables use:cdo copy i f i l e 1 i f i l e 2 i f i l e 3 o f i l eIf the output dataset already exist and you wish to extend it with more time steps use:cdo cat i f i l e 1 i f i l e 2 i f i l e 3 o f i l e2.2.2. REPLACE - Replace variablesSynopsisreplace ifile1 ifile2 ofileDescriptionReplaces all common variables of ifile2 and ifile1 with those of ifile1 and write the result toofile. Both input datasets must have the same number of time steps.ExampleAssume the first input dataset ifile1 has three variables with the names geosp, t and tslm1 and thesecond input dataset ifile2 has only the variable tslm1. To replace the variable tslm1 in ifile1with tslm1 from ifile2 use:cdo r e p l a c e i f i l e 1 i f i l e 2 o f i l e23


File operationsReference manual2.2.3. MERGE - Merge datasetsSynopsis ifiles ofileDescriptionThis module reads datasets from several input files, merges them and writes the resulting dataset toofile.<strong>Operators</strong>mergemergetimeMerge datasets with different fieldsMerges time series of different fields from several input datasets. The number offields per time step written to ofile is the sum of the field numbers per time stepin all input datasets. The time series on all input datasets must have different fieldsand the same number of time steps.Merge datasets sorted by date and timeMerges all time steps of all input files sorted by date and time. After this operationevery input time step is in ofile and all time steps are sorted by date and time.Each input file must have the same variables and different time steps.ExampleAssume three datasets with the same number of time steps and each dataset with different variables.To merge these datasets to a new dataset use:cdo merge i f i l e 1 i f i l e 2 i f i l e 3 o f i l eAssume you have split a 6 hourly dataset with splithour. This produces four datasets one for eachhours. The following command merges them together:cdo mergetime i f i l e 1 i f i l e 2 i f i l e 3 i f i l e 4 o f i l e24


Reference manualFile operations2.2.4. SPLIT - Split a datasetSynopsis ifile oprefixDescriptionThis module splits a dataset to several files with names formed from the field header information andoprefix.<strong>Operators</strong>splitcodesplitvarsplitlevelsplitgridsplitzaxissplitrecSplit codesSplits a dataset into pieces, one for each different code number. Appends three digitswith the code number to oprefix to form the output file names.Split variablesSplits a dataset into pieces, one for each variable name. Appends a string with thevariable name to oprefix to form the output file names.Split levelsSplits a dataset into pieces, one for each different level. Appends six digits with thelevel to oprefix to form the output file names.Split gridsSplits a dataset into pieces, one for each different grid. Appends two digits with thegrid number to oprefix to form the output file names.Split zaxisSplits a dataset into pieces, one for each different zaxis. Appends two digits with thezaxis number to oprefix to form the output file names.Split recordsSplits a dataset into pieces, one for each record. Appends six digits with the recordnumber to oprefix to form the output file names.ExampleAssume an input GRIB dataset with three variables, e.g. code number 129, 130 and 139. To splitthis dataset into three pieces, one for each code number use:cdo s p l i t c o d e i f i l e codeResult of ’dir code*’:code129 . grb code130 . grb code139 . grb25


File operationsReference manual2.2.5. SPLITTIME - Split time steps of a datasetSynopsis ifile oprefixDescriptionThis module splits time steps of a dataset to several files with names formed from the field headerinformation and oprefix.<strong>Operators</strong>splithoursplitdaysplitmonsplitseassplityearSplit hoursSplits a file into pieces, one for each different hour. Appends two digits with the hourto oprefix to form the output file names.Split daysSplits a file into pieces, one for each different day. Appends two digits with the day tooprefix to form the output file names.Split monthsSplits a file into pieces, one for each different month. Appends two digits with themonth to oprefix to form the output file names.Split seasonsSplits a file into pieces, one for each different season. Appends three characters withthe season to oprefix to form the output file names.Split yearsSplits a file into pieces, one for each different year. Appends four digits with the yearto oprefix to form the output file names.ExampleAssume the input GRIB dataset has time steps from January to December. To split each month withall variables into one separate file use:cdo splitmon i f i l e monResult of ’dir mon*’:mon01 . grb mon02 . grb mon03 . grb mon04 . grb mon05 . grb mon06 . grbmon07 . grb mon08 . grb mon09 . grb mon10 . grb mon11 . grb mon12 . grb26


Reference manualSelection2.3. SelectionThis section contains modules to select time steps, fields or part of a field from a dataset.Here is a short overview of all operators in this section:selcodedelcodeselvardelvarselstdnamesellevelselgridselgridnameselzaxisselzaxisnameseltabnumselrecseltimestepseltimeselhourseldayselmonselyearselseasseldatesellonlatboxselindexboxSelect codesDelete codesSelect variablesDelete variablesSelect standard namesSelect levelsSelect gridsSelect grids by nameSelect zaxesSelect zaxes by nameSelect parameter table numbersSelect recordsSelect time stepsSelect timesSelect hoursSelect daysSelect monthsSelect yearsSelect seasonsSelect datesSelect a longitude/latitude boxSelect an index box27


SelectionReference manual2.3.1. SELECT - Select fieldsSynopsisselcode,codes ifile ofiledelcode,codes ifile ofileselvar,vars ifile ofiledelvar,vars ifile ofileselstdname,stdnames ifile ofilesellevel,levels ifile ofileselgrid,grids ifile ofileselgridname,gridnames ifile ofileselzaxis,zaxes ifile ofileselzaxisname,zaxisnames ifile ofileseltabnum,tabnums ifile ofileselrec,records ifile ofileDescriptionThis module selects some fields from ifile and writes them to ofile. The fields selected depend onthe actual operator and the parameters.<strong>Operators</strong>selcodedelcodeselvardelvarselstdnamesellevelselgridselgridnameselzaxisselzaxisnameseltabnumselrecSelect codesSelects all fields with code numbers in a user given list.Delete codesDeletes all fields with code numbers in a user given list.Select variablesSelects all fields with variable names in a user given list.Delete variablesDeletes all fields with variable names in a user given list.Select standard namesSelects all fields with standard names in a user given list.Select levelsSelects all fields with levels in a user given list.Select gridsSelects all fields with grids in a user given list.Select grids by nameSelects all fields with grid names in a user given list.Select zaxesSelects all fields with zaxes in a user given list.Select zaxes by nameSelects all fields with zaxis names in a user given list.Select parameter table numbersSelects all fields with parameter table numbers in a user given list.Select recordsSelects all fields with record numbers in a user given list. This operator can notbe used with netCDF data!28


Reference manualSelectionParametercodes INTEGER Comma separated list of code numbersvars STRING Comma separated list of variable namesstdnames STRING Comma separated list of standard nameslevels FLOAT Comma separated list of levelsgrids INTEGER Comma separated list of grid numbersgridnames STRING Comma separated list of grid nameszaxes INTEGER Comma separated list of zaxis numberszaxisnames STRING Comma separated list of zaxis namestabnums INTEGER Comma separated list of parameter table numbersrecords INTEGER Comma separated list of recordsExampleAssume an input dataset has three variables with the code numbers 129, 130 and 139. To select thevariables with the code number 129 and 139 use:cdo s e l c o d e , 1 2 9 , 1 3 9 i f i l e o f i l eYou can also select the code number 129 and 139 by deleting the code number 130 with:cdo delcode , 1 3 0 i f i l e o f i l e29


SelectionReference manual2.3.2. SELTIME - Select time stepsSynopsisseltimestep,timesteps ifile ofileseltime,times ifile ofileselhour,hours ifile ofileselday,days ifile ofileselmon,months ifile ofileselyear,years ifile ofileselseas,seasons ifile ofileseldate,date1[,date2] ifile ofileDescriptionThis module selects user specified time steps from ifile and writes them to ofile. The time stepsselected depend on the actual operator and the parameters.<strong>Operators</strong>seltimestepseltimeselhourseldayselmonselyearselseasseldateSelect time stepsSelects all time steps with a time step in a user given list.Select timesSelects all time steps with a time in a user given list.Select hoursSelects all time steps with a hour in a user given list.Select daysSelects all time steps with a day in a user given list.Select monthsSelects all time steps with a month in a user given list.Select yearsSelects all time steps with a year in a user given list.Select seasonsSelects all time steps with a month of a season in a user given list.Select datesSelects all time steps with a date in a user given range.Parametertimesteps INTEGER Comma separated list of time stepstimes STRING Comma separated list of times (format hh:mm)hours INTEGER Comma separated list of hoursdays INTEGER Comma separated list of daysmonths INTEGER Comma separated list of monthsyears INTEGER Comma separated list of yearsseasons STRING Comma separated list of seasons (DJF, MAM, JJA, SON)date1 STRING Start date (format YYYY-MM-DDThh:mm)date2 STRING End date (format YYYY-MM-DDThh:mm)30


Reference manualSelection2.3.3. SELBOX - Select a box of a fieldSynopsissellonlatbox,lon1,lon2,lat1,lat2 ifile ofileselindexbox,idx1,idx2,idy1,idy2 ifile ofileDescriptionSelects a box of the rectangular understood field. All input fields must have the same horizontal grid.<strong>Operators</strong>sellonlatboxselindexboxSelect a longitude/latitude boxSelects a longitude/latitude box. The user has to give the longitudes and latitudesof the edges of the box.Select an index boxSelects an index box. The user has to give the indexes of the edges of the box. Theindex of the left edge may be greater then that of the right edge.Parameterlon1 FLOAT Western longitudelon2 FLOAT Eastern longitudelat1 FLOAT Southern or northern latitudelat2 FLOAT Northern or southern latitudeidx1 INTEGER Index of first longitudeidx2 INTEGER Index of last longitudeidy1 INTEGER Index of first latitudeidy2 INTEGER Index of last latitudeExampleTo select the region with the longitudes from 120E to 90W and latitudes from 20N to 20S from allinput fields use:cdo s e l l o n l a t b o x ,120 , −90 ,20 , −20 i f i l e o f i l eIf the input dataset has fields on a T21 gaussian grid, the same box can be selected with selindexboxby:cdo selindexbox , 2 3 , 4 8 , 1 3 , 2 0 i f i l e o f i l e31


Conditional selectionReference manual2.4. Conditional selectionThis section contains modules to conditional select field elements. The fields in the first input file arehandled as a mask. A value not equal to zero is treated as ”true”, zero is treated as ”false”.Here is a short overview of all operators in this section:ifthenifnotthenifthenelseifthencifnotthencIf thenIf not thenIf then elseIf then constantIf not then constant32


Reference manualConditional selection2.4.1. COND - Conditional select one fieldSynopsis ifile1 ifile2 ofileDescriptionThis module conditional selects field elements from ifile2 and writes them to ofile. The fieldsin ifile1 are handled as a mask. A value not equal to zero is treated as ”true”, zero is treated as”false”.<strong>Operators</strong>ifthenifnotthenIf theno(t, x) ={i2 (t, x) if i 1 (t, x) ≠ 0 ∧ i 1 (t, x) ≠ missmiss if i 1 (t, x) = 0 ∨ i 1 (t, x) = missIf not then {i2 (t, x) if io(t, x) =1 (t, x) = 0 ∧ i 1 (t, x) ≠ missmiss if i 1 (t, x) ≠ 0 ∨ i 1 (t, x) = missExampleTo select all field elements of ifile2 if the corresponding field element of ifile1 is greater than 0,use:cdo i f t h e n i f i l e 1 i f i l e 2 o f i l e2.4.2. COND2 - Conditional select two fieldsSynopsisifthenelse ifile1 ifile2 ifile3 ofileDescriptionThis operator conditional selects field elements from ifile2 or ifile3 and writes them to ofile.The fields in ifile1 are handled as a mask. A value not equal to zero is treated as ”true”, zero istreated as ⎧”false”.⎨ i 2 (t, x) if i 1 (t, x) ≠ 0 ∧ i 1 (t, x) ≠ misso(t, x) = i⎩ 3 (t, x) if i 1 (t, x) = 0 ∧ i 1 (t, x) ≠ missmiss if i 1 (t, x) = missExampleTo select all field elements of ifile2 if the corresponding field element of ifile1 is greater than 0and from ifile3 otherwise, use:cdo i f t h e n e l s e i f i l e 1 i f i l e 2 i f i l e 3 o f i l e33


Conditional selectionReference manual2.4.3. CONDC - Conditional select a constantSynopsis,c ifile ofileDescriptionThis module creates fields with a constant value or missing value. The fields in ifile1 are handledas a mask. A value not equal to zero is treated as ”true”, zero is treated as ”false”.<strong>Operators</strong>ifthencifnotthencIf then constant { c if i(t, x) ≠ 0 ∧ i(t, x) ≠ misso(t, x) =miss if i(t, x) = 0 ∨ i(t, x) = missIf not then { constantc if i(t, x) = 0 ∧ i(t, x) ≠ misso(t, x) =miss if i(t, x) ≠ 0 ∨ i(t, x) = missParameterc FLOAT ConstantExampleTo create fields with the constant value 7 if the corresponding field element of ifile is greater than0, use:cdo i f t h e n c , 7 i f i l e o f i l e34


Reference manualComparison2.5. ComparisonThis section contains modules to compare datasets. The resulting field is a mask with 1 if the comparisonis true and 0 if the comparison is false.Here is a short overview of all operators in this section:eqneleltgegteqcneclecltcgecgtcEqualNot equalLess equalLess thanGreater equalGreater thanEqual constantNot equal constantLess equal constantLess then constantGreater equal constantGreater then constant35


ComparisonReference manual2.5.1. COMP - Comparison of two fieldsSynopsis ifile1 ifile2 ofileDescriptionThis module compares two datasets field by field. The resulting field is a mask with 1 if the comparisonis true and 0 if the comparison is false. The type of the comparison depends on the actual operator.<strong>Operators</strong>eqneleltgegtEqual⎧⎨ 1 if i 1 (t, x) = i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ misso(t, x) = 0 if i⎩1 (t, x) ≠ i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ missmiss if i 1 (t, x) = miss ∨ i 2 (t, x) = missNot equal⎧⎨o(t, x) =⎩Less equal⎧⎨o(t, x) =⎩Less than⎧⎨o(t, x) =⎩1 if i 1 (t, x) ≠ i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ miss0 if i 1 (t, x) = i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ missmiss if i 1 (t, x) = miss ∨ i 2 (t, x) = miss1 if i 1 (t, x) ≤ i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ miss0 if i 1 (t, x) > i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ missmiss if i 1 (t, x) = miss ∨ i 2 (t, x) = miss1 if i 1 (t, x) < i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ miss0 if i 1 (t, x) ≥ i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ missmiss if i 1 (t, x) = miss ∨ i 2 (t, x) = missGreater equal⎧⎨ 1 if i 1 (t, x) ≥ i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ misso(t, x) = 0 if i⎩1 (t, x) < i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ missmiss if i 1 (t, x) = miss ∨ i 2 (t, x) = missGreater than⎧⎨ 1 if i 1 (t, x) > i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ misso(t, x) = 0 if i⎩1 (t, x) ≤ i 2 (t, x) ∧ i 1 (t, x), i 2 (t, x) ≠ missmiss if i 1 (t, x) = miss ∨ i 2 (t, x) = missExampleTo create a mask with 1 if the elements of two fields are the same and 0 if the elements are different,use:cdo eq i f i l e 1 i f i l e 2 o f i l e36


ModificationReference manual2.6. ModificationThis section contains modules to modify the metadata, fields or part of a field in a dataset.Here is a short overview of all operators in this section:setpartabsetcodesetvarsetlevelsetdatesettimesetdaysetmonsetyearsettunitssettaxissetreftimesetcalendarshifttimechcodechvarchlevelchlevelcchlevelvsetgridsetgridtypesetzaxissetgattsetgattsinvertlatinvertloninvertlatdesinvertlondesinvertlatdatainvertlondatamasklonlatboxmaskindexboxsetclonlatboxsetcindexboxenlargesetmissvalsetctomisssetmisstocsetrtomissSet parameter tableSet code numberSet variable nameSet levelSet dateSet timeSet daySet monthSet yearSet time unitsSet time axisSet reference timeSet calendarShift time stepsChange code numberChange variable nameChange levelChange level of one codeChange level of one variableSet gridSet grid typeSet zaxisSet global attributeSet global attributesInvert latitudeInvert longitudeInvert latitude descriptionInvert longitude descriptionInvert latitude dataInvert longitude dataMask a longitude/latitude boxMask an index boxSet a longitude/latitude box to constantSet an index box to constantEnlarge fieldsSet a new missing valueSet constant to missing valueSet missing value to constantSet range to missing value38


Reference manualModification2.6.1. SET - Set field infoSynopsissetpartab,table ifile ofilesetcode,code ifile ofilesetvar,name ifile ofilesetlevel,level ifile ofileDescriptionThis module sets some field information. Depending on the actual operator the parameter table, codenumber, variable name or level is set.<strong>Operators</strong>setpartabsetcodesetvarsetlevelSet parameter tableSets the parameter table for all variables.Set code numberSets the code number for all variables to the same given value.Set variable nameSets the name of the first variable.Set levelSets the first level of all variables.Parametertable STRING Parameter table file or namecode INTEGER Code numbername STRING Variable namelevel FLOAT New levelExampleTo assign the parameter table echam5 to the input dataset use:cdo setpartab , echam5 i f i l e o f i l e39


ModificationReference manual2.6.2. SETTIME - Set timeSynopsissetdate,date ifile ofilesettime,time ifile ofilesetday,day ifile ofilesetmon,month ifile ofilesetyear,year ifile ofilesettunits,units ifile ofilesettaxis,date,time[,inc] ifile ofilesetreftime,date,time ifile ofilesetcalendar,calendar ifile ofileshifttime,sval ifile ofileDescriptionThis module sets the time axis or part of the time axis. Which part of the time axis is overwrittendepends on the actual operator.<strong>Operators</strong>setdatesettimesetdaysetmonsetyearsettunitssettaxissetreftimesetcalendarshifttimeSet dateSets the date in every time step to the same given value.Set timeSets the time in every time step to the same given value.Set daySets the day in every time step to the same given value.Set monthSets the month in every time step to the same given value.Set yearSets the year in every time step to the same given value.Set time unitsSets the base units of a relative time axis.Set time axisSets the time axis.Set reference timeSets the reference time of an relative time axis.Set calendarSets the calendar of an relative time axis.Shift time stepsShifts all time steps by the parameter sval.40


Reference manualModificationParameterday INTEGER Value of the new daymonth INTEGER Value of the new monthyear INTEGER Value of the new yearunits STRING Base units of the time axis (minutes, hours, days, months, years).date STRING Date (format YYYY-MM-DD)time STRING Time (format HH:MM)inc STRING Optional increment (e.g. 12hour) [default: 0hour]calendar STRING Calendar (standard, 360days, 365days, 366days)sval STRING Shift value (e.g. -3hour)ExampleTo set the time axis to 1987-01-16 12:00 with an increment of one month for each time step use:cdo s e t t a x i s ,1987 −01 −16 ,12:00 ,1mon i f i l e o f i l eResult of ’cdo showdate ofile’ for a dataset with 12 timesteps:1987−01−16 1987−02−16 1987−03−16 1987−04−16 1987−05−16 1987−06−16 \1987−07−16 1987−08−16 1987−09−16 1987−10−16 1987−11−16 1987−12−16To shift this time axis by -15 days use:cdo s h i f t t i m e ,−15 days i f i l e o f i l eResult of ’cdo showdate ofile’:1987−01−01 1987−02−01 1987−03−01 1987−04−01 1987−05−01 1987−06−01 \1987−07−01 1987−08−01 1987−09−01 1987−10−01 1987−11−01 1987−12−0141


ModificationReference manual2.6.3. CHANGE - Change field headerSynopsischcode,oldcode,newcode[,...] ifile ofilechvar,ovar,nvar,... ifile ofilechlevel,oldlev,newlev,... ifile ofilechlevelc,code,oldlev,newlev ifile ofilechlevelv,var,oldlev,newlev ifile ofileDescriptionThis module reads fields from ifile, changes some header values and writes the results to ofile.The kind of changes depends on the actual operator.<strong>Operators</strong>chcodechvarchlevelchlevelcchlevelvChange code numberChanges some user given code numbers to new user given values.Change variable nameChanges some user given variable names to new user given names.Change levelChanges some user given levels to new user given values.Change level of one codeChanges one level of a user given code number.Change level of one variableChanges one level of a user given variable.Parametercode INTEGER Code numberoldcode,newcode,... INTEGER Pairs of old and new code numbersvar STRING Variable nameovar,nvar,... STRING Pairs of old and new variable namesoldlev FLOAT Old levelnewlev FLOAT New leveloldlev,newlev,... FLOAT Pairs of old and new levelsExampleTo change the code number 98 to 179 and 99 to 211 use:cdo chcode , 9 8 , 1 7 9 , 9 9 , 2 1 1 i f i l e o f i l e42


Reference manualModification2.6.4. SETGRID - Set grid typeSynopsissetgrid,grid ifile ofilesetgridtype,gridtype ifile ofileDescriptionThis module sets the grid description of all fields with the same grid size as the new grid.<strong>Operators</strong>setgridsetgridtypeSet gridSets the grid description of all fields.Set grid typeSets the grid type of all grids to a user given value.Parametergrid STRING Target grid description file or namegridtype STRING Target grid type (curvilinear or cell)ExampleAssumed a dataset has fields with 2048 gridpoints without or with wrong grid description. To set thegrid description of all input fields to a T21 gaussian grid (2048 gridpoints) use:cdo s e t g r i d , t 2 1 g r i d i f i l e o f i l e2.6.5. SETZAXIS - Set zaxis typeSynopsissetzaxis,zaxis ifile ofileDescriptionThis operator sets the zaxis description of all variables with the same number of level as the newzaxis.Parameterzaxis STRING Zaxis description file or name of the target zaxis43


ModificationReference manual2.6.6. SETGATT - Set global attributeSynopsissetgatt,attname,attstring ifile ofilesetgatts,attfile ifile ofileDescriptionThis module sets global text attributes of a dataset. Depending on the actual operator the attributesare read from a file or can be specified by a parameter.<strong>Operators</strong>setgattsetgattsSet global attributeSets one user defined global text attribute.Set global attributesSets user defined global text attributes. The name and text of the global attributes areread from a file.Parameterattname,attstring STRING Name and text of the global attribute (without spaces!)attfile STRING File name which contains global text attributesNoteFrom the supported data formats only netCDF can work with global attributes.ExampleTo set the global text attribute ”myatt” to ”myattcontents” in a netCDF file use:cdo s e t g a t t , myatt , myattcontents i f i l e o f i l eResult of ’ncdump -h ofile’:n e t c d f o f i l e {dimensions : . . .v a r i a b l e s : . . .// g l o b a l a t t r i b u t e s :: myatt = ” myattcontens ” ;}44


Reference manualModification2.6.7. INVERT - Invert fieldsSynopsis ifile ofileDescriptionThis module inverts 2D fields on a rectangular grid. Depending on the actual operator the field, onlythe data or only the grid description is inverted.<strong>Operators</strong>invertlatinvertloninvertlatdesinvertlondesinvertlatdatainvertlondataInvert latitudeInverts the latitude of a field.Invert longitudeInverts the longitude of a field.Invert latitude descriptionInverts only the latitude description of a field.Invert longitude descriptionInverts only the longitude description of a field.Invert latitude dataInverts only the latitude data of a field.Invert longitude dataInverts only the longitude data of a field.ExampleTo invert the latitudes of a 2D field from N->S to S->N, use:cdo i n v e r t l a t i f i l e o f i l e45


ModificationReference manual2.6.8. MASKBOX - Mask a boxSynopsismasklonlatbox,lon1,lon2,lat1,lat2 ifile ofilemaskindexbox,idx1,idx2,idy1,idy2 ifile ofileDescriptionMasks a box of the rectangular understood field. The elements inside the box are untouched, theelements outside are set to missing value. All input fields must have the same horizontal grid.<strong>Operators</strong>masklonlatboxmaskindexboxMask a longitude/latitude boxMasks a longitude/latitude box. The user has to give the longitudes and latitudesof the edges of the box.Mask an index boxMasks an index box. The user has to give the indexes of the edges of the box.The index of the left edge may be greater then that of the right edge.Parameterlon1 FLOAT Western longitudelon2 FLOAT Eastern longitudelat1 FLOAT Southern or northern latitudelat2 FLOAT Northern or southern latitudeidx1 INTEGER Index of first longitudeidx2 INTEGER Index of last longitudeidy1 INTEGER Index of first latitudeidy2 INTEGER Index of last latitudeExampleTo mask the region with the longitudes from 120E to 90W and latitudes from 20N to 20S on all inputfields use:cdo masklonlatbox ,120 , −90 ,20 , −20 i f i l e o f i l eIf the input dataset has fields on a T21 gaussian grid, the same box can be masked with maskindexboxby:cdo maskindexbox , 2 3 , 4 8 , 1 3 , 2 0 i f i l e o f i l e46


Reference manualModification2.6.9. SETBOX - Set a box to constantSynopsissetclonlatbox,c,lon1,lon2,lat1,lat2 ifile ofilesetcindexbox,c,idx1,idx2,idy1,idy2 ifile ofileDescriptionSets a box of the rectangular understood field to a constant value. The elements outside the box areuntouched, the elements inside are set to the given constant. All input fields must have the samehorizontal grid.<strong>Operators</strong>setclonlatboxsetcindexboxSet a longitude/latitude box to constantSets the values of a longitude/latitude box to a constant value. The user has togive the longitudes and latitudes of the edges of the box.Set an index box to constantSets the values of an index box to a constant value. The user has to give theindexes of the edges of the box. The index of the left edge may be greater thenthat of the right edge.Parameterc FLOAT Constantlon1 FLOAT Western longitudelon2 FLOAT Eastern longitudelat1 FLOAT Southern or northern latitudelat2 FLOAT Northern or southern latitudeidx1 INTEGER Index of first longitudeidx2 INTEGER Index of last longitudeidy1 INTEGER Index of first latitudeidy2 INTEGER Index of last latitudeExampleTo set all values in the region with the longitudes from 120E to 90W and latitudes from 20N to 20Sto the constant value -1.23, use:cdo s e t c l o n l a t b o x , −1.23 ,120 , −90 ,20 , −20 i f i l e o f i l eIf the input dataset has fields on a T21 gaussian grid, the same box can be set with setcindexbox by:cdo setcindexbox , −1.23 ,23 ,48 ,13 ,20 i f i l e o f i l e47


ModificationReference manual2.6.10. ENLARGE - Enlarge fieldsSynopsisenlarge,grid ifile ofileDescriptionEnlarge all fields of ifile to a user given grid. Normally only the last field element is used for theenlargement. If however the input and output grid are rectangular, a zonal or meridional enlargementis possible. Zonal enlargement takes place, if the xsize of the input field is 1 and the ysize of bothgrids are the same. For meridional enlargement the ysize must be 1 and the xsize of both grids musthave the same size.Parametergrid STRING Target grid description file or nameExampleAssumed you want to add two datasets. The first dataset is on a T21 grid (2048 field elements) andthe second dataset is only a global mean (1 field element). Before you can add these two datasets thesecond dataset must be enlarged to the grid size of the first dataset:cdo enlarge , t 2 1 g r i d i f i l e 2 t m p f i l ecdo add i f i l e 1 t m p f i l e o f i l eOr shorter with pipes:cdo add i f i l e 1 −enlarge , t 2 1 g r i d i f i l e 2 o f i l e48


Reference manualModification2.6.11. SETMISS - Set missing valueSynopsissetmissval,miss ifile ofilesetctomiss,c ifile ofilesetmisstoc,c ifile ofilesetrtomiss,rmin,rmax ifile ofileDescriptionThis module sets part of a field to missing value or missing values to a constant value. Which part ofthe field is set depends on the actual operator.<strong>Operators</strong>setmissvalsetctomisssetmisstocsetrtomissSet a new{missing valuemiss if i(t, x) = misso(t, x) =i(t, x) if i(t, x) ≠ missSet constant{to missing valuemiss if i(t, x) = co(t, x) =i(t, x) if i(t, x) ≠ cSet missing{value to constantc if i(t, x) = misso(t, x) =i(t, x) if i(t, x) ≠ missSet range{to missing valuemiss if i(t, x) ≥ rmin ∧ i(t, x) ≤ rmaxo(t, x) =i(t, x) if i(t, x) < rmin ∨ i(t, x) > rmaxParametermiss FLOAT New missing valuec FLOAT Constantrmin FLOAT Lower boundrmax FLOAT Upper boundExampleAssume an input dataset has one field with the temperature in the range from 246 to 304 Kelvin. Toset all values below 273.15 Kelvin to missing value use:cdo s e t r t o m i s s , 0 , 2 7 3 . 1 5 i f i l e o f i l eResult of ’cdo info ifile’:−1 : Date Time Code Level S i z e Miss : Minimum Mean Maximum1 : 1987−12−31 12:00 139 0 2048 0 : 246.27 276.75 303.71Result of ’cdo info ofile’:−1 : Date Time Code Level S i z e Miss : Minimum Mean Maximum1 : 1987−12−31 12:00 139 0 2048 871 : 273.16 287.08 303.7149


ArithmeticReference manual2.7. ArithmeticThis section contains modules to arithmetically process datasets.Here is a short overview of all operators in this section:exprexprfabssqrsqrtexplnlog10sincostanasinacosatanaddcsubcmulcdivcaddsubmuldivminmaxatan2ymonaddymonsubymonmulymondivmuldpmdivdpmmuldpydivdpyEvaluate expressionsEvaluate expressions from script fileAbsolute valueSquareSquare rootExponentialNatural logarithmBase 10 logarithmSineCosineTangentArc sineArc cosineArc tangentAdd a constantSubtract a constantMultiply with a constantDivide by a constantAdd two fieldsSubtract two fieldsMultiply two fieldsDivide two fieldsMinimum of two fieldsMaximum of two fieldsArc tangent of two fieldsAdd multi-year monthly time averageSubtract multi-year monthly time averageMultiply multi-year monthly time averageDivide multi-year monthly time averageMultiply with days per monthDivide by days per monthMultiply with days per yearDivide by days per year50


Reference manualArithmetic2.7.1. EXPR - Evaluate expressionsSynopsisexpr,instr ifile ofileexprf,filename ifile ofileDescriptionThis module arithmetically processes every time step of the input dataset. Each individual assignmentstatement must end with a semi-colon. The basic arithmetic operations addition +, subtraction −,multiplication ∗, division / and exponentiation ˆ can be used. The following intrinsic functions areavailable:sqrt(x)exp(x)log(x)log10(x)sin(x)cos(x)tan(x)asin(x)acos(x)atan(x)Square Root of xExponential of xNatural logarithm of xBase 10 logarithm of xSine of x, where x is specified in radiansCosine of x, where x is specified in radiansTangent of x, where x is specified in radiansArc-sine of x, where x is specified in radiansArc-cosine of x, where x is specified in radiansArc-tangent of x, where x is specified in radians<strong>Operators</strong>exprexprfEvaluate expressionsThe processing instructions are read from the parameter.Evaluate expressions from script fileContrary to expr the processing instructions are read from a file.Parameterinstr STRING Processing instructions (without spaces!)filename STRING File with processing instructionsExampleAssume an input dataset contains at least the variables ’aprl’, ’aprc’ and ’ts’. To create a new variable’var1’ with the sum of ’aprl’ and ’aprc’ and a variable ’var2’ which convert the temperature ’ts’ fromKelvin to Celsius use:cdo expr , ’ var1=a p r l+aprc ; var2=ts −273.15; ’ i f i l e o f i l eThe same example, but the instructions are read from a file:cdo exprf , myexpr i f i l e o f i l eThe file myexpr contains:var1 = a p r l + aprc ;var2 = t s − 2 7 3 . 1 5 ;51


ArithmeticReference manual2.7.2. MATH - Mathematical functionsSynopsis ifile ofileDescriptionThis module contains some standard mathematical functions. All trigonometric functions calculatewith radians.<strong>Operators</strong>abssqrsqrtexplnlog10sincostanasinacosatanAbsolute valueo(t, x) = abs(i(t, x))Squareo(t, x) = i(t, x) 2Square rooto(t, x) = √ i(t, x)Exponentialo(t, x) = e i(t,x)Natural logarithmo(t, x) = ln(i(t, x))Base 10 logarithmo(t, x) = log 10 (i(t, x))Sineo(t, x) = sin(i(t, x))Cosineo(t, x) = cos(i(t, x))Tangento(t, x) = tan(i(t, x))Arc sineo(t, x) = arcsin(i(t, x))Arc cosineo(t, x) = arccos(i(t, x))Arc tangento(t, x) = arctan(i(t, x))ExampleTo calculate the square root for all field elements use:cdo s q r t i f i l e o f i l e52


Reference manualArithmetic2.7.3. ARITHC - Arithmetic with a constantSynopsis,c ifile ofileDescriptionThis module performs simple arithmetic with all field elements of a dataset and a constant. Theheader and date information in ofile is the same as in ifile.<strong>Operators</strong>addcsubcmulcdivcAdd a constanto(t, x) = i(t, x) + cSubtract a constanto(t, x) = i(t, x) − cMultiply with a constanto(t, x) = i(t, x) ∗ cDivide by a constanto(t, x) = i(t, x)/cParameterc FLOAT ConstantExampleTo sum all input fields with the constant -273.15 use:cdo addc , −273.15 i f i l e o f i l e53


ArithmeticReference manual2.7.4. ARITH - Arithmetic on two datasetsSynopsis ifile1 ifile2 ofileDescriptionThis module performs simple arithmetic of two datasets. The header and date information in ofileis the same as in ifile1.<strong>Operators</strong>addsubmuldivminmaxatan2Add two fieldso(t, x) = i 1 (t, x) + i 2 (t, x)Subtract two fieldso(t, x) = i 1 (t, x) − i 2 (t, x)Multiply two fieldso(t, x) = i 1 (t, x) ∗ i 2 (t, x)Divide two fieldso(t, x) = i 1 (t, x)/i 2 (t, x)Minimum of two fieldso(t, x) = min(i 1 (t, x), i 2 (t, x))Maximum of two fieldso(t, x) = max(i 1 (t, x), i 2 (t, x))Arc tangent of two fieldsThe atan2 operator calculates the arc tangent of two fields. The result is in radians, whichis between -PI and PI (inclusive).o(t, x) = atan2(i 1 (t, x), i 2 (t, x))ExampleTo sum all fields of the first input file with the corresponding fields of the second input file use:cdo add i f i l e 1 i f i l e 2 o f i l e54


Reference manualArithmetic2.7.5. YMONARITH - Multi-year monthly arithmeticSynopsis ifile1 ifile2 ofileDescriptionThis module performs simple arithmetic of a time series and a time step with the same month of year.For each field in ifile1 the corresponding field of the time step in ifile2 with the same month ofyear is used. The header information in ifile1 must be the same as in ifile2. Usually ifile2 isgenerated by a call of the module YMONSTAT.<strong>Operators</strong>ymonaddymonsubymonmulymondivAdd multi-year monthly time averageAdds a time series and a multi-year monthly time average.Subtract multi-year monthly time averageSubtracts a time series and a multi-year monthly time average.Multiply multi-year monthly time averageMultiplies a time series and a multi-year monthly time average.Divide multi-year monthly time averageDivides a time series and a multi-year monthly time average.ExampleTo subtract a multi-year monthly time average from a time series, use:cdo ymonsub i f i l e −ymonavg i f i l e o f i l e55


ArithmeticReference manual2.7.6. ARITHDAYS - Arithmetic with daysSynopsis ifile ofileDescriptionThis module multiplies or divides each time step of a dataset with the corresponding days per monthor days per year.<strong>Operators</strong>muldpmdivdpmmuldpydivdpyMultiply with days per montho(t, x) = i(t, x) ∗ days per monthDivide by days per montho(t, x) = i(t, x)/days per monthMultiply with days per yearo(t, x) = i(t, x) ∗ days per yearDivide by days per yearo(t, x) = i(t, x)/days per yearExampleAssume an input dataset is a monthly mean time series. To compute the yearly mean from the correctweighted monthly mean use:cdo muldpm i f i l e t m p f i l e 1cdo yearavg t m p f i l e 1 t m p f i l e 2cdo mulc , 1 2 −divdpy t m p f i l e 2 o f i l eOr all in one command line:cdo mulc , 1 2 −divdpy −yearavg −muldpm i f i l e o f i l e56


Reference manualStatistical values2.8. Statistical valuesThis section contains modules to compute statistical values of datasets. In this program there is thedifferent notion of ”mean” and ”average” to distinguish two different kinds of treatment of missing values.While computing the mean, only the not missing values are considered to belong to the sample with theside effect of a probably reduced sample size. Computing the average is just adding the sample membersand divide the result by the sample size. For example, the mean of 1, 2, miss and 3 is (1+2+3)/3 = 2,whereas the average is (1+2+miss+3)/4 = miss/4 = miss. If there are no missing values in the sample,the average and the mean are identical. In this section the abbreviations as in the following table are used:sumn∑i=1x imean resp. avg n −1 n ∑mean resp. avgweighted by{w i , i = 1, ..., n}Variancevarvar weighted by{w i , i = 1, ..., n}Standard deviationstdstd weighted by{w i , i = 1, ..., n}⎛⎝n∑j=1n −1⎛⎝n∑j=1i=1x iw j⎞⎠n ∑i=1√ n−1−1n∑i=1(x i − x) 2⎞−1w j⎠j=1n∑i=1w i x in∑(x i − x) 2i=1⎛ ⎞−1n∑√⎝w j⎠⎛⎜w i ⎝x i −n∑i=1⎛⎝⎛⎜w i ⎝x i −n∑j=1⎛⎝⎞−1w j⎠n∑j=1n∑j=1⎞−1w j⎠⎞2⎟w j x j ⎠n∑j=1⎞2⎟w j x j ⎠Here is a short overview of all operators in this section:ensminensmaxenssumensmeanensavgensstdensvarfldminfldmaxfldsumfldmeanfldavgfldstdfldvarEnsemble minimumEnsemble maximumEnsemble sumEnsemble meanEnsemble averageEnsemble standard deviationEnsemble varianceField minimumField maximumField sumField meanField averageField standard deviationField variance57


Statistical valuesReference manualzonminzonmaxzonsumzonmeanzonavgzonstdzonvarZonal minimumZonal maximumZonal sumZonal meanZonal averageZonal standard deviationZonal variancemerminmermaxmersummermeanmeravgmerstdmervarMeridional minimumMeridional maximumMeridional sumMeridional meanMeridional averageMeridional standard deviationMeridional variancevertminvertmaxvertsumvertmeanvertavgvertstdVertical minimumVertical maximumVertical sumVertical meanVertical averageVertical standard deviationselminselmaxselsumselmeanselavgselstdTime range minimumTime range maximumTime range sumTime range meanTime range averageTime range standard deviationrunminrunmaxrunsumrunmeanrunavgrunstdRunning minimumRunning maximumRunning sumRunning meanRunning averageRunning standard deviationtimmintimmaxtimsumtimmeantimavgtimstdTime minimumTime maximumTime sumTime meanTime averageTime standard deviationhourminhourmaxhoursumhourmeanhouravghourstdHourly minimumHourly maximumHourly sumHourly meanHourly averageHourly standard deviation58


Reference manualStatistical valuesdaymindaymaxdaysumdaymeandayavgdaystdmonminmonmaxmonsummonmeanmonavgmonstdyearminyearmaxyearsumyearmeanyearavgyearstdseasminseasmaxseassumseasmeanseasavgseasstdydayminydaymaxydaymeanydayavgydaystdymonminymonmaxymonmeanymonavgymonstdyseasminyseasmaxyseasmeanyseasavgyseasstdDaily minimumDaily maximumDaily sumDaily meanDaily averageDaily standard deviationMonthly minimumMonthly maximumMonthly sumMonthly meanMonthly averageMonthly standard deviationYearly minimumYearly maximumYearly sumYearly meanYearly averageYearly standard deviationSeasonally minimumSeasonally maximumSeasonally sumSeasonally meanSeasonally averageSeasonally standard deviationMulti-year daily minimumMulti-year daily maximumMulti-year daily meanMulti-year daily averageMulti-year daily standard deviationMulti-year monthly minimumMulti-year monthly maximumMulti-year monthly meanMulti-year monthly averageMulti-year monthly standard deviationMulti-year seasonally minimumMulti-year seasonally maximumMulti-year seasonally meanMulti-year seasonally averageMulti-year seasonally standard deviation59


Statistical valuesReference manual2.8.1. ENSSTAT - Statistical values over an ensembleSynopsis ifiles ofileDescriptionThis module computes statistical values over an ensemble of input files. Depending on the actualoperator the minimum, maximum, sum, average or standard deviation over all input files is writtento ofile. The date information for a time step in ofile is the date of the first input file.<strong>Operators</strong>ensminensmaxenssumensmeanensavgensstdensvarEnsemble minimumo(t, x) = min{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}Ensemble maximumo(t, x) = max{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}Ensemble sumo(t, x) = sum{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}Ensemble meano(t, x) = mean{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}Ensemble averageo(t, x) = avg{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}Ensemble standard deviationo(t, x) = std{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}Ensemble varianceo(t, x) = var{i 1 (t, x), i 2 (t, x), · · · , i n (t, x)}ExampleTo compute the ensemble mean over 6 input files, use:cdo ensmean i f i l e 1 i f i l e 2 i f i l e 3 i f i l e 4 i f i l e 5 i f i l e 6 o f i l eOr shorter with filename substitution:cdo ensmean i f i l e [1 −6] o f i l e60


Reference manualStatistical values2.8.2. FLDSTAT - Statistical values over a fieldSynopsis ifile ofileDescriptionThis module computes statistical values of the input fields. According to the actual operator the fieldminimum, maximum, sum, average, standard deviation or variance is written to ofile.<strong>Operators</strong>fldminfldmaxfldsumfldmeanfldavgfldstdfldvarField minimumFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = min{i(t, x ′ ), x 1 < x ′ ≤ x n }Field maximumFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = max{i(t, x ′ ), x 1 < x ′ ≤ x n }Field sumFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = sum{i(t, x ′ ), x 1 < x ′ ≤ x n }Field meanFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = mean{i(t, x ′ ), x 1 < x ′ ≤ x n }weighted by area weights obtained by the input field.Field averageFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = avg{i(t, x ′ ), x 1 < x ′ ≤ x n }weighted by area weights obtained by the input field.Field standard deviationFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = std{i(t, x ′ ), x 1 < x ′ ≤ x n }weighted by area weights obtained by the input field.Field varianceFor every gridpoint x 1 , ..., x n of the same field, it is:o(t, 1) = var{i(t, x ′ ), x 1 < x ′ ≤ x n }weighted by area weights obtained by the input field.ExampleTo compute the field mean of all input fields, use:cdo fldmean i f i l e o f i l e61


Statistical valuesReference manual2.8.3. ZONSTAT - Zonal statistical valuesSynopsis ifile ofileDescriptionThis module computes zonal statistical values of the input fields. According to the actual operatorthe zonal minimum, maximum, sum, average, standard deviation or variance is written to ofile. Allinput fields must have the same rectangular grid.<strong>Operators</strong>zonminzonmaxzonsumzonmeanzonavgzonstdzonvarZonal minimumFor every latitude the minimum over all longitudes is computed.Zonal maximumFor every latitude the maximum over all longitudes is computed.Zonal sumFor every latitude the sum over all longitudes is computed.Zonal meanFor every latitude the mean over all longitudes is computed.Zonal averageFor every latitude the average over all longitudes is computed.Zonal standard deviationFor every latitude the standard deviation over all longitudes is computed.Zonal varianceFor every latitude the variance over all longitudes is computed.ExampleTo compute the zonal mean of all input fields, use:cdo zonmean i f i l e o f i l e62


Reference manualStatistical values2.8.4. MERSTAT - Meridional statistical valuesSynopsis ifile ofileDescriptionThis module computes meridional statistical values of the input fields. According to the actualoperator the meridional minimum, maximum, sum, average, standard deviation or variance is writtento ofile. All input fields must have the same rectangular grid.<strong>Operators</strong>merminmermaxmersummermeanmeravgmerstdmervarMeridional minimumFor every longitude the minimum over all latitudes is computed.Meridional maximumFor every longitude the maximum over all latitudes is computed.Meridional sumFor every longitude the sum over all latitudes is computed.Meridional meanFor every longitude the area weighted mean over all latitudes is computed.Meridional averageFor every longitude the area weighted average over all latitudes is computed.Meridional standard deviationFor every longitude the standard deviation over all latitudes is computed.Meridional varianceFor every longitude the variance over all latitudes is computed.ExampleTo compute the meridional mean of all input fields, use:cdo mermean i f i l e o f i l e63


Statistical valuesReference manual2.8.5. VERTSTAT - Vertical statistical valuesSynopsis ifile ofileDescriptionThis module computes statistical values over all levels of the input variables. According to actualoperator the vertical minimum, maximum, sum, average, standard deviation or variance is written toofile.<strong>Operators</strong>vertminvertmaxvertsumvertmeanvertavgvertstdVertical minimumFor every gridpoint the minimum over all levels is computed.Vertical maximumFor every gridpoint the maximum over all levels is computed.Vertical sumFor every gridpoint the sum over all levels is computed.Vertical meanFor every gridpoint the mean over all levels is computed.Vertical averageFor every gridpoint the average over all levels is computed.Vertical standard deviationFor every gridpoint the standard deviation over all levels is computed.ExampleTo compute the vertical sum of all input variables, use:cdo vertsum i f i l e o f i l e64


Reference manualStatistical values2.8.6. SELSTAT - Time range statistical valuesSynopsis,nsets[,noffset[,nskip]] ifile ofileDescriptionThis module computes statistical values for a selected number of time steps. According to the actualoperator the average, minimum, maximum, sum, average or standard deviation of the selected timesteps is written to ofile.<strong>Operators</strong>selminselmaxselsumselmeanselavgselstdTime range minimumFor every adjacent sequence t 1 , ..., t n of timesteps of the same selected time range, it is:o(t, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Time range maximumFor every adjacent sequence t 1 , ..., t n of timesteps of the same selected time range, it is:o(t, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Time range sumFor every adjacent sequence t 1 , ..., t n of timesteps of the same selected time range, it is:o(t, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Time range meanFor every adjacent sequence t 1 , ..., t n of timesteps of the same selected time range, it is:o(t, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Time range averageFor every adjacent sequence t 1 , ..., t n of timesteps of the same selected time range, it is:o(t, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Time range standard deviationFor every adjacent sequence t 1 , ..., t n of timesteps of the same selected time range, it is:o(t, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }Parameternsets INTEGER Number of input time steps for each output time stepnoffset INTEGER Number of input time steps skipped before the first time step range (optional)nskip INTEGER Number of input time steps skipped between time step ranges (optional)ExampleAssume an input dataset has monthly means over several years. To compute seasonal means frommonthly means the first two month must be skipped:cdo selmean , 3 , 2 i f i l e o f i l e65


Statistical valuesReference manual2.8.7. RUNSTAT - Running statistical valuesSynopsis,nts ifile ofileDescriptionThis module computes running statistical values over a selected number of time steps. Depending onthe actual operator the minimum, maximum, sum, average or standard deviation of a selected numberof consecutive time steps read from ifile is written to ofile. The date information in ofile is thedate of the medium contributing time step in ifile.<strong>Operators</strong>runminrunmaxrunsumrunmeanrunavgrunstdRunning minimumo(t + (nts − 1)/2, x) = min{i(t, x), i(t + 1, x), ..., i(t + nts − 1, x)}Running maximumo(t + (nts − 1)/2, x) = max{i(t, x), i(t + 1, x), ..., i(t + nts − 1, x)}Running sumo(t + (nts − 1)/2, x) = sum{i(t, x), i(t + 1, x), ..., i(t + nts − 1, x)}Running meano(t + (nts − 1)/2, x) = mean{i(t, x), i(t + 1, x), ..., i(t + nts − 1, x)}Running averageo(t + (nts − 1)/2, x) = avg{i(t, x), i(t + 1, x), ..., i(t + nts − 1, x)}Running standard deviationo(t + (nts − 1)/2, x) = std{i(t, x), i(t + 1, x), ..., i(t + nts − 1, x)}Parameternts INTEGER Number of time stepsExampleTo compute the running mean over 9 time steps, use:cdo runmean , 9 i f i l e o f i l e66


Reference manualStatistical values2.8.8. TIMSTAT - Statistical values over all time stepsSynopsis ifile ofileDescriptionThis module computes statistical values over all time steps in ifile. Depending on the actual operatorthe minimum, maximum, sum, average or standard deviation of all time steps read from ifile iswritten to ofile. The date information for a time step in ofile is the date of the last contributingtime step in ifile.<strong>Operators</strong>timmintimmaxtimsumtimmeantimavgtimstdTime minimumo(1, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Time maximumo(1, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Time sumo(1, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Time meano(1, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Time averageo(1, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Time standard deviationo(1, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }ExampleTo compute the mean over all input time steps, use:cdo timmean i f i l e o f i l e67


Statistical valuesReference manual2.8.9. HOURSTAT - Hourly statistical valuesSynopsis ifile ofileDescriptionThis module computes statistical values over time steps of the same hour. Depending on the actualoperator the minimum, maximum, sum, average or standard deviation of time steps of the same houris written to ofile. The date information for a time step in ofile is the date of the last contributingtime step in ifile.<strong>Operators</strong>hourminhourmaxhoursumhourmeanhouravghourstdHourly minimumFor every adjacent sequence t 1 , ..., t n of time steps of the same hour, it is:o(t, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Hourly maximumFor every adjacent sequence t 1 , ..., t n of time steps of the same hour, it is:o(t, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Hourly sumFor every adjacent sequence t 1 , ..., t n of time steps of the same hour, it is:o(t, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Hourly meanFor every adjacent sequence t 1 , ..., t n of time steps of the same hour, it is:o(t, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Hourly averageFor every adjacent sequence t 1 , ..., t n of time steps of the same hour, it is:o(t, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Hourly standard deviationFor every adjacent sequence t 1 , ..., t n of time steps of the same hour, it is:o(t, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }ExampleTo compute the hourly mean of a time series, use:cdo hourmean i f i l e o f i l e68


Reference manualStatistical values2.8.10. DAYSTAT - Daily statistical valuesSynopsis ifile ofileDescriptionThis module computes statistical values over time steps of the same day. Depending on the actualoperator the minimum, maximum, sum, average or standard deviation of time steps of the same dayis written to ofile. The date information for a time step in ofile is the date of the last contributingtime step in ifile.<strong>Operators</strong>daymindaymaxdaysumdaymeandayavgdaystdDaily minimumFor every adjacent sequence t 1 , ..., t n of time steps of the same day, it is:o(t, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Daily maximumFor every adjacent sequence t 1 , ..., t n of time steps of the same day, it is:o(t, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Daily sumFor every adjacent sequence t 1 , ..., t n of time steps of the same day, it is:o(t, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Daily meanFor every adjacent sequence t 1 , ..., t n of time steps of the same day, it is:o(t, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Daily averageFor every adjacent sequence t 1 , ..., t n of time steps of the same day, it is:o(t, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Daily standard deviationFor every adjacent sequence t 1 , ..., t n of time steps of the same day, it is:o(t, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }ExampleTo compute the daily mean of a time series, use:cdo daymean i f i l e o f i l e69


Statistical valuesReference manual2.8.11. MONSTAT - Monthly statistical valuesSynopsis ifile ofileDescriptionThis module computes statistical values over time steps of the same month. Depending on the actualoperator the minimum, maximum, sum, average or standard deviation of time steps of the samemonth is written to ofile. The date information for a time step in ofile is the date of the lastcontributing time step in ifile.<strong>Operators</strong>monminmonmaxmonsummonmeanmonavgmonstdMonthly minimumFor every adjacent sequence t 1 , ..., t n of time steps of the same month, it is:o(t, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Monthly maximumFor every adjacent sequence t 1 , ..., t n of time steps of the same month, it is:o(t, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Monthly sumFor every adjacent sequence t 1 , ..., t n of time steps of the same month, it is:o(t, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Monthly meanFor every adjacent sequence t 1 , ..., t n of time steps of the same month, it is:o(t, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Monthly averageFor every adjacent sequence t 1 , ..., t n of time steps of the same month, it is:o(t, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Monthly standard deviationFor every adjacent sequence t 1 , ..., t n of time steps of the same month, it is:o(t, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }ExampleTo compute the monthy mean of a time series, use:cdo monmean i f i l e o f i l e70


Reference manualStatistical values2.8.12. YEARSTAT - Yearly statistical valuesSynopsis ifile ofileDescriptionThis module computes statistical values over time steps of the same year. Depending on the actualoperator the minimum, maximum, sum, average or standard deviation of time steps of the same yearis written to ofile. The date information for a time step in ofile is the date of the last contributingtime step in ifile.<strong>Operators</strong>yearminyearmaxyearsumyearmeanyearavgyearstdYearly minimumFor every adjacent sequence t 1 , ..., t n of time steps of the same year, it is:o(t, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Yearly maximumFor every adjacent sequence t 1 , ..., t n of time steps of the same year, it is:o(t, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Yearly sumFor every adjacent sequence t 1 , ..., t n of time steps of the same year, it is:o(t, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Yearly meanFor every adjacent sequence t 1 , ..., t n of time steps of the same year, it is:o(t, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Yearly averageFor every adjacent sequence t 1 , ..., t n of time steps of the same year, it is:o(t, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Yearly standard deviationFor every adjacent sequence t 1 , ..., t n of time steps of the same year, it is:o(t, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }ExampleTo compute the yearly mean of a time series, use:cdo yearmean i f i l e o f i l e71


Statistical valuesReference manual2.8.13. SEASSTAT - Seasonally statistical valuesSynopsis ifile ofileDescriptionThis module computes statistical values over time steps of the same season. Depending on the actualoperator the minimum, maximum, sum, average or standard deviation of time steps of the sameseason is written to ofile. The date information for a time step in ofile is the date of the lastcontributing time step in ifile. Be careful about the first and the last output time step, they maybe incorrect values if the seasons have incomplete time steps.<strong>Operators</strong>seasminseasmaxseassumseasmeanseasavgseasstdSeasonally minimumFor every adjacent sequence t 1 , ..., t n of time steps of the same season, it is:o(t, x) = min{i(t ′ , x), t 1 < t ′ ≤ t n }Seasonally maximumFor every adjacent sequence t 1 , ..., t n of time steps of the same season, it is:o(t, x) = max{i(t ′ , x), t 1 < t ′ ≤ t n }Seasonally sumFor every adjacent sequence t 1 , ..., t n of time steps of the same season, it is:o(t, x) = sum{i(t ′ , x), t 1 < t ′ ≤ t n }Seasonally meanFor every adjacent sequence t 1 , ..., t n of time steps of the same season, it is:o(t, x) = mean{i(t ′ , x), t 1 < t ′ ≤ t n }Seasonally averageFor every adjacent sequence t 1 , ..., t n of time steps of the same season, it is:o(t, x) = avg{i(t ′ , x), t 1 < t ′ ≤ t n }Seasonally standard deviationFor every adjacent sequence t 1 , ..., t n of time steps of the same season, it is:o(t, x) = std{i(t ′ , x), t 1 < t ′ ≤ t n }ExampleTo compute the seasonally mean of a time series, use:cdo seasmean i f i l e o f i l e72


Reference manualStatistical values2.8.14. YDAYSTAT - Multi-year daily statistical valuesSynopsis ifile ofileDescriptionThis module writes to ofile, according to the actual operator, the minimum, maximum, sum, averageor standard deviation of each day of year in ifile. The date information in an output field is thedate of the last contributing input field.<strong>Operators</strong>ydayminydaymaxydaymeanydayavgydaystdMulti-year daily minimumo(001, x) = min{i(t, x), day(i(t)) = 001}.o(366, x) = min{i(t, x), day(i(t)) = 366}Multi-year daily maximumo(001, x) = max{i(t, x), day(i(t)) = 001}.o(366, x) = max{i(t, x), day(i(t)) = 366}Multi-year daily meano(001, x) = mean{i(t, x), day(i(t)) = 001}.o(366, x) = mean{i(t, x), day(i(t)) = 366}Multi-year daily averageo(001, x) = avg{i(t, x), day(i(t)) = 001}.o(366, x) = avg{i(t, x), day(i(t)) = 366}Multi-year daily standard deviationo(001, x) = std{i(t, x), day(i(t)) = 001}.o(366, x) = std{i(t, x), day(i(t)) = 366}ExampleTo compute the daily mean over all input years, use:cdo ydaymean i f i l e o f i l e73


Statistical valuesReference manual2.8.15. YMONSTAT - Multi-year monthly statistical valuesSynopsis ifile ofileDescriptionThis module writes to ofile, according to the actual operator, the minimum, maximum, sum, averageor standard deviation of each month of year in ifile. The date information in an output field is thedate of the last contributing input field.<strong>Operators</strong>ymonminymonmaxymonmeanymonavgymonstdMulti-year monthly minimumo(01, x) = min{i(t, x), month(i(t)) = 01}.o(12, x) = min{i(t, x), month(i(t)) = 12}Multi-year monthly maximumo(01, x) = max{i(t, x), month(i(t)) = 01}.o(12, x) = max{i(t, x), month(i(t)) = 12}Multi-year monthly meano(01, x) = mean{i(t, x), month(i(t)) = 01}.o(12, x) = mean{i(t, x), month(i(t)) = 12}Multi-year monthly averageo(01, x) = avg{i(t, x), month(i(t)) = 01}.o(12, x) = avg{i(t, x), month(i(t)) = 12}Multi-year monthly standard deviationo(01, x) = std{i(t, x), month(i(t)) = 01}.o(12, x) = std{i(t, x), month(i(t)) = 12}ExampleTo compute the monthly mean over all input years, use:cdo ymonmean i f i l e o f i l e74


Reference manualStatistical values2.8.16. YSEASSTAT - Multi-year seasonally statistical valuesSynopsis ifile ofileDescriptionThis module writes to ofile, according to the actual operator, the minimum, maximum, sum, averageor standard deviation of each season in ifile. The date information in an output field is the date ofthe last contributing input field.<strong>Operators</strong>yseasminyseasmaxyseasmeanyseasavgyseasstdMulti-year seasonally minimumo(1, x) = min{i(t, x), month(i(t)) = 12, 01, 02}o(2, x) = min{i(t, x), month(i(t)) = 03, 04, 05}o(3, x) = min{i(t, x), month(i(t)) = 06, 07, 08}o(4, x) = min{i(t, x), month(i(t)) = 09, 10, 11}Multi-year seasonally maximumo(1, x) = max{i(t, x), month(i(t)) = 12, 01, 02}o(2, x) = max{i(t, x), month(i(t)) = 03, 04, 05}o(3, x) = max{i(t, x), month(i(t)) = 06, 07, 08}o(4, x) = max{i(t, x), month(i(t)) = 09, 10, 11}Multi-year seasonally meano(1, x) = mean{i(t, x), month(i(t)) = 12, 01, 02}o(2, x) = mean{i(t, x), month(i(t)) = 03, 04, 05}o(3, x) = mean{i(t, x), month(i(t)) = 06, 07, 08}o(4, x) = mean{i(t, x), month(i(t)) = 09, 10, 11}Multi-year seasonally averageo(1, x) = avg{i(t, x), month(i(t)) = 12, 01, 02}o(2, x) = avg{i(t, x), month(i(t)) = 03, 04, 05}o(3, x) = avg{i(t, x), month(i(t)) = 06, 07, 08}o(4, x) = avg{i(t, x), month(i(t)) = 09, 10, 11}Multi-year seasonally standard deviationo(1, x) = std{i(t, x), month(i(t)) = 12, 01, 02}o(2, x) = std{i(t, x), month(i(t)) = 03, 04, 05}o(3, x) = std{i(t, x), month(i(t)) = 06, 07, 08}o(4, x) = std{i(t, x), month(i(t)) = 09, 10, 11}ExampleTo compute the seasonally mean over all input years, use:cdo yseasmean i f i l e o f i l e75


RegressionReference manual2.9. RegressionThis sections contains modules for linear regression of time series.Here is a short overview of all operators in this section:detrendtrendsubtrendDetrendTrendSubtract trend76


Reference manualRegression2.9.1. DETREND - Detrend time seriesSynopsisdetrend ifile ofileDescriptionEvery time series in ifile is linearly detrended. For every field element x only those time steps tbelong to the sample S(x), which have i(t, x) ≠ miss. With⎛⎞1 ∑a(x) =i(t, x) − b(x) ⎝ 1 ∑t⎠#S(x)#S(x)t∈S(x)t∈S(x)andb(x) =∑t∈S(x)(i(t, x) − 1#S(x)∑t∈S(x)(∑t ′ ∈S(x)i(t ′ , x)t − 1#S(x)) (∑t ′ ∈S(x)t − 1#S(x)t ′ ) 2∑t ′ ∈S(x)t ′ )it iso(t, x) = i(t, x) − (a(x) + b(x)t)This operator has to keep the fields of all time steps concurrently in the memory.memory is available, use the operators trend and subtrend.If not enoughExampleTo detrend the data in ifile and to store the detrended data in ofile, use:cdo detrend i f i l e o f i l e77


RegressionReference manual2.9.2. TREND - Trend of time seriesSynopsistrend ifile ofile1 ofile2DescriptionThe values of the input file ifile are assumed to be distributed as N(a + bt, σ 2 ) with unknown a,b and σ 2 . This operator estimates the parameter a and b. For every field element x only those timesteps t belong to the sample S(x), which have i(t, x) ≠ miss. It is⎛⎞o 1 (1, x) =1#S(x)∑t∈S(x)i(t, x) − b(x)⎝ 1#S(x)∑t∈S(x)t⎠ando 2 (1, x) =∑t∈S(x)(i(t, x) − 1#S(x)∑t∈S(x)(∑t ′ ∈S(x)i(t ′ , x)t − 1#S(x)) (∑t ′ ∈S(x)t − 1#S(x)t ′ ) 2∑t ′ ∈S(x)t ′ )Thus the estimation for a is stored in ofile1 and that for b is stored in ofile2. To subtract thetrend from the data see operator subtrend.2.9.3. SUBTREND - Subtract a trendSynopsissubtrend ifile1 ifile2 ifile3 ofileDescriptionThis operator is for subtracting a trend computed by the operator trend. It iso(t, x) = i 1 (t, x) − (i 2 (1, x) + i 3 (1, x) · t)where t is the time steps.ExampleThe typical call for detrend the data in ifile and to store the detrended data in ofile is:cdo trend i f i l e a f i l e b f i l ecdo subtrend i f i l e a f i l e b f i l e o f i l eThe result is identical to operator detrend:cdo detrend i f i l e o f i l e78


Reference manualInterpolation2.10. InterpolationThis section contains modules to interpolate datasets. There are several operators to interpolate horizontalfields to a new grid. Some of those operators can handle only 2D fields on a regular rectangular grid. Verticalinterpolation of 3D variables is possible from hybrid model level to height or pressure level. Interpolationin time is possible between time steps and between years.Here is a short overview of all operators in this section:remapbilremapbicremapconremapdisgenbilgenbicgencongendisremapinterpolateintgridbilml2plml2hlinttimeintyearBilinear interpolationBicubic interpolationConservative remappingDistance-weighted averagingGenerate bilinear interpolation weightsGenerate bicubic interpolation weightsGenerate conservative interpolation weightsGenerate distance-weighted averaging weightsSCRIP grid remappingPINGO grid interpolationBilinear grid interpolationModel to pressure level interpolationModel to height level interpolationTime interpolationYear interpolation79


InterpolationReference manual2.10.1. REMAPGRID - SCRIP grid interpolationSynopsis,grid ifile ofileDescriptionThis module contains operators to interpolate all input fields to a new grid. Each operator is usinga different remapping method. The interpolation is based on a special SCRIP library version. For adetailed description of the remapping methods see [SCRIP].<strong>Operators</strong>remapbilremapbicremapconremapdisBilinear interpolationPerforms a bilinear interpolation on all input fields. This interpolation method worksonly on rectangular grids.Bicubic interpolationPerforms a bicubic interpolation on all input fields. This interpolation method worksonly on rectangular grids.Conservative remappingPerforms a first order conservative remapping on all input fields.Distance-weighted averagingPerforms a distance-weighted average of the four nearest neighbor values on all inputfields.Parametergrid STRING Target grid description file or nameEnvironmentNORMALIZE OPTThis variable is used to choose the normalization of the conservative remapping.By default, NORMALIZE OPT is set to be ’fracarea’ and will includethe destination area fraction in the output weights; other options are ’none’ and’destarea’ (for more information see [SCRIP]).NoteFor this program the author has converted the original Fortran 90 SCRIP software to ANSI C. Incase of any problems send a bug report to <strong>CDO</strong> and not to SCRIP!ExampleSay ifile contains fields on a rectangular grid. Remap all fields bilinear to a T42 gaussian grid:cdo remapbil , t 4 2 g r i d i f i l e o f i l e80


Reference manualInterpolation2.10.2. GENWEIGHTS - Generate SCRIP grid interpolation weightsSynopsis,grid ifile ofileDescriptionGrid interpolation can be a very time consuming process. Especially if the data is on an unstructuredor on a large grid. In this case the SCRIP interpolation process can be split into two parts. Firstgeneration of the interpolation weights, this is the most time consuming part. These interpolationweights can be reused for every remapping process. This method works only if all input fields are onthe same grid and a possibly mask (missing values) does not change. This module contains operatorsto generate SCRIP interpolation weights of the first input field. Each operator is using a differentinterpolation method.<strong>Operators</strong>genbilgenbicgencongendisGenerate bilinear interpolation weightsGenerates bilinear interpolation weights and write the result to a file. This interpolationmethod works only on rectangular grids.Generate bicubic interpolation weightsGenerates bicubic interpolation weights and write the result to a file. This interpolationmethod works only on rectangular grids.Generate conservative interpolation weightsGenerates first order conservative interpolation weights and write the result to a file.Generate distance-weighted averaging weightsGenerates distance-weighted average weights of the four nearest neighbor values and writethe result to a file.Parametergrid STRING Target grid description file or nameEnvironmentNORMALIZE OPTThis variable is used to choose the normalization of the conservative interpolation.By default, NORMALIZE OPT is set to be ’fracarea’ and will includethe destination area fraction in the output weights; other options are ’none’ and’destarea’ (for more information see [SCRIP]).NoteFor this program the author has converted the original Fortran 90 SCRIP software to ANSI C. Incase of any problems send a bug report to <strong>CDO</strong> and not to SCRIP!ExampleSay ifile contains fields on a rectangular grid. Remap all fields bilinear to a T42 gaussian grid:cdo g e n b i l , t 4 2 g r i d i f i l e remapweights . nccdo remap , t42grid , remapweights i f i l e o f i l e81


InterpolationReference manual2.10.3. REMAP - SCRIP grid remappingSynopsisremap,grid,weights ifile ofileDescriptionThis operator remaps all input fields to a new grid. The remap type and the interpolation weightsof one grid are read from a netCDF file. The netCDF file with the weights must follow the SCRIPconvention. Normaly these weights come from a previous call to module GENWEIGHTS or wascreated by the original SCRIP package.Parametergrid STRING Target grid description file or nameweights STRING Interpolation weights (SCRIP netCDF file)NoteFor this program the author has converted the original Fortran 90 SCRIP software to ANSI C. Incase of any problems send a bug report to <strong>CDO</strong> and not to SCRIP!ExampleSay ifile contains fields on a regular grid. Remap all fields bilinear to a T42 gaussian grid:cdo g e n b i l , t 4 2 g r i d i f i l e remapweights . nccdo remap , t42grid , remapweights i f i l e o f i l e82


Reference manualInterpolation2.10.4. INTGRID - Grid interpolationSynopsis,grid ifile ofileDescriptionThis module contains operators to interpolate all input fields to a new grid. All interpolation methodsin this module work only on rectangular grids.<strong>Operators</strong>interpolatePINGO grid interpolationThis is the grid interpolation from PINGO. The basis of the interpolation is an underlyingcontinuous field which is constructed in the following way. For two neighbouredlongitudes x 1 and x 2 and two neighboured latitudes y 1 and y 2 of the inputgrid every point at longitude x and latidude y with x 1 ≤ x ≤ x 2 and y 1 ≤ y ≤ y 2 isassigned the valuea = a 11 + (a 21 − a 11 ) x − x 1x 2 − x 1+ (a 12 − a 11 ) y − y 1y 2 − y 1+ (a 22 − a 21 − a 12 + a 11 ) (x − x 1)(y − y 1 )(x 2 − x 1 )(y 2 − y 1 )intgridbilwhere a ij is the value at longitude x i and latitude y j . If one of the four valuesa 11 , a 12 , a 21 , a 22 is the missing value, then a is also the missing value. Afterwardsthe underlying continuous field is expanded by a half mesh width. For a detaileddescription of this interpolation method see [PINGO].Bilinear grid interpolationPerforms a bilinear interpolation on all input fields. This implementation is a fasterthan remapbil. Missing values are not supported yet!Parametergrid STRING Target grid description file or nameExampleSay ifile contains fields on a rectangular grid. To interpolate all fields bilinear to a T42 gaussiangrid, use:cdo i n t g r i d b i l , t 4 2 g r i d i f i l e o f i l e83


InterpolationReference manual2.10.5. INTVERT - Vertical interpolationSynopsisml2pl,plevels ifile ofileml2hl,hlevels ifile ofileDescriptionInterpolate 3D variables on hybrid model level to pressure or height level. The input file must containthe log. surface pressure (LSP/code152) or the surface pressure (APS/code134). To interpolate thetemperature, the orography (GEOSP/code129) is also needed.<strong>Operators</strong>ml2plml2hlModel to pressure level interpolationInterpolates 3D variables on hybrid model level to pressure level.Model to height level interpolationInterpolates 3D variables on hybrid model level to height level. The procedure is the sameas for operator mh2pl except that the pressure levels are calculated from the heights by:plev = 101325 ∗ exp(hlev/ − 7000)Parameterplevels FLOAT Pressure levels in pascalhlevels FLOAT Height levels in meter (max level: 65535 m)EnvironmentEXTRAPOLATEIf set to 1 extrapolate missing values.ExampleTo interpolate hybrid model level data to pressure levels of 925, 850, 500 and 200 hPa, use:cdo ml2pl ,92500 ,85000 ,50000 ,20000 i f i l e o f i l e84


Reference manualInterpolation2.10.6. INTTIME - Time interpolationSynopsisinttime,date,time[,inc] ifile ofileDescriptionThis operator performs linear interpolation between time steps.Parameterdate STRING Start date (format YYYY-MM-DD)time STRING Start time (format hh:mm)inc STRING Optional increment (minutes, hours or days) [default: 0hour]ExampleAssumed a 6 hourly dataset starts at 1987-01-01 12:00. To interpolate this time series to a 2 hourlydataset, use:cdo inttime ,1987 −01 −01 ,12:00 ,2 hour i f i l e o f i l e2.10.7. INTYEAR - Year interpolationSynopsisintyear,years ifile1 ifile2 oprefixDescriptionThis operator performs linear interpolation between two years time step by time step. Appends fourdigits with the year to oprefix to form the output file names.Parameteryears INTEGER Comma separated list of yearsExampleAssumed you have two monthly mean datasets over a year. The first dataset has 12 time steps foryear 1985 and the second for year 1990. To interpolate the years between 1985 and 1990 month bymonth, use:cdo i n t y e a r ,1986 ,1987 ,1988 ,1989 i f i l e 1 i f i l e 2 yearExample result of ’dir year*’ for netCDF datasets:year1986 . nc year1987 . nc year1988 . nc year1989 . nc85


TransformationReference manual2.11. TransformationThis section contains modules to perform spectral transformations.Here is a short overview of all operators in this section:sp2gpsp2gplgp2spgp2splsp2spuv2dvdv2uvSpectral to gridpointSpectral to gridpoint linearGridpoint to spectralGridpoint to spectral linearSpectral to spectralU and V wind to divergence and vorticityDivergence and vorticity to U and V wind86


Reference manualTransformation2.11.1. SPECTRAL - Spectral transformationSynopsissp2gp ifile ofilesp2gpl ifile ofilegp2sp ifile ofilegp2spl ifile ofilesp2sp,trunc ifile ofileDescriptionThis module transforms fields on gaussian grids to spectral coefficients and vice versa.<strong>Operators</strong>sp2gpsp2gplgp2spgp2splsp2spSpectral to gridpointConvert all fields with spectral coefficients to regular gaussian grid. The number oflatitudes of the resulting gaussian grid is calculated from the triangular truncation by:nlat = NINT ((trunc ∗ 3 + 1.)/2.)Spectral to gridpoint linearConvert all fields with spectral coefficients to regular gaussian grid. The number oflatitudes of the resulting Gaussian grid is calculated from the triangular truncation by:nlat = NINT ((trunc ∗ 2 + 1.)/2.)Use this operator to convert ERA40 data e.g. from TL159 to N80.Gridpoint to spectralConvert all gaussian gridpoint fields to spectral coefficients. The triangular truncation ofthe resulting spherical harmonics is calculated from the number of latitudes by:trunc = (nlat ∗ 2 − 1)/ 3Gridpoint to spectral linearConvert all gaussian gridpoint fields to spectral coefficients. The triangular truncation ofthe resulting spherical harmonics is calculated from the number of latitudes by:trunc = (nlat ∗ 2 − 1)/ 2Use this operator to convert ERA40 data e.g. from N80 to TL159 instead of T106.Spectral to spectralChange the triangular truncation of all spectral fields. The operator performs downwardconversion by cutting the resolution. Upward conversions are achieved by filling in zeros.Parametertrunc INTEGER New spectral resolutionExampleTo transform spectral coefficients from T106 to N80 gaussian grid use:cdo sp2gp i f i l e o f i l eTo transform spectral coefficients from TL159 to N80 gaussian grid use:cdo sp2gpl i f i l e o f i l e87


TransformationReference manual2.11.2. WIND - Wind transformationSynopsis ifile ofileDescriptionThis module converts divergence and vorticity to U and V wind and vice versa.<strong>Operators</strong>uv2dvdv2uvU and V wind to divergence and vorticityCalculate spherical harmonic coefficients of divergence and vorticity from U and V wind.The divergence and vorticity must have the names sd and svo or code numbers 155 and138.Divergence and vorticity to U and V windCalculate U and V wind on a gaussian grid from spherical harmonic coefficients of divergenceand vorticity. The U and V wind must have the names u and v or the code numbers131 and 132.ExampleAssume a dataset has at least spherical harmonic coefficients of divergence and vorticity. To transformthe spectral divergence and vorticity to U and V wind, use:cdo dv2uv i f i l e o f i l e88


Reference manualFormatted I/O2.12. Formatted I/OThis section contains modules to read and write ASCII data.Here is a short overview of all operators in this section:inputinputsrvinputextoutputoutputfoutputintoutputsrvoutputextASCII inputSERVICE inputEXTRA inputASCII outputFormatted outputInteger outputSERVICE outputEXTRA output89


Formatted I/OReference manual2.12.1. INPUT - Formatted inputSynopsisinput,grid ofileinputsrv ofileinputext ofileDescriptionThis modules reads time series of one 2D variable from standard input. All input fields must havethe same horizontal grid. The format of the input depends on the actual operator.<strong>Operators</strong>inputinputsrvinputextASCII inputRead fields with ASCII numbers from standard input and stores them in ofile. Thenumbers that are read are exactly that ones which are written out by output.SERVICE inputRead fields with ASCII numbers from standard input and stores them in ofile. Eachfield must have a header of 8 integers (SERVICE likely). The numbers that are readare exactly that ones which are written out by outputsrv.EXTRA inputRead fields with ASCII numbers from standard input and stores them in ofile. Eachfield with a header of 4 integers (EXTRA likely). The numbers that are read are exactlythat ones which are written out by outputext.Parametergrid STRING Grid description file or nameExampleAssume an ASCII dataset contains a field on a global regular grid with 32 longitude and 16 latitudes(512 elements). To create a GRIB dataset from the ASCII dataset use:cdo −f grb input , r32x16 o f i l e . grb < m y a s c i i d a t a90


Reference manualFormatted I/O2.12.2. OUTPUT - Formatted outputSynopsisoutput ifilesoutputf,format,nelem ifilesoutputint ifilesoutputsrv ifilesoutputext ifilesDescriptionThis modules prints all values of all input datasets to standard output. All input fields must havethe same horizontal grid. The format of the output depends on the actual operator.<strong>Operators</strong>outputoutputfoutputintoutputsrvoutputextASCII outputPrints all values to standard output. Each row has 6 elements with the C-style format”%13.6g”.Formatted outputPrints all values to standard output. The format and number of elements for eachrow can be specified by the parameters.Integer outputPrints all values rounded to the nearest interger to standard output.SERVICE outputPrints all values to standard output. Each field with a header of 8 integers (SERVICElikely).EXTRA outputPrints all values to standard output. Each field with a header of 4 integers (EXTRAlikely).Parameterformat STRING C-style format for one element (e.g. %13.6g)nelem INTEGER Number of elements for each rowExampleTo print all field elements of a dataset formatted with ”%8.4g” and 8 values per line use:cdo outputf ,%8.4 g , 8 i f i l eExample result of a dataset with one field on 64 grid points:261.7 262 257.8 252.5 248.8 247.7 246.3 246.1250.6 252.6 253.9 254.8 252 246.6 249.7 257.9273.4 266.2 259.8 261.6 257.2 253.4 251 263.7267.5 267.4 272.2 266.7 259.6 255.2 272.9 277.1275.3 275.5 276.4 278.4 282 269.6 278.7 279.5282.3 284.5 280.3 280.3 280 281.5 284.7 283.6292.9 290.5 293.9 292.6 292.7 292.8 294.1 293.6293.8 292.6 291.2 292.6 293.2 292.8 291 291.291


MiscellaneousReference manual2.13. MiscellaneousThis section contains miscellaneous modules which do not fit to the other sections before.Here is a short overview of all operators in this section:timsortconstrandomvardupvarmulgradsdesgradsdes2rotuvbmastrfuSort over the timeCreate a constant fieldCreate a field with random valuesDuplicate variablesMultiply variablesGrADS data descriptor fileGrADS data descriptor file (version 2 map)Backward rotationMass stream function92


Reference manualMiscellaneous2.13.1. TIMSORT - TimsortSynopsistimsort ifile ofileDescriptionSorts for every field position the elements in ascending order over all time steps. After sorting it is:o(t 1 , x) < o(t 2 , x) ∀(t 1 < t 2 ), xExampleTo sort all field elements of a dataset over all time steps use:cdo t i m s o r t i f i l e o f i l e93


MiscellaneousReference manual2.13.2. VARGEN - Generate a fieldSynopsisconst,const,grid ofilerandom,grid ofileDescriptionGenerates a dataset with one field. The size of the field is specified by the user given grid description.According to the actual operator all field elements are constant or filled with random numbers.<strong>Operators</strong>constrandomCreate a constant fieldCreates a constant field. All field elements of the grid have the same value.Create a field with random valuesCreates a field with rectangularly distrubuted random numbers in the interval [0,1].Parameterconst FLOAT Constantgrid STRING Target grid description file or name2.13.3. VARDUP - Variable duplicationSynopsisvardup ifile ofilevarmul,nmul ifile ofileDescriptionDuplicates all variables of a dataset.<strong>Operators</strong>vardupvarmulDuplicate variablesDuplicates all variables.Multiply variablesMultiplies all variables.Parameternmul INTEGER Number of multiplications94


Reference manualMiscellaneous2.13.4. GRADSDES - GrADS data descriptor fileSynopsis ifileDescriptionCreates a GrADS data descriptor file. Supported file formats are GRIB, SERVICE, EXTRA andIEG. For GRIB files the GrADS map file is also generated. For SERVICE and EXTRA files the gridmust be specified with the <strong>CDO</strong> option ’-g ’. This operator takes ifile in order to createfilenames for the descriptor (ifile.ctl) and the map (ifile.gmp) file.<strong>Operators</strong>gradsdesgradsdes2GrADS data descriptor fileCreates a GrADS data descriptor file. Generated a machine specific version 1 GrADSmap file for GRIB datasets.GrADS data descriptor file (version 2 map)Creates a GrADS data descriptor file. Generated a machine independent version 2GrADS map file for GRIB datasets. This map file can be used only with GrADSversion 1.8 or newer.ExampleTo create a GrADS data descriptor file from a GRIB dataset use:cdo gradsdes i f i l e . grbThis will create a descriptor file with the name ifile.ctl and the map file ifile.gmp.Assumed the input GRIB dataset has 3 variables over 12 time steps on a T21 grid. The contents ofthe resulting GrADS data description file is approximately:DSET ˆ i f i l e . grbDTYPE GRIBINDEX ˆ i f i l e . gmpXDEF 64 LINEAR 0.000000 5.625000YDEF 32 LEVELS −85.761 −80.269 −74.745 −69.213 −63.679 −58.143−52.607 −47.070 −41.532 −35.995 −30.458 −24.920−19.382 −13.844 −8.307 −2.769 2.769 8.30713.844 19.382 24.920 30.458 35.995 41.53247.070 52.607 58.143 63.679 69.213 74.74580.269 85.761ZDEF 4 LEVELS 925 850 500 200TDEF 12 LINEAR 12:00 Z1jan1987 1moTITLE i f i l e . grb T21 g r i dOPTIONS yrevUNDEF −9e+33VARS 3geosp 0 129 ,1 ,0 s u r f a c e g e o p o t e n t i a l ( orography ) [mˆ2/ s ˆ 2 ]t 4 130 ,99 ,0 temperature [K]tslm1 0 139 ,1 ,0 s u r f a c e temperature o f land [K]ENDVARS95


MiscellaneousReference manual2.13.5. ROTUV - RotationSynopsisrotuvb,u,v,...ifile ofileDescriptionThis is a special operator for datsets with wind components on an rotated grid, e.g. data from theregional model REMO. It performs a backward transformation of velocity components U and V froman rotated spherical system to a geographical system.Parameteru,v,... STRING Pairs of zonal and meridional velocity components (use variable names orcode numbers)ExampleTo transform the u and v velocity of a dataset from an rotated spherical system to a geographicalsystem use:cdo rotuvb , u , v i f i l e o f i l e2.13.6. MASTRFU - Mass stream functionSynopsismastrfu ifile ofileDescriptionThis is a special operator for the post processing of the atmospheric general circulation modelECHAM. It computes the mass stream function (code number 272). The input dataset must bea zonal mean of v-velocity (code number 132) on pressure levels.ExampleTo compute the mass stream function from a zonal mean v-velocity dataset use:cdo mastrfu i f i l e o f i l e96


Bibliography[CDI]<strong>Climate</strong> <strong>Data</strong> Interface, from the Max Planck Institute for Meteorologie[ECHAM]The atmospheric general circulation model ECHAM5, from the Max Planck Institute for Meteorologie[GRIB]GRIB version 1, from the World Meteorological Organisation (WMO)[netCDF]NetCDF Software Package, from the UNIDATA Program Center of the University Corporation forAtmospheric Research[PINGO]The PINGO package, from the Model & <strong>Data</strong> group at the Max Planck Institute for Meteorologie[SCRIP]SCRIP Software Package, from the Los Alamos National Laboratory97


A. Hints for PINGO userSome <strong>CDO</strong> operators have the same name as in PINGO but the meaning is different. The following tablegives an overview of those operators.Operator name <strong>CDO</strong> PINGOmin Minimum of two fields Time minimummax Maximum of two fields Time maximumdaymean Daily mean Multi-year daily meandaymin Daily minimum Multi-year daily minimumdaymax Daily maximum Multi-year daily maximummonmean Monthly mean Multi-year monthly meanmonmin Monthly minimum Multi-year monthly minimummonmax Monthly maximum Multi-year monthly maximumseasmean Seasonally mean Multi-year seasonally meanThere are also some <strong>CDO</strong> operators with the same functionality as in PINGO but the name is different.The following table gives an overview of those operators.<strong>CDO</strong>PINGOMaximum of two fields max max2Minimum of two fields min min2Field mean, min, max fldmean, fldmin, fldmax meanr minr, maxrTime mean, min, max timmean, timmin, timmax mean, min, maxDaily mean, min, max daymean, daymin, daymax daymeans, daymins, daymaxsMonthly mean, min, max monmean, monmin, monmax monmeans, monmins, monmaxsYearly mean, min, max yearmean, yearmin, yearmax yearmeans, yearmins, yearmaxsRunning mean runmean runmeansSeasonally mean seasmean seasmeansMulti-year daily mean ydaymean daymeanMulti-year monthly mean ymonmean monmeanMulti-year seasonally mean yseasmean seasmean98


B. Grid description examplesB.1. Example of a curvilinear grid descriptionHere is an example for the <strong>CDO</strong> description of a curvilinear grid. xvals/yvals describes the position of the6x5 quadrilateral grid cells. The first 4 values of xbounds/ybounds are the corners of the first grid cell.g r i d t y p e : c u r v i l i n e a rg r i d s i z e : 30x s i z e : 6y s i z e : 5x v a l s : −21 −11 0 11 21 30 −25 −13 0 1325 36 −31 −16 0 16 31 43 −38 −210 21 38 52 −51 −30 0 30 51 64xbounds : −23 −14 −17 −28 −14 −5 −6 −17 −5 5 6 −65 14 17 6 14 23 28 17 23 32 38 28−28 −17 −21 −34 −17 −6 −7 −21 −6 6 7 −76 17 21 7 17 28 34 21 28 38 44 34−34 −21 −27 −41 −21 −7 −9 −27 −7 7 9 −97 21 27 9 21 34 41 27 34 44 52 41−41 −27 −35 −51 −27 −9 −13 −35 −9 9 13 −139 27 35 13 27 41 51 35 41 52 63 51−51 −35 −51 −67 −35 −13 −21 −51 −13 13 21 −2113 35 51 21 35 51 67 51 51 63 77 67y v a l s : 29 32 32 32 29 26 39 42 42 4239 35 48 51 52 51 48 43 57 6162 61 57 51 65 70 72 70 65 58ybounds : 23 26 36 32 26 27 37 36 27 27 37 3727 26 36 37 26 23 32 36 23 19 28 3232 36 45 41 36 37 47 45 37 37 47 4737 36 45 47 36 32 41 45 32 28 36 4141 45 55 50 45 47 57 55 47 47 57 5747 45 55 57 45 41 50 55 41 36 44 5050 55 64 58 55 57 67 64 57 57 67 6757 55 64 67 55 50 58 64 50 44 51 5858 64 72 64 64 67 77 72 67 67 77 7767 64 72 77 64 58 64 72 58 51 56 64Figure B.1.: Orthographic and Robinson projection of the curvilinear grid99


Example description for unstructured grid cellsGrid description examplesB.2. Example description for unstructured grid cellsHere is an example of the <strong>CDO</strong> description for unstructured grid cells. xvals/yvals describes the positionof 30 independent hexagonal grid cells. The first 6 values of xbounds/ybounds are the corners of the firstgrid cell.g r i d t y p e : c e l lg r i d s i z e : 30nvertex : 6x v a l s : −36 36 0 −18 18 108 72 54 90 180144 126 162 −108 −144 −162 −126 −72 −90 −540 72 36 144 108 −144 180 −72 −108 −36xbounds : 339 0 0 288 288 309 21 51 72 72 0 00 16 21 0 339 344 340 0 −0 344 324 32420 36 36 16 0 0 93 123 144 144 72 7272 88 93 72 51 56 52 72 72 56 36 3692 108 108 88 72 72 165 195 216 216 144 144144 160 165 144 123 128 124 144 144 128 108 108164 180 180 160 144 144 237 267 288 288 216 216216 232 237 216 195 200 196 216 216 200 180 180236 252 252 232 216 216 288 304 309 288 267 272268 288 288 272 252 252 308 324 324 304 288 288345 324 324 36 36 15 36 36 108 108 87 5720 15 36 57 52 36 108 108 180 180 159 12992 87 108 129 124 108 180 180 252 252 231 201164 159 180 201 196 180 252 252 324 324 303 273236 231 252 273 268 252 308 303 324 345 340 324y v a l s : 58 58 32 0 0 58 32 0 0 5832 0 0 58 32 0 0 32 0 0−58 −58 −32 −58 −32 −58 −32 −58 −32 −32ybounds : 41 53 71 71 53 41 41 41 53 71 71 5311 19 41 53 41 19 −19 −7 11 19 7 −11−19 −11 7 19 11 −7 41 41 53 71 71 5311 19 41 53 41 19 −19 −7 11 19 7 −11−19 −11 7 19 11 −7 41 41 53 71 71 5311 19 41 53 41 19 −19 −7 11 19 7 −11−19 −11 7 19 11 −7 41 41 53 71 71 5311 19 41 53 41 19 −19 −7 11 19 7 −11−19 −11 7 19 11 −7 11 19 41 53 41 19−19 −7 11 19 7 −11 −19 −11 7 19 11 −7−41 −53 −71 −71 −53 −41 −53 −71 −71 −53 −41 −41−19 −41 −53 −41 −19 −11 −53 −71 −71 −53 −41 −41−19 −41 −53 −41 −19 −11 −53 −71 −71 −53 −41 −41−19 −41 −53 −41 −19 −11 −53 −71 −71 −53 −41 −41−19 −41 −53 −41 −19 −11 −19 −41 −53 −41 −19 −11Figure B.2.: Orthographic and Robinson projection of the unstructured grid cells100


Operator indexAabs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52acos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52add . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54addc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53asin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52atan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52atan2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54Ccat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23chcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42chlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42chlevelc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42chlevelv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42chvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42const . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94copy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23cos . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52Ddayavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69daymax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69daymean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69daymin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69daystd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69daysum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 69delcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28delvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28detrend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 77diff . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18diffv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18div . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54divc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53divdpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56divdpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56dv2uv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Eenlarge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48ensavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60ensmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60ensmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60ensmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60ensstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60enssum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60ensvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60eq . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36eqc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37exp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52expr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51exprf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51Ffldavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61fldmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61fldmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61fldmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61fldstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61fldsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61fldvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 61Gge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36gec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37genbic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81genbil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81gencon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81gendis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81gp2sp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87gp2spl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87gradsdes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95gradsdes2 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 95griddes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21gt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36gtc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Hhouravg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68hourmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68hourmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68hourmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68hourstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68hoursum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68Iifnotthen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33ifnotthenc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34ifthen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33ifthenc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34ifthenelse . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33info . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16infov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16input . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90inputext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90inputsrv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 90101


Operator indexinterpolate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83intgridbil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83inttime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85intyear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 85invertlat . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45invertlatdata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45invertlatdes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45invertlon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45invertlondata . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45invertlondes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45Lle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36lec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37ln . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52log10 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52lt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36ltc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37Mmap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16maskindexbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46masklonlatbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46mastrfu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96max . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54meravg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63merge . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24mergetime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24mermax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63mermean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63mermin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63merstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63mersum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63mervar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63min . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54ml2hl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84ml2pl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 84monavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70monmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70monmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70monmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70monstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70monsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 70mul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54mulc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53muldpm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56muldpy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56Nncode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ndate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36nec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37nlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19nmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19ntime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19nvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19nyear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19Operator indexOoutput . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91outputext . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91outputf . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91outputint . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91outputsrv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91Rrandom . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94remap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 82remapbic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80remapbil . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80remapcon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80remapdis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 80replace . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23rotuvb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 96runavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66runmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66runmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66runmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66runstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66runsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 66Sseasavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72seasmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72seasmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72seasmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72seasstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72seassum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 72selavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65selcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28seldate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28selgridname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28selhour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selindexbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31sellevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28sellonlatbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31selmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65selmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65selmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65selmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selrec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28selseas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65selstdname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28selsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 65seltabnum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28seltime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30seltimestep . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28selyear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30selzaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28selzaxisname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28setcalendar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setcindexbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47102


Operator indexOperator indexsetclonlatbox . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47setcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39setctomiss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49setdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setgatt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44setgatts . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44setgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43setgridtype . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43setlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39setmisstoc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49setmissval . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49setmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setpartab . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39setreftime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setrtomiss . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 49settaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40settime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40settunits . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39setyear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40setzaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43shifttime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40showcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showdate . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showstdname . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showtime . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20showyear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20sin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52sinfo . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17sinfop . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17sinfov . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17sp2gp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87sp2gpl . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87sp2sp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 87splitcode . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25splitday . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26splitgrid . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25splithour . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26splitlevel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25splitmon . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26splitrec . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25splitseas . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26splitvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25splityear . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26splitzaxis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25sqr . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52sqrt . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52sub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 54subc . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53subtrend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Ttan . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52timavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67timmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67timmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67timmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67timsort . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93timstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67timsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67trend . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 78Uuv2dv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 88Vvardes . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21vardup . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94varmul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 94vct . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21vertavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64vertmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64vertmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64vertmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64vertstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64vertsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64Yydayavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73ydaymax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73ydaymean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73ydaymin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73ydaystd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 73yearavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71yearmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71yearmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71yearmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71yearstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71yearsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71ymonadd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55ymonavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74ymondiv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55ymonmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74ymonmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74ymonmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74ymonmul . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55ymonstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74ymonsub . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55yseasavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75yseasmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75yseasmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75yseasmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75yseasstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 75Zzonavg . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62zonmax . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62zonmean . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62zonmin . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62zonstd . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62zonsum . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62zonvar . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62103

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!