Hi everyone,
Summary: I’m trying to apply the bathymetry pipeline to new datasets and not succeeding.
If that interests you, or you think you might be able to help, please read on!
Gory details
I’m trying to build on the topography workflow described here to create an ensemble of PanAntarctic runs using different bathymetries.
I’ve modified the gen_topo.sh script to take a command line argument for the bathymetry dataset, and verified that it works for me when I use GEBCO as the input. Unfortunately, I can’t make it work with other datasets yet.
From the script gen_topo.f90 in bathymetry-tools, I can see that the data variable needs to be called ‘height’ or ‘elevation’, so I’ve modified the bathymetry files accordingly.
When I call gen_topo.sh, it falls over with an error from gen_topo.f90. This is my gen_topo.sh.e* file
Loading conda/analysis3-25.11
Loading requirement: singularity
+ set -e
+ cp -L --preserve=timestamps /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/grids/mosaic/global.025deg/2025.01.30/ocean_hgrid.nc ./ocean_hgrid.nc
+ cp -L --preserve=timestamps /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/grids/vertical/global.025deg/2025.01.30/ocean_vgrid.nc ./ocean_vgrid.nc
+ ln -sf /g/data/jk72/ed7737/datasets/bathymetry/ML_topos/DTU_DKL_6_Ker50_pre_processed.nc ./BATHY.nc
+ ./bathymetry-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6
+ ./bathymetry-tools/bin/topogtools gen_topo -i BATHY.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100
FATAL ERROR: NetCDF: Index exceeds dimension bound
The error comes from line 364 of gen_topo.f90, where it is trying to get data from the supplied bathymetry file.
The output file is
-- FindNetCDF defines targets:
-- - NetCDF_VERSION [4.7.3]
-- - NetCDF_PARALLEL [FALSE]
-- - NetCDF_C_CONFIG_EXECUTABLE [/apps/netcdf/4.7.3/bin/nc-config]
-- - NetCDF::NetCDF_C [SHARED] [Root: /apps/netcdf/4.7.3] Lib: /apps/netcdf/4.7.3/lib/libnetcdf.so
-- - NetCDF_Fortran_CONFIG_EXECUTABLE [/apps/netcdf/4.7.3/bin/nf-config]
-- - NetCDF::NetCDF_Fortran [SHARED] [Root: /apps/netcdf/4.7.3/include] Lib: /apps/netcdf/4.7.3/lib/Intel/libnetcdff.so
-- Configuring done (0.2s)
-- Generating done (0.2s)
-- Build files have been written to: /home/552/ed7737/coding-and-projects/panant_bathy_ensemble/make_OM3_panant_topo/bathymetry-tools/build
[ 8%] Building Fortran object CMakeFiles/M_CLI2.dir/external/M_CLI2/src/M_CLI2.F90.o
[ 16%] Linking Fortran static library libM_CLI2.a
[ 16%] Built target M_CLI2
[ 25%] Building Fortran object CMakeFiles/topography.dir/src/kdtree2.f90.o
[ 33%] Building Fortran object CMakeFiles/topography.dir/src/utils.f90.o
[ 41%] Building Fortran object CMakeFiles/topography.dir/src/gen_topo.f90.o
[ 50%] Building Fortran object CMakeFiles/topography.dir/src/vgrid.f90.o
[ 58%] Building Fortran object CMakeFiles/topography.dir/src/topography.f90.o
[ 66%] Linking Fortran static library libtopography.a
[ 66%] Built target topography
[ 75%] Building Fortran object CMakeFiles/topogtools.dir/src/topogtools.f90.o
[ 83%] Linking Fortran executable topogtools
[ 83%] Built target topogtools
[ 91%] Building Fortran object CMakeFiles/float_vgrid.dir/src/float_vgrid.f90.o
[100%] Linking Fortran executable float_vgrid
[100%] Built target float_vgrid
-- Install configuration: "Release"
-- Installing: /home/552/ed7737/coding-and-projects/panant_bathy_ensemble/make_OM3_panant_topo/bathymetry-tools/./bin/topogtools
-- Installing: /home/552/ed7737/coding-and-projects/panant_bathy_ensemble/make_OM3_panant_topo/bathymetry-tools/./bin/float_vgrid
Reading vgrid from file 'ocean_vgrid.nc'
Writing vgrid to file 'ocean_vgrid.nc'
Reading supergrid info
j_lat located at 903 latitude 65.0000000000000
Mosaic grid starts at -80.9675013444044 topography jstart =
1 lat = -79.9916666666667
Mosaic grid starts at -80.9675013444044 topography jstart =
-58 lat = 0.000000000000000E+000
Shifted topography longitude grid by -100.0000 (ishift = -6000 )
jmosaic = 1 -80.9675013444044 -74.4608728325249
-58 332
imosaic = 1 -280.000000000000 -255.000000000000
1 1500
ncid = 131072 hid = 3 itopo =
listart = 15601 jstart = -58
icount = 1500 jcount = 391
The bathymetry files I have tried span ~80S to ~80N, while GEBCO is pole-to-pole, so I wondered if the Index exceeds dimension bound error was due to the negative value for jstart (topography jstart =-58) being used in the nf90_get_var call.
So, I tried expanding the bathymetry arrays by padding them with zeros. Unfortunately, this made gen_topo.f90 error out earlier.
my error file:
Loading conda/analysis3-25.11
Loading requirement: singularity
+ set -e
+ cp -L --preserve=timestamps /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/grids/mosaic/global.025deg/2025.01.30/ocean_hgrid.nc ./ocean_hgrid.nc
+ cp -L --preserve=timestamps /g/data/vk83/prerelease/configurations/inputs/access-om3/mom/grids/vertical/global.025deg/2025.01.30/ocean_vgrid.nc ./ocean_vgrid.nc
+ ln -sf /g/data/jk72/ed7737/datasets/bathymetry/ML_topos/DTU_DKL_6_Ker50_pre_processed.nc ./BATHY.nc
+ ./bathymetry-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6
+ ./bathymetry-tools/bin/topogtools gen_topo -i BATHY.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100
FATAL ERROR: NetCDF: Start+count exceeds dimension bound
This time the error comes from line 221 of gen_topo.f90, where it is trying to put the longitude variable in to the output file.
And the output file, gen_topo.sh.o*
-- Found NetCDF: /apps/netcdf/4.7.3/include;/apps/netcdf/4.7.3/include/Intel (found version "4.7.3") found components: Fortran
-- FindNetCDF defines targets:
-- - NetCDF_VERSION [4.7.3]
-- - NetCDF_PARALLEL [FALSE]
-- - NetCDF_C_CONFIG_EXECUTABLE [/apps/netcdf/4.7.3/bin/nc-config]
-- - NetCDF::NetCDF_C [SHARED] [Root: /apps/netcdf/4.7.3] Lib: /apps/netcdf/4.7.3/lib/libnetcdf.so
-- - NetCDF_Fortran_CONFIG_EXECUTABLE [/apps/netcdf/4.7.3/bin/nf-config]
-- - NetCDF::NetCDF_Fortran [SHARED] [Root: /apps/netcdf/4.7.3/include] Lib: /apps/netcdf/4.7.3/lib/Intel/libnetcdff.so
-- Configuring done (0.2s)
-- Generating done (0.2s)
-- Build files have been written to: /home/552/ed7737/coding-and-projects/panant_bathy_ensemble/make_OM3_panant_topo/bathymetry-tools/build
[ 8%] Building Fortran object CMakeFiles/M_CLI2.dir/external/M_CLI2/src/M_CLI2.F90.o
[ 16%] Linking Fortran static library libM_CLI2.a
[ 16%] Built target M_CLI2
[ 25%] Building Fortran object CMakeFiles/topography.dir/src/kdtree2.f90.o
[ 33%] Building Fortran object CMakeFiles/topography.dir/src/utils.f90.o
[ 41%] Building Fortran object CMakeFiles/topography.dir/src/gen_topo.f90.o
[ 50%] Building Fortran object CMakeFiles/topography.dir/src/vgrid.f90.o
[ 58%] Building Fortran object CMakeFiles/topography.dir/src/topography.f90.o
[ 66%] Linking Fortran static library libtopography.a
[ 66%] Built target topography
[ 75%] Building Fortran object CMakeFiles/topogtools.dir/src/topogtools.f90.o
[ 83%] Linking Fortran executable topogtools
[ 83%] Built target topogtools
[ 91%] Building Fortran object CMakeFiles/float_vgrid.dir/src/float_vgrid.f90.o
[100%] Linking Fortran executable float_vgrid
[100%] Built target float_vgrid
-- Install configuration: "Release"
-- Installing: /home/552/ed7737/coding-and-projects/panant_bathy_ensemble/make_OM3_panant_topo/bathymetry-tools/./bin/topogtools
-- Installing: /home/552/ed7737/coding-and-projects/panant_bathy_ensemble/make_OM3_panant_topo/bathymetry-tools/./bin/float_vgrid
Reading vgrid from file 'ocean_vgrid.nc'
Writing vgrid to file 'ocean_vgrid.nc'
Reading supergrid info
j_lat located at 903 latitude 65.0000000000000
Mosaic grid starts at -80.9675013444044 topography jstart =
543 lat = -80.9583333333324
Mosaic grid starts at -80.9675013444044 topography jstart =
542 lat = -80.9749999999991
Shifted topography longitude grid by -100.0000 (ishift = -6000 )
I’m not sure what to look at next. I have a vague worry that perhaps the ordering of dimensions is getting mucked up, but I don’t have anything to back that up at the moment.
Help greatly appreciated!
