[ncl-talk] Calculating Barotropic streamfunction and AMOC using data with missing values?

Hemming, Michael michael.hemming at mpimet.mpg.de
Sat Sep 6 04:57:14 MDT 2014


Hi Mary,

Thanks for the suggestion. I have since been told that the data has been conservatively interpolated onto a regular grid from the original triangular grid, so this command may work. Although, I am having trouble understanding exactly what it does. I guess it is a form of interpolation but I'm not sure what the following means and how I should change this to suit my data:


  guess     = 1                ; use zonal means
  is_cyclic = True             ; cyclic [global]
  nscan     = 1500             ; usually much less than this
  eps       = 1.e-2            ; variable dependent
  relc      = 0.6              ; relaxation coefficient
  opt       = 0                ; not used

and I also have the problem of missing values for the following script, where it complains about missing values at the line including ' zone_int = new((/nlat........':



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

;##########################################################################
;##########################################################################
;--------------------------------AMOC Plots--------------------------------
;--------------------------------------------------------------------------
;##########################################################################
;##########################################################################

; Adapted from: http://www.ncl.ucar.edu/Applications/Scripts/moc_1.ncl

;**************************************************************
; read in data
;**************************************************************

  in = addfile("sector_icon_lr_13_mpiom_data_3du_ym_0000-0099.nc","r")

  v  = in->vke
  dz = in->depth
  dx = in->uko       ;if doesn't work check this line!
  lat= in->lat

poisson_grid_fill( v, True, 1, 1500, 1e-2, 0.6, 0)
poisson_grid_fill( dx, True, 1, 1500, 1e-2, 0.6, 0)


dxx = rm_single_dims(dx({depth|7},{lon|-45:-45},{lat|-30:-30},time|:))

printVarSummary(v)
printVarSummary(dz)
printVarSummary(dx)
printVarSummary(dxx)
printVarSummary(lat)


;**************************************************************
; some parameters
;**************************************************************


  nzt = getfilevardimsizes(in,"z_t")   ; z_t grid (25)
  nzw = nzt+1                         ; z_w grid (26)
  nlat = dimsizes(lat)

  d2rad = 0.017453         ; degrees to radians

printVarSummary(nzt)
printVarSummary(nzw)
printVarSummary(nlat)


;**************************************************************
; calculate first intergral
; int[lon1:lon2]v*cos(lat)*dx*dz
; this calculation is done on the z_t grid
;**************************************************************


  zone_int = new((/nlat,nzt/),typeof(v))     ; allocate space
  do k = 0, nzt-1
    do j = 0, nlat-1
      zone_int(j,k) = dim_sum(v(k,j,:)*cos(lat(j)*d2rad)*dxx*dz(k))
    end do
 end do
printVarSummary(zone_int)






The results from using PrintVarSummary:




Variable: v
Type: float
Total Size: 40992000 bytes
            10248000 values
Number of Dimensions: 4
Dimensions and sizes:   [time | 100] x [depth | 20] x [lat | 122] x [lon | 42]
Coordinates:
            time: [   0..867240]
            depth: [   7..2435]
            lat: [45.375..-45.375]
            lon: [-51.375..-20.625]
Number Of Attributes: 6
  standard_name :       sea_water_y_velocity
  long_name :   Sea water y velocity
  units :       m s-1
  code :        4
  _FillValue :  -9e+33
  missing_value :       -9e+33

Variable: dz
Type: double
Total Size: 160 bytes
            20 values
Number of Dimensions: 1
Dimensions and sizes:   [depth | 20]
Coordinates:
            depth: [   7..2435]
Number Of Attributes: 5
  standard_name :       depth
  long_name :   depth_below_sea
  units :       m
  positive :    down
  axis :        Z

Variable: dx
Type: float
Total Size: 40992000 bytes
            10248000 values
Number of Dimensions: 4
Dimensions and sizes:   [time | 100] x [depth | 20] x [lat | 122] x [lon | 42]
Coordinates:
            time: [   0..867240]
            depth: [   7..2435]
            lat: [45.375..-45.375]
            lon: [-51.375..-20.625]
Number Of Attributes: 6
  standard_name :       sea_water_x_velocity
  long_name :   Sea water x velocity
  units :       m s-1
  code :        3
  _FillValue :  -9e+33
  missing_value :       -9e+33

Variable: dxx
Type: float
Total Size: 400 bytes
            100 values
Number of Dimensions: 1
Dimensions and sizes:   [time | 100]
Coordinates:
            time: [   0..867240]
Number Of Attributes: 9
  lon : -45.375
  lat : -29.625
  depth :          7
  missing_value :       -9e+33
  _FillValue :  -9e+33
  code :        3
  units :       m s-1
  long_name :   Sea water x velocity
  standard_name :       sea_water_x_velocity

Variable: lat
Type: double
Total Size: 976 bytes
            122 values
Number of Dimensions: 1
Dimensions and sizes:   [lat | 122]
Coordinates:
            lat: [45.375..-45.375]
Number Of Attributes: 4
  standard_name :       latitude
  long_name :   latitude
  units :       degrees_north
  axis :        Y

Variable: nzt
Type: integer
Total Size: 4 bytes
            1 values
Number of Dimensions: 1
Dimensions and sizes:   [1]
Coordinates:
Number Of Attributes: 1
  _FillValue :  -2147483647

Variable: nzw
Type: integer
Total Size: 4 bytes
            1 values
Number of Dimensions: 1
Dimensions and sizes:   [1]
Coordinates:
Number Of Attributes: 1
  _FillValue :  -2147483647

Variable: nlat
Type: integer
Total Size: 4 bytes
            1 values
Number of Dimensions: 1
Dimensions and sizes:   [1]
Coordinates:


The error:

fatal:poisson_grid_fill: The first input argument must be float or double
fatal:["Execute.c":8128]:Execute: Error occurred at or near line 64 in file AMOC.ncl





thanks,
Michael


________________________________
From: Mary Haley [haley at ucar.edu]
Sent: 05 September 2014 19:59
To: Hemming, Michael
Cc: ncl-talk at ucar.edu Talk
Subject: Re: [ncl-talk] Calculating Barotropic streamfunction and AMOC using data with missing values?

Hi Michael,

I'm hoping Dennis will weigh in here.

You really don't want to use the spherical harmonic routines on missing data. Normally I would say you need to regrid the data or use poisson_grid_fill first so you can get rid of missing values, but given that this is UV data, I don't think this is your best option.

--Mary



On Tue, Sep 2, 2014 at 5:16 AM, Michael Hemming <michael.hemming at mpimet.mpg.de<mailto:michael.hemming at mpimet.mpg.de>> wrote:
Hello,

I have been struggling to calculate Barotropic streamfunction and AMOC using online examples and function but I have recently been told it is due to the fact that the data I use contains missing values, therefore all values are set to the missing value.

How can I somehow ignore the missing values during calculation?

Here is my code for the bartropic streamfunction:

----------------------------------------------------------------------------------------------------------------------------------------------------

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

;##########################################################################
;##########################################################################
;-------------------------Barotropic Plots---------------------------------
;--------------------------------------------------------------------------
;##########################################################################
;##########################################################################

;----------Load in data

;ICON

noshupw             = addfile ("con.ym.atlbox.noshift.100y.nc<http://con.ym.atlbox.noshift.100y.nc>", "r")
u             = noshupw->u_vint_acc
u&lon            = u&lon-360     ; Fix the longitudes to be < 360
lat             = noshupw->lat


v             = noshupw->v_acc

 printVarSummary(u)
 printVarSummary(v)

dimUV= dimsizes(barai)

  klev = 20 ; number of levels in total

  sf = v(:,{klev},:,:)
  vp = v(:,{klev},:,:)
  sf at long_name = "stream function"
  vp at long_name = "velocity potential"
  sf at units = "m^2/s"
  vp at units = "m^2/s"

  printVarSummary(sf)
  printVarSummary(vp)

  uv2sfvpg(u,v,sf,vp)


----------------------------------------------------------------------------------------------------------------------------------------------------

and my AMOC code is largely based on the online example moc_1.ncl



thanks,
Michael



_______________________________________________
ncl-talk mailing list
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/20140906/f0614078/attachment.html 


More information about the ncl-talk mailing list