<div dir="ltr"><div><div><div><div><div><div>re:  "you better not use loops to perform simple operations as they are slower than assignments."<br><br></div>Generally, it is more efficient to use array syntax. Your example has 'small' arrays so the speed difference is likely not noticeable.  Still, thinking in array terms is a good exercise,<br><br><br>I suggest that you learn how to use conform:<br>   <a href="https://www.ncl.ucar.edu/Document/Functions/Built-in/conform.shtml">https://www.ncl.ucar.edu/Document/Functions/Built-in/conform.shtml</a><br>   <a href="https://www.ncl.ucar.edu/Document/Functions/Built-in/conform_dims.shtml">https://www.ncl.ucar.edu/Document/Functions/Built-in/conform_dims.shtml</a><br><br>=====================<br><br></div><div>; for clarity, explicitly separate into different variables<br><br></div><div>  a  = temp(:,:,0,0)        ; a(time,level);  dimension numbers 0, 1<br></div><div>  la = conform(a, h, 1)  ; la(:,:)  <br></div>  theta = a*(10000/la)^0.286<br></div>  copy_VarCoords(a,theta)<br></div>  theta@long_name = "potential temperature"<br></div>  theta@units = "K"<br><br></div>or, less clear, but technically more efficient<br><br>  theta = temp(:,:,0,0)*(10000/conform(temp(:,:,0,0), h, 1))^0.286<br><br><div><div><div><div><div>My recommendation is to write clear code unless necessary</div><div><br>---<br></div><div>Of course, there is a function. Use of the function allows for cleaner code.<br><br>   <a href="http://www.ncl.ucar.edu/Document/Functions/Contributed/pot_temp.shtml">http://www.ncl.ucar.edu/Document/Functions/Contributed/pot_temp.shtml</a><br><br></div><div>  theta = <strong>pot_temp</strong>(h ,temp(:,:,0,0) , 1, False) ; will return all meta data also<br></div><div>  printVarSummary(theta)<br></div><div>  printMinMax(theta,0)<br></div><div><br></div></div></div></div></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Sat, Mar 24, 2018 at 3:35 AM, Guido Cioni <span dir="ltr"><<a href="mailto:guidocioni@gmail.com" target="_blank">guidocioni@gmail.com</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">The error message is exactly telling you what the problem is.<span class=""><div><br></div><div><blockquote type="cite"><div dir="ltr"><div><div><div>fatal:Loop end must be scalar</div></div></div></div></blockquote><br></div></span><div>You have </div><div><br></div><div><blockquote type="cite"><div dir="ltr"><div><div><div>do i = 0,time-1</div></div></div></div></blockquote><br></div><div>i is a scalar integer, time is an array. You need to use dimsizes(time)-1.</div><div><br></div><div>Also you better not use loops to perform simple operations as they are slower tha assignments. </div><div><br><div><blockquote type="cite"><div><div class="h5"><div>Il giorno 24 mar 2018, alle ore 07:10, Arijeet Dutta <<a href="mailto:arijeet.uoh@gmail.com" target="_blank">arijeet.uoh@gmail.com</a>> ha scritto:</div><br class="m_1519056434648126631Apple-interchange-newline"></div></div><div><div><div class="h5"><div dir="ltr"><div><div><div>Hi all, I am trying to calculate potential temperature as follows<br><br>h = addfile("<a href="http://air.mon.mean.nc/" target="_blank">air.mon.mean.nc</a>","r")<br>lat = h->lat<br>lon = h->lon<br>time = h->time<br>temp = h->air<br>l = h->level*10<br><br><br>a = temp(:,:,0,0) ;tim,lv,lat,lon,<br>do i = 0,time-1<br>        do j = 0,l-1<br>                theta(i,j) = a*(10000/l(j))^0.286<br>        end do<br>end do<br><br>fatal:Loop end must be scalar, can't execute loop<br><br></div>Any help?<br><br></div>Regards<br></div>Arijeet<br></div></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" target="_blank">http://mailman.ucar.edu/<wbr>mailman/listinfo/ncl-talk</a><br></div></blockquote></div><br></div></div><br>______________________________<wbr>_________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@ucar.edu">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/<wbr>mailman/listinfo/ncl-talk</a><br>
<br></blockquote></div><br></div>