brunt_vaisala_atm
Compute the Brunt-Vaisala frequency which is a measure of bouyancy in a continuously stratified atmosphere.
Available in version 6.4.0 and later.
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 brunt_vaisala_atm ( th : numeric, ; float, double, integer only z : numeric, opt [1] : integer, dim [1] : integer ) return_val [dimsizes(th)] : float or double
Arguments
thPotential temperature (K).
zGeometric height (m). Same dimensionality as th.
opt- opt=0, Return only the Brunt-Vaisala frequency as a regular variable.
- opt=1, Return the Brunt-Vaisala frequency and d(theta)/dz
The dimension number of z which corresponds to th.
Return value
An array of the same size and shape as th. The output will be double if th or z is of type double.
Description
The Brunt-Vaisala (BV) frequency (1/s) is a measure of bouyancy. In a continuously stratified fluid, it is the natural frequency of the vertical oscillation of fluid parcels. Hence, it should always be positive. However, this function will return a negative value when the vertical gradient of thv is negative. This is done for informational purposes only. The user can force only positive values via
BV = where(BV.lt.0, 0, BV)
For plotting, the returned values which have units (1/s) are often multiplied by 86400 (s/day) to get units of (1/day).
See Also
coriolis_param, pot_temp, static_stability, eady_growth_rate, rigrad_bruntv_atm
Examples
Example 1: Read data from a WRF file and calculate assorted quantities.
;---------------------------------------------------------- ; WRF DATA ;---------------------------------------------------------- a = addfile("wrfout_d01_2013-05-17_12","r") ;[Time|1]x[bottom_top|40]x[south_north|324]x[west_east|414] ; 0 1 2 3 th = wrf_user_getvar(a,"theta",-1) ; potential temperature (degK) z = wrf_user_getvar(a,"z",-1) ; model height brunt = brunt_vaisala_atm(th, z, 0, 1) ; opt=0, ndim=1 printVarSummary(brunt) printMinMax(brunt, 0) ; variable dimensions dimth = printMinMaxdimsizes(th) ntim = dimth(0) ; print all vertical values at an arbitrarily chosen grid point ix = 20 ; arbitrary jy = 21 print( sprintf("%7.1f", z(ntim-1,:,jy,ix)) \ + sprintf("%15.5e",brunt(ntim-1,:,jy,ix)) )The (edited) output is:
Variable: brunt Type: float Total Size: 20925216 bytes 5231304 values Number of Dimensions: 4 Dimensions and sizes: [Time | 1] x [bottom_top | 39] x [south_north | 324] x [west_east | 414] Coordinates: Number Of Attributes: 3 long_name : Brunt–Vaisala (buoyancy) frequency: atm units : 1/s info : http://glossary.ametsoc.org/wiki/Brunt-v%C3%A4is%C3%A4l%C3%A4_frequency (0) Brunt-Vaisala (buoyancy) frequency: atm: min=0 max=0.0743625 --- Grid Point: (20,21) ------------------------------- Z BRUNT (0) 29.2 -4.23441e-03 -> Negative d(theta)/dz (1) 99.1 -3.29972e-03 " (2) 192.9 -1.99228e-03 " (3) 313.0 -1.59737e-03 " (4) 463.0 3.77258e-03 (5) 647.4 1.02118e-02 (6) 872.0 1.06960e-02 (7) 1142.9 1.34968e-02 (8) 1463.4 1.98726e-02 (9) 1835.1 1.83999e-02 (10) 2258.8 1.26123e-02 (11) 2733.7 1.07150e-02 (12) 3259.3 9.99975e-03 (13) 3835.0 1.02520e-02 (14) 4442.5 1.24183e-02 (15) 5057.9 1.37012e-02 (16) 5674.7 1.16770e-02 (17) 6292.0 8.31896e-03 (18) 6907.9 9.73829e-03 (19) 7523.3 1.10047e-02 (20) 8139.1 1.07249e-02 (21) 8755.4 1.01392e-02 (22) 9372.1 9.75036e-03 (23) 9988.7 1.10250e-02 (24) 10606.4 1.13320e-02 (25) 11225.7 1.00888e-02 (26) 11845.9 7.97759e-03 (27) 12465.8 8.47375e-03 (28) 13085.9 1.04011e-02 (29) 13707.9 1.33597e-02 (30) 14335.0 1.68360e-02 (31) 14971.9 1.79719e-02 (32) 15621.2 2.00726e-02 (33) 16288.0 2.13622e-02 (34) 16976.2 2.06080e-02 (35) 17686.4 2.01936e-02 (36) 18420.1 2.23056e-02 (37) 19185.4 2.51125e-02 (38) 20094.5 2.53134e-02