NCL Home > Documentation > Functions > Climatology

# clmDayTLL

Calculates long term daily means (daily climatology) from daily data.

## Prototype

```load "\$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"  ; This library is automatically loaded
; from NCL V6.2.0 onward.
; No need for user to explicitly load.

function clmDayTLL (
x [*][*][*] : float or double,
yyyyddd [*] : integer
)

return_val [366][*][*] :  typeof(x)
```

## Arguments

x

A three-dimensional array (time, lat, lon) containing daily mean data.

yyyyddd

A one-dimensional array (same size as the "time" dimension of x) containing values of the form yyyyddd [ie: yyyy*1000 + ddd] where yyyy is a year [eg: 1993] and ddd is the sequential day of the current year [eg: Jan01=>1, Feb01=>32, etc.)

By default, this function assumes that the gregorian calendar is being used. To correcly handle other calendars, the calendar attribute must be associated with the yyyyddd argument. The user may have to be explicitly perform the assignment.

## Return value

A climatological time series where the leftmost dimension refers to the sequential day of the year.

## Description

Calculate the mean annual cycle from daily data. The return array will give the raw climatology at each grid point

```
x(time,lat,lon)  <==== input dimension order

non-Leap  yyyyddd
1905001 =>  Jan  1, 1905
1905032 =>  Feb  1, 1905
1905059 =>  Feb 28, 1905
1905060 =>  Mar  1, 1905
1905365 =>  Dec 31, 1905

Leap      yyyyddd
1908001 =>  Jan  1, 1908
1908032 =>  Feb  1, 1908
1908059 =>  Feb 28, 1908
1908060 =>  Feb 29, 1908
1908061 =>  Mar  1, 1908
1908366 =>  Dec 31, 1908
```

## Examples

Please see: MJO_CLIVAR: Example 2 for a visual example.

Example 1

Compute the daily climatologies. The input is mean daily 500 hPa heights spanning 1990-1999. The values are packed as type short and the time is in units "hours since 1-1-1 00:00:0". There was no calendar attribute associated with the 'time' dimension/variable. Hence, a gregorian calendar is assumed. Still, the example shows how a user might check if the calendar attribute exists and associate it with the required variables.

```;;The following library is loaded by default in NCL V6.2.0 and newer
:
:
diri    = "./"                             ; input directory
fili    = "HGT.nc"                         ; input file
f       = addfile (diri+fili , "r")
;***********************************************************
; Read time and create required yyyyddd
; NOte the tests for a calendar attribute are necessary for non-gregorian calendars
;***********************************************************
time    = f->time                          ; time:units = "hours since 1-1-1 00:00:0.0"
TIME    = cd_calendar(time, 0)             ; type float
year    = toint( TIME(:,0) )               ; toint strips meta data
month   = toint( TIME(:,1) )
day     = toint( TIME(:,2) )
; check for calendar attribute
if (isatt(TIME,"calendar")) then           ; default is gregorian
year@calendar = TIME@calendar
end if

ddd     = day_of_year(year, month, day)
if (isatt(year,"calendar")) then           ; default is gregorian
ddd@calendar = year@calendar
end if

yyyyddd = year*1000 + ddd                                    ; needed for input
if (isatt(ddd,"calendar")) then           ; default is gregorian
yyyyddd@calendar = ddd@calendar
end if

;***********************************************************
;***********************************************************
hgt     =  short2flt( f->hgt(:,0,:,:) )    ; convert to float
printVarSummary( hgt )
;***********************************************************
; Compute daily climatology: raw daily means
;***********************************************************
hClmDay    = clmDayTLL(hgt, yyyyddd)     ; daily climatology at each grid point
printVarSummary(hClmDay)
```
The (edited) output yields
```Variable: hgt
Type: float
Dimensions and sizes:   [time | 3652] x [lat | 73] x [lon | 144]
Coordinates:
time: [17435256..17522880]
lat: [90..-90]
lon: [ 0..357.5]
Number Of Attributes: 16
_FillValue :  1e+20
level :       500
long_name :   mean Daily Geopotential height
```
The climatology
```Variable: hClmDay
Type: float
Total Size: 15389568 bytes
3847392 values
Number of Dimensions: 3
Dimensions and sizes:   [year_day | 366] x [lat | 73] x [lon | 144]
Coordinates:
year_day: [1..366]
lat: [90..-90]
lon: [ 0..357.5]
Number Of Attributes: 4
long_name :   Daily Climatology: mean Daily Geopotential height
units :       m
information : Raw daily averages across all years
smoothing :   None
```

Example 2

Compute the climatological daily Outgoing Longwave Radiation (OLR) values. The 'time' uses a '360_day' ('360') calendar [time@calendar="360_day" or time@calendar="360"]. The input are daily olr values spanning 2001-2010 (10*360=3600 days). The values are packed as type short. The user must make certain that the calendar attribute is properly propogated to various functions. The code is nearly identical to Example 1 except for:

```   fili    = "olr.360_day.nc"                 ; input file

;***********************************************************
;***********************************************************
olr     =  short2flt( f->OLR )    ; convert to float
;***********************************************************
; Compute daily climatology: raw and then 'smoothed'
;***********************************************************
olrClmDay    = clmDayTLL(olr, yyyyddd)     ; daily climatology at each grid point
```
The (edited) output yields
```
Variable: olr
Type: float
Total Size: 151372800 bytes
37843200 values
Number of Dimensions: 3
Dimensions and sizes:	[time | 3600] x [lat | 73] x [lon | 144]
Coordinates:
time: [   0..3599]
lat: [90..-90]
lon: [ 0..357.5]
Number Of Attributes: 15
long_name :	Daily OLR
unpacked_valid_range :	(  0, 500 )
actual_range :	( 64.75, 344.5 )
units :	W/m^2
precision :	2
dataset :	NOAA Interpolated OLR
level_desc :	Other
statistic :	Mean
parent_stat :	Individual Obs
_FillValue_original :	32766
_FillValue :	32766
missing_value_original :	32766
valid_range :	(  0, 500 )
missing_value :	32766
```
The daily climatology:
```
Variable: olrClm
Type: float
Total Size: 15137280 bytes
3784320 values
Number of Dimensions: 3
Dimensions and sizes:	[year_day | 360] x [lat | 73] x [lon | 144]
Coordinates:
year_day: [1..360]
lat: [90..-90]
lon: [ 0..357.5]
Number Of Attributes: 5
long_name :	Daily Climatology: Daily OLR
units :	W/m^2
information :	Raw daily averages across all years
smoothing :	None
calendar :	360_day

```
Example 3

Same as Example 2 except that 'calendar="365_day': 10*365=3650 days. The file used was: "olr.365_day.nc"

```  Variable: olr
Type: float
Total Size: 153475200 bytes
38368800 values
Number of Dimensions: 3
Dimensions and sizes:   [time | 3650] x [lat | 73] x [lon | 144]
[SNIP]

-----------------------
Variable: olrClm
Type: float
Total Size: 15347520 bytes
3836880 values
Number of Dimensions: 3
Dimensions and sizes:   [year_day | 365] x [lat | 73] x [lon | 144]
Coordinates:
year_day: [1..365]
lat: [90..-90]
lon: [ 0..357.5]
```