From: Adam Phillips <asphilli_at_nyahnyahspammersnyahnyah>

Date: Mon Oct 31 2011 - 10:04:46 MDT

Date: Mon Oct 31 2011 - 10:04:46 MDT

Hi Erik,

Dennis has his hands full at the moment, so someone else here looked at

your code and asked me to pass it along.. They cleaned up your code a

bit, the units were changed to m/s2 as dv/dx is an acceleration, and

your center_finite_diff_n line has been changed to:

dVoverdX(:,:,nl:nl,:) = center_finite_diff_n (v(:,:,nl:nl,:), dX ,

False,0,3)

Hope that helps! Adam

-------- Original Message --------

Subject: Re: uv2vr_cfd, but only want dv/dx ?

Date: Mon, 31 Oct 2011 03:07:13 -0400

From: Erik N <nobleeu@gmail.com>

To: Dennis Shea <shea@ucar.edu>

CC: ncl-talk@ucar.edu

Hi Dennis. Thank you for the hint. My code is below.

Would the same go for calculating the du/dy term, or would it be

slightly different for the dlat and center_finite_diff loop step?

Sincerely,

Erik

;;;;;;;;;;;;;;;;;;;; NCL Script

; Script calculates dv/dx from Reanalysis II data

; This scripts has a lot of comments so that a user can learn as they go.

; 1) The script reads in a netcdf file that already contains variables

u and v in 4D

; 2) It gets the time, level, lat ,and lon dimensions of each variable.

; 3) It calculates the degree-increment space between each longitude point

; and converts this degree scale to radians.

; 4) It preallocates space to make a new array for dv/dx and makes meta

data.

; 5) It calculates dv/dx while looping through each latitude.

; 6) It writes the new data to a new netcdf file.

; The script also contains many print and print summary statements

; so that the user can check data.

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_code.ncl"

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/gsn_csm.ncl"

load "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

begin

; **** User Input

file_in = "ncep2_uv"

file_out = "ncep2_dvdx_test"

; ___ Some Constants

pi = 4.0*atan(1.0)

radian = (pi/180)

print(radian)

radius = 6.37e6 ; redius of Earth, in meters

; **** End User input

; 1) reads in a netcdf file that already contains variables u and v

in 4D

a = addfile(file_in+".nc","r")

u = a->U

v = a->V

printVarSummary(u)

printVarSummary(v)

; 2) Get variable dimentions from netcdf file

lat = a->lat

lon = a->lon

lev = a->lev

dt = dimsizes(u(:,0,0,0)) ; dimension of times

nlev = dimsizes(lev) ; dimension of levels

nlat = dimsizes(lat) ; dimention of latitudes

mlon = dimsizes(lon) ; dimention of longitudes

; 3) scale of longitude (space between each point)

dlon = (lon(2)-lon(1))

dlon = dlon*radian ; convert dlon to radians for calculation

print(dlon)

; 4) pre-allocate space for dv/dx

; ___ (i.e. Make new array the same size and dimensions as v)

dVoverdX = v ; values will be overwritten

dVoverdX@long_name = "zonal gradient of meridional wind"

dVoverdX@units = "m/s^2"

printVarSummary(dVoverdX)

; 5) Calculate dv/dx by looping over each latitude

do nl=0,nlat-1

dX = radius*cos(radian*lat(nl))*dlon ; constant at this latitude

dVoverdX(:,:,nl:nl,:) = center_finite_diff_n (v(:,:,nl:nl,:), \

dX , False,0,3)

end do

; result: dV/dX(time,level,lat,lon)

; ---- CHECK YOUR CALCULATIONS TO SEE IF YOU DID THEM CORRECTLY

printMinMax(dVoverdX,True)

printMinMax(dVoverdX(:,:,{5:15},{-30:10}),True) ; all levels

printMinMax(dVoverdX(:,{700},{5:15},{-30:10}),True) ; at 700 mb

; 6) SAVE AS NETCDF FILE

print("***************************************************************")

NCFILE = file_out+".nc"

print( "Writing out netcdf file: "+NCFILE)

system("/bin/rm -f "+NCFILE) ; remove any pre-existing file

ncdf = addfile(NCFILE ,"c") ; open output netCDF file

; make time an UNLIMITED dimension ; recommended for most

applications

filedimdef(ncdf,"time",-1,True)

ncdf->dVoverdX=dVoverdX

end

On Sun, Oct 30, 2011 at 9:45 AM, Dennis Shea <shea@ucar.edu> wrote:

* > center_finite_diff: See example 6
*

* >
*

* > On 10/28/11 9:19 PM, Erik N wrote:
*

* >>
*

* >> Hi.
*

* >> I used uv2vr_cfd function for calculating relative vorticity.
*

* >> http://www.ncl.ucar.edu/Document/Functions/Built-in/uv2vr_cfd.shtml
*

* >>
*

* >> I only want the dv/dx part values. Is there a simple way of getting
*

* >> these values (this part of equation only) from the resulting values?
*

* >> Thank you for the help.
*

* >> Sincerely,
*

* >> Erik
*

* >> _______________________________________________
*

* >> ncl-talk mailing list
*

* >> List instructions, subscriber options, unsubscribe:
*

* >> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
*

______________________________________________________________

Adam Phillips asphilli@ucar.edu

NCAR/Climate and Global Dynamics Division (303) 497-1726

P.O. Box 3000

Boulder, CO 80307-3000 http://www.cgd.ucar.edu/cas/asphilli

_______________________________________________

ncl-talk mailing list

List instructions, subscriber options, unsubscribe:

http://mailman.ucar.edu/mailman/listinfo/ncl-talk

Received on Mon Oct 31 10:04:54 2011

*
This archive was generated by hypermail 2.1.8
: Tue Nov 01 2011 - 13:43:04 MDT
*