# What is “focus point” in WRF-plots grid box? (python code)

has anyone used the python code from here (written by Geir Arne Waagbo) to plot skewT plot from WRF output?

I've got a question regarding some of the functions used in the code found in pywrfplotUtils.py - which is the getXY(lon,lat) function that gets called in getDimensions(nc) function.

Below are the codes:

def getDimensions(nc):
Nx = nc.getncattr('WEST-EAST_GRID_DIMENSION')-1
Ny = nc.getncattr('SOUTH-NORTH_GRID_DIMENTION')-1
Nz = nc.getncattr('BOTTOM-TOP_GRID_DIMENSION')-1
dx = nc.getncattr('DX')
dy = nc.getncattr('DY')
lons = nc.variables['XLAT']
lats = nc.variables['XLONG']
# find coordinates for focus point
x,y = getXY(lons[Ny/2,:],lats[:,Nx/2])
return Nx,Ny,Nz,lons,lats,dx,dy,x,y

def getXY(lon,lat):
x_nr = 0
y_nr = 0
while (lon[x_nr] < lon_focuspoint):
x_nr += 1
while (lat[y_nr] < lat_focuspoint):
y_nr += 1

print "x_nr:" str(x_nr),"Lon:",str(lon[x_nr])
print "y_nr:" str(y_nr),"Lat:",str(lon[x_nr])
return x_nr,y_nr


The focus point is a variable set in the pywrfplotParams.py:

#This defines the grid box for which skewT-plots etc are based
lat_focuspoint = 60.2
lon_focuspoint = 11.08


Unfortunately, I don't know what focus point is referring to, so when I use the values set by the author, obviously I get an error, and that error is - IndexError: index out of bounds.

I have found this link useful in providing the definition for the attributes asked in that question, but I'm not entirely sure if I should also get the cell indices from latitude and longitude in the WRF model grids.

Your thoughts are very much appreciated!

A Skew-T/Log-p plot is a vertical profile from a point, and it appears in that code that the point you are plotting the skew-T for is 60.2 latitude, 11.08 longitude. The snippet of code:

def getXY(lon,lat):
x_nr = 0
y_nr = 0
while (lon[x_nr] < lon_focuspoint):
x_nr += 1
while (lat[y_nr] < lat_focuspoint):
y_nr += 1


finds the closest grid point west and south of your focus point by setting the x and y gridpoints to 0 and incrementing the index as long as the latitude/longitude values at that grid point are less than the focus point. This is what the focus point is for -- the lat/lon location you want the skew-t/log-p plot at.

The exception IndexError: index out of bounds. means that the above code tried to access a value lon[x_nr] or lat[y_nr] that was out of bounds. This means that the latitude/longitude coordinate of your focus point is not within your domain.

To run the code successfully, edit the focus point to be a point within your model domain, specifically the value of latitude and longitude that you want the skew-t profile for.

• Thanks for the clarification @casey♦ . I've been meaning to get the value of latitude and longitude of the domain since long time ago, but never managed to do that. Do you know any ways to do that? However, I do know the location of the data, which is in Minnesota. And if my understanding of your answer is correct, the coordinates for Minnesota is 44.9N and 93.2W. So I tried using it as my focus point, but I still get the IndexError. – cwmwl Jun 23 '15 at 14:47
• @cwmwl you could ask that in a new question. The plot domain should be setup before you ran the model so you should know the bounds of your domain. For interior points, I'd just make a plot of something with lat/lon as the axes (so you know where you want the skew-t data at). – casey Jun 23 '15 at 14:52
• @cwmwl I assume you input 92.3W as -92.3 ? – casey Jun 23 '15 at 14:53
• ♦ Alright, I'll ask that in a new question. Fyi, I didn't run the model. I'm just using the output from the model.. Didn't know that I need to know these information about the model. – cwmwl Jun 23 '15 at 14:56
• @cwmwl well, if you know the grid indices you want the plot at, you could just modify that program to use them directly rather than figuring them out from the focus point. that is another option if you already know where you want the plot at. – casey Jun 23 '15 at 14:58