# CAS Software

## Dave Stepaniak's Software

- (These scripts were created by Dave Stepaniak, who now works for NCAR's Research Data Archive. The scripts are also available off of Dave's Home Page.)
- Fortran 90 subroutine
`CYCLOSTATIONARY_WD`: This subroutine computes cyclostationary EOFs (CSEOFs), their principal component time series, and the percent variance explained by each CSEOF. Portions of the code are proto- typed after Dr. Kwang-Yul Kim 's (Florida State University) `cseofx.f' for cyclostationary analysis. (The _WD indicates that the dependencies`WEIGHT`and`INTEGR`are included in this subroutine. On the other hand, one must link the LAPACK library, as`SSYEV`is also a dependency and is used to compute the eigenvalues and eigenvectors of a real symmetric matrix – in this case the covariance matrix.) It is noted that the qualitative and quantitative characteristics of the ends of the output PC time series (say the first and last year of monthly mean data for example)*depend on the temporal length of the input time series*– this cannot be emphasized enough. The reason is that a localized window (approximately, a Morlet mother wavelet function to render a localized Fourier transform within the `nested period') is applied to the data – at the end points of the input time series, only half of the window is being applied,*no matter how one selects or preconditions the end portions of the data*. Hence it is best to ignore a segment of length equal to the nested period at the beginning and end of the output PC time series. -
An
`f90 makefile`for middlepark / winterpark. (Still useful in modified form for dataproc.) - C shell script
`rc2lm`for transferring files from middlepark / winterpark to local (CGD) machines by remote copy. (Severely outdated, but may still be useful for some applications in modified form.) - Fortran 90 subroutine
`native_4byte_real`: For converting a 32 bit, 4 byte, REAL from big Endian to little Endian, or conversely from little Endian to big Endian. - C function
`sysdate`: Returns the system date as a null terminated character string. - Fortran 90 FUNCTION
`V_INT_PRESS`for performing vertical integration of data archived on pressure levels. - Fortran 90 SUBROUTINE
`eof_scalar`for computing Empirical Orthogonal Functions (EOFs) of stationary scalar data fields. [Fortran 90 routines for computing complex EOFs of 2D vector fields, and extended EOFs (EEOFs) of scalar data fields, have also been written and tested and are made available upon request.] - Fortran 90 SUBROUTINE
`CCMP_ZM_MPSI`for computing a zonal mean meridional stream function based on the CCM processor definition of MPSI. - Fortran 90 SUBROUTINE
`ccm2_hydro_mat`for computing the CCM2 hydrostatic matrix**H**. An example of the use of**H**is f90 matrix-based calculations of Z2. [Z2 (a CCM Processor Code-Defined Derived Field) is the geopotential height based on the CCM2 hydrostatic formulation.] - Fortran 90 SUBROUTINE
`CCM2_Z2_sigma`for computing Z2, geopotential height based on the CCM2 hydrostatic formulation, on sigma levels. - Fortran 90 MODULE
`mod_reorder_dims`which is a generic subroutine INTERFACE and set of MODULE PROCEDURES for reordering the dimensions of multidimensional arrays of rank 2, 3, 4, and 5. - Fortran 90 SUBROUTINE
`UNBIASED_CORRELATION`for computing cross- and autocorrelations of time series. The time series may have gaps in their data. - IDL script
`RFH_NCURVE.idl`generates a relative frequency histogram for a given discrete (or nearly continuous) and presumably random variable (perhaps such as surface temperature anomalies), and overlays a normal curve with the same standard deviation as the variable and same area as its histogram.