NCL Website header
NCL Home > Documentation > Functions > Meteorology

rigrad_bruntv_atm

Compute the atmospheric gradient Richardson number and, optionally, the Brunt-Vaisala, buoyancy and shear.

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 rigrad_bruntv_atm (
		thv     : numeric,  ; float, double, integer only
		u       : numeric,  
		v       : numeric,  
		z       : numeric,  
		opt [1] : integer,  
		dim [1] : integer   
	)

	return_val [dimsizes(z)] :  float or double

Arguments

thv

Virtual potential temperature (K): thv = theta*(1+0.61w) where w is the dimensionless mixing ratio. Potential temperature could also be used if the mixing ratio (kg/kg) is not available.

u

Zonal wind (m/s). Same dimensionality as thv.

u

Meridional wind (m/s). Same dimensionality as thv.

z

Geometric height (m). Same dimensionality as thv.

opt

  • opt=0, Return only the gradient Richardson number as a regular variable.
  • opt=1, Return only the Brunt-Vaisala frequency as a regular variable.
  • opt=2, Return the gradient Richardson number and the Brunt-Vaisala frequency as elements of a list variable
  • opt=3, Return the gradient Richardson number, the Brunt-Vaisala frequency, the buoyancy (1/s) and the wind sheared squared as elements of a list variable

dim

The dimension of thv which corresponds to z.

Return value

A multi-dimensional array of the same size and shape as thv. The output will be double if thv is of type double.

Description

The gradient richardson number (Ri) is a dimensionless ratio. It is related to the buoyant production or consumption of turbulence divided by the shear production of turbulence. It is a criterion for assessing the stability of stratified shear flow. The atmospheric condition is favorable for the occurrence of turbulence when Ri < the critical Richardson number (=0.25). Ri is 'useful' within or near the boundary layer.


 AMS Glossary:
 BruntV: http://glossary.ametsoc.org/wiki/Brunt-v%C3%A4is%C3%A4l%C3%A4_frequency
 Ri_Num: http://glossary.ametsoc.org/wiki/Gradient_richardson_number
         The latter uses Tv and not THETAv in denominator. This is an approximation
         used by boundary layer people where Tv ~ theta,

         http://en.wikipedia.org/wiki/Richardson_number

         P.W. CHan: http://dx.doi.org/10.1088/1755-1307/1/1/012043

 Gradient Richardson Number: RI  = buoyancy/shear_flow
      A dimensionless ratio, Ri, related to the buoyant production or
      consumption of turbulence divided by the shear production of turbulence.
      It is used to indicate dynamic stability and the formation of turbulence.
      The critical Richardson number, Ric, is about 0.25 (although reported values have
      ranged from roughly 0.2 to 1.0), and flow is dynamically unstable and turbulent
      when Ri < Ric. Such turbulence happens either when the wind shear is great enough
      to overpower any stabilizing buoyant forces (numerator is positive), or when there
      is static instability (numerator is negative).

      If the Richardson number is much less than unity, buoyancy is unimportant in the flow.
      If it is much greater than unity, buoyancy is dominant (in the sense that there is
      insufficient kinetic energy to homogenize the fluids).

      Large values of Ri indicate very stable conditions while low values *may*
      indicate dynamic stability (subcritical region).

Brunt-Vaisala:
      The Brunt-Vaisala (BV) frequency at which a displaced air parcel will oscillate when 
      displaced vertically within a statically stable environment. 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)
  

See Also

brunt_vaisala_atm, eady_growth rate, static_stability, pot_temp

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

   q  = a->QVAPOR                          ; mixing ratio (kg/kg)
   q  = where(q.lt.0, 0, q)              ; ensure no negative mixing ratios
   printVarSummary(q)                    ; (Time, bottom_top, south_north, west_east)  
   printMinMax(q,0)

   th = wrf_user_getvar(a,"theta",-1)    ; potential temperature (degK)
   th = th*(1.0 + 0.61*q)                                   ; virtual potential temperature
   th@long_name = "virtual potential temperature"

   z  = wrf_user_getvar(a,"z",-1)          ; model height
   ua = wrf_user_getvar(a,"ua"   ,-1)      ; u at mass grid points
   va = wrf_user_getvar(a,"va"   ,-1)      ; v at mass grid points

 ;;Ri   = rigrad_bruntv_atm(th, ua, va, z, 0, 1 ) 
 ;;BV   = rigrad_bruntv_atm(th, ua, va, z, 1, 1 ) 
 ;;RiBV = rigrad_bruntv_atm(th, ua, va, z, 2, 1 ) 
   All  = rigrad_bruntv_atm(th, ua, va, z, 3, 1 ) 

   Ri   = All[0]     ; explicitly extract from list variable  for convenience
   BV   = All[1]     ; must use 'list' syntax  [...]
   BUOY = All[2]
   SHR2 = All[3]
   delete(All)       ; no longer needed

   printVarSummary(Ri)
   printMinMax(Ri,0)
   print("-----------------------------------------")

; print for arbitrarily chosen grid point

   pr = wrf_user_getvar(a, "pressure", -1)   ; for printing purposes only
   ix = 20        ; arbitrary
   jy = 21
   nt = 0


   p  = wrf_user_getvar(a, "pressure", -1)   ; for printing purposes only

   print( sprintf("%7.1f" ,    p(nt,:,jy,ix)) \
        + sprintf("%9.1f" ,    z(nt,:,jy,ix)) \
        + sprintf("%7.1f" ,   th(nt,:,jy,ix)) \
        + sprintf("%15.5e",   Ri(nt,:,jy,ix)) \
        + sprintf("%15.5e", BUOY(nt,:,jy,ix)) \
        + sprintf("%15.5e", SHR2(nt,:,jy,ix)) )

All input variables are 4D with dimensions:
 

    [Time | 1] x [bottom_top | 39] x [south_north | 324] x [west_east | 414]

The (edited) output is:

Variable: Ri
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: 2
  long_name :	Gradient Richardson Number
  info :	http://glossary.ametsoc.org/wiki/Gradient_richardson_number
(0)	Gradient Richardson Number: min=-1.50836e+06   max=2.02878e+08
(0)	-----------------------------------------


            P        Z     TH          Ri           BOUY           SHEAR^2
    (0)	 1009.1     29.2  298.6   -6.69352e+00   -2.94778e-05    4.40393e-06
    (1)	 1001.0     99.1  298.5   -1.17482e+01   -1.80076e-05    1.53279e-06
    (2)	  990.3    192.9  298.5   -2.16875e+01   -6.57265e-06    3.03061e-07
    (3)	  976.8    313.0  298.5   -4.05527e+01   -3.60803e-06    8.89713e-08
    (4)	  960.0    463.0  298.4    3.98499e-01    3.52946e-06    8.85689e-06
    (5)	  939.6    647.4  298.5    8.39926e-01    8.87363e-05    1.05648e-04
    (6)	  915.3    872.0  299.6    1.36544e+00    1.03845e-04    7.60522e-05
    (7)	  886.7   1142.9  300.1    1.07235e+01    1.52601e-04    1.42305e-05
    (8)	  853.8   1463.4  302.3    5.26213e+00    3.32361e-04    6.31609e-05
    (9)	  817.2   1835.1  307.2    5.66880e+00    3.04740e-04    5.37573e-05
    (10)  777.3   2258.8  309.9    3.01461e+01    1.63086e-04    5.40983e-06
    (11)  734.6   2733.7  311.8    3.26361e+02    1.23117e-04    3.77242e-07
    (12)  689.6   3259.3  313.8    1.61876e+01    1.02580e-04    6.33695e-06
    (13)  642.9   3835.0  315.4    7.42874e+00    9.19175e-05    1.23732e-05
    (14)  596.3   4442.5  317.3    3.48297e+01    1.33469e-04    3.83205e-06
    (15)  552.0   5057.9  320.7    2.06476e+01    1.73400e-04    8.39810e-06
    (16)  510.4   5674.7  324.3    9.08787e+00    1.32518e-04    1.45819e-05
    (17)  471.4   6292.0  326.1    4.43753e+00    7.01856e-05    1.58163e-05
    (18)  434.8   6907.9  327.2    1.49438e+00    9.36120e-05    6.26427e-05
    (19)  400.5   7523.3  329.9    4.89927e+00    1.20263e-04    2.45471e-05
    (20)  368.4   8139.1  332.2    1.30783e+02    1.15606e-04    8.83954e-07
    (21)  338.4   8755.4  334.8    2.43873e+02    1.02505e-04    4.20320e-07
    (22)  310.3   9372.1  336.5    1.01988e+01    9.44002e-05    9.25605e-06
    (23)  284.1   9988.7  338.8    2.42214e+00    1.21041e-04    4.99728e-05
    (24)  259.7  10606.4  341.6    7.70021e-01    1.28499e-04    1.66878e-04
    (25)  236.9  11225.7  344.3    5.75845e-01    1.01843e-04    1.76858e-04
    (26)  215.7  11845.9  346.1    1.02962e+00    6.36113e-05    6.17812e-05
    (27)  195.9  12465.8  347.1    5.01158e+00    7.17109e-05    1.43090e-05
    (28)  177.6  13085.9  349.2    6.29919e+00    1.08032e-04    1.71502e-05
    (29)  160.6  13707.9  351.9    1.21583e+00    1.78363e-04    1.46700e-04
    (30)  144.8  14335.0  357.2    3.27406e+00    2.83387e-04    8.65553e-05
    (31)  130.2  14971.9  364.9    4.61698e+00    3.22974e-04    6.99536e-05
    (32)  116.7  15621.2  372.7    2.48082e+00    4.02882e-04    1.62399e-04
    (33)  104.3  16288.0  385.1    4.04567e+00    4.56323e-04    1.12793e-04
    (34)   92.8  16976.2  397.0    8.26755e+00    4.24677e-04    5.13667e-05
    (35)   82.2  17686.4  409.1    9.70255e+00    4.07777e-04    4.20278e-05
    (36)   72.6  18420.1  421.5    1.88097e+01    4.97539e-04    2.64511e-05
    (37)   63.7  19185.4  441.2    2.31706e+01    6.30633e-04    2.72170e-05
    (38)   54.7  20094.5  469.0    1.73304e+01    6.40759e-04    3.69732e-05