Skip to content

grid_load.m doesn't support reading ECCO-GRID.nc in ECCO v4r4 #222

@LLLavinia

Description

@LLLavinia

I'm interested in this issue. To try to understand it better, I looked at the diff between the ncdump of Release3/nctiles_grid/GRID.0001.nc and Release4/nctiles_grid/ECCO-GRID_00.nc. Is this the right comparison to be making? The results are below

1c1

< netcdf ECCO-GRID_00 {

---

netcdf GRID.0001 {

3,10c3,6

< 	k_p1 = 51 ;

< 	j_g = 90 ;

< 	i_g = 90 ;

< 	k = 50 ;

< 	j = 90 ;

< 	k_u = 50 ;

< 	i = 90 ;

< 	k_l = 50 ;

---

	itxt = 30 ;

	i1 = 50 ;

	i2 = 90 ;

	i3 = 90 ;

12,53c8,26

< 	int64 k_p1(k_p1) ;

< 		k_p1:long_name = "z-dimension of the w grid" ;

< 		k_p1:swap_dim = "Zp1" ;

< 		k_p1:c_grid_axis_shift = -0.5, 0.5 ;

< 		k_p1:axis = "Z" ;

< 	int64 j_g(j_g) ;

< 		j_g:long_name = "y-dimension of the v grid" ;

< 		j_g:swap_dim = "YG" ;

< 		j_g:c_grid_axis_shift = -0.5 ;

< 		j_g:axis = "Y" ;

< 	int64 i_g(i_g) ;

< 		i_g:long_name = "x-dimension of the u grid" ;

< 		i_g:swap_dim = "XG" ;

< 		i_g:c_grid_axis_shift = -0.5 ;

< 		i_g:axis = "X" ;

< 	int64 k(k) ;

< 		k:long_name = "z-dimension of the t grid" ;

< 		k:swap_dim = "Z" ;

< 		k:axis = "Z" ;

< 	int64 j(j) ;

< 		j:long_name = "y-dimension of the t grid" ;

< 		j:swap_dim = "YC" ;

< 		j:axis = "Y" ;

< 	int64 k_u(k_u) ;

< 		k_u:long_name = "z-dimension of the w grid" ;

< 		k_u:swap_dim = "Zu" ;

< 		k_u:c_grid_axis_shift = 0.5 ;

< 		k_u:axis = "Z" ;

< 	int64 i(i) ;

< 		i:long_name = "x-dimension of the t grid" ;

< 		i:swap_dim = "XC" ;

< 		i:axis = "X" ;

< 	int64 k_l(k_l) ;

< 		k_l:long_name = "z-dimension of the w grid" ;

< 		k_l:swap_dim = "Zl" ;

< 		k_l:c_grid_axis_shift = -0.5 ;

< 		k_l:axis = "Z" ;

< 	int64 tile ;

< 		tile:long_name = "index of llc grid tile" ;

< 	float XC(j, i) ;

< 		XC:coordinate = "YC XC" ;

< 		XC:units = "degrees_east" ;

---

	double i1(i1) ;

		i1:long_name = "array index 1" ;

		i1:units = "1" ;

	double i2(i2) ;

		i2:long_name = "array index 2" ;

		i2:units = "1" ;

	double i3(i3) ;

		i3:long_name = "array index 3" ;

		i3:units = "1" ;

	double hFacC(i1, i2, i3) ;

		hFacC:long_name = "fractional thickness" ;

		hFacC:units = "1" ;

	double hFacW(i1, i2, i3) ;

		hFacW:long_name = "fractional thickness" ;

		hFacW:units = "1" ;

	double hFacS(i1, i2, i3) ;

		hFacS:long_name = "fractional thickness" ;

		hFacS:units = "1" ;

	double XC(i2, i3) ;

55,57c28,29

< 	float YC(j, i) ;

< 		YC:coordinate = "YC XC" ;

< 		YC:units = "degrees_north" ;

---

		XC:units = "degrees_east" ;

	double YC(i2, i3) ;

59,61c31,32

< 	float XG(j_g, i_g) ;

< 		XG:coordinate = "YG XG" ;

< 		XG:units = "degrees_east" ;

---

		YC:units = "degrees_north" ;

	double XG(i2, i3) ;

63,64c34,35

< 	float YG(j_g, i_g) ;

< 		YG:units = "degrees_north" ;

---

		XG:units = "degrees_east" ;

	double YG(i2, i3) ;

66,104c37,57

< 		YG:coordinates = "YG XG" ;

< 	float CS(j, i) ;

< 		CS:coordinate = "YC XC" ;

< 		CS:units = " " ;

< 		CS:long_name = "AngleCS" ;

< 	float SN(j, i) ;

< 		SN:coordinate = "YC XC" ;

< 		SN:units = " " ;

< 		SN:long_name = "AngleSN" ;

< 	float Zl(k_l) ;

< 		Zl:units = "m" ;

< 		Zl:positive = "down" ;

< 		Zl:long_name = "vertical coordinate of upper cell interface" ;

< 	float Zu(k_u) ;

< 		Zu:units = "m" ;

< 		Zu:positive = "down" ;

< 		Zu:long_name = "vertical coordinate of lower cell interface" ;

< 	float Z(k) ;

< 		Z:units = "m" ;

< 		Z:positive = "down" ;

< 		Z:long_name = "vertical coordinate of cell center" ;

< 	float Zp1(k_p1) ;

< 		Zp1:units = "m" ;

< 		Zp1:positive = "down" ;

< 		Zp1:long_name = "vertical coordinate of cell interface" ;

< 	float dxC(j, i_g) ;

< 		dxC:coordinate = "YC XG" ;

< 		dxC:units = "m" ;

< 		dxC:long_name = "cell x size" ;

< 	float rAs(j_g, i) ;

< 		rAs:units = "m2" ;

< 		rAs:long_name = "cell area" ;

< 		rAs:coordinates = "YG XC" ;

< 	float rAw(j, i_g) ;

< 		rAw:coordinate = "YG XC" ;

< 		rAw:units = "m2" ;

< 		rAw:long_name = "cell area" ;

< 	float Depth(j, i) ;

< 		Depth:coordinate = "XC YC" ;

---

		YG:units = "degrees_north" ;

	double RAC(i2, i3) ;

		RAC:long_name = "grid cell area" ;

		RAC:units = "m^2" ;

	double RAZ(i2, i3) ;

		RAZ:long_name = "grid cell area" ;

		RAZ:units = "m^2" ;

	double DXC(i2, i3) ;

		DXC:long_name = "grid spacing" ;

		DXC:units = "m" ;

	double DYC(i2, i3) ;

		DYC:long_name = "grid spacing" ;

		DYC:units = "m" ;

	double DXG(i2, i3) ;

		DXG:long_name = "grid spacing" ;

		DXG:units = "m" ;

	double DYG(i2, i3) ;

		DYG:long_name = "grid spacing" ;

		DYG:units = "m" ;

	double Depth(i2, i3) ;

		Depth:long_name = "sea floor depth" ;

106,153c59,76

< 		Depth:long_name = "ocean depth" ;

< 	float rA(j, i) ;

< 		rA:coordinate = "YC XC" ;

< 		rA:units = "m2" ;

< 		rA:long_name = "cell area" ;

< 	float dxG(j_g, i) ;

< 		dxG:coordinate = "YG XC" ;

< 		dxG:units = "m" ;

< 		dxG:long_name = "cell x size" ;

< 	float dyG(j, i_g) ;

< 		dyG:coordinate = "YC XG" ;

< 		dyG:units = "m" ;

< 		dyG:long_name = "cell y size" ;

< 	float rAz(j_g, i_g) ;

< 		rAz:coordinate = "YG XG" ;

< 		rAz:units = "m" ;

< 		rAz:long_name = "cell area" ;

< 	float dyC(j_g, i) ;

< 		dyC:coordinate = "YG XC" ;

< 		dyC:units = "m" ;

< 		dyC:long_name = "cell y size" ;

< 	float PHrefC(k) ;

< 		PHrefC:units = "m2 s-2" ;

< 		PHrefC:long_name = "Reference Hydrostatic Pressure" ;

< 	float drC(k_p1) ;

< 		drC:units = "m" ;

< 		drC:long_name = "cell z size" ;

< 	float PHrefF(k_p1) ;

< 		PHrefF:units = "m2 s-2" ;

< 		PHrefF:long_name = "Reference Hydrostatic Pressure" ;

< 	float drF(k) ;

< 		drF:units = "m" ;

< 		drF:long_name = "cell z size" ;

< 	float hFacS(k, j_g, i) ;

< 		hFacS:long_name = "vertical fraction of open cell" ;

< 	float hFacC(k, j, i) ;

< 		hFacC:long_name = "vertical fraction of open cell" ;

< 	float hFacW(k, j, i_g) ;

< 		hFacW:long_name = "vertical fraction of open cell" ;

< 	byte maskW(k, j, i_g) ;

< 		maskW:long_name = "mask denoting wet point at interface" ;

< 		maskW:dtype = "bool" ;

< 	byte maskC(k, j, i) ;

< 		maskC:long_name = "mask denoting wet point at center" ;

< 		maskC:dtype = "bool" ;

< 	byte maskS(k, j_g, i) ;

< 		maskS:long_name = "mask denoting wet point at interface" ;

< 		maskS:dtype = "bool" ;

---

	double AngleCS(i2, i3) ;

		AngleCS:long_name = "grid orientation (cosine)" ;

		AngleCS:units = "m" ;

	double AngleSN(i2, i3) ;

		AngleSN:long_name = "grid orientation (sine)" ;

		AngleSN:units = "m" ;

	double RC(i1) ;

		RC:long_name = "vertical coordinate" ;

		RC:units = "m" ;

	double RF(i1) ;

		RF:long_name = "vertical coordinate" ;

		RF:units = "m" ;

	double DRC(i1) ;

		DRC:long_name = "grid spacing" ;

		DRC:units = "m" ;

	double DRF(i1) ;

		DRF:long_name = "grid spacing" ;

		DRF:units = "m" ;

156,158c79,107

< 		:date_created = "Mon Dec 30 11:13:26 2019" ;

< 		:title = "ECCOv4 MITgcm grid information" ;

< 		:coordinates = "hFacS rAs hFacW Zp1 XC YC XG YG hFacC dxG Depth rA CS drC Z drF Zl dxC maskW maskS PHrefC rAw SN tile Zu PHrefF dyG rAz maskC dyC" ;

---

		:description = "C-grid parameters (see MITgcm documentation for details). -- ECCO v4 ocean state estimate, release 3 -- 1992-2015" ;

		:A = ":Format      = native grid (nctiles w. 13 tiles)" ;

		:B = ":source      = ECCO consortium (http://ecco-group.org/)" ;

		:C = ":institution = JPL/UT/MIT/AER" ;

		:D = ":history     = files revision history :" ;

		:E = "                   04/20/2017: fill in geometry info for blank tiles. \\n" ;

		:F = "                   11/06/2016: third release of ECCO v4 (Ou Wang) \\n" ;

		:G = "               estimates revision history (from second release) : \\n" ;

		:H = "                   employs bi-harmonic viscosity (enhanced near lands), revised \\n" ;

		:I = "                   sea-ice parameters, updated or novel observations (including \\n" ;

		:J = "                   GRACE OBP, Aquarius SSS, global mean scalar SSH & OBP \\n" ;

		:K = "                   time-series, extended and/or expanded in situ TS profiles), \\n" ;

		:L = "                   revised weights including data and control with factors \\n" ;

		:M = "                   to account for grid-size variation and sampling frequency, \\n" ;

		:N = "                   separate time-mean and time-variable data constraint \\n" ;

		:O = "                   and controls, sea-ice costs, and initial U, V, and eta as \\n" ;

		:P = "                   additional controls.\\n " ;

		:Q = ":references  = Fukumori, I., O. Wang, I. Fenty, G. Forget, P. Heimbach, and R. M. Ponte, 2017: \\n" ;

		:R = "                ECCO Version 4 Release 3, http://hdl.handle.net/1721.1/110380, doi:1721.1/110380.\\n" ;

		:S = "                Available at ftp://ecco.jpl.nasa.gov/Version4/Release3/doc/v4r3_estimation_synopsis.pdf \\n" ;

		:T = "               Forget, G., J.-M. Campin, P. Heimbach, C. N. Hill, R. M. Ponte, \\n" ;

		:U = "                and C. Wunsch, 2015: ECCO version 4: an integrated framework for \\n" ;

		:V = "                non-linear inverse modeling and global ocean state estimation. \\n" ;

		:W = "                Geoscientific Model Development, 8, 3071-3104, doi:10.5194/gmd-8-3071-2015 \\n" ;

		:date = "21-Apr-2017" ;

		:Conventions = "CF-1.6" ;

		:_FillValue = NaN ;

		:missing_value = NaN ;

		:program = "file created using gcmfaces_IO/write2nctiles.m \\n" ;

Originally posted by @rabernat in #40

This issue has been raised by @rabernat before. I'd like to know if there's an updated version of the load_grid.m now.
Thank you!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions