<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
</head>
<body>
<style type="text/css" style="display:none;"><!-- P {margin-top:0;margin-bottom:0;} --></style>
<div id="divtagdefaultwrapper" style="font-size:12pt;color:#000000;font-family:Calibri,Helvetica,sans-serif;" dir="ltr">
<p>Deb,</p>
<p><br>
</p>
<p>I can't give you any help with the xgcm. &nbsp;We do have a (growing) library of tutorials describing how to use the ecco-v4-py library to work with ECCOv4 Release 3 and Release 4.&nbsp; The tutorials describe the ECCOv4 netCDF fields, the grid and grid coordinate
 system, different plotting tools, and provide code examples for a number of different calculations.&nbsp; While ecco-v4-py does *use* xgcm for some backend stuff, I've never used their LLCMapper.&nbsp; Our &quot;plot_proj_to_latlon_grid&quot; routine probably does something similar.</p>
<p><br>
</p>
<p>For&nbsp;plotting help see the tutorial &quot;Plotting Tiles&quot;: <a href="https://ecco-v4-python-tutorial.readthedocs.io/ECCO_v4_Plotting_Tiles.html#" class="OWAAutoLink" id="LPlnk202159" previewremoved="true">
https://ecco-v4-python-tutorial.readthedocs.io/ECCO_v4_Plotting_Tiles.html&nbsp;</a></p>
<p><br>
</p>
<p>Your email reminded me that I had a new tutorial 90% written about how to interpolate scalar and vector fields from the ECCOv4 llc90 grid to regular lat-lon grids.&nbsp; I finished it&nbsp;and it is now online here:</p>
<p><a href="https://ecco-v4-python-tutorial.readthedocs.io/ECCO_v4_Interpolating_Fields_to_Lat-Lon_Grid.html" class="OWAAutoLink" id="LPlnk447903" previewremoved="true">https://ecco-v4-python-tutorial.readthedocs.io/ECCO_v4_Interpolating_Fields_to_Lat-Lon_Grid.html</a></p>
<p><br>
</p>
<p>I would not advise you to *start* with that tutorial, however.&nbsp; Later chapters build on earlier ones.&nbsp;&nbsp;</p>
<div><br>
</div>
<div>Ian<br>
</div>
</div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> ecco-support-bounces@mit.edu &lt;ecco-support-bounces@mit.edu&gt; on behalf of Deb Gardner &lt;dagardne@ucsd.edu&gt;<br>
<b>Sent:</b> Thursday, July 16, 2020 1:13:19 PM<br>
<b>To:</b> ecco-support@mit.edu<br>
<b>Subject:</b> [EXTERNAL] [ecco-support] Mapping to Lat-Lon</font>
<div>&nbsp;</div>
</div>
<div>
<div dir="ltr">
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Good day, colleagues,</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
I have hit a roadblock. I'm attempting to plot zonal and depth-integrated v4r4 variables as a function of latitude. I'm using the xgcm python package and jupyter notebook. I did find LLCMapper and have attempted to use that information to create something that
 will work for my needs. My problems are</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
1) 'faces' are called 'tile' in v4r4 variables</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
2) I'm getting the error that I must have 'i' coordinate (I have 'i_g', perhaps shift to 'i'?)</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
3) I'm not entirely sure LLCMapper is going to allow me to do what I eventually want to do.</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Would someone mind taking a look at my code below and giving feedback/suggestions? Thanks in advance!</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Warm regards,</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<div dir="ltr"><span class="gmail_default"></span>Deb Gardner (she/her/ella)</div>
<div dir="ltr">NSF Graduate Research Fellow</div>
<div dir="ltr">Best Waffle Topping, 2019 | Scripps Institution of Oceanography<br>
</div>
<div dir="ltr">SIO Graduate Student Council, Junior Co-Chair<span class="gmail_default"> 2020-2021</span></div>
<div>--</div>
<div>I respectfully acknowledge that UC San Diego and its surrounding communities occupy the stolen territory of the Kumeyaay/Kumiai Nation and to whom I owe honor and gratitude. /
<a href="https://native-land.ca/" target="_blank">Whose land are you on?<br>
</a></div>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
# calculate pressure gradient in x-dir<br>
dP = gcm_grid.derivative(P,'X',boundary='extend')<br>
<br>
# zonal and depth integral of pressure gradient in x<br>
dP_int = gcm_grid.integrate(dP,['Z','X'])<br>
# dP coords - k, tile, j, i_g<br>
<br>
# zonal integration of windstress<br>
taue_int = gcm_grid.cumsum(oceTAUE,'X',boundary='extend')</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
# note: grid.integrate does not work with oceTAUE<br>
#taue_int has coordinates tile, j, i_g<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
Pmapper = LLCMapper(P_coords)<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
tauemapper = LLCMapper(taue_coords)</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
#calling either of the mappers with the integrated values produces the same error (below)</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
---------------------------------------------------------------------------<br>
AssertionError &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Traceback (most recent call last)<br>
&lt;ipython-input-34-1562da53e232&gt; in &lt;module&gt;<br>
----&gt; 1 Pmapper(dP_int)<br>
<br>
&lt;ipython-input-8-efce9e1da44c&gt; in __call__(self, da, ax, projection, lon_0, **plt_kwargs)<br>
&nbsp; &nbsp; &nbsp;14 &nbsp; &nbsp; &nbsp; &nbsp; self.new_grid = pyresample.geometry.GridDefinition(lons=self.new_grid_lon,lats=self.new_grid_lat)<br>
&nbsp; &nbsp; &nbsp;15 &nbsp; &nbsp; def __call__(self, da, ax=None, projection=cart.crs.Robinson(), lon_0=-60, **plt_kwargs):<br>
---&gt; 16 &nbsp; &nbsp; &nbsp; &nbsp; assert set(da.dims) == set(['face', 'j', 'i']), &quot;da must have dimensions ['face', 'j', 'i']&quot;<br>
&nbsp; &nbsp; &nbsp;17 &nbsp; &nbsp; &nbsp; &nbsp; if ax is None:<br>
&nbsp; &nbsp; &nbsp;18 &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; fig, ax = plt.subplots(figsize=(12, 6))<br>
<br>
AssertionError: da must have dimensions ['face', 'j', 'i']<br>
</div>
<div class="gmail_default" style="font-family:verdana,sans-serif;font-size:small">
<br>
</div>
<div>
<div dir="ltr" data-smartmail="gmail_signature">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr">
<div dir="ltr"><span class="gmail_default" style="font-family:verdana,sans-serif;font-size:small"></span></div>
<div><a href="https://native-land.ca/" target="_blank"></a><br>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</body>
</html>