[ncl-talk] Error in Skew-T Plotting Script
Michelle Serino
mmserino at tamu.edu
Mon Nov 9 13:48:49 MST 2015
Regarding point 1: I see that now. I am not sure what I was thinking
before, but thanks for the clarification.
Regarding point 2: I am not surprised that CAPE is calculated like that,
making the reported value that of surface-based CAPE. It seems to be
incorrect only because the surface values for T and Td are incorrect. Any
ideas why that may be? I realize that this is an analysis, but I expected
the RUC to be a little more accurate/consistent.
Thank you,
Michelle
Michelle Serino
M.S. Candidate
Texas A&M University
Atmospheric Sciences Dept.
Eller O&M, Suite 1017
College Station, TX 77843
(484) 769-0949
On Fri, Nov 6, 2015 at 3:49 PM, Dennis Shea <shea at ucar.edu> wrote:
> [1]
> ncl_filedump is a command line utility. It operates like 'ncdump -h ...'
>
> It is not meant for use within a script
>
> ---
> The same information is available within the script via
>
> dir = "/atmomounts/home/grad/mserino/Desktop/"
> fil = "ruc2anl_252_20090605_2000_000.grb"
>
> ; force a 'time' dimension
>
> setfileoption("grb","SingleElementDimensions","Initial_time")
>
> f = addfile(dir+fil,"r")
> print(f) ; same info as: ncl_fildump
> -itime rucanl_252 ....grb
>
> [2]
> Well, it seems the software used has chosen a low level to begin the
> ascent of the parcel.
> The area enclosed by the sounding (black line and dashed red line) is
> quite large.
> Why this occurred, I do not know.
>
> D
>
>
> On Fri, Nov 6, 2015 at 2:13 PM, Michelle Serino <mmserino at tamu.edu> wrote:
> > Thank you for getting back to me and for providing that script. Also,
> thank
> > you to Dave Brown for his input. I have some follow-up questions/issues:
> >
> > 1) Why isn't "ncl_filedump -itime ruc....grb" in the script that you sent
> > me? Specifically, I would use a line like "ncl_filedump -itime
> > ruc2anl_252_20090605_2300_000.grb" directly below the "setfileoption"
> line.
> > Do I not need that line to fix the dimension problem you mentioned
> earlier?
> > However, when I added that line to my code, I got a syntax error
> regarding
> > the hyphenated portion of the line. I typed it exactly as you provided
> it.
> >
> > 2) When I use my coordinates of interest (41.147, -104.801) in the script
> > you sent, I still get inaccurate values of T, Td, and CAPE. It is
> strange
> > that the output seems ok for the coordinates you tried, but not for the
> one
> > I need.
> >
> > Thanks again for your help.
> >
> > Michelle
> >
> > Michelle Serino
> > M.S. Candidate
> > Texas A&M University
> > Atmospheric Sciences Dept.
> > Eller O&M, Suite 1017
> > College Station, TX 77843
> > (484) 769-0949
> >
> > On Fri, Nov 6, 2015 at 2:52 PM, Dennis Shea <shea at ucar.edu> wrote:
> >>
> >> The attached script produces the attached png files.
> >>
> >> Good luck
> >>
> >> On Tue, Nov 3, 2015 at 9:31 PM, Dennis Shea <shea at ucar.edu> wrote:
> >> > The different dimension names returned by 'ncl_filedump' and your
> >> > script is due to the fact that your script uses
> >> >
> >> > ; force a 'time' dimension
> >> > setfileoption("grb","SingleElementDimensions","Initial_time")
> >> >
> >> > By default, ncl_filedump does not do this. However, the dimension
> >> > names will match if you force the time dimension via
> >> >
> >> > %> ncl_filedump -itime ruc....grb
> >> >
> >> > Credit to Dave Brown.
> >> >
> >> >
> >> > On Fri, Oct 23, 2015 at 11:07 AM, Michelle Serino <mmserino at tamu.edu>
> >> > wrote:
> >> >> Ok, I will install version 6.3.0. Thank you so much for your prompt
> >> >> help!
> >> >>
> >> >> Michelle Serino
> >> >> M.S. Candidate
> >> >> Texas A&M University
> >> >> Atmospheric Sciences Dept.
> >> >> Eller O&M, Suite 1017
> >> >> College Station, TX 77843
> >> >> (484) 769-0949
> >> >>
> >> >> On Fri, Oct 23, 2015 at 10:40 AM, Dennis Shea <shea at ucar.edu> wrote:
> >> >>>
> >> >>> offline
> >> >>>
> >> >>> [1] You should upgrade to 6.3.0
> >> >>>
> >> >>> [2]
> >> >>> I have attached a file that contains the 'wind_direction' and
> >> >>> 'wind_speed' functions.
> >> >>> They may seem rather complicated. In fact, they are! However, to
> >> >>> handles 'calm' conditions and various dimension issues the NCL
> >> >>> function must ve very robust.
> >> >>>
> >> >>> load "./wind.ncl"
> >> >>>
> >> >>> On Fri, Oct 23, 2015 at 9:29 AM, Michelle Serino <mmserino at tamu.edu
> >
> >> >>> wrote:
> >> >>> > I apologize for my vagueness. The error I get is "Undefined
> >> >>> > identifier:
> >> >>> > (wind_direction) is undefined, can't continue." And I forgot to
> >> >>> > include
> >> >>> > the
> >> >>> > fact that I am using version 6.0.0, but I will use the equation in
> >> >>> > place
> >> >>> > of
> >> >>> > that function for now.
> >> >>> >
> >> >>> > Michelle Serino
> >> >>> > M.S. Candidate
> >> >>> > Texas A&M University
> >> >>> > Atmospheric Sciences Dept.
> >> >>> > Eller O&M, Suite 1017
> >> >>> > College Station, TX 77843
> >> >>> > (484) 769-0949
> >> >>> >
> >> >>> > On Fri, Oct 23, 2015 at 10:23 AM, Dennis Shea <shea at ucar.edu>
> wrote:
> >> >>> >>
> >> >>> >> I added the following print statement. The 1st 10 values for each
> >> >>> >> location are below.
> >> >>> >>
> >> >>> >> wspd = sqrt(u^2 + v^2)
> >> >>> >> wdir = wind_direction(u,v,0)
> >> >>> >>
> >> >>> >> print(wspd+" "+u+" "+v+" "+wdir)
> >> >>> >>
> >> >>> >>
> >> >>> >> (0) location=(37.25,-107.75) grid=(37.2053,-107.789)
> >> >>> >> (0) 17.4863 15.6 7.9 243.142
> >> >>> >> (1) 21.3026 19.4 8.8 245.601
> >> >>> >> (2) 29.0661 28 7.8 254.434
> >> >>> >> (3) 37.2979 35.7 10.8 253.168
> >> >>> >> (4) 39.3146 36 15.8 246.304
> >> >>> >> (5) 38.2027 33.2 18.9 240.348
> >> >>> >> (6) 36.0325 30.3 19.5 237.236
> >> >>> >> (7) 34.2118 27.9 19.8 234.638
> >> >>> >> (8) 33.1622 26.3 20.2 232.474
> >> >>> >> (9) 32.453 25.4 20.2 231.506
> >> >>> >> [snip]
> >> >>> >> (0) location=(43.25,-101.75) grid=(43.1875,-101.65)
> >> >>> >> (0) 17.4152 17.3 2 263.405
> >> >>> >> (1) 23.0235 22.8 -3.2 277.989
> >> >>> >> (2) 29.3097 29.1 -3.5 276.858
> >> >>> >> (3) 43.9915 43.8 -4.1 275.348
> >> >>> >> (4) 46.5897 46.4 -4.2 275.172
> >> >>> >> (5) 41.3241 41.2 -3.2 274.441
> >> >>> >> (6) 37.191 37.1 -2.6 274.009
> >> >>> >> (7) 34.8695 34.8 -2.2 273.617
> >> >>> >> (8) 32.9439 32.9 -1.7 272.958
> >> >>> >> (9) 31.1315 31.1 -1.4 272.578
> >> >>> >>
> >> >>> >>
> >> >>> >> =====
> >> >>> >>
> >> >>> >>
> >> >>> >> When you say error you never specified the specific error
> message.
> >> >>> >>
> >> >>> >> Was it something like ' wind_direction' not found?
> >> >>> >> The 'wind_direction' function was introduced with NCL 6.1.0.
> >> >>> >> Perhaps
> >> >>> >> you have an old version of NCL. The current release is 6.3.0
> >> >>> >>
> >> >>> >> wdir = atan2(u,v)*57.29579 + 180
> >> >>> >>
> >> >>> >> On Fri, Oct 23, 2015 at 8:46 AM, Michelle Serino
> >> >>> >> <mmserino at tamu.edu>
> >> >>> >> wrote:
> >> >>> >> > For reference, this error is regarding the line that says,
> "wdir
> >> >>> >> > =
> >> >>> >> > f->wind_direction(u,v,0)."
> >> >>> >> >
> >> >>> >> > Michelle Serino
> >> >>> >> > M.S. Candidate
> >> >>> >> > Texas A&M University
> >> >>> >> > Atmospheric Sciences Dept.
> >> >>> >> > Eller O&M, Suite 1017
> >> >>> >> > College Station, TX 77843
> >> >>> >> > (484) 769-0949
> >> >>> >> >
> >> >>> >> > On Fri, Oct 23, 2015 at 9:39 AM, Michelle Serino
> >> >>> >> > <mmserino at tamu.edu>
> >> >>> >> > wrote:
> >> >>> >> >>
> >> >>> >> >> Thank you for your quick reply! To clarify, what did you
> >> >>> >> >> accomplish
> >> >>> >> >> by
> >> >>> >> >> submitting the JIRA ticket? Also, when I run your modified
> >> >>> >> >> script,
> >> >>> >> >> I
> >> >>> >> >> am now
> >> >>> >> >> getting an error that some vector subscripts need to be
> >> >>> >> >> integers.
> >> >>> >> >> Did
> >> >>> >> >> you
> >> >>> >> >> run into this as well?
> >> >>> >> >>
> >> >>> >> >> Thanks again,
> >> >>> >> >>
> >> >>> >> >> Michelle
> >> >>> >> >>
> >> >>> >> >> Michelle Serino
> >> >>> >> >> M.S. Candidate
> >> >>> >> >> Texas A&M University
> >> >>> >> >> Atmospheric Sciences Dept.
> >> >>> >> >> Eller O&M, Suite 1017
> >> >>> >> >> College Station, TX 77843
> >> >>> >> >> (484) 769-0949
> >> >>> >> >>
> >> >>> >> >> On Thu, Oct 22, 2015 at 6:55 PM, Dennis Shea <shea at ucar.edu>
> >> >>> >> >> wrote:
> >> >>> >> >>>
> >> >>> >> >>> My speculation is that different grib tables are being
> >> >>> >> >>> accessed.
> >> >>> >> >>>
> >> >>> >> >>> JIRA-2297
> >> >>> >> >>>
> >> >>> >> >>> On Thu, Oct 22, 2015 at 5:36 PM, Dennis Shea <shea at ucar.edu>
> >> >>> >> >>> wrote:
> >> >>> >> >>> > There appears to be a naming error.
> >> >>> >> >>> >
> >> >>> >> >>> > When I do
> >> >>> >> >>> >
> >> >>> >> >>> > %> ncl_filedump ruc2anl_252_20090605_2000_000.grb | less
> >> >>> >> >>> >
> >> >>> >> >>> > I get the variable names you use.
> >> >>> >> >>> >
> >> >>> >> >>> > ===
> >> >>> >> >>> >
> >> >>> >> >>> > When I execute your script I ran into errors. I inserted a
> >> >>> >> >>> >
> >> >>> >> >>> > f = addfile(...)
> >> >>> >> >>> > print(f) ; should match ncl_filedump BUT
> they
> >> >>> >> >>> > don't
> >> >>> >> >>> > ... NCL need to fix
> >> >>> >> >>> >
> >> >>> >> >>> > The variable names and dimension names are changed from the
> >> >>> >> >>> > ncl_filedump.
> >> >>> >> >>> >
> >> >>> >> >>> > I will fill out a JIRA ticket.
> >> >>> >> >>> >
> >> >>> >> >>> > However, we can use the variable names from the 'print(f)',
> >> >>> >> >>> > the
> >> >>> >> >>> > script
> >> >>> >> >>> > works correctly.
> >> >>> >> >>> >
> >> >>> >> >>> >
> >> >>> >> >>> > ===
> >> >>> >> >>> > See attached
> >> >>> >> >>> >
> >> >>> >> >>> >
> >> >>> >> >>> >
> >> >>> >> >>> >
> >> >>> >> >>> >
> >> >>> >> >>> > On Thu, Oct 22, 2015 at 4:55 PM, Michelle Serino
> >> >>> >> >>> > <mmserino at tamu.edu>
> >> >>> >> >>> > wrote:
> >> >>> >> >>> >> Good afternoon,
> >> >>> >> >>> >>
> >> >>> >> >>> >> I am modifying one of NCAR's scripts (skewt_6.ncl) to
> plot a
> >> >>> >> >>> >> skew-T
> >> >>> >> >>> >> with
> >> >>> >> >>> >> RUC2 Analysis data in grib1 format. I have modified the
> >> >>> >> >>> >> script
> >> >>> >> >>> >> accordingly
> >> >>> >> >>> >> to reflect the change in file type and to apply to the
> case
> >> >>> >> >>> >> I am
> >> >>> >> >>> >> studying,
> >> >>> >> >>> >> but most everything else I have left as it was originally.
> >> >>> >> >>> >> I am
> >> >>> >> >>> >> receiving
> >> >>> >> >>> >> an error that, after some extensive research and
> attempts, I
> >> >>> >> >>> >> have
> >> >>> >> >>> >> been
> >> >>> >> >>> >> unable to fix, so I appreciate any help that anyone can
> >> >>> >> >>> >> provide.
> >> >>> >> >>> >>
> >> >>> >> >>> >> My code:
> >> >>> >> >>> >>
> >> >>> >> >>> >> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"
> >> >>> >> >>> >>
> >> >>> >> >>> >> load
> "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"
> >> >>> >> >>> >>
> >> >>> >> >>> >> load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/skewt_func.ncl"
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> begin
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; --- Read RUC GRIB file------------;
> >> >>> >> >>> >>
> >> >>> >> >>> >> dir = "/atmomounts/home/grad/mserino/Desktop/"
> >> >>> >> >>> >>
> >> >>> >> >>> >> fil = "ruc2anl_252_20090605_2000_000.grb"
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; force a 'time' dimension
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> setfileoption("grb","SingleElementDimensions","Initial_time")
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> f = addfile(dir+fil,"r")
> >> >>> >> >>> >>
> >> >>> >> >>> >> p = int2flt(f->lv_ISBL2) ; (
> lv_ISBL2
> >> >>> >> >>> >> )
> >> >>> >> >>> >>
> >> >>> >> >>> >> time = f->initial_time0_encoded ; yyyymmddhh.hh_frac
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; RUC grid point locations
> >> >>> >> >>> >>
> >> >>> >> >>> >> lat2d = f->gridlat_252 ; ( ygrid_0,
> xgrid_0
> >> >>> >> >>> >> )
> >> >>> >> >>> >>
> >> >>> >> >>> >> lon2d = f->gridlon_252
> >> >>> >> >>> >>
> >> >>> >> >>> >> print("lat2d: min="+min(lat2d)+" ; max="+max(lat2d))
> >> >>> >> >>> >>
> >> >>> >> >>> >> print("lon2d: min="+min(lon2d)+" ; max="+max(lon2d))
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ;p = p*0.01 ; change units
> >> >>> >> >>> >>
> >> >>> >> >>> >> p at units = "hPa" ; skewT,
> mixhum_ptrh
> >> >>> >> >>> >> use
> >> >>> >> >>> >> mb
> >> >>> >> >>> >> (hPa)
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; --- Specify one or more locations
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> lat = (/ 37.25 , 43.25 /)
> >> >>> >> >>> >>
> >> >>> >> >>> >> lon = (/-107.75 ,-101.75 /)
> >> >>> >> >>> >>
> >> >>> >> >>> >> npts = dimsizes(lat)
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; create plot(s)
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> skewtOpts = True
> >> >>> >> >>> >>
> >> >>> >> >>> >> skewtOpts at DrawColAreaFill = True ; default is
> False
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> dataOpts = True
> >> >>> >> >>> >>
> >> >>> >> >>> >> dataOpts at PrintZ = True
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> do n=0,npts-1 ; loop over each grid pt
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; find grid point nearest the user specified
> >> >>> >> >>> >> location
> >> >>> >> >>> >>
> >> >>> >> >>> >> nm = getind_latlon2d (lat2d,lon2d, lat(n),
> lon(n))
> >> >>> >> >>> >>
> >> >>> >> >>> >> nn = nm(0,0)
> >> >>> >> >>> >>
> >> >>> >> >>> >> mm = nm(0,1)
> >> >>> >> >>> >>
> >> >>> >> >>> >> print("location=("+lat(n)+","+lon(n)+")
> >> >>> >> >>> >> grid=("+lat2d(nn,mm)+","+lon2d(nn,mm)+")")
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> tk = f->TMP_252_ISBL(0,:,nn,mm)
> >> >>> >> >>> >>
> >> >>> >> >>> >> z = f->HGT_P0_252_ISBL(0,:,nn,mm)
> >> >>> >> >>> >>
> >> >>> >> >>> >> rh = f->R_H_P0_252_ISBL(0,:,nn,mm)
> >> >>> >> >>> >>
> >> >>> >> >>> >> u = f->U_GRD_252_ISBL(0,:,nn,mm)
> >> >>> >> >>> >>
> >> >>> >> >>> >> v = f->V_GRD_252_ISBL(0,:,nn,mm)
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; change units and calculate needed variables
> >> >>> >> >>> >>
> >> >>> >> >>> >> tc = tk - 273.15
> >> >>> >> >>> >>
> >> >>> >> >>> >> tc at units= "degC"
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> q = mixhum_ptrh (p, tk, rh, 2)
> >> >>> >> >>> >>
> >> >>> >> >>> >> q at units = "kg/kg"
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> tdc = dewtemp_trh(tk,rh) - 273.15
> >> >>> >> >>> >>
> >> >>> >> >>> >> tdc at units = "degC"
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> wspd = sqrt(u^2 + v^2)
> >> >>> >> >>> >>
> >> >>> >> >>> >> wdir = wind_direction(u,v,0)
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> itime= toint(time)
> >> >>> >> >>> >>
> >> >>> >> >>> >> skewtOpts at tiMainString = "RUC: "+itime+":
> >> >>> >> >>> >> ("+lat(n)+","+lon(n)+")"
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ; each location will have a different file name
> >> >>> >> >>> >>
> >> >>> >> >>> >> wks = gsn_open_wks ("png",
> >> >>> >> >>> >> "ruc2anl_skewt_"+itime+"_"+sprinti("%0.3i",n))
> >> >>> >> >>> >>
> >> >>> >> >>> >> skewt_bkgd = skewT_BackGround (wks, skewtOpts)
> >> >>> >> >>> >>
> >> >>> >> >>> >> skewt_data = skewT_PlotData (wks, skewt_bkgd,
> >> >>> >> >>> >> p,tc,tdc,z,
> >> >>> >> >>> >> wspd,wdir, dataOpts)
> >> >>> >> >>> >>
> >> >>> >> >>> >> draw (skewt_bkgd)
> >> >>> >> >>> >>
> >> >>> >> >>> >> draw (skewt_data)
> >> >>> >> >>> >>
> >> >>> >> >>> >> frame(wks)
> >> >>> >> >>> >>
> >> >>> >> >>> >> end do
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> end
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> The error I get regards the lines in red:
> >> >>> >> >>> >>
> >> >>> >> >>> >> Either file (f) isn't defined or variable (lv_ISBL2) is
> not
> >> >>> >> >>> >> a
> >> >>> >> >>> >> variable
> >> >>> >> >>> >> in
> >> >>> >> >>> >> the file
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> The correct file, f, is defined because I am able to print
> >> >>> >> >>> >> its
> >> >>> >> >>> >> contents.
> >> >>> >> >>> >> The variable "lv_ISBL2" is also a defined variable in the
> >> >>> >> >>> >> file,
> >> >>> >> >>> >> so
> >> >>> >> >>> >> I
> >> >>> >> >>> >> am not
> >> >>> >> >>> >> sure why it is not recognized. My code is attached, and
> the
> >> >>> >> >>> >> RUC2
> >> >>> >> >>> >> data
> >> >>> >> >>> >> are
> >> >>> >> >>> >> available at the link below. Thank you again, and I look
> >> >>> >> >>> >> forward
> >> >>> >> >>> >> to
> >> >>> >> >>> >> hearing
> >> >>> >> >>> >> from you.
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> ruc2anl_252_20090605_2000_000.grb
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> Best regards,
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> Michelle Serino
> >> >>> >> >>> >> M.S. Candidate
> >> >>> >> >>> >> Texas A&M University
> >> >>> >> >>> >> Atmospheric Sciences Dept.
> >> >>> >> >>> >> Eller O&M, Suite 1017
> >> >>> >> >>> >> College Station, TX 77843
> >> >>> >> >>> >> (484) 769-0949
> >> >>> >> >>> >>
> >> >>> >> >>> >>
> >> >>> >> >>> >> _______________________________________________
> >> >>> >> >>> >> 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/20151109/0b635d79/attachment.html
More information about the ncl-talk
mailing list