<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:12.0pt;
        font-family:"Times New Roman",serif;}
span.EmailStyle18
        {mso-style-type:personal-reply;
        font-family:"Calibri",sans-serif;
        color:#1F497D;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-size:10.0pt;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Thank you very much Dave and Dennis. I do appreciate the detailed explanations that both of you gave. I wasn’t concerned with the internal storage order of the
 dimensions, but I wanted to make sure I am writing the data out in the way that it is supposed to be and in the way that I understand. Let alone, necessary reordering of the dimensions that I have to do for my project makes this writing the data out in correct
 dimensions even more challenging. In the end, if I give a data that is wrongly put together to my colleagues, that means I didn’t do my scientific job properly. So, please excuse me if I ask some very simple questions that everyone else may understand right
 away. Again, I appreciate both of your detailed responses very much. <o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">With my sincere regards to you both.
<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D">Kemal.<o:p></o:p></span></p>
<p class="MsoNormal"><span style="font-size:11.0pt;font-family:"Calibri",sans-serif;color:#1F497D"><o:p> </o:p></span></p>
<div>
<div style="border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal"><b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif">From:</span></b><span style="font-size:11.0pt;font-family:"Calibri",sans-serif"> Dennis Shea <shea@ucar.edu>
<br>
<b>Sent:</b> Wednesday, October 21, 2020 8:49 PM<br>
<b>To:</b> Dave Allured - NOAA Affiliate <dave.allured@noaa.gov><br>
<b>Cc:</b> Gurer, Kemal@ARB <kemal.gurer@arb.ca.gov>; ncl-talk@ucar.edu<br>
<b>Subject:</b> Re: [ncl-talk] Order of dimensions of an array in netcdf<o:p></o:p></span></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:solid #9C6500 1.0pt;padding:2.0pt 2.0pt 2.0pt 2.0pt">
<p class="MsoNormal" style="line-height:12.0pt;background:#FFEB9C"><b><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:#9C6500">CAUTION: This email originated from outside of the organization. Do not click links or open attachments unless
 you recognize the sender and know the content is safe.</span></b><span style="font-size:10.0pt;font-family:"Calibri",sans-serif;color:black">
<o:p></o:p></span></p>
</div>
<div>
<div>
<div>
<p class="MsoNormal">Additional information to Dave's netCDF overview:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">NCL is row major like C. A language like fortran is column major.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">On 'paper' the following look opposite however they are arranged
<b>exactly the same in memory:</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">NCL:     TEMP(ntim,klev,nlat,mlon)     <== fastest varying dimension is the
<b>rightmost; row major</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Fortran: TEMP(mlon,nlat,klev,ntim)     <== fastest varying dimension is the
<b>leftmost  ; column major</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><b>===========</b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">NCAR's  Climate Analysis Section<b> </b>provides the <b> <a href="https://gcc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fclimatedataguide.ucar.edu%2F&data=04%7C01%7Ckemal.gurer%40arb.ca.gov%7Cd4f5906be86947cfb26608d8763d708d%7C9de5aaee778840b1a438c0ccc98c87cc%7C0%7C0%7C637389353567837763%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=lm8xE7HZUcDN84zdGg8PYYfkQW%2FhIzo32%2FFA%2Fgnuwjc%3D&reserved=0">
Climate Data Guide</a></b><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">You should explore it. There is a lot of information.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">Specifically:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://gcc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fclimatedataguide.ucar.edu%2Fclimate-data-tools-and-analysis%2Fcommon-climate-data-formats-overview&data=04%7C01%7Ckemal.gurer%40arb.ca.gov%7Cd4f5906be86947cfb26608d8763d708d%7C9de5aaee778840b1a438c0ccc98c87cc%7C0%7C0%7C637389353567837763%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=5YOQCYnAorTFFjbp9W0E1%2F3UhHRClIQ6%2Bz27X51uhe8%3D&reserved=0"><b>https://climatedataguide.ucar.edu/climate-data-tools-and-analysis/common-climate-data-formats-overview</b></a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><a href="https://gcc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fclimatedataguide.ucar.edu%2Fclimate-data-tools-and-analysis%2Fnetcdf-overview&data=04%7C01%7Ckemal.gurer%40arb.ca.gov%7Cd4f5906be86947cfb26608d8763d708d%7C9de5aaee778840b1a438c0ccc98c87cc%7C0%7C0%7C637389353567847718%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=vz7JrW%2Fk%2BlByVty5AlgMYD5lGNxoYoEtqZZxGPY5G7U%3D&reserved=0"><b>https://climatedataguide.ucar.edu/climate-data-tools-and-analysis/netcdf-overview</b></a><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, Oct 21, 2020 at 8:25 PM Dave Allured - NOAA Affiliate via ncl-talk <<a href="mailto:ncl-talk@mailman.ucar.edu">ncl-talk@mailman.ucar.edu</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<div>
<div>
<div>
<p class="MsoNormal">NCL uses zero-based subscripting for both memory variables and file variables.  Therefore the first element in your example is
<b>temp [0] [0] [0] [0]</b>.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">There are some problems with the Netcdf users guide, which you cited.  You found the Netcdf-4 data model, which is rather complicated.  Here is a simplified summary of the <b>data storage model</b> for the three most common types of Netcdf
 storage.  For small, simple applications, the user should not be at all concerned with the internal file format.  When performance becomes an issue, it is good to have a general understanding of format issues, so as to help optimize read and write strategies.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal"><b>Netcdf-3 fixed size variable.</b>  The entire N-dimensional array is stored contiguously in the file, with the NCL rightmost (last) dimension varying the fastest.  The physical layout is generally the same as you would have for a simple
 array in program memory.  This storage is not expandable.<br>
<br>
<b>Netcdf-3 record variable.</b>  The array is stored in chunks across the leftmost (first, slowest varying) dimension, with all the other dimensions stored contiguously in each chunk.  The first dimension is also called the
<b>record</b> or <b>unlimited</b> dimension.  This storage can be <b>expanded</b> by appending on the leftmost (slowest) dimension only.  A typical application is a gridded data set where new grids are added over time, as new data become available.<br>
<br>
<b>Netcdf-4 chunked variable.</b>  The array is subdivided and stored in equal-sized chunks across all dimensions.  The individual chunk dimension sizes may be arbitrarily chosen when a new file variable is first created.  Inside each chunk, storage is contiguous
 across dimensions, just like in the other two storage models.  There is hidden infrastructure to keep track of all the chunks.  This strategy has some advantages for arbitrary unlimited (expandable) dimensions, and automatic internal data compression.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal">There are two simple approaches to optimizing file access.  Either read and write the
<b>entire variable</b> in a single statement, or else read and write <b>contiguous file chunks</b> or
<b>contiguous subsets of file chunks</b>.  A common example is to set up a gridded file variable so that each 2-D grid is stored contiguously, then read and write a whole grid each time.  This is why you see many examples where
<b>lat</b> and <b>lon</b> are the rightmost dimensions; that generally results in contiguous grids.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal"><o:p> </o:p></p>
</div>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">On Wed, Oct 21, 2020 at 6:10 PM Gurer, Kemal@ARB via ncl-talk <<a href="mailto:ncl-talk@mailman.ucar.edu" target="_blank">ncl-talk@mailman.ucar.edu</a>> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hello ncl’ers,<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">I have been searching a detailed description for the dimensional order of the data points of a multi-dimensional variable to be written
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">to a netcdf file. I found some locations, but am also equally confused with different explanations or my lack of understanding. One example
<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">for such an explanation for the variable:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">temp [TIMES] [LEVELS] [LATS] [LONS];</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">with
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">TIMES = 3,
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">LEVELS = 1,
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">LATS = 5,
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">LONS = 10</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">being written into the netcdf file in the order of dimensions is given at:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><a href="https://gcc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.unidata.ucar.edu%2Fsoftware%2Fnetcdf%2Fdocs%2Fnetcdf_data_set_components.html&data=04%7C01%7Ckemal.gurer%40arb.ca.gov%7Cd4f5906be86947cfb26608d8763d708d%7C9de5aaee778840b1a438c0ccc98c87cc%7C0%7C0%7C637389353567847718%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=b2zZFCQ%2Bi8LEeJtSRWwQk4x8zCjfA3VC%2BO%2FQNjNAXig%3D&reserved=0" target="_blank">https://www.unidata.ucar.edu/software/netcdf/docs/netcdf_data_set_components.html</a><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">and mentions “<span style="color:black;background:white">The order in which the data will be
<b><u>returned</u></b> is with the last dimension, LONS, varying fastest:”</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:white">at the time of retrieval of the data.
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">What I am wondering is when I write the variable “temp” above into the netcdf file, is the
<b><u>first data element of temp</u></b>:<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"> <o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">Temp [2] [1] [4] [9]
</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">or,</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD">temp [0] [1] [0] [0]</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:#FBFCFD"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:white">Thank you for your help.</span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:white"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span style="color:black;background:white">Kemal.</span><o:p></o:p></p>
</div>
</div>
</blockquote>
</div>
</div>
</div>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
ncl-talk mailing list<br>
<a href="mailto:ncl-talk@mailman.ucar.edu" target="_blank">ncl-talk@mailman.ucar.edu</a><br>
List instructions, subscriber options, unsubscribe:<br>
<a href="https://gcc01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fmailman.ucar.edu%2Fmailman%2Flistinfo%2Fncl-talk&data=04%7C01%7Ckemal.gurer%40arb.ca.gov%7Cd4f5906be86947cfb26608d8763d708d%7C9de5aaee778840b1a438c0ccc98c87cc%7C0%7C0%7C637389353567857674%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C1000&sdata=hJGWYBhi8BD7oK3d%2F0tlsMzlxq2eWy%2BwYEZ2Ry5SWRI%3D&reserved=0" target="_blank">https://mailman.ucar.edu/mailman/listinfo/ncl-talk</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</body>
</html>