From 1b861559c5e31d1b1572b4587c01e0e927beae0f Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 20 Nov 2024 17:03:07 +1100 Subject: [PATCH 01/15] Add topography generation workflow --- README.md | 8 +++++- build.sh | 18 ++++++++++++ domain-tools | 2 +- edit_topog_new_fillfraction.txt | 11 +++++++ esmgrids | 1 + gen_topo.sh | 51 +++++++++++++++++++++++++++++++++ 6 files changed, 89 insertions(+), 2 deletions(-) create mode 100755 build.sh create mode 100644 edit_topog_new_fillfraction.txt create mode 160000 esmgrids create mode 100644 gen_topo.sh diff --git a/README.md b/README.md index 08f9243..b5df790 100644 --- a/README.md +++ b/README.md @@ -1 +1,7 @@ -# make_OM3_025deg_topo \ No newline at end of file +# make_OM3_025deg_topo + +Make 0.25 degree topog.nc MOM bathymetry file from GEBCO 2024 dataset. + +./make_topog.sh will generate topography and associated files. For 0.25deg resolution and higher this will require qsub. + +When the output files are to your satisfaction, commit and push your changes and add the git commit hash as metadata in the output .nc files by running finalise.sh. diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..dbd3d3d --- /dev/null +++ b/build.sh @@ -0,0 +1,18 @@ +module load intel-compiler +module load netcdf + +cd ./domain-tools/ + + +# Check if the build directory exists before cleaning +if [ -d "build" ]; then + cmake --build build --target clean +fi + +cmake -B build -DCMAKE_BUILD_TYPE=Release -DNetCDF_Fortran_LIBRARY=$NETCDF_ROOT/lib/Intel/libnetcdff.so -DNetCDF_C_LIBRARY=$NETCDF_ROOT/lib/libnetcdf.so -DNetCDF_Fortran_INCLUDE_DIRS=$NETCDF_ROOT/include/Intel + +cmake --build build + +cmake --install build --prefix=./ + +cd ../ diff --git a/domain-tools b/domain-tools index 2cba76b..94aa3e7 160000 --- a/domain-tools +++ b/domain-tools @@ -1 +1 @@ -Subproject commit 2cba76ba8f3f2006ea0785bcbe765d5a0351cb5b +Subproject commit 94aa3e7d2f4eb73db1557dd11cb769222f333014 diff --git a/edit_topog_new_fillfraction.txt b/edit_topog_new_fillfraction.txt new file mode 100644 index 0000000..b02b59e --- /dev/null +++ b/edit_topog_new_fillfraction.txt @@ -0,0 +1,11 @@ +editTopo.py edits file version 1 +# +# This file can be used as an argument for editTopo.py --apply +# +# created: Fri Nov 1 12:56:59 2024 +# by: ek4684 +# via: editTopo.py /g/data/tm70/ek4684/domain-tools/C-grid-workflow/fill_fraction_0.5/topog_new_fillfraction.nc --overwrite +# +# i j old new + 1235 737 0.0 65.28469848632812 + 1227 734 0.0 56.118499755859375 diff --git a/esmgrids b/esmgrids new file mode 160000 index 0000000..79f2952 --- /dev/null +++ b/esmgrids @@ -0,0 +1 @@ +Subproject commit 79f2952ca8d5961620996837e8e05c4e3d4fb469 diff --git a/gen_topo.sh b/gen_topo.sh new file mode 100644 index 0000000..6424664 --- /dev/null +++ b/gen_topo.sh @@ -0,0 +1,51 @@ +#!/usr/bin/env sh +#PBS -P tm70 +#PBS -q normal +#PBS -l walltime=4:00:00,mem=4GB +#PBS -l wd +#PBS -lstorage=gdata/hh5+gdata/ik11+gdata/tm70 + +module use /g/data/hh5/public/modules +module load conda/analysis3 + +# Build domain-tools +./build.sh + +set -x +set -e + +cp -L --preserve=timestamps /g/data/tm70/ek4684/New_grid_input_files_025deg_75zlevels/ocean_hgrid.nc . +cp -L --preserve=timestamps /g/data/tm70/ek4684/New_grid_input_files_025deg_75zlevels/ocean_vgrid.nc . +ln -sf /g/data/ik11/inputs/GEBCO_2024/GEBCO_2024.nc ./ + +# Convert double precision vgrid to single +./domain-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6 + +# Interpolate topography on horizontal grid: +# ./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 + +# Cut off T cells of size less than 6kms (6000 m) +./domain-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff 6000 --hgrid ocean_hgrid.nc + +# Fill cells that have a sea area fraction smaller than 0.5: +./domain-tools/bin/topogtools fill_fraction -i topog_new_min_dy.nc -o topog_new_fillfraction.nc --fraction 0.5 + +# edit_topo.py +python ./topogtools/editTopo.py --overwrite --nogui --apply edit_topog_new_fillfraction.txt --output topog_new_fillfraction_edited.nc topog_new_fillfraction.nc + +# Remove seas: +./domain-tools/bin/topogtools deseas -i topog_new_fillfraction_edited.nc -o topog_new_fillfraction_edited_deseas.nc --grid_type C + +# Set maximum/minimum depth +./domain-tools/bin/topogtools min_max_depth -i topog_new_fillfraction_edited_deseas.nc -o topog_new_fillfraction_edited_deseas_mindepth.nc --level 4 --vgrid ocean_vgrid.nc --vgrid_type mom6 + +# Create land/sea mask +cp topog_new_fillfraction_edited_deseas_mindepth.nc topog.nc +./domain-tools/bin/topogtools mask -i topog.nc -o ocean_mask.nc +ncrename -O -v mask,kmt ocean_mask.nc kmt.nc + +# Create ESMF mesh from hgrid and ocean_mask.nc +python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om2-025deg-ESMFmesh.nc --mask-filename=ocean_mask.nc --wrap-lons + +# Create ESMF mesh without mask +python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om2-025deg-nomask-ESMFmesh.nc --wrap-lons From 440841337f40342652f80ce31868af0ffc58a320 Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 20 Nov 2024 17:12:36 +1100 Subject: [PATCH 02/15] remove esmgrids --- esmgrids | 1 - 1 file changed, 1 deletion(-) delete mode 160000 esmgrids diff --git a/esmgrids b/esmgrids deleted file mode 160000 index 79f2952..0000000 --- a/esmgrids +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 79f2952ca8d5961620996837e8e05c4e3d4fb469 From 3093206c8f03ce3599e55d54cf80fe39b50f6f8e Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 20 Nov 2024 17:14:51 +1100 Subject: [PATCH 03/15] update --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index b5df790..f14f492 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,6 @@ Make 0.25 degree topog.nc MOM bathymetry file from GEBCO 2024 dataset. -./make_topog.sh will generate topography and associated files. For 0.25deg resolution and higher this will require qsub. +./gen_topog.sh will generate topography and associated files. For 0.25deg resolution and higher this will require qsub. When the output files are to your satisfaction, commit and push your changes and add the git commit hash as metadata in the output .nc files by running finalise.sh. From 258f3c09ab2bc0e724b989a528bca61c33a995d6 Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 20 Nov 2024 17:16:07 +1100 Subject: [PATCH 04/15] Add finalise.sh --- finalise.sh | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100755 finalise.sh diff --git a/finalise.sh b/finalise.sh new file mode 100755 index 0000000..c0b8637 --- /dev/null +++ b/finalise.sh @@ -0,0 +1,26 @@ +#!/usr/bin/env sh +# Commit changes and push, then add metadata to note how changes were made + +module load nco +module load git + +echo "About to commit all changes to git repository and push to remote." +read -p "Proceed? (y/n) " yesno +case $yesno in + [Yy] ) ;; + * ) echo "Cancelled."; exit 0;; +esac + +set -x +set -e + +git commit -am "update" || true +git push || true + +ncatted -O -h -a history,global,a,c," | Created on $(date) using https://github.com/ACCESS-NRI/make_OM3_025deg_topo/tree/$(git rev-parse --short HEAD)" topog.nc +ncatted -O -h -a history,global,a,c," | Updated on $(date) using https://github.com/ACCESS-NRI/make_OM3_025deg_topo/tree/$(git rev-parse --short HEAD)" ocean_mask.nc +ncatted -O -h -a history,global,a,c," | Created on $(date) using https://github.com/ACCESS-NRI/make_OM3_025deg_topo/tree/$(git rev-parse --short HEAD)" kmt.nc +ncatted -O -h -a history,global,a,c," | Updated on $(date) using https://github.com/ACCESS-NRI/make_OM3_025deg_topo/tree/$(git rev-parse --short HEAD)" ocean_vgrid.nc + +ncatted -O -h -a history,global,a,c," and based on GEBCO_2024 topography" topog.nc + From 02fe72a9d79b2a6b18d7bac6c7e76efebdd2bd4c Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 20 Nov 2024 17:21:11 +1100 Subject: [PATCH 05/15] Un comment gen topo from GEBCO --- gen_topo.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/gen_topo.sh b/gen_topo.sh index 6424664..093ac6f 100644 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -21,8 +21,8 @@ ln -sf /g/data/ik11/inputs/GEBCO_2024/GEBCO_2024.nc ./ # Convert double precision vgrid to single ./domain-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6 -# Interpolate topography on horizontal grid: -# ./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 +Interpolate topography on horizontal grid: +./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 # Cut off T cells of size less than 6kms (6000 m) ./domain-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff 6000 --hgrid ocean_hgrid.nc From 7d95466f2d5386dd58bbcfcb6f82ebeddb16b9ff Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 20 Nov 2024 17:22:54 +1100 Subject: [PATCH 06/15] tidy up gen_topo.sh --- gen_topo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen_topo.sh b/gen_topo.sh index 093ac6f..901c155 100644 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -21,7 +21,7 @@ ln -sf /g/data/ik11/inputs/GEBCO_2024/GEBCO_2024.nc ./ # Convert double precision vgrid to single ./domain-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6 -Interpolate topography on horizontal grid: +# Interpolate topography on horizontal grid: ./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 # Cut off T cells of size less than 6kms (6000 m) From 69774625f815145d1d71bc17fa0fd1bdc616e78d Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Tue, 26 Nov 2024 14:02:46 +1100 Subject: [PATCH 07/15] Add command line arguments and md5sum --- README.md | 5 +++++ build.sh | 1 + gen_topo.sh | 55 ++++++++++++++++++++++++++++++++++++++++++++--------- 3 files changed, 52 insertions(+), 9 deletions(-) diff --git a/README.md b/README.md index f14f492..43b2dea 100644 --- a/README.md +++ b/README.md @@ -5,3 +5,8 @@ Make 0.25 degree topog.nc MOM bathymetry file from GEBCO 2024 dataset. ./gen_topog.sh will generate topography and associated files. For 0.25deg resolution and higher this will require qsub. When the output files are to your satisfaction, commit and push your changes and add the git commit hash as metadata in the output .nc files by running finalise.sh. + +Use the qsub command to submit the script, passing the required input files as arguments, For example: + +qsub -v INPUT_HGRID="/path/to/ocean_hgrid.nc",INPUT_VGRID="/path/to/ocean_vgrid.nc",INPUT_GBCO="/path/to/GEBCO_2024.nc" gen_topo.sh + diff --git a/build.sh b/build.sh index dbd3d3d..7aafdbf 100755 --- a/build.sh +++ b/build.sh @@ -1,3 +1,4 @@ +module purge module load intel-compiler module load netcdf diff --git a/gen_topo.sh b/gen_topo.sh index 901c155..3f9af13 100644 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -1,22 +1,33 @@ #!/usr/bin/env sh -#PBS -P tm70 #PBS -q normal #PBS -l walltime=4:00:00,mem=4GB #PBS -l wd -#PBS -lstorage=gdata/hh5+gdata/ik11+gdata/tm70 +#PBS -lstorage=gdata/hh5+gdata/ik11 -module use /g/data/hh5/public/modules -module load conda/analysis3 +# Ensure build.sh is executable +if [ ! -x "./build.sh" ]; then + chmod +x ./build.sh +fi # Build domain-tools ./build.sh +module use /g/data/hh5/public/modules +module load conda/analysis3 +module load nco + set -x set -e -cp -L --preserve=timestamps /g/data/tm70/ek4684/New_grid_input_files_025deg_75zlevels/ocean_hgrid.nc . -cp -L --preserve=timestamps /g/data/tm70/ek4684/New_grid_input_files_025deg_75zlevels/ocean_vgrid.nc . -ln -sf /g/data/ik11/inputs/GEBCO_2024/GEBCO_2024.nc ./ +# Using the environment variables passed via -v +INPUT_HGRID=$INPUT_HGRID +INPUT_VGRID=$INPUT_VGRID +INPUT_GBCO=$INPUT_GBCO + +# Copy and link input files +cp -L --preserve=timestamps "$INPUT_HGRID" ./ocean_hgrid.nc +cp -L --preserve=timestamps "$INPUT_VGRID" ./ocean_vgrid.nc +ln -sf "$INPUT_GBCO" ./GEBCO_2024.nc # Convert double precision vgrid to single ./domain-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6 @@ -42,10 +53,36 @@ python ./topogtools/editTopo.py --overwrite --nogui --apply edit_topog_new_fillf # Create land/sea mask cp topog_new_fillfraction_edited_deseas_mindepth.nc topog.nc ./domain-tools/bin/topogtools mask -i topog.nc -o ocean_mask.nc + +# Calculate MD5 checksum for topog.nc +MD5SUM_topog=$(md5sum topog.nc | awk '{print $1}') + +# Add MD5 checksum as a global attribute to topog.nc +ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_topog" topog.nc + +# Calculate MD5 checksum for ocean_mask.nc +MD5SUM_mask=$(md5sum ocean_mask.nc | awk '{print $1}') + +# Add MD5 checksum as a global attribute to ocean_mask.nc +ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_mask" ocean_mask.nc + +# Make CICE mask file (`kmt.nc`) ncrename -O -v mask,kmt ocean_mask.nc kmt.nc +#Move intermediate files to a separate directory +OUTPUT_DIR="topography_output" +mkdir -p $OUTPUT_DIR + +# Move all intermediate files to topography_output directory +mv topog_new.nc $OUTPUT_DIR/ +mv topog_new_min_dy.nc $OUTPUT_DIR/ +mv topog_new_fillfraction.nc $OUTPUT_DIR/ +mv topog_new_fillfraction_edited.nc $OUTPUT_DIR/ +mv topog_new_fillfraction_edited_deseas.nc $OUTPUT_DIR/ +mv topog_new_fillfraction_edited_deseas_mindepth.nc $OUTPUT_DIR/ + # Create ESMF mesh from hgrid and ocean_mask.nc -python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om2-025deg-ESMFmesh.nc --mask-filename=ocean_mask.nc --wrap-lons +python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om3-025deg-ESMFmesh.nc --mask-filename=ocean_mask.nc --wrap-lons # Create ESMF mesh without mask -python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om2-025deg-nomask-ESMFmesh.nc --wrap-lons +python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om3-025deg-nomask-ESMFmesh.nc --wrap-lons From f77f4f2a23745e15e23e69a5e5c66e7f3e54a8c3 Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Fri, 29 Nov 2024 12:22:40 +1100 Subject: [PATCH 08/15] Add License and pass values --- LICENSE | 201 ++++++++++++++++++++++++++++++++++++++++++++++++++++ README.md | 21 ++++-- gen_topo.sh | 19 +++-- 3 files changed, 230 insertions(+), 11 deletions(-) create mode 100644 LICENSE diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..261eeb9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,201 @@ + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 43b2dea..870fd91 100644 --- a/README.md +++ b/README.md @@ -1,12 +1,23 @@ # make_OM3_025deg_topo -Make 0.25 degree topog.nc MOM bathymetry file from GEBCO 2024 dataset. +Make 0.25-degree `topog.nc` MOM bathymetry file from the GEBCO 2024 dataset. -./gen_topog.sh will generate topography and associated files. For 0.25deg resolution and higher this will require qsub. +## Workflow Overview -When the output files are to your satisfaction, commit and push your changes and add the git commit hash as metadata in the output .nc files by running finalise.sh. +1. **Generate Topography:** + Run `./gen_topog.sh` to generate the topography and associated files. For 0.25-degree resolution or higher, this will require submission via `qsub`. -Use the qsub command to submit the script, passing the required input files as arguments, For example: +2. **Finalize Output Files:** + Once the output files meet your satisfaction, commit and push the changes, then add the git commit hash as metadata in the output `.nc` files by running `finalise.sh`. -qsub -v INPUT_HGRID="/path/to/ocean_hgrid.nc",INPUT_VGRID="/path/to/ocean_vgrid.nc",INPUT_GBCO="/path/to/GEBCO_2024.nc" gen_topo.sh +3. **Submitting the Script:** + Use the `qsub` command to submit the script, passing the required input files as arguments. For example: + ```bash + qsub -v INPUT_HGRID="/path/to/ocean_hgrid.nc",INPUT_VGRID="/path/to/ocean_vgrid.nc",INPUT_GBCO="/path/to/GEBCO_2024.nc" gen_topo.sh + ``` +## Note on Dependencies + +This workflow relies on the **hh5 conda environments** for running the scripts and generating the outputs. Ensure that the required conda environment is active before executing the workflow. + +--- \ No newline at end of file diff --git a/gen_topo.sh b/gen_topo.sh index 3f9af13..a325c90 100644 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -1,4 +1,7 @@ #!/usr/bin/env sh +# Copyright 2023 ACCESS-NRI and contributors. See the top-level COPYRIGHT file for details. +# SPDX-License-Identifier: Apache-2.0 + #PBS -q normal #PBS -l walltime=4:00:00,mem=4GB #PBS -l wd @@ -23,6 +26,10 @@ set -e INPUT_HGRID=$INPUT_HGRID INPUT_VGRID=$INPUT_VGRID INPUT_GBCO=$INPUT_GBCO +# Define the cutoff value +CUTOFF_VALUE=6000 +ESMF_MESH_FILE='access-om3-025deg-ESMFmesh.nc' +ESMF_NO_MASK_MESH_FILE='access-om3-025deg-nomask-ESMFmesh.nc' # Copy and link input files cp -L --preserve=timestamps "$INPUT_HGRID" ./ocean_hgrid.nc @@ -36,13 +43,13 @@ ln -sf "$INPUT_GBCO" ./GEBCO_2024.nc ./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 # Cut off T cells of size less than 6kms (6000 m) -./domain-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff 6000 --hgrid ocean_hgrid.nc +./domain-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff "$CUTOFF_VALUE" --hgrid ocean_hgrid.nc # Fill cells that have a sea area fraction smaller than 0.5: ./domain-tools/bin/topogtools fill_fraction -i topog_new_min_dy.nc -o topog_new_fillfraction.nc --fraction 0.5 # edit_topo.py -python ./topogtools/editTopo.py --overwrite --nogui --apply edit_topog_new_fillfraction.txt --output topog_new_fillfraction_edited.nc topog_new_fillfraction.nc +python ./topogtools/editTopo.py --overwrite --nogui --apply edit_025deg_topog_new_fillfraction.txt --output topog_new_fillfraction_edited.nc topog_new_fillfraction.nc # Remove seas: ./domain-tools/bin/topogtools deseas -i topog_new_fillfraction_edited.nc -o topog_new_fillfraction_edited_deseas.nc --grid_type C @@ -70,19 +77,19 @@ ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_mask" ocean_mask.nc ncrename -O -v mask,kmt ocean_mask.nc kmt.nc #Move intermediate files to a separate directory -OUTPUT_DIR="topography_output" +OUTPUT_DIR="topography_intermediate_output" mkdir -p $OUTPUT_DIR # Move all intermediate files to topography_output directory mv topog_new.nc $OUTPUT_DIR/ mv topog_new_min_dy.nc $OUTPUT_DIR/ -mv topog_new_fillfraction.nc $OUTPUT_DIR/ +mv topog_new_fillfraction.nc $OUTPUT_DIR/ mv topog_new_fillfraction_edited.nc $OUTPUT_DIR/ mv topog_new_fillfraction_edited_deseas.nc $OUTPUT_DIR/ mv topog_new_fillfraction_edited_deseas_mindepth.nc $OUTPUT_DIR/ # Create ESMF mesh from hgrid and ocean_mask.nc -python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om3-025deg-ESMFmesh.nc --mask-filename=ocean_mask.nc --wrap-lons +python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename="$ESMF_MESH_FILE" --mask-filename=ocean_mask.nc --wrap-lons # Create ESMF mesh without mask -python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename=access-om3-025deg-nomask-ESMFmesh.nc --wrap-lons +python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename="$ESMF_NO_MASK_MESH_FILE" --wrap-lons From 2df35febc28a5ff09fc78a61c50b926ac97585e5 Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 <108497463+ezhilsabareesh8@users.noreply.github.com> Date: Fri, 29 Nov 2024 12:26:21 +1100 Subject: [PATCH 09/15] Global md5sum for ocean_mask.nc Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com> --- gen_topo.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gen_topo.sh b/gen_topo.sh index a325c90..9391afd 100644 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -65,7 +65,7 @@ cp topog_new_fillfraction_edited_deseas_mindepth.nc topog.nc MD5SUM_topog=$(md5sum topog.nc | awk '{print $1}') # Add MD5 checksum as a global attribute to topog.nc -ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_topog" topog.nc +ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_topog" ocean_mask.nc # Calculate MD5 checksum for ocean_mask.nc MD5SUM_mask=$(md5sum ocean_mask.nc | awk '{print $1}') From 8559268f76799df309c0e0a2f3a485f62106cbcc Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 <108497463+ezhilsabareesh8@users.noreply.github.com> Date: Fri, 29 Nov 2024 12:26:44 +1100 Subject: [PATCH 10/15] Global md5sum for kmt.nc Co-authored-by: Anton Steketee <79179784+anton-seaice@users.noreply.github.com> --- gen_topo.sh | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/gen_topo.sh b/gen_topo.sh index 9391afd..2cbbd99 100644 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -70,12 +70,12 @@ ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_topog" ocean_mask.nc # Calculate MD5 checksum for ocean_mask.nc MD5SUM_mask=$(md5sum ocean_mask.nc | awk '{print $1}') -# Add MD5 checksum as a global attribute to ocean_mask.nc -ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_mask" ocean_mask.nc - # Make CICE mask file (`kmt.nc`) ncrename -O -v mask,kmt ocean_mask.nc kmt.nc +# Add MD5 checksum as a global attribute to ocean_mask.nc +ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_mask" kmt.nc + #Move intermediate files to a separate directory OUTPUT_DIR="topography_intermediate_output" mkdir -p $OUTPUT_DIR From 603d690843d1362bad31f829d9371021c4a21245 Mon Sep 17 00:00:00 2001 From: anton-seaice Date: Wed, 4 Dec 2024 13:55:59 +1100 Subject: [PATCH 11/15] some tidyup --- README.md | 15 +++++++------ build.sh | 5 +++++ finalise.sh | 3 +++ gen_topo.sh | 63 ++++++++++++++++++++++------------------------------- 4 files changed, 42 insertions(+), 44 deletions(-) mode change 100644 => 100755 gen_topo.sh diff --git a/README.md b/README.md index 870fd91..5eabf27 100644 --- a/README.md +++ b/README.md @@ -5,19 +5,20 @@ Make 0.25-degree `topog.nc` MOM bathymetry file from the GEBCO 2024 dataset. ## Workflow Overview 1. **Generate Topography:** - Run `./gen_topog.sh` to generate the topography and associated files. For 0.25-degree resolution or higher, this will require submission via `qsub`. + Use `./gen_topog.sh` to generate the topography and associated files. For 0.25-degree resolution or higher, this will require submission via `qsub`. -2. **Finalize Output Files:** - Once the output files meet your satisfaction, commit and push the changes, then add the git commit hash as metadata in the output `.nc` files by running `finalise.sh`. + First, add gdata for your project & working directory to the `#PBS -l storage=` line in `get_topo.sh` -3. **Submitting the Script:** - Use the `qsub` command to submit the script, passing the required input files as arguments. For example: + Then, use the `qsub` command to submit the script, passing the required input files as arguments. For example: ```bash - qsub -v INPUT_HGRID="/path/to/ocean_hgrid.nc",INPUT_VGRID="/path/to/ocean_vgrid.nc",INPUT_GBCO="/path/to/GEBCO_2024.nc" gen_topo.sh + qsub -v INPUT_HGRID="/path/to/ocean_hgrid.nc",INPUT_VGRID="/path/to/ocean_vgrid.nc",INPUT_GBCO="/path/to/GEBCO_2024.nc" -P $PROJECT gen_topo.sh ``` +2. **Finalize Output Files:** + Once the output files meet your satisfaction, commit and push the changes, then add the git commit hash as metadata in the output `.nc` files by running `finalise.sh`. + ## Note on Dependencies -This workflow relies on the **hh5 conda environments** for running the scripts and generating the outputs. Ensure that the required conda environment is active before executing the workflow. +This workflow relies on the **hh5 conda environments** for running the scripts and generating the outputs. As long as you are a member of the _hh5_ project, this conda environment is loaded as part of the scripts. --- \ No newline at end of file diff --git a/build.sh b/build.sh index 7aafdbf..86af3c9 100755 --- a/build.sh +++ b/build.sh @@ -1,3 +1,8 @@ +# Copyright 2024 ACCESS-NRI and contributors. See the top-level COPYRIGHT file for details. +# SPDX-License-Identifier: Apache-2.0 +# +# Build domain-tools executables + module purge module load intel-compiler module load netcdf diff --git a/finalise.sh b/finalise.sh index c0b8637..461bf12 100755 --- a/finalise.sh +++ b/finalise.sh @@ -1,4 +1,7 @@ #!/usr/bin/env sh +# Copyright 2024 ACCESS-NRI and contributors. See the top-level COPYRIGHT file for details. +# SPDX-License-Identifier: Apache-2.0 +# # Commit changes and push, then add metadata to note how changes were made module load nco diff --git a/gen_topo.sh b/gen_topo.sh old mode 100644 new mode 100755 index 2cbbd99..731abb1 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -3,33 +3,31 @@ # SPDX-License-Identifier: Apache-2.0 #PBS -q normal -#PBS -l walltime=4:00:00,mem=4GB +#PBS -l walltime=4:00:00,mem=10GB #PBS -l wd -#PBS -lstorage=gdata/hh5+gdata/ik11 +#PBS -l storage=gdata/hh5+gdata/ik11+gdata/tm70 + +# Input files - Using the environment variables passed via -v +INPUT_HGRID=$INPUT_HGRID +INPUT_VGRID=$INPUT_VGRID +INPUT_GBCO=$INPUT_GBCO +# Minimum allowed y-size for a cell (in m) +CUTOFF_VALUE=6000 +# Output filenames +ESMF_MESH_FILE='access-om3-025deg-ESMFmesh.nc' +ESMF_NO_MASK_MESH_FILE='access-om3-025deg-nomask-ESMFmesh.nc' -# Ensure build.sh is executable -if [ ! -x "./build.sh" ]; then - chmod +x ./build.sh -fi # Build domain-tools ./build.sh +module purge module use /g/data/hh5/public/modules module load conda/analysis3 module load nco -set -x -set -e - -# Using the environment variables passed via -v -INPUT_HGRID=$INPUT_HGRID -INPUT_VGRID=$INPUT_VGRID -INPUT_GBCO=$INPUT_GBCO -# Define the cutoff value -CUTOFF_VALUE=6000 -ESMF_MESH_FILE='access-om3-025deg-ESMFmesh.nc' -ESMF_NO_MASK_MESH_FILE='access-om3-025deg-nomask-ESMFmesh.nc' +set -x #print commands to e file +set -e #exit on error # Copy and link input files cp -L --preserve=timestamps "$INPUT_HGRID" ./ocean_hgrid.nc @@ -42,7 +40,7 @@ ln -sf "$INPUT_GBCO" ./GEBCO_2024.nc # Interpolate topography on horizontal grid: ./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 -# Cut off T cells of size less than 6kms (6000 m) +# Cut off T cells of size less than cutoff value ./domain-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff "$CUTOFF_VALUE" --hgrid ocean_hgrid.nc # Fill cells that have a sea area fraction smaller than 0.5: @@ -57,37 +55,28 @@ python ./topogtools/editTopo.py --overwrite --nogui --apply edit_025deg_topog_ne # Set maximum/minimum depth ./domain-tools/bin/topogtools min_max_depth -i topog_new_fillfraction_edited_deseas.nc -o topog_new_fillfraction_edited_deseas_mindepth.nc --level 4 --vgrid ocean_vgrid.nc --vgrid_type mom6 -# Create land/sea mask +# Name final topog as topo.nc cp topog_new_fillfraction_edited_deseas_mindepth.nc topog.nc -./domain-tools/bin/topogtools mask -i topog.nc -o ocean_mask.nc -# Calculate MD5 checksum for topog.nc -MD5SUM_topog=$(md5sum topog.nc | awk '{print $1}') +#Move intermediate files to a separate directory +OUTPUT_DIR="topography_intermediate_output" +mkdir -p $OUTPUT_DIR +mv topog_new* $OUTPUT_DIR/ + +# Create land/sea mask +./domain-tools/bin/topogtools mask -i topog.nc -o ocean_mask.nc # Add MD5 checksum as a global attribute to topog.nc +MD5SUM_topog=$(md5sum topog.nc | awk '{print $1}') ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_topog" ocean_mask.nc -# Calculate MD5 checksum for ocean_mask.nc -MD5SUM_mask=$(md5sum ocean_mask.nc | awk '{print $1}') - # Make CICE mask file (`kmt.nc`) ncrename -O -v mask,kmt ocean_mask.nc kmt.nc # Add MD5 checksum as a global attribute to ocean_mask.nc +MD5SUM_mask=$(md5sum ocean_mask.nc | awk '{print $1}') ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_mask" kmt.nc -#Move intermediate files to a separate directory -OUTPUT_DIR="topography_intermediate_output" -mkdir -p $OUTPUT_DIR - -# Move all intermediate files to topography_output directory -mv topog_new.nc $OUTPUT_DIR/ -mv topog_new_min_dy.nc $OUTPUT_DIR/ -mv topog_new_fillfraction.nc $OUTPUT_DIR/ -mv topog_new_fillfraction_edited.nc $OUTPUT_DIR/ -mv topog_new_fillfraction_edited_deseas.nc $OUTPUT_DIR/ -mv topog_new_fillfraction_edited_deseas_mindepth.nc $OUTPUT_DIR/ - # Create ESMF mesh from hgrid and ocean_mask.nc python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename="$ESMF_MESH_FILE" --mask-filename=ocean_mask.nc --wrap-lons From 41934bd6074afc1fff5ee8c327fba382eca6ec1e Mon Sep 17 00:00:00 2001 From: ezhilsabareesh8 Date: Wed, 4 Dec 2024 14:28:58 +1100 Subject: [PATCH 12/15] rename edit_topog_new_fillfraction.txt --- ...new_fillfraction.txt => edit_025deg_topog_new_fillfraction.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename edit_topog_new_fillfraction.txt => edit_025deg_topog_new_fillfraction.txt (100%) diff --git a/edit_topog_new_fillfraction.txt b/edit_025deg_topog_new_fillfraction.txt similarity index 100% rename from edit_topog_new_fillfraction.txt rename to edit_025deg_topog_new_fillfraction.txt From a53bfaf6a4d77008a0aaaab0ff850c0154f0ce18 Mon Sep 17 00:00:00 2001 From: anton-seaice Date: Thu, 5 Dec 2024 09:35:06 +1100 Subject: [PATCH 13/15] update --- gen_topo.sh | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/gen_topo.sh b/gen_topo.sh index 731abb1..68b52e8 100755 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -57,6 +57,13 @@ python ./topogtools/editTopo.py --overwrite --nogui --apply edit_025deg_topog_ne # Name final topog as topo.nc cp topog_new_fillfraction_edited_deseas_mindepth.nc topog.nc +# add name and checksum for input files +MD5SUM=$(md5sum ocean_hgrid.nc | awk '{print $1}') +ncatted -O -h -a input_file,global,a,c,"$(readlink -f $INPUT_HGRID) (md5sum:$MD5SUM) ; " topog.nc +MD5SUM=$(md5sum ocean_vgrid.nc | awk '{print $1}') +ncatted -O -h -a input_file,global,a,c,"$(readlink -f $INPUT_VGRID) (md5sum:$MD5SUM) ; " topog.nc +MD5SUM=$(md5sum GEBCO_2024.nc | awk '{print $1}') +ncatted -O -h -a input_file,global,a,c,"$(readlink -f $INPUT_GBCO) (md5sum:$MD5SUM) ; " topog.nc #Move intermediate files to a separate directory OUTPUT_DIR="topography_intermediate_output" @@ -68,14 +75,15 @@ mv topog_new* $OUTPUT_DIR/ # Add MD5 checksum as a global attribute to topog.nc MD5SUM_topog=$(md5sum topog.nc | awk '{print $1}') -ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_topog" ocean_mask.nc +ncatted -O -h -a input_file,global,a,c,"$(readlink -f topog.nc) (md5sum:$MD5SUM_topog)" ocean_mask.nc # Make CICE mask file (`kmt.nc`) ncrename -O -v mask,kmt ocean_mask.nc kmt.nc +ncks -O -x -v geolon_t,geolat_t kmt.nc kmt.nc #drop unused vars # Add MD5 checksum as a global attribute to ocean_mask.nc MD5SUM_mask=$(md5sum ocean_mask.nc | awk '{print $1}') -ncatted -O -h -a md5_checksum,global,a,c,"$MD5SUM_mask" kmt.nc +ncatted -O -h -a ocean_mask_file,global,a,c,"$(readlink -f ocean_mask.nc) (md5sum:$MD5SUM_mask)" kmt.nc # Create ESMF mesh from hgrid and ocean_mask.nc python3 ./om3-scripts/mesh_generation/generate_mesh.py --grid-type=mom --grid-filename=ocean_hgrid.nc --mesh-filename="$ESMF_MESH_FILE" --mask-filename=ocean_mask.nc --wrap-lons From 3294ee5ee36b149aa3689e153f349f23eaa18b87 Mon Sep 17 00:00:00 2001 From: anton-seaice Date: Thu, 5 Dec 2024 09:41:56 +1100 Subject: [PATCH 14/15] Files used for topo/mask generation on Thu Dec 5 09:41:56 AEDT 2024 --- finalise.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/finalise.sh b/finalise.sh index 461bf12..947d129 100755 --- a/finalise.sh +++ b/finalise.sh @@ -17,7 +17,7 @@ esac set -x set -e -git commit -am "update" || true +git commit -am "Files used for topo/mask generation on $(date)" || true git push || true ncatted -O -h -a history,global,a,c," | Created on $(date) using https://github.com/ACCESS-NRI/make_OM3_025deg_topo/tree/$(git rev-parse --short HEAD)" topog.nc From fa7990ffeb4a7d1fe7f59bb7a71cf802b0f4e9d5 Mon Sep 17 00:00:00 2001 From: Micael Oliveira Date: Mon, 9 Dec 2024 09:14:08 +1100 Subject: [PATCH 15/15] Use latest version of domain-tools, which includes editTopo.py and was renamed bathymetry-tools. --- .gitmodules | 9 +++------ bathymetry-tools | 1 + build.sh | 4 ++-- domain-tools | 1 - gen_topo.sh | 18 +++++++++--------- topogtools | 1 - 6 files changed, 15 insertions(+), 19 deletions(-) create mode 160000 bathymetry-tools delete mode 160000 domain-tools delete mode 160000 topogtools diff --git a/.gitmodules b/.gitmodules index f91588f..5c47d09 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,9 +1,6 @@ -[submodule "domain-tools"] - path = domain-tools - url = https://github.com/COSIMA/domain-tools.git -[submodule "topogtools"] - path = topogtools - url = https://github.com/COSIMA/topogtools.git [submodule "om3-scripts"] path = om3-scripts url = https://github.com/COSIMA/om3-scripts.git +[submodule "bathymetry-tools"] + path = bathymetry-tools + url = https://github.com/COSIMA/bathymetry-tools.git diff --git a/bathymetry-tools b/bathymetry-tools new file mode 160000 index 0000000..a298d51 --- /dev/null +++ b/bathymetry-tools @@ -0,0 +1 @@ +Subproject commit a298d5198540c529b703fd82b216f4073ea4af0a diff --git a/build.sh b/build.sh index 86af3c9..ff4eaf8 100755 --- a/build.sh +++ b/build.sh @@ -1,13 +1,13 @@ # Copyright 2024 ACCESS-NRI and contributors. See the top-level COPYRIGHT file for details. # SPDX-License-Identifier: Apache-2.0 # -# Build domain-tools executables +# Build bathymetry-tools executables module purge module load intel-compiler module load netcdf -cd ./domain-tools/ +cd ./bathymetry-tools/ # Check if the build directory exists before cleaning diff --git a/domain-tools b/domain-tools deleted file mode 160000 index 94aa3e7..0000000 --- a/domain-tools +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 94aa3e7d2f4eb73db1557dd11cb769222f333014 diff --git a/gen_topo.sh b/gen_topo.sh index 68b52e8..c76e872 100755 --- a/gen_topo.sh +++ b/gen_topo.sh @@ -18,7 +18,7 @@ ESMF_MESH_FILE='access-om3-025deg-ESMFmesh.nc' ESMF_NO_MASK_MESH_FILE='access-om3-025deg-nomask-ESMFmesh.nc' -# Build domain-tools +# Build bathymetry-tools ./build.sh module purge @@ -35,25 +35,25 @@ cp -L --preserve=timestamps "$INPUT_VGRID" ./ocean_vgrid.nc ln -sf "$INPUT_GBCO" ./GEBCO_2024.nc # Convert double precision vgrid to single -./domain-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6 +./bathymetry-tools/bin/float_vgrid --vgrid ocean_vgrid.nc --vgrid_type mom6 # Interpolate topography on horizontal grid: -./domain-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 +./bathymetry-tools/bin/topogtools gen_topo -i GEBCO_2024.nc -o topog_new.nc --hgrid ocean_hgrid.nc --tripolar --longitude-offset -100 # Cut off T cells of size less than cutoff value -./domain-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff "$CUTOFF_VALUE" --hgrid ocean_hgrid.nc +./bathymetry-tools/bin/topogtools min_dy -i topog_new.nc -o topog_new_min_dy.nc --cutoff "$CUTOFF_VALUE" --hgrid ocean_hgrid.nc # Fill cells that have a sea area fraction smaller than 0.5: -./domain-tools/bin/topogtools fill_fraction -i topog_new_min_dy.nc -o topog_new_fillfraction.nc --fraction 0.5 +./bathymetry-tools/bin/topogtools fill_fraction -i topog_new_min_dy.nc -o topog_new_fillfraction.nc --fraction 0.5 # edit_topo.py -python ./topogtools/editTopo.py --overwrite --nogui --apply edit_025deg_topog_new_fillfraction.txt --output topog_new_fillfraction_edited.nc topog_new_fillfraction.nc +python ./bathymetry-tools/editTopo.py --overwrite --nogui --apply edit_025deg_topog_new_fillfraction.txt --output topog_new_fillfraction_edited.nc topog_new_fillfraction.nc # Remove seas: -./domain-tools/bin/topogtools deseas -i topog_new_fillfraction_edited.nc -o topog_new_fillfraction_edited_deseas.nc --grid_type C +./bathymetry-tools/bin/topogtools deseas -i topog_new_fillfraction_edited.nc -o topog_new_fillfraction_edited_deseas.nc --grid_type C # Set maximum/minimum depth -./domain-tools/bin/topogtools min_max_depth -i topog_new_fillfraction_edited_deseas.nc -o topog_new_fillfraction_edited_deseas_mindepth.nc --level 4 --vgrid ocean_vgrid.nc --vgrid_type mom6 +./bathymetry-tools/bin/topogtools min_max_depth -i topog_new_fillfraction_edited_deseas.nc -o topog_new_fillfraction_edited_deseas_mindepth.nc --level 4 --vgrid ocean_vgrid.nc --vgrid_type mom6 # Name final topog as topo.nc cp topog_new_fillfraction_edited_deseas_mindepth.nc topog.nc @@ -71,7 +71,7 @@ mkdir -p $OUTPUT_DIR mv topog_new* $OUTPUT_DIR/ # Create land/sea mask -./domain-tools/bin/topogtools mask -i topog.nc -o ocean_mask.nc +./bathymetry-tools/bin/topogtools mask -i topog.nc -o ocean_mask.nc # Add MD5 checksum as a global attribute to topog.nc MD5SUM_topog=$(md5sum topog.nc | awk '{print $1}') diff --git a/topogtools b/topogtools deleted file mode 160000 index 6b49831..0000000 --- a/topogtools +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6b4983127aa18dfdf1b62b2e18b581d82d4a64d4