[ncl-talk] Vorticity Advection with NCL
Ehsan Taghizadeh
ehsantaghizadeh at yahoo.com
Thu May 24 07:32:04 MDT 2018
Dears,About Lara's problem with ftp connection, I should say same problem for me, since some days ago, till now. I've asked help from ncl-owner.I'll be thankful if I could have any suggestion.
SincerelyEhsan
On Thursday, May 24, 2018, 3:46:49 PM GMT+4:30, Lara Quitián Hernández <laraquitianhernandez at gmail.com> wrote:
Hello,
I have test the script with your recommendations and I obtain the following errors:
I copy below some useful parts of my script to understand the errors:-----------------
;================================================================================; Part A: WRF (curvilinear) to Rectilinear regrid variable and generate weights ;================================================================================
...
;---Title and filename options
Opt = True Opt at SrcTitle = "WRF grid" ; optional Opt at WgtFileName = "WRF_to_Rect.WgtFile_"+InterpMethod+"."+nlat+"_x_"+nlon+".nc"
;---Source grid options Opt at SrcFileName = "WRF.SCRIP_grid_description."+nlat+"_x_"+nlon+".nc" ; Name of source and Opt at SrcRegional = True Opt at SrcGridLat = lat2d Opt at SrcGridLon = lon2d
;---Destination grid options Opt at DstFileName = "Rectilinear.SCRIP_grid_description."+nlat+"_x_"+nlon+".nc" ; destination files Opt at DstGridType = "rectilinear" Opt at DstGridLat = lat Opt at DstGridLon = lon Opt at DstRegional = True
...
;---Perform the regrid: WRF ==> rectilinear (_reclin) u_reclin = ESMF_regrid(u, Opt) ; Do the regridding for u
;---Use the just generated weight file v_reclin = ESMF_regrid_with_weights(v,Opt at WgtFileName,False)
;---Perform the regrid for wr: WRF ==> rectilinear (_reclin) wr_reclin = ESMF_regrid_with_weights(wr, Opt at WgtFileName,False)
;---Options for regridding rectilinear to WRF (curvilinear) grid Opt = True
...
;======================================================================;Use 'advect_variable' on the rectilinear grid;======================================================================
adv_vrt = advect_variable(u_reclin, v_reclin, wr_reclin, 0, "vorticity advection", "(m/s)(s-1)",0)
...
; The grid descriptions have been generated in 'Part A'; but we still need to provide their names. Opt at SkipSrcGrid = True Opt at SkipDstGrid = True Opt at DstFileName = "WRF.SCRIP_grid_description."+nlat+"_x_"+nlon+".nc" ; Name of source and Opt at SrcFileName = "Rectilinear.SCRIP_grid_description.nc" ; destination files; Opt at SrcFileName = "WRF.SCRIP_grid_description."+nlat+"_x_"+nlon+".nc" ; destination files Opt at ForceOverwrite = True
Opt at SrcTitle = Opt at SrcFileName ; source grid Opt at SrcMask2D = where(ismissing(u_reclin),0,1) Opt at SrcRegional = True
Opt at DstGridType = "curvilinear" Opt at DstTitle = "Rectilinear_to_WRF" Opt at DstRegional = True
Opt at InterpMethod = InterpMethod Opt at WgtFileName = "Rect_to_WRF.WgtFile_"+InterpMethod+"."+nlat+"_x_"+nlon+".nc"
adv_wrf = ESMF_regrid_with_weights(adv_vrt, Opt at WgtFileName, False) ;;; If I use "ESMF_regrid(adv_vrt, Opt at WgtFileName)" as you recommended in your last mail, I obtain this error --> fatal:Argument type mismatch on argument (1) of (ESMF_regrid) can not coerce. adv_wrf at long_name = "Advection Vorticity: WRF Grid" printVarSummary(adv_wrf) print("adv_wrf: min="+min(adv_wrf)+" max="+max(adv_wrf))
----------------
Using the blue function I obtain this error --> fatal:Number of subscripts do not match number of dimensions of variable,(3) Subscripts used, (1) Subscripts expected.
Which refers to this line:
symMinMaxPlt (adv_wrf(level,:,:),20,False,res)
PS, I have been asking my University Programmer (Complutense University of Madrid or UCM) and he told me that there may be a kind of UCAR "filter" that makes it impossible for us to access the ftp.cgd.ucar.edu servers from the UCM.
On the other hand, he thinks there may be an interrupted connection on your servers. I do not know how to proceed and send you a WRF file and my script.
Regards, Lara
2018-05-24 10:26 GMT+02:00 Lara Quitián Hernández <laraquitianhernandez at gmail.com>:
Thank you. I am trying to connect via ftp since yesterday but I get a "Connection timed out" message all the time. I'll keep trying.
Regards, Lara
2018-05-24 5:03 GMT+02:00 Dennis Shea <shea at ucar.edu>:
[0]
You can advect any quantity. I thought it is best to advect relative vorticity and then add the coriolis force to get the 'new' absolute vorticity. However, you could advect absolute vorticity for you needs. Good question for your advisor. :-)
[1]
You are starting with a WRF grid. The 'advect_variable' function requires a rectilinear grid. Hence, you need to generate a weight file that takes data on a WRF grid to a rectilinear grid. Any name can be used for the weight file. This is fine:
"WRF_to_Rect.WgtFile_"+InterpM ethod+"."+nlat+"_x_"+nlon+". nc"
[2]
Now you want to take the advected vorticity on a rectilinear grid and interpolate it to the original WRF grid. The following name is fine.
Opt at WgtFileName = "Rect_to_WRF.WgtFile_"+InterpM ethod+"."+nlat+"_x_"+nlon+". nc"
---
You wrote: "I'm still obtaining errors." However, you did not state what the errors are.
I think the following
adv_wrf = ESMF_regrid(adv_vrt, Opt)
should be
adv_wrf = ESMF_regrid(adv_vrt, Opt at WgtFileName)
---
You did not "ftp a WRF file"
Good Luck
On Wed, May 23, 2018 at 4:30 AM, Lara Quitián Hernández <laraquitianhernandez at gmail.co m> wrote:
Thank you so much. I was absolutely wrong and I did not realize my mistake.
I attach here my script because I'm still obtaining errors and I'm afraid I do not fully understand the procedure of the different calculations. For example, I do not know if I have to generate a weight file for regridding the relative vorticity (wr) or which name give to that weight file (Opt at WgtFileName). Moreover, I do not know why do I have to use the relative vorticity and not the absolute vorticity to study the vorticity advection at the end.
On the other hand, I will also ftp a WRF file and my script.
Thanks in advance.
Regards, Lara
2018-05-22 17:40 GMT+02:00 Adam Phillips <asphilli at ucar.edu>:
Hi Lara,You are passing in your original data into advect_variable instead of the regridded variables. Change this: adv_vrt = advect_variable(u, v, wr, 1, "vorticity advection", "(m/s)(s-1)",0)
to this: adv_vrt = advect_variable(u_reclin, v_reclin, wr_reclin, 1, "vorticity advection", "(m/s)(s-1)",0)
Gaussian grids are indeed rectlinear grids. See the definition here:https://www.ncl.ucar.edu/Docum ent/glossary.shtml#Rectilinear Grid
If you have any further questions please respond to ncl-talk.Adam
On Tue, May 22, 2018 at 7:24 AM, Lara Quitián Hernández <laraquitianhernandez at gmail.co m> wrote:
First of all, I apologize for asking you so many questions and for this long email.
I'm trying to interpolate the WRF u,v, relative vorticity to a rectilinear grid and use the advect_variable on the rectilinear grid. However, I have obtained this warning and I do not know how to fixed it: advect_var: Warning: No named dimensions. Can not check grid order.
After defining the diverse variables, I have performed the regrid in this way:
;============================= ============================== =====================; Part A: WRF (curvilinear) to Rectilinear regrid variable and generate weights ;============================= ============================== =====================
;Interpolate the WRF u, v and relative vorticity to a rectilinear grid with as fine [or finer] resoultion as the WRF grid
;---Set up options for regridding InterpMethod= "bilinear" ; define interpolation method
;---Title and filename options
Opt = True Opt at SrcTitle = "WRF grid" ; optional Opt at WgtFileName = "WRF_to_Rect.WgtFile_"+InterpM ethod+"."+nlat+"_x_"+nlon+".nc "
;---Source grid options Opt at SrcFileName = "WRF.SCRIP_grid_description."+ nlat+"_x_"+nlon+".nc" ; Name of source and Opt at SrcRegional = True Opt at SrcGridLat = lat2d Opt at SrcGridLon = lon2d
;---Destination grid options Opt at DstFileName = "Rectilinear.SCRIP_grid_descri ption."+nlat+"_x_"+nlon+".nc" ; destination files Opt at DstGridType = "rectilinear" Opt at DstGridLat = lat Opt at DstGridLon = lon Opt at DstRegional = True
;---Specify other options Opt at ForceOverwrite = True Opt at InterpMethod = InterpMethod
;---Perform the regrid: WRF ==> rectilinear (_reclin) u_reclin = ESMF_regrid(u, Opt) ; Do the regridding for u
;---Use the just generated weight file v_reclin = ESMF_regrid_with_weights(v,Opt @WgtFileName,False)
;---Perform the regrid for wr: WRF ==> rectilinear (_reclin) wr_reclin = ESMF_regrid_with_weights(wr, Opt at WgtFileName,False)
Afterwards, I use the advect_variable:
;============================= ============================== ===========;Use 'advect_variable' on the rectilinear grid;============================= ============================== ===========
adv_vrt = advect_variable(u, v, wr, 1, "vorticity advection", "(m/s)(s-1)",0) ;I use gridType=1. I suppose rectilinear and fixed grid are quite similar, or even, the same.
printVarSummary(adv_vrt) printMinMax(adv_vrt,0) print("----")
Finally, I obtain this results and I do not know if they are correctly calculated:
Variable: u_reclinType: floatTotal Size: 5972400 bytes 1493100 valuesNumber of Dimensions: 3Dimensions and sizes: [bottom_top | 35] x [lat | 180] x [lon | 237]Coordinates: lat: [25.832275390625..40.830703735 35156] lon: [-34.179443359375..-9.30551147 4609375]Number Of Attributes: 8 missing_value : 9.96921e+36 remap : remapped via ESMF_regrid_with_weights: Bilinear _FillValue : 9.96921e+36 stagger : units : m s-1 description : x-wind component MemoryOrder : XYZ FieldType : 104(0) u_reclin: min=-21.454 max=49.9299(0) ----
Variable: v_reclinType: floatTotal Size: 5972400 bytes 1493100 valuesNumber of Dimensions: 3Dimensions and sizes: [bottom_top | 35] x [lat | 180] x [lon | 237]Coordinates: lat: [25.832275390625..40.830703735 35156] lon: [-34.179443359375..-9.30551147 4609375]Number Of Attributes: 8 _FillValue : 9.96921e+36 stagger : units : m s-1 description : y-wind component MemoryOrder : XYZ FieldType : 104 remap : remapped via ESMF_regrid_with_weights: Bilinear missing_value : 9.96921e+36(0) v_reclin: min=-51.6305 max=46.8953(0) ----
Variable: wr_reclinType: floatTotal Size: 5972400 bytes 1493100 valuesNumber of Dimensions: 3Dimensions and sizes: [35] x [lat | 180] x [lon | 237]Coordinates: lat: [25.832275390625..40.830703735 35156] lon: [-34.179443359375..-9.30551147 4609375]Number Of Attributes: 3 _FillValue : 9.96921e+36 remap : remapped via ESMF_regrid_with_weights: Bilinear missing_value : 9.96921e+36(0) wr_reclin: min=-34.6481 max=63.9581(0) ----(0) RectilinearGrid: nmsg=180075(0) ----(0) advect_var: Warning: No named dimensions. Can not check grid order.
Variable: adv_vrtType: floatTotal Size: 5972400 bytes 1493100 valuesNumber of Dimensions: 3Dimensions and sizes: [35] x [180] x [237]Coordinates: Number Of Attributes: 2 long_name : vorticity advection units : (m/s)(s-1)(0) vorticity advection ((m/s)(s-1)) : min=-0.0107484 max=0.0109576
Unfortunately, I also obtain this errors:
(0) is_SCRIP: 'Rectilinear.SCRIP_grid_descri ption.nc' doesn't exist.(0) ESMF_regrid_gen_weights: invalid or missing SCRIP source grid file.
And I obtain this three files:
Rectilinear.SCRIP_grid_descrip tion.180_x_237.nc
WRF.SCRIP_grid_description.180 _x_237.nc
WRF_to_Rect.WgtFile_bilinear.1 80_x_237.nc
Which file do I have to use to display the vorticity advection? None, I suppose. They are all description files, except one. If you need my script, just tell me.
Thanks in advance.
Regards, Lara
2018-05-22 11:08 GMT+02:00 Lara Quitián Hernández <laraquitianhernandez at gmail.co m>:
Good morning,
Thank you very much. There is only one doubt left unanswered: the advect_function requires a Gaussian, regular o fixed grid, but not rectilinear. Is there any relation between them?
Regards, Lara
2018-05-21 19:21 GMT+02:00 Dennis Shea <shea at ucar.edu>:
ESMF 37 was
(a) interpolating u and v onto a rectilinear grid;
(b) calculating divergence using uv2dv_cfd which requires u and v to be on a rectilinear grid;
(c) interpolating the derived divergence on a rectilinear grid back onto the original WRF grid
---
In your case:
[1] Interpolate the WRF u, v and relative vorticity to a rectilinear grid with as fine [or finer] resoultion as the WRF grid
[2] Use 'advect_variable' on the rectilinear grid
[3] interpolate the advected quantity on the rectilinear grid back onto the original WRF grid
---
Caveat: Technically, on a sphere, u and v must be interpolated together using the 'rotation' angle.
Why? because the new location has a 'slightly' different orientation relative to the pole(s)
unew = u*cos(rot) - v*sin(rot)
vnew = u*sin(rot) + v*cos(rot)
The above approach, independently interpolating u and v ignores the rotation. It is assumed to be very small.
On Mon, May 21, 2018 at 3:45 AM, Lara Quitián Hernández <laraquitianhernandez at gmail.co m> wrote:
Good morning,
Thank you so much. Unfortunately, I have some doubts.
1.- I have read the information for Example 37 but I do not understand the need of computing the divergence ("uv2dv_cfd"). I just need my variables on a Gaussian, regular o fixed grid in order to apply the advect_variable function2.- I need to convert my curvilinear WRF grid to a Gaussian, regular o fixed grid. However, in both Examples (29a and 37) a regrid from a WRF grid to a rectilinear grid is carried out. Are those grids (Gaussian, regular o fixed grid) also rectilinear grids?3.-Do I need to regrid back to the WRF curvilinear grid as it is done in both examples?
Thanks in advance.
Regards, Lara
2018-05-20 1:10 GMT+02:00 Dennis Shea <shea at ucar.edu>:
NCL has no builtin function to advect a field (eg: vorticity) on a curvilinear grid (eg: your WRF Grid)..
Maybe ask wrfhelp?
===
That said
https://www.ncl.ucar.edu/Appli cations/ESMF.shtml
Example 29a
or, maybe better,
Example 37
outlines a method that might be used for your needs.
===
Good luck
On Wed, May 16, 2018 at 7:40 AM, Lara Quitián Hernández <laraquitianhernandez at gmail.co m> wrote:
Hello,
Thank you. In the case of calculating the horizontal advection for vorticity, it would be better to use the direct WRF variable ( vo = wrf_user_getvar(a,"avo",-1)) or define it via different functions: https://www.ncl.uca r.edu/Applications/vort.shtml
The only example in the link defines the Vorticity like this:;***************************** *******************
; calculate vorticity on a Gaussian Grid
; scale for visual convenience
;***************************** *******************
scale = 1.e05
vrt = u ; retain coordinates
vrt = uv2vrG_Wrap(u,v) * scale
vrt at long_name = "vorticity"
vrt at units = "scaled"
However, my simulations are generated on a Lambert Conformal grid projection, not Gaussian one. Does this change the procedure to calculate it?
Regards, Lara
2018-05-16 14:28 GMT+02:00 Dennis Shea <shea at ucar.edu>:
Maybe:
https://www.ncl.ucar.edu/Docum ent/Functions/Contributed/adve ct_variable.shtml
'x' would be vorticity
Good Luck
On Wed, May 16, 2018 at 4:01 AM, Lara Quitián Hernández <laraquitianhernandez at gmail.co m> wrote:
Good morning,
I would like to know if there is a possibility of calculating the Vorticity Advection with NCL.
Thanks in advance.
Regards, Lara
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
______________________________ _________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailma n/listinfo/ncl-talk
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
______________________________ _________________
ncl-talk mailing list
ncl-talk at ucar.edu
List instructions, subscriber options, unsubscribe:
http://mailman.ucar.edu/mailma n/listinfo/ncl-talk
--
Adam Phillips
Associate Scientist, Climate and Global Dynamics Laboratory, NCAR
www.cgd.ucar.edu/staff/asphill i/ 303-497-1726
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
--
Lara Quitián Hernández, PhD Student
Departamento de Física de la Tierra, Astronomía y Astrofísica
Facultad de Ciencias Físicas
Ciudad Universitaria, Plaza Ciencias, 128040 Madrid. Spain
Email: lquitian at ucm.es
_______________________________________________
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/20180524/92a371f1/attachment.html>
More information about the ncl-talk
mailing list