[ncl-talk] Is the eady_growth_rate function description correct?

Rick Brownrigg brownrig at ucar.edu
Tue Aug 20 07:06:47 MDT 2019


Hi,

Below is the NCL for the function. I see that "g" is defined, but never
referenced (?), so no it is not part of the computation.

Rick

;-------------------------------
undef("eady_growth_rate")
function eady_growth_rate(th:numeric, u:numeric, z:numeric, lat:numeric,
 opt[1]:integer, ndimz[1]:integer)
;
; Maximum Eady Growth Rate
;
; Reference:
;   R. S. Lindzen and Brian Farrell, 1980:
;   A Simple Approximate Result for the Maximum Growth Rate of Baroclinic
Instabilities.
;   J. Atmos. Sci., 37, 1648–1654.
;    http://dx.doi.org/10.1175/1520-0469(1980)037<1648:ASARFT>2.0.CO;2
;
;   Simmonds, I., and E.-P. Lim (2009):
;   Biases in the calculation of Southern Hemisphere mean baroclinic eddy
growth rate
;   Geophys. Res. Lett., 36, L01707
;   doi:10.1029/2008GL036320
;
;   Vallis, G.K. (2006)
;   Atmospheric and Oceanic Dynamics: Fundamentals and Large-Scale
Circulation
;   Cambridge Univ. Press, New York.
;
; Nomenclature
; th   - potential temperature (K)
;        http://glossary.ametsoc.org/wiki/potential_temperature
;
https://www.ncl.ucar.edu/Document/Functions/Contributed/pot_temp.shtml
; u    - zonal wind components (m/s) ; same dimensionality as 'th'
; z    - height (m)
; lat  - latitude of each grid point ; same dimensionality as 'th'
; opt  - =0 (egr only);
; ndimz- dimension of 'th' for which vertical gradient is to be calculated
;        th(:), wspd(:), z(:) ..... ndimz=0
;        th(:,:,:)  , z(:) or z(:,:,:)   and the left is the vertical dim,
ndimz=0
;        th(:,:,:,:), z(:) or z(:,:,:,:) and the left is the time dimension
;                                        and the next is height,  ndimz=1
;
;
local dimth, dimu, dimz, dimth, dimlat, rankth, ranku, rankz, rankth,
ranklat \
    , u_shear, brunt, fcor, g, omega, con, rad, egr
begin
                                ; dimension checking
  dimu    = dimsizes(u)
  dimz    = dimsizes(z)
  dimth   = dimsizes(th)
  dimlat  = dimsizes(lat)

  ranku   = dimsizes(dimu)
  rankz   = dimsizes(dimz)
  rankth  = dimsizes(dimth)
  ranklat = dimsizes(dimlat)

  if (.not.(rankth.eq.ranku .and. rankth.eq.rankz .and. rankth.eq.ranklat) \
      .and. all(dimth.eq.dimu) .and. all(dimth.eq.dimz) .and.
all(dimth.eq.dimlat)) then
      print("eady_growth_rate: th, u, lat and must have the same rank &
sizes")
      print("ranku="+ranku+"  rankth="+rankth+"  rankz="+rankz+"
 ranklat="+ranklat)
      print(dimth)
      print(dimu)
      print(dimz)
      print(dimlat)
      exit
  end if

  brunt   = brunt_vaisala_atm(th, z, 0, ndimz)

  dudz    = center_finite_diff_n(u , z, False, 0, ndimz)

  copy_VarCoords(u, dudz)
  dudz at long_name  = "vertical gradient of the zonal wind (zonal wind
shear): du/dz"
  dudz at units      = "1/s"
 ;print("eady_growth_rate: dudz: min="+min(dudz)+"   max="+max(dudz))

  g     = 9.80665                    ; m/s2 ; gravity at 45 deg lat used by
the WMO
  con   = 0.3098
  fcor  = coriolis_param(lat)        ; (1/s)     ; coriolis parameter
                                     ; prevent 1/0
  if (any(brunt.eq.0)) then
      if (.not.isatt(brunt,"_FillValue")) then
          if (typeof(brunt).eq."double") then
              brunt at _FillValue = 1d20
          else
              brunt at _FillValue = 1e20
          end if
       end if
       brunt = where(brunt.eq.0, brunt at _FillValue, brunt)
  end if

  egr   = con*abs(fcor)*abs(dudz)/brunt
  egr at long_name = "maximum eady growth rate"
  egr at units     = ""
  copy_VarCoords(u, egr)

  if (opt.eq.0) then
      return (egr)
  else if (opt.eq.1) then
      return ( [/egr, dudz /] )
  else if (opt.eq.2) then
      return ( [/egr, dudz, brunt /] )
  end if
  end if
  end if

end

On Tue, Aug 20, 2019 at 6:47 AM Rohit Ghosh via ncl-talk <ncl-talk at ucar.edu>
wrote:

> Hello,
>
>
> I am going to use the eady_growth_rate function from ncl. In the
> description of the function I find the gravitation term (g) is multiplied
> while calculating the Eady growth rate. Unfortunately, I could not find g
> multiplied in any references of Eady growth rate. Moreover, multiplication
> of g would not give the units of Eady growth rate (1/s). Could you please
> confirm that if it is a typo error or this multiplication is really done
> inside the script? That would be very helpful.
>
>
>
> https://www.ncl.ucar.edu/Document/Functions/Contributed/eady_growth_rate.shtml
>
>
> Thank you very much.
>
>
> Look forward to your response.
>
>
> Regards,
>
> Rohit
> _______________________________________________
> ncl-talk mailing list
> ncl-talk at ucar.edu
> List instructions, subscriber options, unsubscribe:
> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mailman.ucar.edu/pipermail/ncl-talk/attachments/20190820/e5be2876/attachment.html>


More information about the ncl-talk mailing list