'''Logic for grid type'''
----
If the filename ends in ".nc", assume its a NetCDF file and use the NetCDF reader.
If the global attribute "conventions" exits AND it has the string "CF" then
(Assume its a file from CESM or related model)
If the global attribute "source" exists and has the string "CAM" then
if dimension names "lon","lat","slat" and "slon" all exist then
Its the CAM-FV grid
else if global attribute "np" exists then
Its the CAM-SE (HOMME) grid
else if dimension names "lon" and "lat" exist then
Its the CAM-EUL grid
else
Unkown CAM grid, error.
else if the global attribute "source" exists and has the string "POP" then
Its the POP ocean grid; use POP grid reader
else if the global attribute "source" exists and has the string "CICE" then
Its the POP ocean grid; use POP grid reader (CICE always uses the same horizontal grid as ocean)
else if the global attribute "source" exists and has the string "CLM" then
Its the land model; TBD
else
Unknown CESM grid; error
else if the dimension variable "vertexDegree" exists then
Its an MPAS file; call MPAS reader
else if the dimension variable "cells" exists then
Its a GCRM file; call GCRM reader
else
Unknown NetCDF grid; error.
end
----
'''Placing Variables'''
CAM-EUL:
{{{
The coordinate variable "lat" has the latitude of cell centers
The coordinate variable "lon" has the longitude of cell centers.
if variable's dimensions contain at least ("lat" AND "lon")
it should be on a cell center
Need 2 vectors of length "lev" and "ilev" for 2 different vertical lengths.
}}}
CAM-FV:
{{{
The coordinate variable "lat" has the latitude of cell centers
The coordinate variable "lon" has the longitude of cell centers.
The coordinate variable "slat" has the latitude of north/south cell edges
The coordinate variable "slon" has the longitude of east/west cell edges
if variable's dimensions contain at least ("lat" AND "lon")
it should be on a cell center
if variable's dimensions contain at least ("slat" AND "lon")
it should be on a north/south edge
if variable's dimensions contain at least ("lat" AND "slon")
it should be on an east/west edge
Need 2 vectors of length "lev" and "ilev" for 2 different vertical lengths.
}}}
CAM-SE:
{{{
There are no coordinate variables.
The variable "lat" has the latitude of the vertices
The variable "lon" has the longitude of the vertices
If a variables dimensions contain "ncol"
It should be on a vertex.
Need 2 vectors of length "lev" and "ilev" for 2 different vertical lengths.
}}}