<div dir="ltr"><div>Oi Mateus,</div><div><br></div><div>Your data is global. Hence, to derive divergence you can use either CFD or, better, SPH (Spherical Harmonics) to derive divergence. The latter are more accurate. However, visually, it is hard notice the difference. [See attached].</div><div><br></div><div>See Example 5 @<a href="http://www.ncl.ucar.edu/Applications/wind.shtml" target="_blank"><b> http://www.ncl.ucar.edu/Applications/wind.shtml</b></a></div><div>Example 6 is a more 'advanced' application.</div><div><br></div><div>If you want to plot the divergence over a specified region, use the <b>{latS:latN},{lon{W:lonE} </b>syntax.</div><div><br></div><div>---</div><div>That said ..... the [edited] output from the attached script indicates some very subtle issue for the CFD gradients in the 'y' [latitude] direction. The same base function is used ti calculate the gradients <br></div><div><br></div><div>Variable: divs<br>Dimensions and sizes:    [lat | 73] x [lon | 144]<br>Coordinates: <br>            lat: [-90..90]<br>            lon: [ 0..357.5]<br><br>===============<br>(0)   divergence (1/s) : min=-2.68841e-05   max=3.66626e-05<br>(0)     ---<br>(0)        du/dx , du/dlon (1/s) : min=-4.13793e-05   max=5.20984e-05 <== spherical harmonics<br>(0)     du/dy , du/dlat (1/s) : min=-7.50804e-05   max=6.49166e-05<br>(0)        ---<br>(0)        dv/dx , dv/dlon (1/s) : min=-6.04759e-05   max=6.54951e-05 ,== spherical harmonics<br>(0)        dv/dy , dv/dlat (1/s) : min=-4.19307e-05   max=4.15874e-05<br>(0)        ---<br>(0)        divf: min=-2.48427e-05  max=3.53151e-05             <== CFD  <br>(0)     dudx: cfd (1/s) : min=-6.51086e-05   max=5.64755e-05  <=== good<br>(<b>0)      dudy: cfd (1/s) : min=-32.9175   max=32.9176      <==================  ???</b><br>(0)     ---<br>(0)        dvdx: cfd (1/s) : min=-3.72306e-05   max=2.75183e-05  <=== good<br><b>(0)      dvdy: cfd (1/s) : min=-32.9176   max=32.9176      <==================  ???</b></div><div><b><br></b></div><div><b>HTH</b></div><div><b>D</b><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, Jul 10, 2019 at 1:03 PM Mateus da Silva Teixeira <<a href="mailto:mateusstex@gmail.com" target="_blank">mateusstex@gmail.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div dir="ltr"><div>Hi Dennis,</div><div><br></div><div>Thank you for your answer, but this didn't make difference in the calculations. As I could read in documentation, there is no warning about latitude order.</div><div><br></div><div>Trying more comparisons, I've calculated the wind gradients with <i>grad_latlon_cfd</i> function to get <i>du_dx</i> and <i>dv_dy</i> and the results are the same, as shown below:</div><div><br></div><div><b>For latitude -90</b><br></div><div>(0)      du_dx manual      du_dx grad funct<br>(0)      -32.9238     -32.9175<br>(1)    -32.9238     -32.9175<br>(2)    -28.8081     -28.8026<br>(3)    -28.8081     -28.8026</div><div><br></div><div>(0)      dv_dy manual       dv_dy grad funct<br>(0)     5.39676e-06     5.39574e-06<br>(1)      5.39676e-06     5.39574e-06<br>(2)      5.39676e-06     5.39574e-06<br>(3)      5.39676e-06     5.39574e-06<br></div><div><br></div><div><b>For latitude -87.5</b></div><div>(0)  du_dx manual      du_dx grad funct<br>(0)      2.88688e-05     2.88633e-05<br>(1)      2.88688e-05     2.88633e-05<br>(2)      2.47451e-05     2.47403e-05<br>(3)      2.88688e-05     2.88633e-05</div><div><br></div><div>(0)        dv_dy manual       dv_dy grad funct<br>(0)     2.69839e-06     2.69787e-06<br>(1)      2.51851e-06     2.51803e-06<br>(2)      2.33858e-06     2.33813e-06<br>(3)      2.33861e-06     2.33816e-06</div><div><br></div><div>And below the divergence, but along with the calculation using gradients obtained with <i>grad_latlon_cfd</i>:</div><div><br></div><div><b>For latitude -90</b><br></div><div>(0)  div manual      div function      div grad funct<br>(0)     -0.24189     5.72546e-06     -0.235588<br>(1) -0.960165     5.72546e-06     -0.953863<br>(2)        2.43722     5.72546e-06     2.44274<br>(3)    1.71895     5.72546e-06     1.72446</div><div><br></div><div><b>For latitude -87.5</b></div><div>(0)  div manual      div function      div grad funct<br>(0)     4.24092e-06     4.24011e-06     4.23487e-06<br>(1)    4.78015e-06     4.77923e-06     4.77414e-06<br>(2)    1.19561e-06     1.19538e-06     1.19042e-06<br>(3)    6.0385e-06     6.03735e-06     6.03253e-06</div><div><br></div><div>The data used for these calculations has its latitude ordered south-to-north. I think that I'm missing something, but I can't figure it out.<br></div><div><br></div><div>Best regards,</div><div><br></div><div>Mateus</div><div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em qua, 10 de jul de 2019 às 13:23, Dennis Shea <<a href="mailto:shea@ucar.edu" target="_blank">shea@ucar.edu</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="auto">NCEP reanalyses are ordered North-to-South. The function requires South-to-North. Assuming (time,lev,Lat,Lon)<div><br></div><div> V = V(:,:,::-1,:)</div><div>   printVarSummary(V)</div><div><br></div><div>Look at the lat coordinate. <br><br><div id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454AppleMailSignature" dir="ltr">Sent from my iPhone</div><div dir="ltr"><br>On Jul 10, 2019, at 8:33 AM, Mateus da Silva Teixeira via ncl-talk <<a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a>> wrote:<br><br></div><blockquote type="cite"><div dir="ltr"><div dir="ltr"><div>Hi,</div><div><br></div><div>I'm trying to reproduce with <i>center_finite_difference</i> function the computation of wind divergence, to compare with <i>uv2dv_<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.53">cfd</span></i> function. However, I'm getting some strange values for divergence.<br></div><div><br></div><div>For <i><span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.55">Dv</span>/Dy</i>, I'm using:</div><div><br></div><div><span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.56">dv</span>_<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.57">dy</span> = center_finite_diff_n( v850, lat*g2r, False, 0, 0 )/<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.58">rTerra</span><br></div><div><br></div><div>For Du/<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.59">Dx</span>, I'm using:</div><div><br></div><div><i><span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.60">dlon</span> = (<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.61">lon</span>(2)-<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.62">lon</span>(1))*g2r<br><span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.63">du</span>_<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.64">dx</span> = new( (/<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.65">dimsizes</span>(u850)/), <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.66">typeof</span>( u850 ), u850@_<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.67">FillValue</span> )<br>term3 = new( (/<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.68">dimsizes</span>(v850)/), <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.69">typeof</span>(v850), v850@_<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.70">FillValue</span> )<br>do i = 0, <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.71">dimsizes</span>(lat)-1<br>      <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.72">dx</span> = <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.73">rTerra</span> * cos( g2r*lat(i) ) * <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.74">dlon</span><br>      <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.75">du</span>_<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.76">dx</span>(i,:) = center_finite_diff( u850(i,:), <span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.77">dx</span>, True, 0 )</i></div><div><i>      term3(i,:) = ( v850(i,:)/<span id="m_1035317321326190383gmail-m_3818524260498760016gmail-m_5411981133741331454:244.78">rTerra</span> ) * tan( lat(i)*g2r )<br>  end do</i></div><div><i><br></i></div><div>with <i>rTerra</i> being the mean radius of the Earth, and finally, for divergence (using the same equation calculated by <i>uv2dv_cfd</i>):</div><div><br></div><div><i>div = du_dx + dv_dy - term3</i></div><div><br></div><div>With <i>uv2dv_cfd</i>, I'm using:</div><div><br></div><div><i>divV = uv2dv_cfd( u850, v850, lat, lon, 3 )</i></div><div><i><br></i></div><div>Below, a comparison between the results for latitude 90, for both calculations:</div><div><br></div><div>(0)       div manual      div function<br>(0)    -0.435886     8.54325e-07<br>(1)        0.282385     8.54325e-07<br>(2) 0.641552     8.54325e-07<br>(3) 0.640924     8.54325e-07<br>(4) -3.11505     8.54325e-07</div><div>...</div><div>(138)        0.0877819     8.54325e-07<br>(139)      0.806053     8.54325e-07<br>(140)       -2.59076     8.54325e-07<br>(141)       -1.87243     8.54325e-07<br>(142)       2.96093     8.54325e-07<br>(143)        -0.795052     8.54325e-07</div><div><br></div><div>And below, the comparison for latitude 87.5, for both calculations:</div><div><br></div><div>(0)       div manual      div function<br>(0)    2.54982e-06     2.54933e-06<br>(1)      3.44865e-06     3.44799e-06<br>(2)      4.34874e-06     4.34791e-06<br>(3)      1.30406e-06     1.30381e-06<br>(4)      2.92225e-06     2.9217e-06</div><div>...</div><div>(138)      2.74009e-06     2.73957e-06<br>(139)    1.3016e-06     1.30136e-06<br>(140)     3.98753e-06     3.98678e-06<br>(141)    7.39285e-06     7.39144e-06<br>(142)    2.72861e-06     2.72809e-06<br>(143)    2.54953e-06     2.54905e-06</div><div><br></div><div>I've noted this problem only in the poles and seems to be related with <i>cos</i> function in the computation of gradient of zonal wind over longitude, since it doesn't give zero (or a very small value) for <i>cos(90)</i> or <i>cos(-90).</i></div><div><i></i><br></div><div>I'm using NCEP Reanalysis 1 data and NCL 6.4.0.</div><div><br></div><div>Am I doing something wrong in these calculations?</div><div><br></div><div>Thanks,</div><div><br></div><div>Mateus</div><div><br></div><div><br></div><div><i></i></div><div><i></i></div></div>
</div></blockquote><blockquote type="cite"><div dir="ltr"><span>_______________________________________________</span><br><span>ncl-talk mailing list</span><br><span><a href="mailto:ncl-talk@ucar.edu" target="_blank">ncl-talk@ucar.edu</a></span><br><span>List instructions, subscriber options, unsubscribe:</span><br><span><a href="http://mailman.ucar.edu/mailman/listinfo/ncl-talk" target="_blank">http://mailman.ucar.edu/mailman/listinfo/ncl-talk</a></span></div></blockquote></div></div></blockquote></div></div>
</blockquote></div></div>