CCI {cyclones} | R Documentation |
Identifies cyclones (low pressure systems) in a gridded data set using a Calculus Cyclone Identification (CCI) method (EMS04-A-00146, Benestad, R.E.; Sorteberg, A.; Chen, D. 'Storm statistics derived using a calculus-based cyclone identification method', http://www.cosis.net/members/meetings/sessions/oral_programme.php?p_id=110&s_id=1845, European Meteorological Society AC2, Nice, Sept 28, 2004). Storms are identified with longitude, latitude, and date. Also returned are estimates of local minimum pressure, max pressure gradient near storm, max geostrophic windspeed near storm, and radius of the storm. The storm location is by means of finding where first derivatives of north–south and east–west gradients both are zero. The storm radius is estimated from the points of inflexion along the latitude and longitude lines running trough the centre of the storm.
This code is the basis for the analysis carried out by Benestad et al. 'The use of a Calculus-based Cyclone Identification method for generating storm statistics' submitted to Climate Dynamics (2004).
If a north-south or east-west psl (sea level pressure) profile can be approximated as
p = p0 + sum [ a cos(w t) + b sin(w t) ]
Then the psl gradient can be estimated as:
dp/dt = sum (w[ -a sin(w t) + b cos(w w)])
The gradient in x and y directions are found after the transform
dp/dx= 1/[a cos(t)] dp(t)/dt
and
dp/dy = 1/a dp/dt
(Gill, 1982).
stopCCI
signals the CCI process to stop in a safe manner by
removing the file '.CCI.run' in the run directory.
gradient.wind
estimated the gradient wind of the data produced by
CCI after Fleagle and Businger (1980) p. 163. (eq 4.27).
Reference: Benestad & Chen (2006) 'The use of a Calculus-based Cyclone Identification method for generating storm statistics', Tellus A, in press. Benestad (2005)
CCI(maxhar=14,lplot=TRUE,nsim=10,fname="data/cyclones.Rdata", fielddata="data/nmc_slp.nc",vname="slp",cyclones=TRUE,force365.25=FALSE, x.rng=c(-80,40),y.rng=c(5,75),tslice=3652,rad=5,dx=1,dy=1, times=NULL,label=NULL,rho=1.293,nc.read.method="retrieve.nc", graph.dir="CCI.graphs/",plot.interval=50,EPS=TRUE,verbose=TRUE,accuracy=NULL) stopCCI() gradient.wind(storms=NULL,icyclone=1)
maxhar |
number of harmonics used for fit to profile (Fourier truncation) |
lplot |
TRUE: produce plots. |
nsim |
Number of simultaneous cyclones identified and saved ordered according to depth/strength. |
fname |
Name of file containing the stats of cyclones (output). |
fielddata |
Name of file (netCDF) of gridded data (input) |
vname |
Variable name of the field in 'fielddata'. |
cyclones |
TRUE: identifies cyclones, FALSE anticyclones. |
force365.25 |
TRUE - To ensure a 365.25-day year, FALSE evaluates to find the best match: 365.25-day or 360-day (model) year. |
x.rng |
Longitude region of interest. |
y.rng |
Latitude region of interest. |
tslice |
Number of maps read per chunk of data (time slice). |
rad |
Max radius of cyclone. |
dx |
Resolution in longitude (in degrees). NULL skips interpolation - uses original grid |
dy |
Resolution in latitudes (in degrees). NULL skips interpolation - uses original grid |
times |
Specify time slices for reading chunks of data. |
label |
Label for ID-purposes. |
rho |
Density of air for calculation of geostrophic wind. |
nc.read.method |
Method to read netCDF or other gridded data. Can be set to a custom made routine.THe output should be a 'field'-type object. |
graph.dir |
Name of the directory in which to store the
graphical output. Useful for checking the results, e.g. using
animate -delay 50 -pause 5 cci*.eps under Linux. |
plot.interval |
Interval between the generation of each graphical output |
EPS |
TRUE for generation of encapsulated PostScript graphics, FALSE for PNG bitmaps. PNG bitmaps are useful for animatio (e.g. animate cci*.png; http://www.imagemagick.org), whereas postscript versions are good for hard copies. |
storms |
Data object returned by CCI with cyclone statistics. |
icyclone |
Decides which cyclone to do the gradient wind estimate for (eg 1 is for the deepest cyclone, 2 for the second deepest, etc). |
verbose |
Print out diagnostics. |
accuracy |
Not yet finished. |
A list: list(lon=lon, lat, tim, psl, yy, mm, dd, i, label,
max.dpsl, max.speed, radius, rad.max.dpsl, dx, dy)
. The subobjects
lon
(longitude: units degrees), lat
(latitude: units:
degrees), psl
(local minimum pressure: units hPa),
max.dpsl
(pressure gradient: units Pa/m), max.speed
(windspeed: units m/s if the units of SLP are in hPa), and radius
(radius of the storm: units km) are
[1:nt,1:i.sim]
-matrices. v.grad
is the estimated gradient wind.
R.E. Benestad
## Not run: # Shell script for running in batch (background proccess) #! /bin/bash cat > paper20e.R << EOF library(clim.pact) library(cyclones) source("cyclones/R/cyclones.R") a<- Sys.info() dir <- switch(substr(as.character(a[4]),1,9), "saragasso"="/data1/hirham/", "stratonim"="/data1/hirham/", "virvelvin"="/home/rasmusb/data/data1/") filname.1 <- "/home/rasmusb/data/ERA40/era40_slp.nc" fname.1 <- "data/cyclones_ERA40.Rdata" vname.1 <- "msl" print("===================< ERA 15 >===================") CCI(fname="data/cyclones_ERA40_r1.Rdata",dx=1,dy=1,fielddata=filname.1, vname=vname.1,label="ERA40: slp 1-degree res.",force365.25=TRUE,lplot=FALSE) EOF nice R CMD BATCH --no-save paper20e.R paper20e.out ## End(Not run)