<div dir="ltr"><div>Ehsan, := is called the "reassignment operator".  It completely deletes the variable on the left, if any, before assigning the new array value.  The normal assignment operator "=" does not do this.  It replaces only the numeric values, and preserves any metadata on the left</div><div><br></div><div>Now consider that an assignment like b = a*b, or b := a*b, is evaluated in two separate stages.  First the right side is evaluated.  Then the result is copied to the left side.  Also, any math expression like a*b removes all metadata from the input arrays, including coordinates and dimension names.  Therefore:</div><div><br></div><div><div>* With b = a*b, only the numeric values in b are replaced, and previous metadata on b is left intact.</div><div>* With b := a*b, b is deleted after calculation, and before assignment.  A brand new array for b is calculated, and all previous metadata on b is lost.</div><div><br></div><div>There are several consecutive sections covering this in the NCL users manual, starting with "Variable Assignment".</div><br class="gmail-Apple-interchange-newline"></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Sat, Oct 15, 2022 at 9:11 AM Ehsan Taghizadeh via ncl-talk <<a href="mailto:ncl-talk@mailman.ucar.edu">ncl-talk@mailman.ucar.edu</a>> wrote:<br></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 style="font-family:"bookman old style","new york",times,serif;font-size:16px"><div dir="ltr"><div><div>Hi,</div><div>I faced something interesting which I didn’t know in NCL. It might be obvious for many of you, however, I would like to share it.</div><div>I tried to plot wind barb at 10m level above the ground from GFS0.25 data. First, I used following lines:</div><div><span style="white-space:pre-wrap">        </span>u10 = fi->UGRD_P0_L103_GLL0({10},:,:)</div><div><span style="white-space:pre-wrap"> </span>v10 = fi->VGRD_P0_L103_GLL0({10},:,:)</div><div><span style="white-space:pre-wrap"> </span>u10 <span style="background-color:rgb(253,248,105)">:=</span> u10*1.94386<span style="white-space:pre-wrap"> </span>; Turn wind into knots</div><div><span style="white-space:pre-wrap">   </span>v10 := v10*1.94386</div><div><span style="white-space:pre-wrap">       </span>u10@units = "kts"</div><div><span style="white-space:pre-wrap">      </span>v10@units = "kts"</div><div>The resulted map was something like plt1 which is wrong.</div><div>Then I tried to use the following lines:</div><div><span style="white-space:pre-wrap">        </span>u10 <span style="background-color:rgb(253,248,105)">=</span> u10*1.94386<span style="white-space:pre-wrap">  </span>; Turn wind into knots</div><div><span style="white-space:pre-wrap">   </span>v10 <span style="background-color:rgb(253,248,105)">=</span> v10*1.94386</div><div>This turn the resulted map (plt2) was correct.</div><div>I’ll be thankful if some one could explain me why using “:=” is false and using “=” is true in this situation.</div></div></div><div><div dir="ltr" style="font-family:"old times",serif;font-size:16px"><div><div dir="ltr" style="color:rgb(0,0,0);font-family:"old times",serif;font-size:16px"><i><font size="2">-----------------------------------------------------------------------------</font></i></div><div dir="ltr" style="color:rgb(0,0,0);font-family:"old times",serif;font-size:16px"><i><font size="2">Sincerely,</font></i></div><div dir="ltr" style="color:rgb(0,0,0);font-family:"old times",serif;font-size:16px"><i><font size="2">Ehsan Taghizadeh</font></i></div></div></div></div></div></div>
</blockquote></div></div>