[Thread Prev][Thread Next][Index]

Re: vertical velocity

On Tue, 12 Mar 2002, maria lemos_diaz wrote:
> does someone have a journal which calculates vertical velocities 
> from the U, V fields?

Hi Maria and Lei,

Here's a script I wrote a while ago to compute vertical velocity, assuming
a rigid lid at the surface.  Comments or improvements from the Ferret
community would be welcome!  Cheers,


Andrew Wittenberg          Program in Atmospheric and Oceanic Sciences
andyw@splash.princeton.edu                        Princeton University

\can mode verify
! Usage: go calc_upwelling  u  v [coeff wgrid_opt outvar cu_zmax]
!                          $1 $2 [ $3       $4      $5      $6  ]
! Define a variable OUTVAR (default=W) which contains the upwelling (m/day),
! down to depth ZMAX (default = Z-range of U), calculated from zonal and
! meridional currents (U,V) which must be simple variables with (X,Y,Z) axes;
! a T axis is optional.  The horizontal currents (U,V) must be co-gridded
! and the Z axis should be a "depth" axis. (If necessary, regrid before 
! calling this routine.)  The argument COEFF may be provided
! to convert U & V to units of m/s.
! If WGRID_OPT = 0 (default), W will be staggered from the vertical
!    grid of U and V, and the W-values in each grid cell will
!    refer to the center of the W-cell; convenient for interpolation.
! If WGRID_OPT = 1, W will have the same grid as U and V, and the
!    W-values will refer to the position at the W-cell bottom.
! If WGRID_OPT = 2, W will have the same grid as U and V, and the
!    W-values will refer to the center of the W-cell.  This case
!    is INTERPOLATED from case WGRID_OPT=0; the surface-layer W[k=1]
!    is defined to be half the upwelling at that grid-cell's bottom.
! Note that if the input Z-axis is irregular, WGRID_OPT=0
!    will produce upwelling POINTS which are not precisely aligned
!    with the grid cell BOTTOMS from the currents.
! Compute upwelling (m/day) for u/v (cm/s):
!   yes? can dat/all; use u.nc; use v.nc
!   yes? let uvar = u[d=1]; let vvar = v[d=2]
!   yes? go calc_upwelling uvar vvar .01
!   yes? shade w[y=0,l=@ave]
! atw 7/99

let cu_zmax = $6"`$1,r=zend`"
let $5"w"_bottom = 86400 * $3"1" * ($1[x=@ddc,z=0:`cu_zmax`@iin] + $2[y=@ddc,z=0:`cu_zmax`@iin])

IF `$4"0" EQ 0` THEN
   ! Construct a staggered grid
   def axis/z/edges/depth/unit="`$1,r=zunit`" z_$5"w"_mid = z[gz=$1]
   let/title="upwelling"/unit="m/day" $5"w" = $5"w"_bottom[z=0:`cu_zmax`,gz=z_$5"w"_mid@asn]
IF `$4"0" EQ 1` THEN
   let/title="upwelling at cell bottom"/unit="m/day" $5"w" = $5"w"_bottom[z=0:`cu_zmax`]
IF `$4"0" EQ 2` THEN
   let $5"w"_missing = ($5"w"_bottom + $5"w"_bottom[z=@shf:-1]) / 2
   let/title="upwelling"/unit="m/day" $5"w" = IF k[g=$5"w"_bottom,z=0:`cu_zmax`] EQ 1 THEN $5"w"_bottom/2 ELSE $5"w"_missing

can var cu_zmax
set mode/last verify

[Thread Prev][Thread Next][Index]

Dept of Commerce / NOAA / OAR / PMEL / TMAP

Contact Us | Privacy Policy | Disclaimer | Accessibility Statement