Yes, you are right, the ncdump is wrong ! It does not agree with what I wrote and with the code (fldread.F90):
!!---------------------------------------------------------------------
!! *** ROUTINE fld_map_core ***
!!----------------------------------------------------------------------
!
! structured BDY with rimwidth > 1 : idim_read(2) == rimwidth /= 1
! structured BDY with rimwidth == 1 or unstructured BDY: idim_read(2) == 1
!
IF( idim_read(2) > 1 ) THEN ! structured BDY with rimwidth > 1
DO jk = 1, idim_bdy(3)
DO jb = 1, idim_bdy(1)
im1 = kmap(jb) - 1
jj = im1 / idim_read(1) + 1
ji = MOD( im1, idim_read(1) ) + 1
pdta_bdy(jb,1,jk) = pdta_read(ji,jj,jk)
END DO
END DO
ELSE
! ...
ENDIF
Taking the same example, but presumably at the right place this time in the operational repository, here is what we get for the western boundary (along boundary dimension “Y” first):
netcdf NEATL36_obcdta_west_y2017m04d30 {
dimensions:
Y = 1874 ;
X = 30 ;
Z = 50 ;
T = UNLIMITED ; // (1 currently)
variables:
int Y(Y) ;
Y:standard_name = "projection_y_coordinate" ;
Y:units = "1" ;
Y:axis = "Y" ;
Y:grid_point = "T" ;
int X(X) ;
X:standard_name = "projection_x_coordinate" ;
X:units = "1" ;
X:axis = "X" ;
X:grid_point = "T" ;
int Z(Z) ;
Z:standard_name = "projection_z_coordinate" ;
Z:units = "1" ;
Z:axis = "Z" ;
Z:grid_point = "T" ;
int T(T) ;
T:standard_name = "projection_t_coordinate" ;
T:units = "1" ;
T:axis = "T" ;
T:grid_point = "T" ;
float deptht(Z) ;
deptht:units = "m" ;
deptht:positive = "down" ;
deptht:long_name = "Vertical T levels" ;
deptht:standard_name = "depth" ;
deptht:axis = "Z" ;
deptht:associate = "Z" ;
deptht:grid_point = "T" ;
deptht:_FillValue = 0.f ;
float time_counter(T) ;
time_counter:calendar = "gregorian" ;
time_counter:standard_name = "time" ;
time_counter:long_name = "Time axis" ;
time_counter:axis = "T" ;
time_counter:units = "seconds since 2006-10-11 00:00:00" ;
time_counter:time_origin = "2006-OCT-11 00:00:00" ;
time_counter:associate = "T" ;
time_counter:grid_point = "T" ;
time_counter:_FillValue = 0.f ;
double nav_lon(X, Y) ;
nav_lon:_FillValue = 1.e+20 ;
nav_lon:long_name = "Longitude_T" ;
nav_lon:units = "degrees_east" ;
nav_lon:associate = "Y X" ;
nav_lon:grid_point = "T" ;
double nav_lat(X, Y) ;
nav_lat:_FillValue = 1.e+20 ;
nav_lat:long_name = "Latitude_T" ;
nav_lat:units = "degrees_north" ;
nav_lat:associate = "Y X" ;
nav_lat:grid_point = "T" ;
float sossheig(T, X, Y) ;
sossheig:units = "m" ;
sossheig:add_offset = 0.f ;
sossheig:scale_factor = 1.f ;
sossheig:long_name = "Sea Surface Height" ;
sossheig:short_name = "sossheig" ;
sossheig:online_operation = "N/A" ;
sossheig:interval_operation = 86400 ;
sossheig:interval_write = 86400 ;
sossheig:coordinates = "nav_lon nav_lat" ;
sossheig:standard_name = "sea_surface_height" ;
sossheig:associate = "T Y X" ;
sossheig:grid_point = "T" ;
sossheig:extrapolation = "dist_weight" ;
sossheig:interpolation = "cubic" ;
sossheig:src_file = "PSY4V3R1_1dAV_20170430_20170501_grid2D_R20170510.nc" ;
sossheig:src_i_indices = 3207, 3218 ;
sossheig:src_j_indices = 1820, 2446 ;
sossheig:refinment_factor = 3, 3 ;
sossheig:_FillValue = 0.f ;
float vomecrty(T, Z, X, Y) ;
vomecrty:units = "m s-1" ;
vomecrty:add_offset = 0.f ;
vomecrty:scale_factor = 1.f ;
vomecrty:long_name = "Meridional velocity" ;
vomecrty:standard_name = "sea_water_y_velocity" ;
vomecrty:short_name = "vomecrty" ;
vomecrty:online_operation = "N/A" ;
vomecrty:interval_operation = 86400 ;
vomecrty:interval_write = 86400 ;
vomecrty:coordinates = "nav_lon nav_lat" ;
vomecrty:associate = "T Z Y X" ;
vomecrty:grid_point = "V" ;
vomecrty:extrapolation = "dist_weight" ;
vomecrty:interpolation = "cubic" ;
vomecrty:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridV_R20170510.nc" ;
vomecrty:src_i_indices = 3207, 3218 ;
vomecrty:src_j_indices = 1820, 2446 ;
vomecrty:refinment_factor = 3, 3 ;
vomecrty:_FillValue = 0.f ;
float vozocrtx(T, Z, X, Y) ;
vozocrtx:units = "m s-1" ;
vozocrtx:add_offset = 0.f ;
vozocrtx:scale_factor = 1.f ;
vozocrtx:long_name = "Zonal velocity" ;
vozocrtx:standard_name = "sea_water_x_velocity" ;
vozocrtx:short_name = "vozocrtx" ;
vozocrtx:online_operation = "N/A" ;
vozocrtx:interval_operation = 86400 ;
vozocrtx:interval_write = 86400 ;
vozocrtx:coordinates = "nav_lon nav_lat" ;
vozocrtx:associate = "T Z Y X" ;
vozocrtx:grid_point = "U" ;
vozocrtx:extrapolation = "dist_weight" ;
vozocrtx:interpolation = "cubic" ;
vozocrtx:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridU_R20170510.nc" ;
vozocrtx:src_i_indices = 3207, 3218 ;
vozocrtx:src_j_indices = 1820, 2446 ;
vozocrtx:refinment_factor = 3, 3 ;
vozocrtx:_FillValue = 0.f ;
float vosaline(T, Z, X, Y) ;
vosaline:units = "PSU" ;
vosaline:add_offset = 0.f ;
vosaline:scale_factor = 1.f ;
vosaline:long_name = "Salinity" ;
vosaline:standard_name = "sea_water_salinity" ;
vosaline:short_name = "vosaline" ;
vosaline:online_operation = "N/A" ;
vosaline:interval_operation = 86400 ;
vosaline:interval_write = 86400 ;
vosaline:coordinates = "nav_lon nav_lat" ;
vosaline:associate = "T Z Y X" ;
vosaline:grid_point = "T" ;
vosaline:extrapolation = "dist_weight" ;
vosaline:interpolation = "cubic" ;
vosaline:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridS_R20170510.nc" ;
vosaline:src_i_indices = 3207, 3218 ;
vosaline:src_j_indices = 1820, 2446 ;
vosaline:refinment_factor = 3, 3 ;
vosaline:_FillValue = 0.f ;
float votemper(T, Z, X, Y) ;
votemper:units = "degree_Celsius" ;
votemper:add_offset = 0.f ;
votemper:scale_factor = 1.f ;
votemper:long_name = "Temperature" ;
votemper:standard_name = "sea_water_potential_temperature" ;
votemper:short_name = "votemper" ;
votemper:online_operation = "N/A" ;
votemper:interval_operation = 86400 ;
votemper:interval_write = 86400 ;
votemper:coordinates = "nav_lon nav_lat" ;
votemper:associate = "T Z Y X" ;
votemper:grid_point = "T" ;
votemper:extrapolation = "dist_weight" ;
votemper:interpolation = "cubic" ;
votemper:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridT_R20170510.nc" ;
votemper:src_i_indices = 3207, 3218 ;
votemper:src_j_indices = 1820, 2446 ;
votemper:refinment_factor = 3, 3 ;
votemper:_FillValue = 0.f ;
// global attributes:
:Conventions = "CF-1.5" ;
:Grid = "ARAKAWA-C" ;
:periodicity = 0. ;
:Created_by = "SIREN create_boundary" ;
:Creation_date = "2017-05-08 10:46:22" ;
:bdy_ind = 2. ;
:bdy_width = 30. ;
:bdy_deb = 2. ;
:bdy_end = 1875. ;
}
and the eastern:
netcdf NEATL36_obcdta_east_2_y2017m04d30 {
dimensions:
Y = 73 ;
X = 15 ;
Z = 50 ;
T = UNLIMITED ; // (1 currently)
variables:
int Y(Y) ;
Y:standard_name = "projection_y_coordinate" ;
Y:units = "1" ;
Y:axis = "Y" ;
Y:grid_point = "T" ;
int X(X) ;
X:standard_name = "projection_x_coordinate" ;
X:units = "1" ;
X:axis = "X" ;
X:grid_point = "T" ;
int Z(Z) ;
Z:standard_name = "projection_z_coordinate" ;
Z:units = "1" ;
Z:axis = "Z" ;
Z:grid_point = "T" ;
int T(T) ;
T:standard_name = "projection_t_coordinate" ;
T:units = "1" ;
T:axis = "T" ;
T:grid_point = "T" ;
float deptht(Z) ;
deptht:units = "m" ;
deptht:positive = "down" ;
deptht:long_name = "Vertical T levels" ;
deptht:standard_name = "depth" ;
deptht:axis = "Z" ;
deptht:associate = "Z" ;
deptht:grid_point = "T" ;
deptht:_FillValue = 0.f ;
float time_counter(T) ;
time_counter:calendar = "gregorian" ;
time_counter:standard_name = "time" ;
time_counter:long_name = "Time axis" ;
time_counter:axis = "T" ;
time_counter:units = "seconds since 2006-10-11 00:00:00" ;
time_counter:time_origin = "2006-OCT-11 00:00:00" ;
time_counter:associate = "T" ;
time_counter:grid_point = "T" ;
time_counter:_FillValue = 0.f ;
double nav_lon(X, Y) ;
nav_lon:_FillValue = 1.e+20 ;
nav_lon:long_name = "Longitude_T" ;
nav_lon:units = "degrees_east" ;
nav_lon:associate = "Y X" ;
nav_lon:grid_point = "T" ;
double nav_lat(X, Y) ;
nav_lat:_FillValue = 1.e+20 ;
nav_lat:long_name = "Latitude_T" ;
nav_lat:units = "degrees_north" ;
nav_lat:associate = "Y X" ;
nav_lat:grid_point = "T" ;
float sossheig(T, X, Y) ;
sossheig:units = "m" ;
sossheig:add_offset = 0.f ;
sossheig:scale_factor = 1.f ;
sossheig:long_name = "Sea Surface Height" ;
sossheig:short_name = "sossheig" ;
sossheig:online_operation = "N/A" ;
sossheig:interval_operation = 86400 ;
sossheig:interval_write = 86400 ;
sossheig:coordinates = "nav_lon nav_lat" ;
sossheig:standard_name = "sea_surface_height" ;
sossheig:associate = "T Y X" ;
sossheig:grid_point = "T" ;
sossheig:extrapolation = "dist_weight" ;
sossheig:interpolation = "cubic" ;
sossheig:src_file = "PSY4V3R1_1dAV_20170430_20170501_grid2D_R20170510.nc" ;
sossheig:src_i_indices = 3565, 3571 ;
sossheig:src_j_indices = 2310, 2337 ;
sossheig:refinment_factor = 3, 3 ;
sossheig:_FillValue = 0.f ;
float vomecrty(T, Z, X, Y) ;
vomecrty:units = "m s-1" ;
vomecrty:add_offset = 0.f ;
vomecrty:scale_factor = 1.f ;
vomecrty:long_name = "Meridional velocity" ;
vomecrty:standard_name = "sea_water_y_velocity" ;
vomecrty:short_name = "vomecrty" ;
vomecrty:online_operation = "N/A" ;
vomecrty:interval_operation = 86400 ;
vomecrty:interval_write = 86400 ;
vomecrty:coordinates = "nav_lon nav_lat" ;
vomecrty:associate = "T Z Y X" ;
vomecrty:grid_point = "V" ;
vomecrty:extrapolation = "dist_weight" ;
vomecrty:interpolation = "cubic" ;
vomecrty:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridV_R20170510.nc" ;
vomecrty:src_i_indices = 3565, 3571 ;
vomecrty:src_j_indices = 2310, 2337 ;
vomecrty:refinment_factor = 3, 3 ;
vomecrty:_FillValue = 0.f ;
float vozocrtx(T, Z, X, Y) ;
vozocrtx:units = "m s-1" ;
vozocrtx:add_offset = 0.f ;
vozocrtx:scale_factor = 1.f ;
vozocrtx:long_name = "Zonal velocity" ;
vozocrtx:standard_name = "sea_water_x_velocity" ;
vozocrtx:short_name = "vozocrtx" ;
vozocrtx:online_operation = "N/A" ;
vozocrtx:interval_operation = 86400 ;
vozocrtx:interval_write = 86400 ;
vozocrtx:coordinates = "nav_lon nav_lat" ;
vozocrtx:associate = "T Z Y X" ;
vozocrtx:grid_point = "U" ;
vozocrtx:extrapolation = "dist_weight" ;
vozocrtx:interpolation = "cubic" ;
vozocrtx:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridU_R20170510.nc" ;
vozocrtx:src_i_indices = 3564, 3570 ;
vozocrtx:src_j_indices = 2310, 2337 ;
vozocrtx:refinment_factor = 3, 3 ;
vozocrtx:_FillValue = 0.f ;
float vosaline(T, Z, X, Y) ;
vosaline:units = "PSU" ;
vosaline:add_offset = 0.f ;
vosaline:scale_factor = 1.f ;
vosaline:long_name = "Salinity" ;
vosaline:standard_name = "sea_water_salinity" ;
vosaline:short_name = "vosaline" ;
vosaline:online_operation = "N/A" ;
vosaline:interval_operation = 86400 ;
vosaline:interval_write = 86400 ;
vosaline:coordinates = "nav_lon nav_lat" ;
vosaline:associate = "T Z Y X" ;
vosaline:grid_point = "T" ;
vosaline:extrapolation = "dist_weight" ;
vosaline:interpolation = "cubic" ;
vosaline:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridS_R20170510.nc" ;
vosaline:src_i_indices = 3565, 3571 ;
vosaline:src_j_indices = 2310, 2337 ;
vosaline:refinment_factor = 3, 3 ;
vosaline:_FillValue = 0.f ;
float votemper(T, Z, X, Y) ;
votemper:units = "degree_Celsius" ;
votemper:add_offset = 0.f ;
votemper:scale_factor = 1.f ;
votemper:long_name = "Temperature" ;
votemper:standard_name = "sea_water_potential_temperature" ;
votemper:short_name = "votemper" ;
votemper:online_operation = "N/A" ;
votemper:interval_operation = 86400 ;
votemper:interval_write = 86400 ;
votemper:coordinates = "nav_lon nav_lat" ;
votemper:associate = "T Z Y X" ;
votemper:grid_point = "T" ;
votemper:extrapolation = "dist_weight" ;
votemper:interpolation = "cubic" ;
votemper:src_file = "PSY4V3R1_1dAV_20170430_20170501_gridT_R20170510.nc" ;
votemper:src_i_indices = 3565, 3571 ;
votemper:src_j_indices = 2310, 2337 ;
votemper:refinment_factor = 3, 3 ;
votemper:_FillValue = 0.f ;
// global attributes:
:Conventions = "CF-1.5" ;
:Grid = "ARAKAWA-C" ;
:periodicity = 0. ;
:Created_by = "SIREN create_boundary" ;
:Creation_date = "2017-05-08 10:46:21" ;
:bdy_ind = 1091. ;
:bdy_width = 15. ;
:bdy_deb = 1476. ;
:bdy_end = 1548. ;
}