 NCL Home > Documentation > Functions > CESM

dpres_hybrid_ccm

Calculates the pressure layer thicknesses of a hybrid coordinate system.

Prototype

```	function dpres_hybrid_ccm (
ps       : numeric,
p0    : numeric,
hyai [*] : numeric,
hybi [*] : numeric
)

return_val  :  numeric
```

Arguments

ps

An array of at least 2 dimensions containing surface pressure data in Pa or hPa (mb). The two rightmost dimensions must be latitude and longitude.

p0

A scalar value equal to the surface reference pressure. Must have the same units as ps.

hyai

A one-dimensional array equal to the hybrid A interface coefficients.

Return value

If ps is two-dimensional [e.g. (lat,lon)] or three-dimensional [e.g. (time,lat,lon)] then the return array will have an additional level dimension: (lev,lat,lon) or (time,lev,lat,lon), respectively. The size of the lev dimension is one less then the size of hyai. The returned type will be double if ps is double, float otherwise.

Description

Calculates the pressure layer thicknesses of a hybrid coordinate system. This equates to the absolute value of the pressure difference between adjacent hybrid levels at each grid point. Replaces a deprecated function called dpres_hybrid.

Examples

Example 1

hyai and hybi are one-dimensional arrays of length klvl, ps is a three-dimensional array of size (ntim,nlat,nlon) in units of pascals. The returned array is four-dimensional with dimension sizes (ntim,klvl-1,nlat,mlon).

```
hyai = f->hyai ; read from a file the interface hybrid coefficients
hybi = f->hybi ; read from a file
ps   = f->PS   ; surface pressure [Pa]
p0   = 100000. ; since ps is in Pa

dph = dpres_hybrid_ccm(ps,p0,hyai,hybi)
```
Example 2

The same as example 1, but calculated in a loop. At each iteration the returned variable, dph, will be size (klvl-1,nlat,mlon)

```  do nt=0,ntim-1
dph = dpres_hybrid_ccm(ps(nt,:,:),p0,hyai,hybi)
end do
```
Example 3

Perform vertical integration of T to determine the internal energy. Note that dimension reordering is used to make "lev" the rightmost dimension.

```load "\$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

hyai = f->hyai
hybi = f->hybi
p0   = f->P0
ps   = f->PS

dp   = dpres_hybrid_ccm (ps,p0,hyai,hybi)  ; Pa [kg/(m s2)]

T    = f->T                                ; K  (time,lev,lat,lon)
cp   = 1004.                               ; J/(K kg)     [ m2/(K s2) ]
g    = 9.81                                ; m/s

Tdp  = T*dp                                ; [K kg/(m s2)]   (temporary variable)
copy_VarCoords(T, Tdp)
; vertical sum [ie integrate]
; must make "lev" rightmost dimension
;;IE   = dim_sum_Wrap( Tdp(time|:,lat|:,lon|:,lev|:) ; pre 5.1.1
IE   = dim_sum_n_Wrap( Tdp, 1)
; Internal Energy (time,lat,lon)
IE   = cp*IE/g                             ; kg/s2
IE@long_name = "Vertically Integrated Internal Energy"
IE@units     = "kg/s2"

;;IE_tavg = dim_avg_Wrap( IE(lat|:,lon|:,time|:))   ; pre 5.1.1
IE_tavg = dim_avg_n_Wrap( IE, 0)
IE@long_name = "Time Average: Vertically Integrated Internal Energy"

printVarSummary(IE)
printMinMax(IE, True)
printVarSummary(IE_tavg)
printMinMax(IE_tavg, True)

delete(Tdp)    ; no longer needed
```