This release is concurrent with a release of PyFerret v0.0.9, built with double-precision variables, six dimensions, and working traditional (Fortran-based) Ferret external functions. See the PyFerret Release Notes for the complete list of changes specific to PyFerret.
There is one Ferret bug fix and some new scripts released with v6.8.2.
Ferret v6.8.2 is linked with NetCDF 4.2
Bug fix:
In Ferret v6.7, we made changes so that Ferret adheres more closely with the CF conventions for axis directions. In v6.7 through 6.81, this did not extend to dimensions in netCDF and OPeNDAP datasets which do not also have a coordinate axis associated with them. That is, there may be dimensions which are intended to be interpreted just as an abstract axis in a grid, and they do not have a corresponding coordinate variable with attributes. Ferret was still using the names of these dimensions to set their direction, so that a dimension called "t_station" was given a T direction, and eta_psi was given an E dimension (in 6D Ferret). This is changed so that the directions are determined by the position of dimensions in the grids of variables. If directions also have a coordinate variable, the attributes of the coordinate variable are used to set the direction of the axis.
New scripts:
1) Vertical "land" scripts, which use one of the topography datasets to show where the ocean bottom is with a line or by shading below the bottom of the sea:
vland.jnl: Draw a vertical bathymetry line showing a slice in the x or y direction
vfland.jnl: Draw a filled vertical bathymetry slice in the x or y direction
The script for these images is below.
script:
yes? use levitus_climatology yes? set win/siz=0.5/asp=2 ! Draw a vertical section plotyes ? set view upper yes? shade/x=48E:98E/y=10n salt yes? fill/over/nolab/x=48E:98E/y=10n salt ! Draw a line showing the bottom of the sea yes? go vland 20 thick x=48E:98e y=10n ! Start with the same section plot yes? set view lower yes? shade/x=48E:98E/y=10n salt yes? fill/over/nolab/x=48E:98E/y=10n salt ! Fill below the ocean bottom yes? go vfland 20 gray x=48E:98e y=10n
Of course you can combine these to make the ocean bottom with a filled and outlined area:
! Gray ocean-bottom fill, with a blue outline: yes? go vfland 20 gray x=0:40 y=35 yes? go vland 20 blue x=0:40 y=35
Unlike the XY scripts, we MUST specify the x and y region, and these always draw an overlay; they do not have a "basemap" option.
2) Additional "polytube" scripts. The existing script, polytube.jnl, defines and draws polygons using the midpoints of the locations on the curve. This looks fine if the points along the path are fairly dense. If there are large excursions or noticeable corners along the path, polytube cuts the corners, making quite an odd looking plot. The new script draws polygons that are "bent" around the corners that are defined by the points. This script is contributed by Ned Cokelet. Here are two plots, the upper being the plot drawn by polytube.jnl, and the lower by polytube_bent.jnl, along the path drawn with a heavy black line. The script that made this example is below the image.
The script:
yes? set win/siz=0.5/asp=2 yes? set view upper yes? yes? ! define some points and a variable "sst" at those points yes? let pi = 4.0*atan(1.0) yes? let npts = 6 ! Vary npts to get a coarser or finer trackline yes? define axis/t=0:`npts-1`:1/units=days t_ax yes? let tim = t[gt=t_ax] yes? let xpts = 180 + 50*COS(2*pi*tim/(npts-1)) yes? let ypts = 15 + 20*SIN(2*pi*tim/(npts-1)) yes? let sst = 35 - ypts + RANDN(ypts) yes? let sst1 = if (l eq 3) then sst/0 else sst ! Test function with missing value which should not plot yes? ! Draw the polytube using polytube.jnl yes? set view upper yes? go basemap x=120:250 Y=25s:65n 20 yes? go polytube polygon/over/key/title="POLYTUBE script" xpts,ypts,sst yes? plot/vs/over/nolab/line/sym/thick=2 xpts,ypts yes? ! Now draw the polytube using polytube_bent.jnl yes? set view lower yes? go basemap x=120:250 Y=25s:65n 20 yes? go polytube_bent polygon/over/key/title="POLYTUBE_BENT script" xpts,ypts,sst