<div dir="ltr"><div><div><div><div><div><div><div>[1] General background<br></div><div><br>NCL is a strongly typed language. The default rules will not allow <br><br></div>  a = (/1 4, 5/)           ; a(3)<br></div>  b = (/2,5,6,9,10/)    ; b(5)<br><br></div>  a  = b   <br><br></div>left hand side is size 3; right hand size  is size 5. This violate an NCL &#39;strongly typed&#39; rule and would yield<br><br>Fatal:Dimension sizes of left hand side do not match right hand side<br><br>-----<br><br><br></div>FYI: NCL (6.1.1 onward) syntax contains the := reassignment operator which over-rides the default rule.<br><br></div>   a := b     ; this would be allowed via reassignment<br><br></div>---- 6.1.1 documentation; reassignment allows different sizes &amp; types to be reassigned.<br><div><p>
<b>New reassignment operator</b></p><p>

There&#39;s a new operator, &quot;:=&quot;, that allows you to reassign variables
without having to delete them first.<br>
For example:
</p><p>

</p><pre>   x = fspan(-10.5,20.8,0.1)    ; array of floats
;  x = &quot;This is a string&quot;       ; this won&#39;t work
   x <b>:=</b> &quot;This is a string&quot;      ; single string
</pre>
<p>

This operator works for attributes as well, but not for coordinate arrays.
</p><p>

<a name="m_892631072938679669_NewFunction6.1.1"></a>
</p><p>
++++++++++++++++++++++++++++++<wbr>+++++++++</p><p><br></p><p>[2]<b> </b>o, how does [1] affect your code?<br></p><div><br></div><div><div>fout-&gt;U250 = (/u250/)</div><div>fout-&gt;U500 = (/u500/)</div><div>fout-&gt;V250 = (/v250/)</div><div>fout-&gt;V500 = (/v500/)<br><br></div><div>It is my speculation, that the predefined &#39;U250&#39;  dimension sizes for the file referenced by  &#39;fout&#39; <br><br>dimSizes = (/-1,ny,nx,ny+1,nx+1,19/)<br><br>are of different sizes than the (/u250/) variable dimension sizes.<br><br></div><div>do a <br><br>printVarSummary(u250)<br><br></div><div>or <br><br></div><div>dim250 = dimsizes(u250)<br></div><div>print(dim250)<br><br></div><div>To check the dimension sizes.<br><br><br></div><div>Possibly, even though the script failed, a netCDF file was created. <br>Do a &#39;ncdump -h&#39; on the file. Look at the dimension sizes.<br><br></div><div>NOTE: the := will *not* work for this issue.<br><br></div><div>Good luck<br></div><div><br><br></div></div><div><br></div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Jan 5, 2017 at 1:31 PM, Sébastien Marinier <span dir="ltr">&lt;<a href="mailto:marinier.sebastien@gmail.com" target="_blank">marinier.sebastien@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div dir="ltr">Dear NCL users,<div><br></div><div>I&#39;ve been using NCL for post-processing some WRF output files: the script &quot;crops&quot; the domain and interpolates some variables at some pressure levels. When I run my script, I get this error:</div><div><br></div><div><div>fatal:Dimension sizes of left hand side do not match right hand side</div><div>fatal:[&quot;Execute.c&quot;:8575]:<wbr>Execute: Error occurred at or near line 140 in file test_crop_3d.ncl</div><div><br></div><div>fatal:Dimension sizes of left hand side do not match right hand side</div><div>fatal:[&quot;Execute.c&quot;:8575]:<wbr>Execute: Error occurred at or near line 141 in file test_crop_3d.ncl</div><div><br></div><div>fatal:Dimension sizes of left hand side do not match right hand side</div><div>fatal:[&quot;Execute.c&quot;:8575]:<wbr>Execute: Error occurred at or near line 142 in file test_crop_3d.ncl</div><div><br></div><div>fatal:Dimension sizes of left hand side do not match right hand side</div><div>fatal:[&quot;Execute.c&quot;:8575]:<wbr>Execute: Error occurred at or near line 143 in file test_crop_3d.ncl</div></div><div><br></div><div>I looked at this kind of error in the archives, but didn&#39;t find any solution. Lines 140 to 143 are the following lines:</div><div><br></div><div><div>fout-&gt;U250 = (/u250/)</div><div>fout-&gt;U500 = (/u500/)</div><div>fout-&gt;V250 = (/v250/)</div><div>fout-&gt;V500 = (/v500/)</div></div><div><br></div><div>Here&#39;s the full script:</div><div><br></div><div><div>;-----------------------------<wbr>------------------------------<wbr>-</div><div>;Getting coordinates and indices to crop the domain</div><div>;-----------------------------<wbr>------------------------------<wbr>-</div><div>fname_coords = &quot;./<a href="http://wrfout_constants.nc" target="_blank">wrfout_constants.nc</a>&quot;</div><div>f_coords = addfile(fname_coords,&quot;r&quot;)</div><div><br></div><div>lon = f_coords-&gt;XLONG(0,:,:)</div><div>lat = f_coords-&gt;XLAT(0,:,:)</div><div><br></div><div>latN = 60.0</div><div>latS = 40.0</div><div>lonW = -140.0</div><div>lonE = -85.0</div><div><br></div><div>hpa = 0.01</div><div><br></div><div>ij = region_ind(lat,lon,latS,latN,<wbr>lonW,lonE)</div><div><br></div><div>iStrt = ij(0)</div><div>iLast = ij(1)</div><div>jStrt = ij(2)</div><div>jLast = ij(3)</div><div><br></div><div>new_lat = lat(iStrt:iLast,jStrt:jLast)</div><div>new_lon = lon(iStrt:iLast,jStrt:jLast)</div><div><br></div><div>;-----------------------------<wbr>------------------------------<wbr>-</div><div>;Opening files</div><div>;-----------------------------<wbr>------------------------------<wbr>-</div><div>f = addfile(&quot;wrf3d_d01_2013-06-01_<wbr>00:00:00&quot;,&quot;r&quot;)</div><div><br></div><div>;-----------------------------<wbr>------------------------------<wbr>--</div><div>;Create new netCDF file</div><div>;-----------------------------<wbr>------------------------------<wbr>--</div><div>dims = dimsizes(new_lat)</div><div>ny = dims(0)</div><div>nx = dims(1)</div><div><br></div><div>i=0</div><div><br></div><div>time = f-&gt;Times(i,:)</div><div>tk = f-&gt;TK(i,:,iStrt:iLast,jStrt:<wbr>jLast)</div><div>p = f-&gt;P(i,:,iStrt:iLast,jStrt:<wbr>jLast)</div><div>z_tmp = f-&gt;Z(i,:,iStrt:iLast,jStrt:<wbr>jLast)</div><div>qvapor = f-&gt;QVAPOR(i,:,iStrt:iLast,<wbr>jStrt:jLast)</div><div>u_tmp = f-&gt;U(i,:,iStrt:iLast,jStrt:<wbr>jLast)</div><div>v_tmp = f-&gt;V(i,:,iStrt:iLast,jStrt:<wbr>jLast)</div><div><br></div><div>;Unstagger some variables</div><div>z = wrf_user_unstagger(z_tmp,z_<wbr>tmp@stagger)</div><div>;u = wrf_user_unstagger(u_tmp,u_<wbr>tmp@stagger)</div><div>;v = wrf_user_unstagger(v_tmp,v_<wbr>tmp@stagger)</div><div>u = u_tmp</div><div>v = v_tmp</div><div><br></div><div>;Compute RH</div><div>rh = wrf_rh(qvapor,p,tk)</div><div><br></div><div>;Interpolation at pressure levels</div><div>;250 mb</div><div>u250 = wrf_user_intrp3d(u,p*hpa,&quot;h&quot;,<wbr>250,0.,False)</div><div>v250 = wrf_user_intrp3d(v,p*hpa,&quot;h&quot;,<wbr>250,0.,False)</div><div>z250 = wrf_user_intrp3d(z,p*hpa,&quot;h&quot;,<wbr>250,0.,False)</div><div>t250 = wrf_user_intrp3d(tk,p*hpa,&quot;h&quot;,<wbr>250,0.,False)</div><div>rh250 = wrf_user_intrp3d(rh,p*hpa,&quot;h&quot;,<wbr>250,0.,False)</div><div>;500 mb</div><div>u500 = wrf_user_intrp3d(u,p*hpa,&quot;h&quot;,<wbr>500,0.,False)</div><div>v500 = wrf_user_intrp3d(v,p*hpa,&quot;h&quot;,<wbr>500,0.,False)</div><div>z500 = wrf_user_intrp3d(z,p*hpa,&quot;h&quot;,<wbr>500,0.,False)</div><div>t500 = wrf_user_intrp3d(tk,p*hpa,&quot;h&quot;,<wbr>500,0.,False)</div><div>rh500 = wrf_user_intrp3d(rh,p*hpa,&quot;h&quot;,<wbr>500,0.,False)</div><div>;sfc</div><div>psfc = p(0,:,:)</div><div>slp = wrf_slp(z,tk,p,qvapor)</div><div>rh0 = rh(0,:,:)</div><div><br></div><div>;Output Files</div><div>diro = &quot;./&quot;</div><div>filo = &quot;wrf_lvls_&quot;+time+&quot;.nc&quot;</div><div>system(&quot;/bin/rm -f &quot;+diro+filo)    ; remove if exists</div><div>fout  = addfile(diro+filo,&quot;c&quot;)  ; open output file</div><div><br></div><div>setfileoption(fout,&quot;<wbr>DefineMode&quot;,True)</div><div><br></div><div>;Global attributes</div><div>fAtt = True</div><div>fAtt@title = &quot;Cropped and interpolated (sfc, 500 mb and 250 mb) data files from Liu et al. (2016) simulations&quot;</div><div>fAtt@Conventions = &quot;None&quot;</div><div>fAtt@creation_date = systemfunc(&quot;date&quot;)</div><div>fileattdef(fout,fAtt)</div><div><br></div><div>;Dimensions of coordinates</div><div>dimNames = (/&quot;Time&quot;,&quot;south_north&quot;,&quot;west_<wbr>east&quot;,&quot;south_north_stag&quot;,&quot;<wbr>west_east_stag&quot;,&quot;DateStrLen&quot;/)</div><div>dimSizes = (/-1,ny,nx,ny+1,nx+1,19/)</div><div>dimUnlim = (/True,False,False,False,<wbr>False,False/)</div><div>filedimdef(fout,dimNames,<wbr>dimSizes,dimUnlim)</div><div><br></div><div>;... of variables</div><div>filevardef(fout,&quot;Times&quot;,<wbr>typeof(time),getvardims(time))</div><div>filevardef(fout,&quot;XLAT&quot;,typeof(<wbr>new_lat),getvardims(new_lat))</div><div>filevardef(fout,&quot;XLONG&quot;,<wbr>typeof(new_lon),getvardims(<wbr>new_lon))</div><div>filevardef(fout,&quot;U250&quot;,typeof(<wbr>u250),getvardims(u250))</div><div>filevardef(fout,&quot;U500&quot;,typeof(<wbr>u500),getvardims(u500))</div><div>filevardef(fout,&quot;V250&quot;,typeof(<wbr>v250),getvardims(v250))</div><div>filevardef(fout,&quot;V500&quot;,typeof(<wbr>v500),getvardims(v500))</div><div>filevardef(fout,&quot;Z250&quot;,typeof(<wbr>z250),getvardims(z250))</div><div>filevardef(fout,&quot;Z500&quot;,typeof(<wbr>z500),getvardims(z500))</div><div>filevardef(fout,&quot;T250&quot;,typeof(<wbr>t250),getvardims(t250))</div><div>filevardef(fout,&quot;T500&quot;,typeof(<wbr>t500),getvardims(t500))</div><div>filevardef(fout,&quot;RH250&quot;,<wbr>typeof(rh250),getvardims(<wbr>rh250))</div><div>filevardef(fout,&quot;RH500&quot;,<wbr>typeof(rh500),getvardims(<wbr>rh500))</div><div>filevardef(fout,&quot;RH0&quot;,typeof(<wbr>rh0),getvardims(rh0))</div><div>filevardef(fout,&quot;PSFC&quot;,typeof(<wbr>psfc),getvardims(psfc))</div><div>filevardef(fout,&quot;SLP&quot;,typeof(<wbr>slp),getvardims(slp))</div><div><br></div><div>;Copy attributes</div><div>;filevarattdef(fout,&quot;Times&quot;,<wbr>time)</div><div>filevarattdef(fout,&quot;XLAT&quot;,new_<wbr>lat)</div><div>filevarattdef(fout,&quot;XLONG&quot;,<wbr>new_lon)</div><div>filevarattdef(fout,&quot;U250&quot;,<wbr>u250)</div><div>filevarattdef(fout,&quot;U500&quot;,<wbr>u500)</div><div>filevarattdef(fout,&quot;V250&quot;,<wbr>v250)</div><div>filevarattdef(fout,&quot;V500&quot;,<wbr>v500)</div><div>filevarattdef(fout,&quot;Z250&quot;,<wbr>z250)</div><div>filevarattdef(fout,&quot;Z500&quot;,<wbr>z500)</div><div>filevarattdef(fout,&quot;T250&quot;,<wbr>t250)</div><div>filevarattdef(fout,&quot;T500&quot;,<wbr>t500)</div><div>filevarattdef(fout,&quot;RH250&quot;,<wbr>rh250)</div><div>filevarattdef(fout,&quot;RH500&quot;,<wbr>rh500)</div><div>filevarattdef(fout,&quot;RH0&quot;,rh0)</div><div>filevarattdef(fout,&quot;PSFC&quot;,<wbr>psfc)</div><div>filevarattdef(fout,&quot;SLP&quot;,slp)</div><div><br></div><div>setfileoption(fout,&quot;<wbr>DefineMode&quot;,False)</div><div><br></div><div>;Output variables</div><div>fout-&gt;Times = (/time/)</div><div>fout-&gt;XLAT = (/new_lat/)</div><div>fout-&gt;XLONG = (/new_lon/)</div><div>fout-&gt;U250 = (/u250/)</div><div>fout-&gt;U500 = (/u500/)</div><div>fout-&gt;V250 = (/v250/)</div><div>fout-&gt;V500 = (/v500/)</div><div>fout-&gt;Z250 = (/z250/)</div><div>fout-&gt;Z500 = (/z500/)</div><div>fout-&gt;T250 = (/t250/)</div><div>fout-&gt;T500 = (/t500/)</div><div>fout-&gt;RH250 = (/rh250/)</div><div>fout-&gt;RH500 = (/rh500/)</div><div>fout-&gt;RH0 = (/rh0/)</div><div>fout-&gt;PSFC = (/psfc/)</div><div>fout-&gt;SLP = (/slp/)</div></div><div>------------------------------<wbr>------------------------------<wbr>------------------------------<wbr>-------------</div><div><br></div><div>I think there is a problem with the staggered coordinates, but I can&#39;t put the finger on it...</div><div><br></div><div>Thanks for the help,</div><div>Sebastien.</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>