[ncl-talk] potential vorticity, error of " division by 0"

Dennis Shea shea at ucar.edu
Sun Jun 14 11:27:07 MDT 2015


Users can see the contents of contributed.ncl via

%> less "$NCARG_ROOT/lib/ncarg/nclscripts/csm/contributed.ncl"

or wherever the user placed the user placed NCL.

---
Always look at

%> ncl -V

%> which ncl

---
re: pot_vort_isobaric (6.3.0)

A few snippets follow:

undef("pot_vort_isobaric")
function pot_vort_isobaric\
            (p[*]:numeric, u:numeric, v:numeric, t:numeric
            ,lat[*]:numeric, gridType[1]:integer, opt:integer)
;
; Compute Potential Vorticity on constant pressure levels
; Bluestein: Synoptic-Dynamic Meteorology in Midlatitudes
;            pg 264  Eq 4.5.93
;=========


  S           = static_stability(p,t,npr,1)   ; variable of type list

  s           = S[0]    ; [...] is list syntax    ; local copy of static
stability
  theta     = S[1]
  dthdp    = S[2]
  s at _FillValue= 1e20
  delete(S)
;============

  vr  = vr + conform(vr,f,nlt)     ; absolute vorticity
  s   = where(s.eq.0, s at _FillValue, s)    ; safety   <==========
  con = R/(s*conform(t,p,npr))
;=============


I believe the check for s=0.0 was  based upon a previou suggestion from
Kyle.


D









On Sun, Jun 14, 2015 at 10:16 AM, Kyle Griffin <ksgriffin2 at wisc.edu> wrote:

> Hi Nafiseh,
>
> I've had this issue on rare occasions before, but not for some time - the
> division by zero that I traced down stemmed from the calculation of the
> static stability of a layer that went to zero or very close to zero, I
> can't remember the exact details.
>
> Go ahead and let us know if the error is still present in the 6.3.0
> version of NCL with the officially-supported version of pot_vort_isobaric.
> If so, I'll see if the fix that I wrote a while back is applicable here and
> if Dennis would be willing to implement it in the future. The good news is
> that the function is in contributed.ncl, which means that we may be able to
> send you a fixed contributed.ncl file and you can have the fix instantly.
> But this depends on whether the issue is the same, so please let us know
> your version of NCL and we may ask you to share your data to examine the
> problem a bit closer.
>
>
> Kyle
>
> ----------------------------------------
> Kyle S. Griffin
> Department of Atmospheric and Oceanic Sciences
> University of Wisconsin - Madison
> Room 1421
> 1225 W Dayton St, Madison, WI 53706
> Email: ksgriffin2 at wisc.edu
>
> On Sat, Jun 13, 2015 at 8:02 AM, Dennis Shea <shea at ucar.edu> wrote:
>
>> I am not sure why you would get a 'zero' from the quantity.
>>
>> ===
>>
>> What version of NCL are you using?
>>
>> %> ncl -V
>>
>> ===
>> Many functions in the shea_util.ncl library are preceded by
>>
>>
>> ;------------------------------------------------------------------------------------
>> ;----------------------- Unsupported: DJS
>> -----------------------------------
>>
>> ;-----------------------------------------------------------------------------------
>>
>> This means ... that I won't support them. They are developmental.
>>
>> ++++++++++++++++++++++++++++++++++++++++++++++++++
>>
>> The 6.3.0 release (March, 2015) has two  supported and documented
>> potential vorticity functions.
>>
>>                http://www.ncl.ucar.edu/current_release.shtml
>>
>> [Click on 'pot_vort_isobaric']
>>
>> Can you please download the latest version of NCL and use the appropriate
>> function from that library ?
>>
>> Actually, the versions in shea_util.ncl was deleted. The 6.3.0 function
>> is located in contributed.ncl
>>
>> Cheers
>>
>>
>>
>>
>> Can you
>>
>>
>>
>>
>>
>> On Sat, Jun 13, 2015 at 3:09 AM, Nafiseh Pegahfar <
>> pegahfar at alumni.ut.ac.ir> wrote:
>>
>>>
>>> I write a ncl code to calculate PV(potential vorticity) at 300 mb using
>>> gfs data.
>>> after running I recievd the error of
>>> """"""""""""""""""""""""""""""""""""""""""""""""""""""""
>>> fatal:divide: Division by 0, Can't continue
>>> fatal:Div: operator failed, can't continue
>>> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 3892 in
>>> file /usr/share/ncarg/nclscripts/csm/shea_util.ncl
>>>
>>> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 3909 in
>>> file /usr/share/ncarg/nclscripts/csm/shea_util.ncl
>>>
>>> fatal:["Execute.c":8575]:Execute: Error occurred at or near line 133 in
>>> file PVcode_version6_3.ncl
>>> """""""""""""""""""""""""""""""""""""""""""""""""""""""'''
>>>
>>> I checked 3892 line in shea_util.ncl it was "con =
>>> R/(s*conform(t,p,npr))"
>>> while s= -(t/theta)*dthdp. I checked "s","t","theta","dthdp" and
>>> "conform(t,p,npr)". non of them was zero.
>>>
>>> please help me what to do.
>>> some of my code is :
>>>
>>> U_00   = a->UGRD_P0_L100_GLL0(:,::-1,:) ; (time,lev,lat,lon) or
>>> (lev,lat,lon) V_00   = a->VGRD_P0_L100_GLL0(:,::-1,:)   ;
>>> (time,lev,lat,lon) or
>>> (lev,lat,lon)
>>> T_00   = a->TMP_P0_L100_GLL0(:,::-1,:) ; K
>>> P_00   = (a->lv_ISBL0)
>>> P_00   = (P_00)*100
>>> P_00 at units = "Pa"
>>> m=dimsizes(P_00)
>>> print ("dimsizes(P_00)="+dimsizes(P_00))
>>>
>>> L = T_00&lat_0
>>>
>>> ;"""""""""""""""""""""""""""""""""""""""""""""
>>> ;check "conform(T_00,P_00,0)"
>>> ;""""""""""""""""""""""""""""""""""""""""""'
>>> conform_00=conform(T_00,P_00,0)
>>> test=0.0
>>> conform_00_zero_test = where(conform_00.eq.0, test+5, test)
>>> print("test="+test)
>>>
>>> ;"""""""""""""""""""""""""""""""""""""""""""""
>>> ;check  "s= -(t/theta)*dthdp"
>>> ;""""""""""""""""""""""""""""""""""""""""""'
>>> theta_test=0.0
>>> theta_00= T_00*(100000./conform(T_00,P_00,0))^0.286
>>> ;print("theta_00="+theta_00)
>>> theta00_zero_test = where(theta_00.eq.0, theta_test+5, theta_test)
>>> print("theta_test="+theta_test)
>>>
>>> T_test=0
>>> T00_zero_test = where(T_00.eq.0, T_test+5, T_test)
>>> print(" T_test="+ T_test)
>>> ;print("T_00="+T_00)
>>>
>>> dthdp_test=0
>>> dthdp_00 = center_finite_diff_n (theta_00,P_00,False,0,0)
>>> dthdp_00_zero_test = where(dthdp_00.eq.0, dthdp_test+5, dthdp_test)
>>> print("dthdp_test="+dthdp_test)
>>> ;print("dthdp_00="+dthdp_00)
>>> ;""""""""""""""""""""""""""""""""""""""""""""""""""""""""""'
>>>
>>> PV_00 = pot_vort_isobaric(P_00 ,U_00 ,V_00 ,T_00 ,L , 1, 0)
>>> printVarSummary (PV_00)
>>> PV_00_300 = PV_00 ({3000000},:,:)
>>> print ("PV_00_300"+PV_00_300)
>>>
>>>
>>> =================================
>>> Best Regards
>>> Nafiseh Pegahfar
>>> Assistant Professor
>>> Iranian National Institute for Oceanography and Atmospheric Science
>>> (http://www.inio.ac.ir)
>>> Phone: (0098)21- 66944873-5 Ext. 315
>>> Fax: (0098)21- 66944869
>>> Email: (pegahfar at ut.ac.ir)
>>>           (pegahfar at inio.ac.ir)
>>> =================================
>>>
>>>
>>>
>>> =================================
>>> Best Regards
>>> Nafiseh Pegahfar
>>> Assistant Professor
>>> Iranian National Institute for Oceanography and Atmospheric Science
>>> (http://www.inio.ac.ir)
>>> Phone: (0098)21- 66944873-5 Ext. 315
>>> Fax: (0098)21- 66944869
>>> Email: (pegahfar at ut.ac.ir)
>>>           (pegahfar at inio.ac.ir)
>>> =================================
>>>
>>> _______________________________________________
>>> ncl-talk mailing list
>>> ncl-talk at ucar.edu
>>> List instructions, subscriber options, unsubscribe:
>>> http://mailman.ucar.edu/mailman/listinfo/ncl-talk
>>>
>>
>>
>> _______________________________________________
>> ncl-talk mailing list
>> ncl-talk at ucar.edu
>> 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/20150614/2fdac813/attachment.html 


More information about the ncl-talk mailing list