<div dir="ltr">Hi Alan, Mary et al:<div><br></div><div>Thank you. </div><div><br></div><div>I feel like I have just climbed Everest. It was great that I had help along the way. </div><div><br></div><div>Here is the program that includes the calculation of time using Alan's cd_inv_string function, and <i>does it in a function as well.</i></div><div><br></div><div>There are two warnings: </div><div><br></div><div>They are coming from the call to each of these functions -- I am not sure why.</div><div><br></div><div>
<p class="gmail-p1"><span class="gmail-s1"><span class="gmail-Apple-converted-space"> </span>xy_start = get_ij_ncl(lat2d,lon2d,lat_beg,lon_beg)</span></p>
<p class="gmail-p1"><span class="gmail-s1"><span class="gmail-Apple-converted-space"> </span>xy_end <span class="gmail-Apple-converted-space"> </span>= get_ij_ncl(lat2d,lon2d,lat_end,lon_end)</span></p></div><div><br></div><div>
<p class="gmail-p1"><span class="gmail-s1">warning:Argument 2 of the current function or procedure was coerced to the appropriate type and thus will not change if the function or procedure modifies its value</span></p>
<p class="gmail-p1"><span class="gmail-s1">warning:Argument 3 of the current function or procedure was coerced to the appropriate type and thus will not change if the function or procedure modifies its value</span></p>
<p class="gmail-p1">P.S: I have attached the get_ij.f program linked with WRAPIT get_ij.f</p></div><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 19, 2017 at 6:16 PM, Alan Brammer <span dir="ltr"><<a href="mailto:abrammer@albany.edu" target="_blank">abrammer@albany.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div style="word-wrap:break-word">with regard to accessing the time. <div><br></div><div><div><br></div><div>initial_time = cd_inv_string( slp@initial_time, "%N/%D/%Y (%H:%M)”)</div><div>print(cd_calendar(initial_<wbr>time, 0)) ;; make sure nothing went wrong. </div></div><div><br></div><div>forecast_time = initial_time + slp@forecast_time ;; assumes units are hours for both variables and that forecast_time is numeric not string</div><div>forecast_time@units = initial_time@units</div><div><br></div><div><br></div><div><br></div><div><a href="http://www.ncl.ucar.edu/Document/Functions/User_contributed/cd_inv_string.shtml" target="_blank">http://www.ncl.ucar.edu/<wbr>Document/Functions/User_<wbr>contributed/cd_inv_string.<wbr>shtml</a></div><div>n.b. cd_inv_string is 6.4.0+ and needs to be loaded at the top of the script. </div><div><br></div><div>I can’t access bitbucket on the network I’m on at the moment but I think this was my latest version of the function before it was adopted by ncl. Using 6.4.0 would be recommended though. </div><div><pre style="background-color:rgb(255,255,255)"><a href="https://bitbucket.org/a1brammer/ncl_functions/raw/78dea35d95946425e9054cdc9286ae3db88d9585/cd_inv_string.ncl" target="_blank">https://bitbucket.org/<wbr>a1brammer/ncl_functions/raw/<wbr>78dea35d95946425e9054cdc9286ae<wbr>3db88d9585/cd_inv_string.ncl</a></pre><div><br></div></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br></div><div><br><div><blockquote type="cite"><div><div class="h5"><div>On Jul 19, 2017, at 11:02 AM, Barry Lynn <<a href="mailto:barry.h.lynn@gmail.com" target="_blank">barry.h.lynn@gmail.com</a>> wrote:</div><br class="m_-744005097098066842Apple-interchange-newline"></div></div><div><div><div class="h5"><div dir="ltr" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px">Hi Mary:<div><br></div><div>Thank you for the pointers:</div><div><br></div><div>I assign strings in both res1_list and res2_list. The first prints the variable type at the top of the map, while the latter does not.</div><div><br></div><div>in res1_list</div><div><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><span class="m_-744005097098066842gmail-Apple-converted-space"> </span>res@gsnLeftString<span class="m_-744005097098066842Apple-converted-space"> </span><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>= "GEFS Temp (C), MSLP (mb)"</span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>res@gsnRightString<span class="m_-744005097098066842Apple-converted-space"> </span><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>= ""</span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><br></span></p><p class="m_-744005097098066842gmail-p1">in res2_list, it does not.</p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1">res@gsnLeftString<span class="m_-744005097098066842Apple-converted-space"> </span><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>= "GEFS Hum (%), SLP (mb)"</span></p><div><br class="m_-744005097098066842webkit-block-placeholder"></div><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>res@gsnRightString<span class="m_-744005097098066842Apple-converted-space"> </span><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>= ""</span></p><p class="m_-744005097098066842gmail-p1">even though I copy: <span style="font-variant-ligatures:no-common-ligatures;font-family:'Courier New';font-size:14px">copy_VarCoords(rh,rh_<wbr>ave)</span></p><p class="m_-744005097098066842gmail-p1">So, this is a bit of a mystery.</p><p class="m_-744005097098066842gmail-p1">Getting back to my time question:</p><p class="m_-744005097098066842gmail-p1">I think I can do it by reading the initial time from any of the initial variables, and then adding the forecast time.</p><p class="m_-744005097098066842gmail-p1">However, I need some help on how to read the variable information </p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>forecast_time :<span class="m_-744005097098066842Apple-converted-space"> </span><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>12</span></p><div><br class="m_-744005097098066842webkit-block-placeholder"></div><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>initial_time :<span class="m_-744005097098066842gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>07/19/2017 (00:00)</span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1">from printVarSummary(slp). </span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><br></span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1">I need the string initial_time and forecast_time. <i>I am not sure how to access these variables within the printVarSummary.</i></span></p><p class="m_-744005097098066842gmail-p1">Thanks,</p><p class="m_-744005097098066842gmail-p1">P.S. If we solve this problem, I "promise" to create a function!</p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><br></span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><br></span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><br></span></p><p class="m_-744005097098066842gmail-p1"><span class="m_-744005097098066842gmail-s1"><br></span></p><p class="m_-744005097098066842gmail-p1"><br></p><p class="m_-744005097098066842gmail-p1"><br></p><p class="m_-744005097098066842gmail-p1"><br></p></div></div><div class="gmail_extra" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><br><div class="gmail_quote">On Wed, Jul 19, 2017 at 5:43 PM, Mary Haley<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:haley@ucar.edu" target="_blank">haley@ucar.edu</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-size:small">Hi Barry,</div><div style="font-size:small"><br></div><div style="font-size:small">Good work on the script!</div><div style="font-size:small"><br></div><div style="font-size:small">If you don't get long_name and units subtitles on your plot, it's likely because your variable doesn't have any metadata attached to it.</div><div style="font-size:small"><br></div><div style="font-size:small">You should do a printVarSummary of the variable, which I assume is "rh_ave". This will tell you if you have any metadata. </div><div style="font-size:small"><br></div><div style="font-size:small">If the metadata is not there, then you need to look at the variables being used to do the calculation. I do see that you have:</div><div style="font-size:small"><br></div><div style="font-size:small"> rh_ave = rh</div><div style="font-size:small"><br></div><div style="font-size:small">so you would need to check if "rh" has metadata, because if it does, it should have been copied to "rh_ave".</div><div style="font-size:small"><br></div><div style="font-size:small">Calculations cause metadata to *not* be copied to the variable on the left of the "=", but they won't remove any metadata that already exists.</div><div style="font-size:small"><br></div>I can't answer your question about the times, because I don't know what your gefs_time.file<div style="font-size:small;display:inline"><span class="m_-744005097098066842Apple-converted-space"> </span>ASCII file looks like, but I don't see any harm in what you're doing if it works. Maybe Bill can weigh in about how to calculate forecast time off a WRF file.</div><div><div style="font-size:small;display:inline"></div></div><div><div style="font-size:small">However, I think you can turn all the code that is used to calculate the new time array into a function, and move the function call to outside the do loop.</div><span class="m_-744005097098066842HOEnZb"><font color="#888888"><br><div style="font-size:small">--Mary</div><div style="font-size:small"><br></div></font></span></div></div><div class="m_-744005097098066842HOEnZb"><div class="m_-744005097098066842h5"><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Jul 19, 2017 at 7:39 AM, Barry Lynn<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:barry.h.lynn@gmail.com" target="_blank">barry.h.lynn@gmail.com</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span><wbr>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hello:<div><br></div><div>My code still runs out of memory, but not nearly as fast. This is helpful by itself.</div><div><br></div><div>I have included two version of the code for users who desire to make GEFS mean map plots. You have to create GEFS/GEFS_XX directories where XX is the GEFS member.</div><div><br></div><div>1) Plotting sea level values of mean GEFS temperatures, humidity, winds, and sea-level pressure.</div><div><br></div><div>2) 700 mb mean GEFS temperatures, humidity, winds, and height.</div><div><br></div><div>I have modified the code sent by Mary to skip over missing files. This step goes way back to a previous ncl-talk (thanks to Guido who gave a suggestion how to skip over missing files). Without it, the code can fail if a file is missing.</div><div><br></div><div>I am not sure why the second map does not show a variable title, like the first. I haven't had a chance to check timings, yet.</div><div><br></div><div>I don't see an easy way to take the initial time in the forecast variable "summary," include the forecast time in hours, and get the real time. So, I still calculate times externally. I have included "variable.file" in case someone has a suggestion. We would need to grab the actual time, and then find the new time by adding the number of hours.</div><span class="m_-744005097098066842m_5249870887675939839HOEnZb"><font color="#888888"><div><br></div><div>Barry</div></font></span></div><div class="m_-744005097098066842m_5249870887675939839HOEnZb"><div class="m_-744005097098066842m_5249870887675939839h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 18, 2017 at 6:28 PM, Mary Haley<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:haley@ucar.edu" target="_blank">haley@ucar.edu</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-size:small">Hi Barry,</div><div style="font-size:small"><br></div><div style="font-size:small">We could provide you with a profiling version of NCL, in which you run your script like normal, but then ncl produces a supplemental file with information about how long certain code segments are taking. It breaks it down by percentage of time spent in various sections.</div><div style="font-size:small"><br></div><div style="font-size:small"><br></div><div style="font-size:small">This profiling information is a bit clunky because you have to run a script on it and then view it from a browser, but these extra steps may be worth it in order to find out where the code is slow.<br></div><div style="font-size:small"><br></div><div style="font-size:small"><div>To see a sample of how the profiler works, go to:</div><div><br></div></div><div><a href="http://www.ncl.ucar.edu/Document/Tools/Profiler/multiple_plots/" target="_blank">http://www.ncl.ucar.edu/Docume<wbr>nt/Tools/Profiler/multiple_plo<wbr>ts/<br></a></div><div><br></div>and click on any one of the *.xml (the "<a href="http://www.ncl.ucar.edu/Document/Tools/Profiler/multiple_plots/multiple_plots_ncl__multiple_plots.xml" target="_blank">multiple_plots_ncl__multiple_<wbr>plots.xml</a>" is the main one and a good place to start)<div style="font-size:small;display:inline">. Look for lines that are colored </div><div style="font-size:small;display:inline">in red, as these indicate where more time is being spent.</div><div><div style="font-size:small;display:inline"></div><div><div style="font-size:small">You can also use "get_cpu_time()" to track the timings yourself. For example, if you want to time how long it takes to create each set of panel plots, then you would have code that looks like this:</div><div style="font-size:small"><br></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>start_time = get_cpu_time()</font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plot(0) = gsn_csm_contour_map(wks,t_ave,<wbr>res1)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plot(1) = gsn_csm_contour_map(wks,rh_ave<wbr>,res2)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plotB = gsn_csm_vector(wks,u_ave_new(:<wbr>:4,::4), \</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>v_ave_new(::4,::4),vecres)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plotD = gsn_csm_contour(wks,z_ave_new,<wbr>res3)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>overlay(plot(0),plotB)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>overlay(plot(1),plotD)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>gsn_panel(wks,plot,(/2,1/),<wbr>resP) ; now draw as one plot</font></div></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("Elapsed time for plotting = " + (end_time-start_time)</font></div><div style="font-size:small"><br></div><div style="font-size:small">If you plan to do a lot of these timings, then I recommend a function. :-)</div><div style="font-size:small"><font face="monospace, monospace"><br></font></div><div style="font-size:small"><font face="monospace, monospace">procedure print_elapsed_time(stime,etime<wbr>,title)</font></div><div style="font-size:small"><font face="monospace, monospace">begin</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("</font><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=<wbr>====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">====="<wbr>)</span></div><div style="font-size:small"><font face="monospace, monospace"> print("Elapsed time for " + title + ": " + (etime-stime))</font></div><div style="font-size:small"><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("</font><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=<wbr>====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">=====</span><span style="font-family:monospace,monospace">====="<wbr>)</span></div></div><div style="font-size:small"><font face="monospace, monospace">end</font></div><div style="font-size:small"><span style="font-family:monospace,monospace"><br></span></div><div style="font-size:small">Then your code would be:</div><div style="font-size:small"><br></div><div style="font-size:small"><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>start_plot_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plot(0) = gsn_csm_contour_map(wks,t_ave,<wbr>res1)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plot(1) = gsn_csm_contour_map(wks,rh_ave<wbr>,res2)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plotB = gsn_csm_vector(wks,u_ave_new(:<wbr>:4,::4), \</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>v_ave_new(::4,::4),vecres)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>plotD = gsn_csm_contour(wks,z_ave_new,<wbr>res3)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>overlay(plot(0),plotB)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>overlay(plot(1),plotD)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>gsn_panel(wks,plot,(/2,1/),<wbr>resP) ; now draw as one plot</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end_plot_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print_elapsed time(start_plot_time,end_plot_<wbr>time,"Plotting")</font></div><div><br></div><div>Note that I changed the name from "start_time/end_time to start_plot_time/end_plot_time. This is in case you do a bunch of these, then you can print all the timings at the end, and it also helps keep track of what timings these are associated with.</div><div><br></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>start_read_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>.... Code that calls addfile and reads data</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end_read_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>...</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>start_ave_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>.... code that calls average_subset function a bunch of times</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end_ave_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>...</font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>start_plot_time = get_cpu_time()</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>,,, code that creates and draws plots ...</font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end_plot_time = get_cpu_time()</font></div></div><div><font face="monospace, monospace"><br></font></div></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print_elapsed time(start_read_time,end_read_<wbr>time,"Reading data")</font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print_elapsed time(start_ave_time,end_ave_ti<wbr>me,"Averages")</font></div><div></div></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print_elapsed time(start_plot_time,end_plot_<wbr>time,"Plotting")</font></div></div><div><br></div></div><div>Of course, you don't have to put all the elapsed timing prints at the end. You can print them out right when the code is done, so you immediately have the information. It just depends on what you are interested in.</div></div><div style="font-size:small"><br></div><div style="font-size:small">As a side, and Dave or Rick may want to correct me on my understanding on this, but I think one thing that can make your code slow is that you have a lot of print statements. Every time you do something like this:</div><div style="font-size:small"><br></div><div style="font-size:small"> print("x = " + x)</div><div style="font-size:small"><br></div><div style="font-size:small">versus this:</div><div style="font-size:small"><br></div><div style="font-size:small">print(x)</div><div style="font-size:small"><br></div><div style="font-size:small">I believe a string gets stored somewhere in memory. If you have a lot of these, then NCL will get noticeably slower and slower, especially if you are doing this inside do loops with a lot of iterations. I don't know if you really have enough print statements for this to be a problem, but it's worth making a mental note of this issue.</div><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513HOEnZb"><font color="#888888"><div style="font-size:small"><br></div><div style="font-size:small">--Mary</div><div style="font-size:small"><br></div></font></span></div></div></div><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513HOEnZb"><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 17, 2017 at 8:06 PM, Barry Lynn<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:barry.h.lynn@gmail.com" target="_blank">barry.h.lynn@gmail.com</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span><wbr>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Dear Mary:<div><br></div><div>Thank you. Very helpful!</div><div><br></div><div>I had noticed that my code was running very, very slowly, but being relatively "new" to NCL programming was not sure why. (Also, it was, as you noted, running out of memory since I "dialed back" the RAM on my account.)</div><div><br></div><div>I will try your code and compare, and get back to the list about the timing differences.</div><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575HOEnZb"><font color="#888888"><div><br></div><div>Barry</div></font></span></div><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575HOEnZb"><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575h5"><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Jul 18, 2017 at 12:26 AM, Mary Haley<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:haley@ucar.edu" target="_blank">haley@ucar.edu</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div style="font-size:small">Hi Barry,</div><div style="font-size:small"><br></div><div style="font-size:small">Rick is out this afternoon.</div><div style="font-size:small"><br></div><div style="font-size:small">Part of what Rick is suggesting is that if you are done with a variable, then you should delete it in order to free up memory for later calculations. </div><div style="font-size:small"><br></div><div style="font-size:small">If I may provide some honest comments about your script overall: if you use some simple "clean coding practices", this will make it *much* easier for you to debug your own code, and it will certainly make it easier for other people to debug it. It will also help you see where you might have some memory issues.</div><div style="font-size:small"><br></div><div style="font-size:small"><br></div><div style="font-size:small">Here are some suggestions for improving your script:</div><div style="font-size:small"><br></div><div style="font-size:small"><b>[1] Use "delete" to remove variables you don't need any more:</b></div><div style="font-size:small"><br></div><div><div style="font-size:small"><font face="monospace, monospace"><span style="white-space:pre-wrap">        </span>t_ave=t_ave-273.16 ; convert to C </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>z_ave=z_ave/10. ; convert to dam </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>printMinMax(z_ave,False)</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>u = u * 3.6</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>v = v * 3.6</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(u,u_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(v,v_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(z,z_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(t,t_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(rh,rh_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><br></div><div style="font-size:small">If you no longer need the "u", "v", "z", etc variables, then delete them:</div><div style="font-size:small"><br></div><div><div style="font-size:small"><font face="monospace, monospace"><span style="white-space:pre-wrap">        </span>t_ave=t_ave-273.16 ; convert to C </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>z_ave=z_ave/10. ; convert to dam </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>printMinMax(z_ave,False)</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>u = u * 3.6</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>v = v * 3.6</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(u,u_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(v,v_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(z,z_ave) ; copy coord vars to speed </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(t,t_ave) </font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(rh,rh_ave)</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>delete([/u,v,z,t,rh/]) ; no longer needed</font></div><div style="font-size:small"> </div><div style="font-size:small"><b>[2] You are reading several variables and not doing anything with them but printing them out. Reading them in uses memory. </b></div><div style="font-size:small"><br></div><div style="font-size:small">If all you need to do is print them, then print them directly. An example:</div><div style="font-size:small"><br></div><div style="font-size:small"><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lv0 = fin->lv_ISBL0</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("lv0 = " + lv0)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lv8 = fin->lv_ISBL8</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("lv8 = " + lv8)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lv10 = fin->lv_ISBL10</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("lv10 = " + lv10)</font></div></div><div><br></div><div>Do this instead, to save memory:</div><div><br></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("lv0 = " + fin->lv_ISBL0)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("lv8 = " + fin->lv_ISBL8)<br></font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>print("lv10 = " + fin->lv_ISBL10)</font><br></div><div><br></div></div><div><br></div><b>[3] Avoid putting unchanged code inside do loops.</b></div><div style="font-size:small"><br></div><div style="font-size:small">Your script has two do loops with a bunch of code inside of them that doesn't change.</div><div style="font-size:small"><br></div><div style="font-size:small">Do loops can be slow, so it's important to keep as much code *outside* of a do loop as possible.</div><div style="font-size:small"><br></div><div style="font-size:small">As an example, these are your two outside do loops:</div><div style="font-size:small"><br></div><div style="font-size:small"><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>do n=0,n_files -1,1</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>do i_dir = 0,n_dirWRF-1</font><br></div><div><br></div><div>Inside these two loops, you have code that looks like this:</div><div><br></div><div><div> <font face="monospace, monospace"><span class="m_-744005097098066842Apple-converted-space"> </span> res1 = True</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@mpDataBaseVersion = "Ncarg4_1" ; choose more recent database </font></div><div><span style="font-family:monospace,monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . .<br> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@<wbr>mpNationalLineThicknessF = 3.0</span><br></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@<wbr>mpGeophysicalLineThicknessF = 2.0</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . .</font></div></div></div><div style="font-size:small"><font face="monospace, monospace"><br></font></div><div style="font-size:small"><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@tiMainString = time_var</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@gsnDraw = False ; don't draw </font><span style="font-family:monospace,monospace"> </span><span style="font-family:monospace,monospace">res1@cnLevelSelectionMode = "ExplicitLevels" ; set explicit contour levels </span></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . .</font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@cnInfoLabelOn = False ; turn off contour info label <span class="m_-744005097098066842Apple-converted-space"> </span></font><span style="font-family:monospace,monospace">res1@lbAutoManage = False ; control label bar </span><span style="font-family:monospace,monospace">res1@lbOrientation = "Vertical"</span></div><div><span style="font-family:monospace,monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . . </span><br></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res1@lbTopMarginF = 0.001</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2 = True</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2 = True</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . .</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@<wbr>mpNationalLineThicknessF = 3.0</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@<wbr>mpGeophysicalLineThicknessF = 2.0</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@tiMainString = time_var</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@gsnDraw = False ; don't draw </font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . .</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@lbOrientation = "Vertical"</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@pmLabelBarSide = "Right"</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@lbLabelAutoStride = True</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@pmLabelBarWidthF = 0.20</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>res2@pmLabelBarHeightF = 0.7</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>. . .</font></div></div></div><div style="font-size:small"><br></div><div style="font-size:small">None of this code changes inside the do loops, but yet it is getting set again and again for every iteration of the two do loops. In order to speed things up, move as much code as you can to outside the do loop, and only keep things that actually change inside the do loop.</div><div style="font-size:small"><br></div><div style="font-size:small">I recommend creating functions to set the various resource lists: set_res1_list, set_res2_list, etc. This may not necessarily save memory, but it makes your code much cleaner.</div><div style="font-size:small"><br></div><div style="font-size:small"><b>[4] Use functions for cleaner code.</b></div><div style="font-size:small"><br></div><div style="font-size:small">You have code that is repeated in multiple locations. This can cause extra memory usage. If you turn these repeated code segments into NCL functions, then this can save some memory.</div><div style="font-size:small"><br></div><div style="font-size:small">An example, you have:</div><div style="font-size:small"><br></div><div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>i_loc = 1</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>j_loc = 1</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>GET_IJ::get_ij(lat2d,lon2d,<wbr>lat_beg,lon_beg,i_loc,j_loc,<wbr>nj,ni)</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>x_start = i_loc</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>y_start = j_loc</font></div><div style="font-size:small"><br></div><div style="font-size:small">Granted, this doesn't use a lot of memory, but every time you copy these 5 lines, it makes your script harder to read, and you will slowly use more memory if you do this kind of thing frequently.</div><div style="font-size:small"><br></div><div style="font-size:small">Turn the above five lines into a function:</div><div style="font-size:small"><br></div><div style="font-size:small"><font face="monospace, monospace">function get_ij_ncl(lat2d,lon2d,lat_beg<wbr>,lon_beg)</font></div><div style="font-size:small"><font face="monospace, monospace">local nj, ni</font></div><div style="font-size:small"><font face="monospace, monospace">begin<br></font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>i_loc = 1</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>j_loc = 1</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>nj = dimsizes(lat2d(:,0))</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>ni = dimsizes(lat2d(0,:))</font></div><div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>GET_IJ::get_ij(lat2d,lon2d,<wbr>lat_beg,lon_beg,i_loc,j_loc,<wbr>nj,ni)</font></div><div style="font-size:small"><font face="monospace, monospace"> return([/i_loc,j_loc/])</font></div><div style="font-size:small"><font face="monospace, monospace">end</font></div><div style="font-size:small"><br></div><div style="font-size:small">and then call the function with:</div><div style="font-size:small"><br></div><div style="font-size:small"><font face="monospace, monospace">xy_start = get_ij_ncl(lat2d,lon2d,lat_beg<wbr>,lon_beg)</font></div><div style="font-size:small"><br></div><div style="font-size:small">You will then need to change "x_start" to xy_start(0) and "y_start" to xy_start(1)</div><div style="font-size:small"><br></div><div style="font-size:small"><b>[5] Another place where a function would be helpful:</b></div><div style="font-size:small"><br></div><div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>u_ave_new = u_ave(xy_start(1):xy_end(1),xy<wbr>_start(0):xy_end(0))</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>v_ave_new = v_ave(xy_start(1):xy_end(1),xy<wbr>_start(0):xy_end(0))</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lat2d_new = lat2d(xy_start(1):xy_end(1),xy<wbr>_start(0):xy_end(0))</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lon2d_new = lon2d(xy_start(1):xy_end(1),xy<wbr>_start(0):xy_end(0))</font></div><div style="font-size:small"><font face="monospace, monospace">; plotB = gsn_csm_vector(wks,u_ave_new,v<wbr>_ave_new,vecres) </font></div><div style="font-size:small"><font face="monospace, monospace">;;;opy_VarCoords(dumb_ave,u_av<wbr>e_new) </font></div><div style="font-size:small"><font face="monospace, monospace">; copy_VarCoords(dumb_ave,v_ave_<wbr>new) </font></div><div style="font-size:small"><font face="monospace, monospace"> u_ave_new!0 = "lat"</font></div><div style="font-size:small"><font face="monospace, monospace"> u_ave_new!1 = "lon"</font></div><div style="font-size:small"><font face="monospace, monospace"> u_ave_new&lat= lat(xy_start(1):xy_end(1))</font></div><div style="font-size:small"><font face="monospace, monospace"> u_ave_new&lon= lon(xy_start(0):xy_end(0))</font></div><div style="font-size:small"><font face="monospace, monospace"> v_ave_new!0 = "lat"</font></div><div style="font-size:small"><font face="monospace, monospace"> v_ave_new!1 = "lon"</font></div><div style="font-size:small"><font face="monospace, monospace"> v_ave_new&lat= lat(xy_start(1):xy_end(1))</font></div><div style="font-size:small"><font face="monospace, monospace"> v_ave_new&lon= lon(xy_start(0):xy_end(0))</font></div><div style="font-size:small"><br></div><div style="font-size:small">Create a function to do the subsetting and attaching of the metadata:</div><div style="font-size:small"><br></div><div style="font-size:small"><font face="monospace, monospace">function average_subset(x,lat,lon,xy_st<wbr>art,xy_end)</font></div><div style="font-size:small"><font face="monospace, monospace">begin</font></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>x_ave_new = x(xy_start(1):xy_end(1),xy_sta<wbr>rt(0):xy_end(0))</font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>x_ave_new!0 = "lat"</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>x_ave_new!1 = "lon"</font></div></div><div style="font-size:small"><font face="monospace, monospace"><div> <span class="m_-744005097098066842Apple-converted-space"> </span>x_ave_new&lat= lat(xy_start(1):xy_end(1))</div><div> <span class="m_-744005097098066842Apple-converted-space"> </span>x_ave_new&lon= lon(xy_start(0):xy_end(0))</div><div> <span class="m_-744005097098066842Apple-converted-space"> </span>return(x_ave_new)</div></font></div><div style="font-size:small"><font face="monospace, monospace">end</font></div><div style="font-size:small"><br></div></div><div style="font-size:small">so now you can replace the above code with two lines:</div><div style="font-size:small"><br></div><div style="font-size:small"><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>u_ave_new = average_subset(u_ave,lat,lon,x<wbr>y_start,xy_end)</font></div><div style="font-size:small"><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>v_ave_new = average_subset(v_ave,lat,lon,x<wbr>y_start,xy_end)</font></div><div><br></div><div><b>[6] You created "lat2d_new" and "lon2d_new" but never use them. Again, this is using up memory for no purpose. Remove those two lines.</b></div><div><br></div></div><div style="font-size:small"><b>[7] If you are propagating a smaller array to a larger array, as is the case here:</b></div><div style="font-size:small"><br></div><div style="font-size:small"><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lat2d = z</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lon2d = z</font></div></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>do j = 0,nj-1</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>do i = 0,ni-1</font></div><div><font face="monospace, monospace"> lat2d(j,i)=lat(j)</font></div><div><font face="monospace, monospace"> lon2d(j,i)=lon(i)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end do</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>end do</font></div></div><div><br></div><div>then use conform_dims instead of a do loop:</div><div><br></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lat2d = conform_dims(dims2d,lat,0) </font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>lon2d = conform_dims(dims2d,lon,1)</font></div><div><font face="monospace, monospace"><br></font></div><div><font face="arial, helvetica, sans-serif">Note that I no longer need the "lat2d = z" or "lon2d = z" code.</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><font face="arial, helvetica, sans-serif">[8] You have this code, and I'm not sure why:</font></div><div><font face="arial, helvetica, sans-serif"><br></font></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>a = addfile(filename,"r")</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>fin = a</font></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">This seems like an unnecessary copy of "a". Why not simply do:</div><div style="font-family:arial,helvetica,sans-serif"><br></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>fin = addfile(filename,"r")</font></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif"><b>[9] The "gsn_define_colormap" call should not be inside the do loop. Call this right after you call gsn_open_wks.</b></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif"><b>[10] There's some random code I don't understand. For example:</b></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(z,lat2d)</font></div><div><font face="monospace, monospace"> <span class="m_-744005097098066842Apple-converted-space"> </span>copy_VarCoords(z,lon2d)</font></div></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">lat2d and lon2d don't need to have z's coordinate arrays attached to them for any reason that I can see, so I think you can remove those two lines.</div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif"><b>[11] Every time you have a do loop or an if statement, indent all the code inside *consistently* so you can more easily see what part of the code you're in.</b></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif"><b>[12] Don't make extra copies of variables unless you really need to.</b></div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">For example, you have:</div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif"><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619gmail-s1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619gmail-Apple-converted-space"> </span>filename = all_files(n)</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619gmail-p1">There's really no need to create "filename" since you can just use "all_files(n)".</p></div><div style="font-family:arial,helvetica,sans-serif">I've tried to clean up your code to show you what I'm talking about. The attached script likely won't run because I don't have your data to test it. But, hopefully you can see what I'm doing and mimic this in your code.</div><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785HOEnZb"><font color="#888888"><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif">--Mary</div><div style="font-family:arial,helvetica,sans-serif"><br></div><div style="font-family:arial,helvetica,sans-serif"><br></div></font></span></div></div></div></div></div></div><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785HOEnZb"><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 17, 2017 at 11:40 AM, Barry Lynn<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:barry.h.lynn@gmail.com" target="_blank">barry.h.lynn@gmail.com</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span><wbr>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr">Hi Rick:<div><br></div><div>Thank you for your suggestion.</div><div><br></div><div>Could you please give me some guidelines on how to delete resources.</div><div><br></div><div>I have included the script. If you can provide an example, I can take it from there.</div><div><br></div><div>Thank you,</div><div><br></div><div>Barry</div></div><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619HOEnZb"><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619h5"><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Jul 17, 2017 at 5:22 PM, Rick Brownrigg<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:brownrig@ucar.edu" target="_blank">brownrig@ucar.edu</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span><wbr>wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div><div><div>Hi Barry,<br><br></div>On Linux, an errno=12 is an "out of memory" error. I doubt that its related directly to the systemfunc() call, but rather due to memory being consumed by your script in previous iterations of the loop. You might check if there are variables that can be freed (i.e., deleted()) after each iteration.<br><br></div>HTH...<br></div>Rick<br></div><div class="gmail_extra"><br><div class="gmail_quote"><div><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367h5">On Sun, Jul 16, 2017 at 8:56 PM, Barry Lynn<span class="m_-744005097098066842Apple-converted-space"> </span><span dir="ltr"><<a href="mailto:barry.h.lynn@gmail.com" target="_blank">barry.h.lynn@gmail.com</a>></span><span class="m_-744005097098066842Apple-converted-space"> </span><wbr>wrote:<br></div></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex"><div><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367h5"><div dir="ltr">Hi:<div><br></div><div>I have a program that does multiple loops.</div><div><br></div><div>I had this error:</div><div><br></div><div><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">0)<span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-tab-span">        </span>i_dir = 6</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">fatal:systemfunc: cannot create child process:[errno=12]</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">fatal:["Execute.c":8640]:Execu<wbr>te: Error occurred at or near line 84 in file ./plot_loop_700mb.ncl</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><br></span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">This occurred when reading the file from the sixth directory of 20.</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><br></span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">Here was the read from the 5th directory:</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">(0)<span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-tab-span">        </span>i_dir = 5</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">(0)<span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-tab-span">        </span>all_files(n) = /home/cust100021_vol1/barry/cu<wbr>st100021_vol2/GEFS/GEFS_05/gep<wbr>05.t00z.pgrb2b.0p50.f084.grb</span></p><div><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"></span><br class="m_-744005097098066842webkit-block-placeholder"></div><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1">Here is a listing of both files:</p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1">They are both present, but the second attempted allocation/definition of the file fails with the read that follows:</p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><br></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">[barry@cust100021-login1 GEFS]$ ls -ltr /home/cust100021_vol1/barry/cu<wbr>st100021_vol2/GEFS/GEFS_05/gep<wbr>05.t00z.pgrb2b.0p50.f084.grb</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">-rw-r--r-- 1 barry cust100021 78985320 Jul 16 04:58 /home/cust100021_vol1/barry/cu<wbr>st100021_vol2/GEFS/GEFS_05/gep<wbr>05.t00z.pgrb2b.0p50.f084.grb</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">[barry@cust100021-login1 GEFS]$ ls -ltr /home/cust100021_vol1/barry/cu<wbr>st100021_vol2/GEFS/GEFS_06/gep<wbr>06.t00z.pgrb2b.0p50.f084.grb</span></p><div><br class="m_-744005097098066842webkit-block-placeholder"></div><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">-rw-r--r-- 1 barry cust100021 80466702 Jul 16 04:58 /home/cust100021_vol1/barry/cu<wbr>st100021_vol2/GEFS/GEFS_06/gep<wbr>06.t00z.pgrb2b.0p50.f084.grb</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">Here is the read:</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><br></span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>print("i_dir = " + i_dir)</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>diri = dirWRF(i_dir) + "/"</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">; define individual file read</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>all_files = systemfunc("ls " + diri + "ge*pgrb2b*grb")</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>print("all_files(n) = " + all_files(n))</span></p><div><br class="m_-744005097098066842webkit-block-placeholder"></div><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-Apple-converted-space"> <span class="m_-744005097098066842Apple-converted-space"> </span></span>filename = all_files(n)</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><br></span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">Is the problem that I make this allocation multiple times, each directory, each file? Perhaps I should read all files at once into a two dimensional filename array?</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><br></span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1">Thanks</span></p><p class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-p1"><span class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail-s1"><br></span></p><div><br></div>--<span class="m_-744005097098066842Apple-converted-space"> </span><br><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367m_-1244925744970829752m_-5735885267463024187gmail_signature"><div dir="ltr">Barry H. Lynn, Ph.D<div><div>Senior Lecturer,</div><div><div><span style="color:rgb(136,136,136)">The Institute of the Earth Science, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">The Hebrew University of Jerusalem, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Givat Ram, Jerusalem 91904, Israel </span><br style="color:rgb(136,136,136)"></div><span style="color:rgb(136,136,136)">Tel: 972 547 231 170</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Fax: (972)-25662581</span></div></div><div><span style="color:rgb(136,136,136)"><br></span></div><div>C.E.O, Weather It Is, LTD<br>Weather and Climate Focus<br><a href="http://weather-it-is.com/" target="_blank">http://weather-it-is.com</a><br>Jerusalem, Israel<br>Local: 02 930 9525<br>Cell: 054 7 231 170<br>Int-IS: x972 2 930 9525<br>US<span class="m_-744005097098066842Apple-converted-space"> </span><a href="tel:(914)%20432-3108" value="+19144323108" target="_blank">914 432 3108</a><br></div></div></div></div></div><br></div></div>______________________________<wbr>_________________<br>ncl-talk mailing list<br><a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a><br>List instructions, subscriber options, unsubscribe:<br><a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">http://mailman.ucar.edu/mailma<wbr>n/listinfo/ncl-talk</a><br><br></blockquote></div><br></div></blockquote></div><br><br clear="all"><div><br></div>--<span class="m_-744005097098066842Apple-converted-space"> </span><br><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785m_5532582317255059619m_-390945913059712367gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Barry H. Lynn, Ph.D<div><div>Senior Lecturer,</div><div><div><span style="color:rgb(136,136,136)">The Institute of the Earth Science, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">The Hebrew University of Jerusalem, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Givat Ram, Jerusalem 91904, Israel </span><br style="color:rgb(136,136,136)"></div><span style="color:rgb(136,136,136)">Tel: 972 547 231 170</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Fax: (972)-25662581</span></div></div><div><span style="color:rgb(136,136,136)"><br></span></div><div>C.E.O, Weather It Is, LTD<br>Weather and Climate Focus<br><a href="http://weather-it-is.com/" target="_blank">http://weather-it-is.com</a><br>Jerusalem, Israel<br>Local: 02 930 9525<br>Cell: 054 7 231 170<br>Int-IS: x972 2 930 9525<br>US<span class="m_-744005097098066842Apple-converted-space"> </span><a href="tel:(914)%20432-3108" value="+19144323108" target="_blank">914 432 3108</a><br></div></div></div></div></div></div><br>______________________________<wbr>_________________<br>ncl-talk mailing list<br><a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a><br>List instructions, subscriber options, unsubscribe:<br><a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" rel="noreferrer" target="_blank">http://mailman.ucar.edu/mailma<wbr>n/listinfo/ncl-talk</a><br><br></blockquote></div><br></div></div></div></blockquote></div><br><br clear="all"><div><br></div>--<span class="m_-744005097098066842Apple-converted-space"> </span><br><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513m_-5610480789294355575m_-359832157629598785gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Barry H. Lynn, Ph.D<div><div>Senior Lecturer,</div><div><div><span style="color:rgb(136,136,136)">The Institute of the Earth Science, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">The Hebrew University of Jerusalem, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Givat Ram, Jerusalem 91904, Israel </span><br style="color:rgb(136,136,136)"></div><span style="color:rgb(136,136,136)">Tel: 972 547 231 170</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Fax: (972)-25662581</span></div></div><div><span style="color:rgb(136,136,136)"><br></span></div><div>C.E.O, Weather It Is, LTD<br>Weather and Climate Focus<br><a href="http://weather-it-is.com/" target="_blank">http://weather-it-is.com</a><br>Jerusalem, Israel<br>Local: 02 930 9525<br>Cell: 054 7 231 170<br>Int-IS: x972 2 930 9525<br>US<span class="m_-744005097098066842Apple-converted-space"> </span><a href="tel:(914)%20432-3108" value="+19144323108" target="_blank">914 432 3108</a><br></div></div></div></div></div></div></blockquote></div><br></div></div></div></blockquote></div><br><br clear="all"><div><br></div>--<span class="m_-744005097098066842Apple-converted-space"> </span><br><div class="m_-744005097098066842m_5249870887675939839m_-3214439972971981513gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Barry H. Lynn, Ph.D<div><div>Senior Lecturer,</div><div><div><span style="color:rgb(136,136,136)">The Institute of the Earth Science, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">The Hebrew University of Jerusalem, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Givat Ram, Jerusalem 91904, Israel </span><br style="color:rgb(136,136,136)"></div><span style="color:rgb(136,136,136)">Tel: 972 547 231 170</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Fax: (972)-25662581</span></div></div><div><span style="color:rgb(136,136,136)"><br></span></div><div>C.E.O, Weather It Is, LTD<br>Weather and Climate Focus<br><a href="http://weather-it-is.com/" target="_blank">http://weather-it-is.com</a><br>Jerusalem, Israel<br>Local: 02 930 9525<br>Cell: 054 7 231 170<br>Int-IS: x972 2 930 9525<br>US<span class="m_-744005097098066842Apple-converted-space"> </span><a href="tel:(914)%20432-3108" value="+19144323108" target="_blank">914 432 3108</a><br></div></div></div></div></div></div></blockquote></div><br></div></div></div></blockquote></div><br><br clear="all"><div><br></div>--<span class="m_-744005097098066842Apple-converted-space"> </span><br><div class="m_-744005097098066842gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Barry H. Lynn, Ph.D<div><div>Senior Lecturer,</div><div><div><span style="color:rgb(136,136,136)">The Institute of the Earth Science, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">The Hebrew University of Jerusalem, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Givat Ram, Jerusalem 91904, Israel </span><br style="color:rgb(136,136,136)"></div><span style="color:rgb(136,136,136)">Tel: 972 547 231 170</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Fax: (972)-25662581</span></div></div><div><span style="color:rgb(136,136,136)"><br></span></div><div>C.E.O, Weather It Is, LTD<br>Weather and Climate Focus<br><a href="http://weather-it-is.com/" target="_blank">http://weather-it-is.com</a><br>Jerusalem, Israel<br>Local: 02 930 9525<br>Cell: 054 7 231 170<br>Int-IS: x972 2 930 9525<br>US <a href="tel:(914)%20432-3108" value="+19144323108" target="_blank">914 432 3108</a><br></div></div></div></div></div></div><span id="m_-744005097098066842cid:10A5E636-87B3-402C-AED8-6AABF9AD0A9D"><variable.file></span><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">_______________<wbr>______________________________<wbr>__</span><span class=""><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">ncl-talk mailing list</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="mailto:ncl-talk@ucar.edu" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">ncl-talk@ucar.edu</a><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><span style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px;float:none;display:inline!important">List instructions, subscriber options, unsubscribe:</span><br style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px"><a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" style="font-family:Helvetica;font-size:12px;font-style:normal;font-variant-caps:normal;font-weight:normal;letter-spacing:normal;text-align:start;text-indent:0px;text-transform:none;white-space:normal;word-spacing:0px" target="_blank">http://mailman.ucar.edu/<wbr>mailman/listinfo/ncl-talk</a></span></div></blockquote></div><br></div></div></blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr">Barry H. Lynn, Ph.D<div><div>Senior Lecturer,</div><div><div><span style="color:rgb(136,136,136)">The Institute of the Earth Science, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">The Hebrew University of Jerusalem, </span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Givat Ram, Jerusalem 91904, Israel </span><br style="color:rgb(136,136,136)"></div><span style="color:rgb(136,136,136)">Tel: 972 547 231 170</span><br style="color:rgb(136,136,136)"><span style="color:rgb(136,136,136)">Fax: (972)-25662581</span></div></div><div><span style="color:rgb(136,136,136)"><br></span></div><div>C.E.O, Weather It Is, LTD<br>Weather and Climate Focus<br><a href="http://weather-it-is.com" target="_blank">http://weather-it-is.com</a><br>Jerusalem, Israel<br>Local: 02 930 9525<br>Cell: 054 7 231 170<br>Int-IS: x972 2 930 9525<br>US 914 432 3108<br></div></div></div>
</div></div>