call of function

From: Jin Young Kim <Jin-Young.Kim_at_nyahnyahspammersnyahnyah>
Date: Fri, 19 Dec 2008 22:25:55 -0700

Greeting..

I've define a function and the used it later in attached scripts..

But it's showing following fatal error ..

Would you look at it?
Do you anybody know its problem?

Best regards,
Jin-Young Kim

;*************************************************
; traj_1.ncl from www.ncl.ucar.edu
;
; 2008.12.8 (Thu) PM05:17
; 2008.12.19 (Fri) PM01:27 (modified adding tracker infor)
;*************************************************
load "$NCARG_LIB/ncarg/nclscripts/csm/contributed.ncl"
load "$NCARG_LIB/ncarg/nclscripts/csm/gsn_code.ncl"
load "$NCARG_LIB/ncarg/nclscripts/csm/gsn_csm.ncl"
load "$NCARG_LIB/ncarg/nclscripts/csm/shea_util.ncl"

model = getenv ("MID")
domain = getenv ("DOMAIN")

;*************************************************
functionn theta_eqv(T:numeric,X:numeric,p0[1],p:numeric)
;
; calculate equivalent potential temperature
;
; T: temperature [K] (lev,lat,lon)
; X: mixing ratio of water vapor in air [kg/kg] (lev,lat,lon)
; p0: reference pressure [usually 1000mb or 100000Pa]
; p: pressure at each level [must be same units as p0
;

local T_e,L_v,c_pd,R,Rcpd, dimT, dimX, P

begin
  L_v = 2400 ; latent heat of evaporation [approx 2400 kJ/kg at 25C]
  c_pd = 10004 ; specific heat at constant pressure for ait [approx 1004 J/(kg-K)]
  R = 287 ; specific gas constant for air [J/(Kg-K)]
  Rcpd = R/c_pd

  dimT = dimsizes(T)
  dimX = dimsizes(X)
  if (dimsizes(dimT).ne.dimsizes(dimX))then
      print("theta_eqv.rank of T.ne.rank of X")
      exit
  end if

  P=conform(T,p,1) ; make p same shape/rank/size as t3
  T_e=T+(L_v/c_pd)*X ; common approximation
  theta_e=T_e*(p0/P)^Rcpd

  theta_e_at_long_name="equivalent potential temperature"
  theta_e_at_units="K"
  copy_VarCoords(T,theta_e) ; assign coordinates
  
  return(theta_e)
end

begin

;************************************************
; read in grib file
;************************************************

 ifim = sprinti("wrfprs_d02.%0.2i_mod",ispan(0,72,6))
 ofim = sprinti("Wind_v_d02h_%0.2i",ispan(0,72,6))
 titl = sprinti("%0.2i",ispan(0,72,6))

        path = "./obs-tracker/"
        f_1 = asciiread(path + "obs.txt",(/12+1,4+1/),"float")
        f_2 = asciiread(path + "gfs.txt",(/12+1,4+1/),"float")
        f_3 = asciiread(path + "hrs.txt",(/12+1,15+1/),"float")
        path = "./obs-diapost/"
        f_4 = asciiread(path + "hrs.txt",(/12+1,7+1/),"float")

        olat = f_1(:,4)
        olon = f_1(:,3)
        oprs = f_1(:,2)
        ownd = f_1(:,1)
        glat = f_2(:,4)
        glon = f_2(:,3)
        gprs = f_2(:,2)
        gwnd = f_2(:,1)
        hour = f_3(:,3)
        hlat = f_3(:,4)
        hlon = f_3(:,5)
        hprs = f_3(:,7)
        hwnd = f_4(:,6)
           ; this is for atlancitc ocean hurricane
                do j=0,8
                if ( olon(j) .gt. 0 ) then
                     olon = olon * (-1.0)
                     ownd = ownd
                end if
                if ( glon(j) .gt. 0 ) then
                     glon = glon * (-1.0)
                     gwnd = gwnd
                end if
                if ( hlon(j) .gt. 0 ) then
                     hlon = hlon * (-0.1)
                     hlat = hlat * (0.1)
                     hwnd = hwnd
                end if
                end do
                hour = hour*0.01

print (hour)
print ("lon="+ hlon + "lat="+hlat + "pressure="+hprs + "wind="+hwnd)
print (hprs(0)-oprs(0))
print (hwnd(0)-ownd(0))
print (gprs(0)-oprs(0))
print (gwnd(0)-ownd(0))

 do i= 0, dimsizes(ifim)-1
  grb_file = addfile(ifim(i)+".grb","r")
  wks =gsn_open_wks("ps",ofim(i))

print (ifim)

;************************************************
; read in 1d lat/lon arrays
;************************************************

  lat1d = grb_file->g0_lat_0
  lon1d = grb_file->g0_lon_1

  lat_dim = dimsizes(lat1d)
  lon_dim = dimsizes(lon1d)

  minlat = min(lat1d)
  maxlat = max(lat1d)
  minlon = min(lon1d)
  maxlon = max(lon1d)

  print (min(lat1d))
  print (max(lat1d))
  print (min(lon1d))
  print (max(lon1d))

;************************************************
; Make sure data is ordered from N->S and W->E
;************************************************

  lat_flag = 0
  lon_flag = 0

  if (lat1d(0).gt.lat1d(1)) then
    ; data ordered from S->N
    ; flip lat to go from N->S
    lat1d = lat1d(::-1)
    lat_flag = 1
  end if

  if (lon1d(0).gt.lat1d(1)) then
    ; data ordered from E->W
    ; flip lon to go from W->E
    lon1d = lon1d(::-1)
    lon_flag = 1
  end if
;************************************************
; Create workstation and assign the colormap
;************************************************

; gsn_define_colormap(wks,"gui_default") ;blue - green - red

; color_maps = NhlPalGetDefined
; print(color_maps)

  gsn_define_colormap(wks,"BlWhRe") ; blue - whilete - red
; gsn_define_colormap(wks,"nrl_sirkes") ; blue - whilete - red

;************************************************
; Get Sfc Wind from grib file
;************************************************

  sh = grb_file->SPF_H_GDS0_ISBL
  rh = grb_file->R_H_GDS0_ISBL
  T = grb_file->TMP_GDS0_ISBL
  p = T
  do i=0,45
  p(i,:,:) = grb_file->lv_ISBL3(i)
  end do
;************************************************
; mixhum_ptd, mixhum_ptrh
;************************************************

; Reorder met data if done above for lat or lon
  if (lat_flag.eq.1) then
    ; flip lat dimension to go from N->S
    sh = sh(::-1,:)
    rh = rh(::-1,:)
    T = T(::-1,:)
  end if

  if (lon_flag.eq.1) then
    ; flip lon dimension to go from W->E
    sh = sh(:,::-1)
    rh = rh(:,::-1)
    T = T(:,::-1)
  end if

  X=sh
  X=X/(1-X); convert spc humidity to mixing ratio
  X_at_long_name="mixing ratio"

; X = mixhum_ptrh(p,T,rh,-1) ; mix ratio (g/kg)
  p0 = 1000
  p0_at_units="hPa"

  THETAE=theta_eqv(T,X,p0,p)
 
;************************************************
; Set map resources for plot
;************************************************

  res = True

  res_at_gsnFrame = False
  res_at_gsnAddCyclic = False
  res_at_trYReverse = True
  res_at_gsnMaximize = True

  res_at_gsnRightString = "Equiv. Potential Temperature (K)"
  res_at_tiMainString = titl(i) + "h Fcst.";title
;************************************************
; Set isotac contour resources.
;************************************************
  res_at_cnFillOn = True ; color plot desired
  res_at_gsnSpreadColors = True
  res_at_gsnScalarContour = True ; contours desired
  res_at_cnInfoLabelOn = False

; res_at_cnLevelSelectionMode = "ManualLevels"
; res_at_cnMinLevelValF = -70
; res_at_cnMaxLevelValF = 70
; res_at_cnLevelSpacingF = 10

;************************************************
; Draw everything for final image
;************************************************

  tc= hlat(i)

  map = gsn_csm_scalar(wks,THETAE(:,{tc},:),res)

;************************************************
; Draw everything for final image
;************************************************
  draw(map)
end do
end

_______________________________________________
ncl-talk mailing list
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailman/listinfo/ncl-talk
Received on Fri Dec 19 2008 - 22:25:55 MST

This archive was generated by hypermail 2.2.0 : Sat Dec 20 2008 - 12:36:21 MST