roms-tools 2.6.2__py3-none-any.whl → 3.0.0__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- ci/environment-with-xesmf.yml +2 -1
- ci/environment.yml +2 -1
- roms_tools/__init__.py +10 -8
- roms_tools/analysis/roms_output.py +28 -137
- roms_tools/analysis/utils.py +0 -66
- roms_tools/constants.py +5 -0
- roms_tools/download.py +47 -4
- roms_tools/plot.py +35 -14
- roms_tools/regrid.py +3 -2
- roms_tools/setup/boundary_forcing.py +30 -27
- roms_tools/setup/cdr_forcing.py +1287 -0
- roms_tools/setup/cdr_release.py +537 -0
- roms_tools/setup/datasets.py +793 -103
- roms_tools/setup/fill.py +1 -1
- roms_tools/setup/grid.py +243 -79
- roms_tools/setup/initial_conditions.py +28 -24
- roms_tools/setup/mask.py +5 -3
- roms_tools/setup/nesting.py +14 -11
- roms_tools/setup/river_forcing.py +62 -125
- roms_tools/setup/surface_forcing.py +154 -41
- roms_tools/setup/tides.py +100 -426
- roms_tools/setup/topography.py +10 -6
- roms_tools/setup/utils.py +590 -116
- roms_tools/tests/test_analysis/test_roms_output.py +119 -36
- roms_tools/tests/test_regrid.py +3 -1
- roms_tools/tests/test_setup/test_boundary_forcing.py +57 -7
- roms_tools/tests/test_setup/test_cdr_forcing.py +958 -0
- roms_tools/tests/test_setup/test_cdr_release.py +388 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/zarr.json +45 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zarr.json +7076 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/zarr.json +56 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/zarr.json +56 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/zarr.json +45 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/zarr.json +56 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/zarr.json +56 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/zarr.json +686 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zarr.json +2481 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/zarr.json +54 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/c/0/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/zarr.json +57 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zmetadata +53 -1
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zattrs +1 -1
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zattrs +6 -0
- roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/zarr.json +47 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/zarr.json +45 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/zarr.json +45 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/c/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/zarr.json +50 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/c/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/zarr.json +50 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/zarr.json +43 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/zarr.json +48 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/c/0/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/zarr.json +53 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/c/0/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/zarr.json +51 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/zarr.json +43 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/zarr.json +43 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/c/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/zarr.json +43 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/zarr.json +574 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zattrs +1 -2
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zmetadata +27 -5
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zarray +20 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zattrs +5 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/.zattrs +1 -3
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_datasets.py +110 -6
- roms_tools/tests/test_setup/test_fill.py +3 -2
- roms_tools/tests/test_setup/test_grid.py +419 -101
- roms_tools/tests/test_setup/test_initial_conditions.py +69 -7
- roms_tools/tests/test_setup/test_nesting.py +8 -6
- roms_tools/tests/test_setup/test_river_forcing.py +15 -15
- roms_tools/tests/test_setup/test_surface_forcing.py +210 -116
- roms_tools/tests/test_setup/test_tides.py +118 -51
- roms_tools/tests/test_setup/test_utils.py +10 -6
- roms_tools/tests/test_setup/test_validation.py +6 -2
- roms_tools/tests/test_tiling/test_partition.py +18 -4
- roms_tools/tests/test_utils.py +21 -0
- roms_tools/tests/test_vertical_coordinate.py +11 -6
- roms_tools/tiling/partition.py +30 -11
- roms_tools/utils.py +315 -17
- roms_tools/vertical_coordinate.py +7 -5
- roms_tools-3.0.0.dist-info/METADATA +143 -0
- roms_tools-3.0.0.dist-info/RECORD +1462 -0
- roms_tools-3.0.0.dist-info/WHEEL +5 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/.zattrs +0 -14
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/.zgroup +0 -3
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/.zmetadata +0 -4456
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/.zattrs +0 -6
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/.zattrs +0 -12
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/.zgroup +0 -3
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/.zmetadata +0 -424
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/.zattrs +0 -12
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/.zattrs +0 -12
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/.zattrs +0 -6
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/.zattrs +0 -12
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/.zattrs +0 -12
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/.zgroup +0 -3
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/.zmetadata +0 -1600
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/.zattrs +0 -7
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/.zattrs +0 -7
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/.zattrs +0 -7
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/.zattrs +0 -10
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/.zarray +0 -26
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/.zattrs +0 -11
- roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/0.0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zattrs +0 -3
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zgroup +0 -3
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zmetadata +0 -299
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/.zattrs +0 -6
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/.zattrs +0 -6
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/.zarray +0 -22
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/.zarray +0 -22
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/.zattrs +0 -6
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/.zattrs +0 -8
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zarray +0 -24
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zattrs +0 -9
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/0.0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/.zarray +0 -22
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/.zattrs +0 -9
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/0.0 +0 -0
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/.zarray +0 -20
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/.zattrs +0 -6
- roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/0 +0 -0
- roms_tools/tests/test_setup/test_topography.py +0 -201
- roms_tools-2.6.2.dist-info/METADATA +0 -147
- roms_tools-2.6.2.dist-info/RECORD +0 -1652
- roms_tools-2.6.2.dist-info/WHEEL +0 -5
- {roms_tools-2.6.2.dist-info → roms_tools-3.0.0.dist-info}/licenses/LICENSE +0 -0
- {roms_tools-2.6.2.dist-info → roms_tools-3.0.0.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,1287 @@
|
|
|
1
|
+
import itertools
|
|
2
|
+
import logging
|
|
3
|
+
from collections import Counter
|
|
4
|
+
from datetime import datetime
|
|
5
|
+
from pathlib import Path
|
|
6
|
+
from typing import Annotated, Iterator
|
|
7
|
+
|
|
8
|
+
import cartopy.crs as ccrs
|
|
9
|
+
import gcm_filters
|
|
10
|
+
import matplotlib.gridspec as gridspec
|
|
11
|
+
import matplotlib.pyplot as plt
|
|
12
|
+
import numpy as np
|
|
13
|
+
import xarray as xr
|
|
14
|
+
from matplotlib.axes import Axes
|
|
15
|
+
from pydantic import (
|
|
16
|
+
BaseModel,
|
|
17
|
+
Field,
|
|
18
|
+
RootModel,
|
|
19
|
+
conlist,
|
|
20
|
+
model_serializer,
|
|
21
|
+
model_validator,
|
|
22
|
+
)
|
|
23
|
+
|
|
24
|
+
from roms_tools import Grid
|
|
25
|
+
from roms_tools.constants import R_EARTH
|
|
26
|
+
from roms_tools.plot import _get_projection, _plot
|
|
27
|
+
from roms_tools.regrid import LateralRegridFromROMS
|
|
28
|
+
from roms_tools.setup.cdr_release import (
|
|
29
|
+
Release,
|
|
30
|
+
ReleaseType,
|
|
31
|
+
TracerPerturbation,
|
|
32
|
+
VolumeRelease,
|
|
33
|
+
)
|
|
34
|
+
from roms_tools.setup.utils import (
|
|
35
|
+
_from_yaml,
|
|
36
|
+
_to_dict,
|
|
37
|
+
_write_to_yaml,
|
|
38
|
+
add_tracer_metadata_to_ds,
|
|
39
|
+
convert_to_relative_days,
|
|
40
|
+
gc_dist,
|
|
41
|
+
get_target_coords,
|
|
42
|
+
)
|
|
43
|
+
from roms_tools.utils import (
|
|
44
|
+
_generate_focused_coordinate_range,
|
|
45
|
+
_remove_edge_nans,
|
|
46
|
+
normalize_longitude,
|
|
47
|
+
save_datasets,
|
|
48
|
+
)
|
|
49
|
+
|
|
50
|
+
INCLUDE_ALL_RELEASE_NAMES = "all"
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
class ReleaseSimulationManager(BaseModel):
|
|
54
|
+
"""Validates and adjusts a single release against a ROMS simulation time window and
|
|
55
|
+
grid."""
|
|
56
|
+
|
|
57
|
+
release: Release
|
|
58
|
+
grid: Grid | None = None
|
|
59
|
+
start_time: datetime
|
|
60
|
+
end_time: datetime
|
|
61
|
+
|
|
62
|
+
@model_validator(mode="after")
|
|
63
|
+
def check_release_times_within_simulation_window(
|
|
64
|
+
self,
|
|
65
|
+
) -> "ReleaseSimulationManager":
|
|
66
|
+
"""Ensure the release times are within the [start_time, end_time] simulation
|
|
67
|
+
window."""
|
|
68
|
+
|
|
69
|
+
times = self.release.times
|
|
70
|
+
if len(times) == 0:
|
|
71
|
+
return self
|
|
72
|
+
|
|
73
|
+
if times[0] < self.start_time:
|
|
74
|
+
raise ValueError(
|
|
75
|
+
f"First time in release '{self.release.name}' is before start_time ({self.start_time})."
|
|
76
|
+
)
|
|
77
|
+
|
|
78
|
+
if times[-1] > self.end_time:
|
|
79
|
+
raise ValueError(
|
|
80
|
+
f"Last time in release '{self.release.name}' is after end_time ({self.end_time})."
|
|
81
|
+
)
|
|
82
|
+
|
|
83
|
+
return self
|
|
84
|
+
|
|
85
|
+
@model_validator(mode="after")
|
|
86
|
+
def validate_release_location(self) -> "ReleaseSimulationManager":
|
|
87
|
+
"""Ensure the release is consistent with the simulation grid."""
|
|
88
|
+
_validate_release_location(self.grid, self.release)
|
|
89
|
+
return self
|
|
90
|
+
|
|
91
|
+
@model_validator(mode="after")
|
|
92
|
+
def extend_to_endpoints(self) -> "ReleaseSimulationManager":
|
|
93
|
+
"""Extend the release time series to include the simulation time endpoints."""
|
|
94
|
+
self.release._extend_to_endpoints(self.start_time, self.end_time)
|
|
95
|
+
return self
|
|
96
|
+
|
|
97
|
+
|
|
98
|
+
class ReleaseCollector(RootModel):
|
|
99
|
+
"""Collects and validates multiple releases against each other."""
|
|
100
|
+
|
|
101
|
+
root: conlist(
|
|
102
|
+
Annotated[
|
|
103
|
+
VolumeRelease | TracerPerturbation, Field(discriminator="release_type")
|
|
104
|
+
],
|
|
105
|
+
min_length=1,
|
|
106
|
+
) = Field(alias="releases")
|
|
107
|
+
|
|
108
|
+
_release_type: ReleaseType = None
|
|
109
|
+
|
|
110
|
+
def __iter__(self) -> Iterator[Release]:
|
|
111
|
+
return iter(self.root)
|
|
112
|
+
|
|
113
|
+
def __getitem__(self, item: int | str) -> Release:
|
|
114
|
+
if isinstance(item, int):
|
|
115
|
+
return self.root[item]
|
|
116
|
+
elif isinstance(item, str):
|
|
117
|
+
for release in self.root:
|
|
118
|
+
if release.name == item:
|
|
119
|
+
return release
|
|
120
|
+
raise KeyError(f"Release named '{item}' not found.")
|
|
121
|
+
else:
|
|
122
|
+
raise TypeError(f"Invalid key type: {type(item)}. Must be int or str.")
|
|
123
|
+
|
|
124
|
+
@model_validator(mode="before")
|
|
125
|
+
@classmethod
|
|
126
|
+
def unpack_dict(cls, data):
|
|
127
|
+
"""This helps directly translate a dict of {"releases": [...]} into just the
|
|
128
|
+
list of releases."""
|
|
129
|
+
if isinstance(data, dict):
|
|
130
|
+
try:
|
|
131
|
+
return data["releases"]
|
|
132
|
+
except KeyError:
|
|
133
|
+
raise ValueError(
|
|
134
|
+
"Expected a dictionary with a 'releases' key, or else a list of releases"
|
|
135
|
+
)
|
|
136
|
+
return data
|
|
137
|
+
|
|
138
|
+
@model_validator(mode="after")
|
|
139
|
+
def check_unique_name(self) -> "ReleaseCollector":
|
|
140
|
+
"""Check that all releases have unique names."""
|
|
141
|
+
names = [release.name for release in self.root]
|
|
142
|
+
duplicates = [name for name, count in Counter(names).items() if count > 1]
|
|
143
|
+
|
|
144
|
+
if duplicates:
|
|
145
|
+
raise ValueError(
|
|
146
|
+
f"Multiple releases share the following name(s): {', '.join(repr(d) for d in duplicates)}. "
|
|
147
|
+
"Each release must have a unique name."
|
|
148
|
+
)
|
|
149
|
+
|
|
150
|
+
return self
|
|
151
|
+
|
|
152
|
+
@model_validator(mode="after")
|
|
153
|
+
def check_all_releases_same_type(self):
|
|
154
|
+
"""Ensure all releases are of the same type, and set the release_type."""
|
|
155
|
+
release_types = set(r.release_type for r in self.root)
|
|
156
|
+
if len(release_types) > 1:
|
|
157
|
+
type_list = ", ".join(map(str, release_types))
|
|
158
|
+
raise ValueError(
|
|
159
|
+
f"Not all releases have the same type. Received: {type_list}"
|
|
160
|
+
)
|
|
161
|
+
return self
|
|
162
|
+
|
|
163
|
+
@property
|
|
164
|
+
def release_type(self):
|
|
165
|
+
release_types = set(r.release_type for r in self.root)
|
|
166
|
+
return release_types.pop()
|
|
167
|
+
|
|
168
|
+
|
|
169
|
+
class CDRForcingDatasetBuilder:
|
|
170
|
+
"""Constructs the xarray `Dataset` to be saved as NetCDF."""
|
|
171
|
+
|
|
172
|
+
def __init__(self, releases, model_reference_date, release_type: ReleaseType):
|
|
173
|
+
self.releases = releases
|
|
174
|
+
self.model_reference_date = model_reference_date
|
|
175
|
+
self.release_type = release_type
|
|
176
|
+
|
|
177
|
+
def build(self) -> xr.Dataset:
|
|
178
|
+
"""Build the CDR forcing dataset."""
|
|
179
|
+
|
|
180
|
+
all_times = itertools.chain.from_iterable(r.times for r in self.releases)
|
|
181
|
+
unique_times = np.unique(np.array(list(all_times), dtype="datetime64[ns]"))
|
|
182
|
+
unique_rel_times = convert_to_relative_days(
|
|
183
|
+
unique_times, self.model_reference_date
|
|
184
|
+
)
|
|
185
|
+
|
|
186
|
+
ds = self._initialize_dataset(unique_times, unique_rel_times)
|
|
187
|
+
|
|
188
|
+
for ncdr, release in enumerate(self.releases):
|
|
189
|
+
times = np.array(release.times, dtype="datetime64[ns]")
|
|
190
|
+
rel_times = convert_to_relative_days(times, self.model_reference_date)
|
|
191
|
+
|
|
192
|
+
if self.release_type == ReleaseType.volume:
|
|
193
|
+
ds["cdr_volume"].loc[{"ncdr": ncdr}] = np.interp(
|
|
194
|
+
unique_rel_times, rel_times, release.volume_fluxes.values
|
|
195
|
+
)
|
|
196
|
+
tracer_key = "cdr_tracer"
|
|
197
|
+
tracer_data = release.tracer_concentrations
|
|
198
|
+
elif self.release_type == ReleaseType.tracer_perturbation:
|
|
199
|
+
tracer_key = "cdr_trcflx"
|
|
200
|
+
tracer_data = release.tracer_fluxes
|
|
201
|
+
|
|
202
|
+
for ntracer in range(ds.ntracers.size):
|
|
203
|
+
tracer_name = ds.tracer_name[ntracer].item()
|
|
204
|
+
ds[tracer_key].loc[{"ntracers": ntracer, "ncdr": ncdr}] = np.interp(
|
|
205
|
+
unique_rel_times,
|
|
206
|
+
rel_times,
|
|
207
|
+
tracer_data[tracer_name].values,
|
|
208
|
+
)
|
|
209
|
+
|
|
210
|
+
return ds
|
|
211
|
+
|
|
212
|
+
def _initialize_dataset(self, unique_times, unique_rel_times) -> xr.Dataset:
|
|
213
|
+
"""Create and initialize a CDR xarray.Dataset with metadata and empty variables.
|
|
214
|
+
|
|
215
|
+
Parameters
|
|
216
|
+
----------
|
|
217
|
+
unique_times : array-like
|
|
218
|
+
Array of unique absolute times for the release.
|
|
219
|
+
unique_rel_times : array-like
|
|
220
|
+
Array of unique relative times (days since model reference date).
|
|
221
|
+
|
|
222
|
+
Returns
|
|
223
|
+
-------
|
|
224
|
+
xr.Dataset
|
|
225
|
+
Initialized dataset with time, location, and release-type-dependent variables.
|
|
226
|
+
"""
|
|
227
|
+
|
|
228
|
+
ds = xr.Dataset()
|
|
229
|
+
ds["time"] = ("time", unique_times)
|
|
230
|
+
ds["cdr_time"] = ("time", unique_rel_times)
|
|
231
|
+
ds["cdr_lon"] = ("ncdr", [r.lon for r in self.releases])
|
|
232
|
+
ds["cdr_lat"] = ("ncdr", [r.lat for r in self.releases])
|
|
233
|
+
ds["cdr_dep"] = ("ncdr", [r.depth for r in self.releases])
|
|
234
|
+
ds["cdr_hsc"] = ("ncdr", [r.hsc for r in self.releases])
|
|
235
|
+
ds["cdr_vsc"] = ("ncdr", [r.vsc for r in self.releases])
|
|
236
|
+
ds = ds.assign_coords(
|
|
237
|
+
{"release_name": (["ncdr"], [r.name for r in self.releases])}
|
|
238
|
+
)
|
|
239
|
+
|
|
240
|
+
if self.release_type == ReleaseType.volume:
|
|
241
|
+
ds = add_tracer_metadata_to_ds(
|
|
242
|
+
ds, with_flux_units=False
|
|
243
|
+
) # adds the coordinate "tracer_name"
|
|
244
|
+
ds["cdr_volume"] = xr.zeros_like(ds.cdr_time * ds.ncdr, dtype=np.float64)
|
|
245
|
+
ds["cdr_tracer"] = xr.zeros_like(
|
|
246
|
+
ds.cdr_time * ds.ntracers * ds.ncdr, dtype=np.float64
|
|
247
|
+
)
|
|
248
|
+
|
|
249
|
+
elif self.release_type == ReleaseType.tracer_perturbation:
|
|
250
|
+
ds = add_tracer_metadata_to_ds(
|
|
251
|
+
ds, with_flux_units=True
|
|
252
|
+
) # adds the coordinate "tracer_name"
|
|
253
|
+
ds["cdr_trcflx"] = xr.zeros_like(
|
|
254
|
+
ds.cdr_time * ds.ntracers * ds.ncdr, dtype=np.float64
|
|
255
|
+
)
|
|
256
|
+
|
|
257
|
+
# Assign attributes
|
|
258
|
+
attr_map = self._get_attr_map()
|
|
259
|
+
for var, attrs in attr_map.items():
|
|
260
|
+
if var in ds.data_vars or var in ds.coords:
|
|
261
|
+
ds[var].attrs.update(attrs)
|
|
262
|
+
|
|
263
|
+
return ds
|
|
264
|
+
|
|
265
|
+
def _get_attr_map(self) -> dict[str, dict[str, str]]:
|
|
266
|
+
"""Returns metadata (long name and units) for variables in the CDRForcing xarray
|
|
267
|
+
dataset.
|
|
268
|
+
|
|
269
|
+
Returns
|
|
270
|
+
-------
|
|
271
|
+
dict
|
|
272
|
+
Keys are variable names, values are dicts with 'long_name' and 'units'.
|
|
273
|
+
"""
|
|
274
|
+
return {
|
|
275
|
+
"time": {"long_name": "absolute time"},
|
|
276
|
+
"cdr_time": {
|
|
277
|
+
"long_name": f"relative time: days since {self.model_reference_date}",
|
|
278
|
+
"units": "days",
|
|
279
|
+
},
|
|
280
|
+
"release_name": {"long_name": "Name of release"},
|
|
281
|
+
"cdr_lon": {
|
|
282
|
+
"long_name": "Longitude of CDR release",
|
|
283
|
+
"units": "degrees east",
|
|
284
|
+
},
|
|
285
|
+
"cdr_lat": {
|
|
286
|
+
"long_name": "Latitude of CDR release",
|
|
287
|
+
"units": "degrees north",
|
|
288
|
+
},
|
|
289
|
+
"cdr_dep": {"long_name": "Depth of CDR release", "units": "meters"},
|
|
290
|
+
"cdr_hsc": {
|
|
291
|
+
"long_name": "Horizontal scale of CDR release",
|
|
292
|
+
"units": "meters",
|
|
293
|
+
},
|
|
294
|
+
"cdr_vsc": {
|
|
295
|
+
"long_name": "Vertical scale of CDR release",
|
|
296
|
+
"units": "meters",
|
|
297
|
+
},
|
|
298
|
+
"cdr_trcflx": {
|
|
299
|
+
"long_name": "CDR tracer flux",
|
|
300
|
+
"description": "Tracer fluxes for CDR releases",
|
|
301
|
+
},
|
|
302
|
+
"cdr_volume": {
|
|
303
|
+
"long_name": "CDR volume flux",
|
|
304
|
+
"units": "m3/s",
|
|
305
|
+
"description": "Volume flux associated with CDR releases",
|
|
306
|
+
},
|
|
307
|
+
"cdr_tracer": {
|
|
308
|
+
"long_name": "CDR tracer concentration",
|
|
309
|
+
"description": "Tracer concentrations for CDR releases",
|
|
310
|
+
},
|
|
311
|
+
}
|
|
312
|
+
|
|
313
|
+
|
|
314
|
+
class CDRForcing(BaseModel):
|
|
315
|
+
"""Represents Carbon Dioxide Removal (CDR) forcing.
|
|
316
|
+
|
|
317
|
+
Parameters
|
|
318
|
+
----------
|
|
319
|
+
grid : Grid, optional
|
|
320
|
+
Object representing the grid for spatial context.
|
|
321
|
+
start_time : datetime
|
|
322
|
+
Start time of the ROMS model simulation.
|
|
323
|
+
end_time : datetime
|
|
324
|
+
End time of the ROMS model simulation.
|
|
325
|
+
model_reference_date : datetime, optional
|
|
326
|
+
Reference date for converting absolute times to model-relative time. Defaults to Jan 1, 2000.
|
|
327
|
+
releases : list of Release
|
|
328
|
+
A list of one or more CDR release objects.
|
|
329
|
+
|
|
330
|
+
Attributes
|
|
331
|
+
----------
|
|
332
|
+
ds : xr.Dataset
|
|
333
|
+
The xarray dataset containing release metadata and forcing variables.
|
|
334
|
+
"""
|
|
335
|
+
|
|
336
|
+
grid: Grid | None = None
|
|
337
|
+
start_time: datetime
|
|
338
|
+
end_time: datetime
|
|
339
|
+
model_reference_date: datetime = datetime(2000, 1, 1)
|
|
340
|
+
releases: ReleaseCollector
|
|
341
|
+
|
|
342
|
+
# this is defined during init and shouldn't be serialized
|
|
343
|
+
_ds: xr.Dataset = None
|
|
344
|
+
|
|
345
|
+
@model_validator(mode="after")
|
|
346
|
+
def _validate(self):
|
|
347
|
+
if self.start_time >= self.end_time:
|
|
348
|
+
raise ValueError(
|
|
349
|
+
f"`start_time` ({self.start_time}) must be earlier than `end_time` ({self.end_time})."
|
|
350
|
+
)
|
|
351
|
+
|
|
352
|
+
for release in self.releases:
|
|
353
|
+
ReleaseSimulationManager(
|
|
354
|
+
release=release,
|
|
355
|
+
grid=self.grid,
|
|
356
|
+
start_time=self.start_time,
|
|
357
|
+
end_time=self.end_time,
|
|
358
|
+
)
|
|
359
|
+
|
|
360
|
+
builder = CDRForcingDatasetBuilder(
|
|
361
|
+
self.releases, self.model_reference_date, self.release_type
|
|
362
|
+
)
|
|
363
|
+
self._ds = builder.build()
|
|
364
|
+
return self
|
|
365
|
+
|
|
366
|
+
@property
|
|
367
|
+
def release_type(self) -> ReleaseType:
|
|
368
|
+
return self.releases.release_type
|
|
369
|
+
|
|
370
|
+
@property
|
|
371
|
+
def ds(self) -> xr.Dataset:
|
|
372
|
+
return self._ds
|
|
373
|
+
|
|
374
|
+
def plot_volume_flux(
|
|
375
|
+
self, start=None, end=None, release_names=INCLUDE_ALL_RELEASE_NAMES
|
|
376
|
+
):
|
|
377
|
+
"""Plot the volume flux for each specified release within the given time range.
|
|
378
|
+
|
|
379
|
+
Parameters
|
|
380
|
+
----------
|
|
381
|
+
start : datetime or None
|
|
382
|
+
Start datetime for the plot. If None, defaults to `self.start_time`.
|
|
383
|
+
end : datetime or None
|
|
384
|
+
End datetime for the plot. If None, defaults to `self.end_time`.
|
|
385
|
+
release_names : list[str], or str, optional
|
|
386
|
+
A list of release names to plot.
|
|
387
|
+
If a string equal to "all", all releases will be plotted.
|
|
388
|
+
Defaults to "all".
|
|
389
|
+
|
|
390
|
+
Raises
|
|
391
|
+
------
|
|
392
|
+
ValueError
|
|
393
|
+
If self.releases are not of type VolumeRelease.
|
|
394
|
+
If `release_names` is not a list of strings or "all".
|
|
395
|
+
If any of the specified release names do not exist in `self.releases`.
|
|
396
|
+
"""
|
|
397
|
+
|
|
398
|
+
if self.release_type != ReleaseType.volume:
|
|
399
|
+
raise ValueError(
|
|
400
|
+
"plot_volume_flux is only supported when all releases are of type VolumeRelease."
|
|
401
|
+
)
|
|
402
|
+
|
|
403
|
+
start = start or self.start_time
|
|
404
|
+
end = end or self.end_time
|
|
405
|
+
|
|
406
|
+
valid_release_names = [r.name for r in self.releases]
|
|
407
|
+
|
|
408
|
+
if release_names == INCLUDE_ALL_RELEASE_NAMES:
|
|
409
|
+
release_names = valid_release_names
|
|
410
|
+
|
|
411
|
+
_validate_release_input(release_names, valid_release_names)
|
|
412
|
+
|
|
413
|
+
data = self.ds["cdr_volume"]
|
|
414
|
+
|
|
415
|
+
self._plot_line(
|
|
416
|
+
data,
|
|
417
|
+
release_names,
|
|
418
|
+
start,
|
|
419
|
+
end,
|
|
420
|
+
title="Volume flux of release(s)",
|
|
421
|
+
ylabel=r"m$^3$/s",
|
|
422
|
+
)
|
|
423
|
+
|
|
424
|
+
def plot_tracer_concentration(
|
|
425
|
+
self,
|
|
426
|
+
tracer_name: str,
|
|
427
|
+
start=None,
|
|
428
|
+
end=None,
|
|
429
|
+
release_names=INCLUDE_ALL_RELEASE_NAMES,
|
|
430
|
+
):
|
|
431
|
+
"""Plot the concentration of a given tracer for each specified release within
|
|
432
|
+
the given time range.
|
|
433
|
+
|
|
434
|
+
Parameters
|
|
435
|
+
----------
|
|
436
|
+
tracer_name : str
|
|
437
|
+
Name of the tracer to plot, e.g., "ALK", "DIC", etc.
|
|
438
|
+
start : datetime or None
|
|
439
|
+
Start datetime for the plot. If None, defaults to `self.start_time`.
|
|
440
|
+
end : datetime or None
|
|
441
|
+
End datetime for the plot. If None, defaults to `self.end_time`.
|
|
442
|
+
release_names : list[str], or str, optional
|
|
443
|
+
A list of release names to plot.
|
|
444
|
+
If a string equal to "all", all releases will be plotted.
|
|
445
|
+
Defaults to "all".
|
|
446
|
+
|
|
447
|
+
Raises
|
|
448
|
+
------
|
|
449
|
+
ValueError
|
|
450
|
+
If self.releases are not of type VolumeRelease.
|
|
451
|
+
If `release_names` is not a list of strings or "all".
|
|
452
|
+
If any of the specified release names do not exist in `self.releases`.
|
|
453
|
+
If `tracer_name` does not exist in self.ds["tracer_name"])
|
|
454
|
+
"""
|
|
455
|
+
if self.release_type != ReleaseType.volume:
|
|
456
|
+
raise ValueError(
|
|
457
|
+
"plot_tracer_concentration is only supported when all releases are of type VolumeRelease."
|
|
458
|
+
)
|
|
459
|
+
|
|
460
|
+
start = start or self.start_time
|
|
461
|
+
end = end or self.end_time
|
|
462
|
+
|
|
463
|
+
valid_release_names = [r.name for r in self.releases]
|
|
464
|
+
|
|
465
|
+
if release_names == INCLUDE_ALL_RELEASE_NAMES:
|
|
466
|
+
release_names = valid_release_names
|
|
467
|
+
|
|
468
|
+
_validate_release_input(release_names, valid_release_names)
|
|
469
|
+
|
|
470
|
+
tracer_names = list(self.ds["tracer_name"].values)
|
|
471
|
+
if tracer_name not in tracer_names:
|
|
472
|
+
raise ValueError(
|
|
473
|
+
f"Tracer '{tracer_name}' not found. Available: {', '.join(tracer_names)}"
|
|
474
|
+
)
|
|
475
|
+
|
|
476
|
+
tracer_index = tracer_names.index(tracer_name)
|
|
477
|
+
data = self.ds["cdr_tracer"].isel(ntracers=tracer_index)
|
|
478
|
+
|
|
479
|
+
if tracer_name == "temp":
|
|
480
|
+
title = "Temperature of release water"
|
|
481
|
+
elif tracer_name == "salt":
|
|
482
|
+
title = "Salinity of release water"
|
|
483
|
+
else:
|
|
484
|
+
title = f"{tracer_name} concentration of release(s)"
|
|
485
|
+
|
|
486
|
+
self._plot_line(
|
|
487
|
+
data,
|
|
488
|
+
release_names,
|
|
489
|
+
start,
|
|
490
|
+
end,
|
|
491
|
+
title=title,
|
|
492
|
+
ylabel=f"{self.ds['tracer_unit'].isel(ntracers=tracer_index).values.item()}",
|
|
493
|
+
)
|
|
494
|
+
|
|
495
|
+
def plot_tracer_flux(
|
|
496
|
+
self,
|
|
497
|
+
tracer_name: str,
|
|
498
|
+
start=None,
|
|
499
|
+
end=None,
|
|
500
|
+
release_names=INCLUDE_ALL_RELEASE_NAMES,
|
|
501
|
+
):
|
|
502
|
+
"""Plot the flux of a given tracer for each specified release within the given
|
|
503
|
+
time range.
|
|
504
|
+
|
|
505
|
+
Parameters
|
|
506
|
+
----------
|
|
507
|
+
tracer_name : str
|
|
508
|
+
Name of the tracer to plot, e.g., "ALK", "DIC", etc.
|
|
509
|
+
start : datetime or None
|
|
510
|
+
Start datetime for the plot. If None, defaults to `self.start_time`.
|
|
511
|
+
end : datetime or None
|
|
512
|
+
End datetime for the plot. If None, defaults to `self.end_time`.
|
|
513
|
+
release_names : list[str], or str, optional
|
|
514
|
+
A list of release names to plot.
|
|
515
|
+
If a string equal to "all", all releases will be plotted.
|
|
516
|
+
Defaults to "all".
|
|
517
|
+
|
|
518
|
+
Raises
|
|
519
|
+
------
|
|
520
|
+
ValueError
|
|
521
|
+
If self.releases are not of type TracerPerturbation.
|
|
522
|
+
If `release_names` is not a list of strings or "all".
|
|
523
|
+
If any of the specified release names do not exist in `self.releases`.
|
|
524
|
+
If `tracer_name` does not exist in self.ds["tracer_name"])
|
|
525
|
+
"""
|
|
526
|
+
if self.release_type != ReleaseType.tracer_perturbation:
|
|
527
|
+
raise ValueError(
|
|
528
|
+
"plot_tracer_flux is only supported when all releases are of type TracerPerturbation."
|
|
529
|
+
)
|
|
530
|
+
|
|
531
|
+
start = start or self.start_time
|
|
532
|
+
end = end or self.end_time
|
|
533
|
+
|
|
534
|
+
valid_release_names = [r.name for r in self.releases]
|
|
535
|
+
|
|
536
|
+
if release_names == INCLUDE_ALL_RELEASE_NAMES:
|
|
537
|
+
release_names = valid_release_names
|
|
538
|
+
|
|
539
|
+
_validate_release_input(release_names, valid_release_names)
|
|
540
|
+
|
|
541
|
+
tracer_names = list(self.ds["tracer_name"].values)
|
|
542
|
+
if tracer_name not in tracer_names:
|
|
543
|
+
raise ValueError(
|
|
544
|
+
f"Tracer '{tracer_name}' not found. Available: {', '.join(tracer_names)}"
|
|
545
|
+
)
|
|
546
|
+
|
|
547
|
+
tracer_index = tracer_names.index(tracer_name)
|
|
548
|
+
data = self.ds["cdr_trcflx"].isel(ntracers=tracer_index)
|
|
549
|
+
|
|
550
|
+
title = f"{tracer_name} flux of release(s)"
|
|
551
|
+
|
|
552
|
+
self._plot_line(
|
|
553
|
+
data,
|
|
554
|
+
release_names,
|
|
555
|
+
start,
|
|
556
|
+
end,
|
|
557
|
+
title=title,
|
|
558
|
+
ylabel=f"{self.ds['tracer_unit'].isel(ntracers=tracer_index).values.item()}",
|
|
559
|
+
)
|
|
560
|
+
|
|
561
|
+
def _plot_line(self, data, release_names, start, end, title="", ylabel=""):
|
|
562
|
+
"""Plots a line graph for the specified releases and time range."""
|
|
563
|
+
valid_release_names = [r.name for r in self.releases]
|
|
564
|
+
colors = _get_release_colors(valid_release_names)
|
|
565
|
+
|
|
566
|
+
fig, ax = plt.subplots(1, 1, figsize=(7, 4))
|
|
567
|
+
for name in release_names:
|
|
568
|
+
ncdr = np.where(self.ds["release_name"].values == name)[0].item()
|
|
569
|
+
data.isel(ncdr=ncdr).plot(
|
|
570
|
+
ax=ax,
|
|
571
|
+
linewidth=2,
|
|
572
|
+
label=name,
|
|
573
|
+
color=colors[name],
|
|
574
|
+
marker="x",
|
|
575
|
+
)
|
|
576
|
+
|
|
577
|
+
if len(release_names) > 0:
|
|
578
|
+
ax.legend()
|
|
579
|
+
|
|
580
|
+
ax.set(title=title, ylabel=ylabel, xlabel="time")
|
|
581
|
+
ax.set_xlim([start, end])
|
|
582
|
+
|
|
583
|
+
def plot_locations(self, release_names="all"):
|
|
584
|
+
"""Plot centers of release locations in top-down view.
|
|
585
|
+
|
|
586
|
+
Parameters
|
|
587
|
+
----------
|
|
588
|
+
release_names : list of str or "all", optional
|
|
589
|
+
A list of release names to plot.
|
|
590
|
+
If "all", the method will plot all releases.
|
|
591
|
+
The default is "all".
|
|
592
|
+
|
|
593
|
+
Raises
|
|
594
|
+
------
|
|
595
|
+
ValueError
|
|
596
|
+
If `release_names` is not a list of strings or "all".
|
|
597
|
+
If any of the specified release names do not exist in `self.releases`.
|
|
598
|
+
If `self.grid` is not set.
|
|
599
|
+
"""
|
|
600
|
+
|
|
601
|
+
# Ensure that the grid is provided
|
|
602
|
+
if self.grid is None:
|
|
603
|
+
raise ValueError(
|
|
604
|
+
"A grid must be provided for plotting. Please pass a valid `Grid` object."
|
|
605
|
+
)
|
|
606
|
+
|
|
607
|
+
valid_release_names = [r.name for r in self.releases]
|
|
608
|
+
|
|
609
|
+
if release_names == "all":
|
|
610
|
+
release_names = valid_release_names
|
|
611
|
+
|
|
612
|
+
_validate_release_input(release_names, valid_release_names)
|
|
613
|
+
|
|
614
|
+
lon_deg = self.grid.ds.lon_rho
|
|
615
|
+
lat_deg = self.grid.ds.lat_rho
|
|
616
|
+
if self.grid.straddle:
|
|
617
|
+
lon_deg = xr.where(lon_deg > 180, lon_deg - 360, lon_deg)
|
|
618
|
+
trans = _get_projection(lon_deg, lat_deg)
|
|
619
|
+
fig, ax = plt.subplots(1, 1, figsize=(13, 7), subplot_kw={"projection": trans})
|
|
620
|
+
|
|
621
|
+
# Plot blue background on map
|
|
622
|
+
field = self.grid.ds.mask_rho
|
|
623
|
+
field = field.assign_coords({"lon": lon_deg, "lat": lat_deg})
|
|
624
|
+
vmax = 6
|
|
625
|
+
vmin = 0
|
|
626
|
+
cmap = plt.colormaps.get_cmap("Blues")
|
|
627
|
+
kwargs = {"vmax": vmax, "vmin": vmin, "cmap": cmap}
|
|
628
|
+
_plot(field, kwargs=kwargs, ax=ax, c=None, add_colorbar=False)
|
|
629
|
+
|
|
630
|
+
# Plot release locations
|
|
631
|
+
colors = _get_release_colors(valid_release_names)
|
|
632
|
+
_plot_location(
|
|
633
|
+
grid=self.grid,
|
|
634
|
+
releases=[self.releases[name] for name in release_names],
|
|
635
|
+
ax=ax,
|
|
636
|
+
colors=colors,
|
|
637
|
+
)
|
|
638
|
+
|
|
639
|
+
def plot_distribution(self, release_name: str, mark_release_center: bool = True):
|
|
640
|
+
"""Plot the release location from a top and side view.
|
|
641
|
+
|
|
642
|
+
This method creates three plots:
|
|
643
|
+
|
|
644
|
+
- A top view of the release distribution.
|
|
645
|
+
- A side view of the release distribution along a fixed longitude.
|
|
646
|
+
- A side view of the release distribution along a fixed latitude.
|
|
647
|
+
|
|
648
|
+
Parameters
|
|
649
|
+
----------
|
|
650
|
+
release_name : str
|
|
651
|
+
Name of the release to plot.
|
|
652
|
+
mark_release_center : bool, default True
|
|
653
|
+
Whether to mark the center of the release distribution with an "x".
|
|
654
|
+
|
|
655
|
+
Raises
|
|
656
|
+
------
|
|
657
|
+
ValueError
|
|
658
|
+
If `self.grid` is not set.
|
|
659
|
+
If the specified `release_name` does not exist in `self.releases`.
|
|
660
|
+
"""
|
|
661
|
+
if self.grid is None:
|
|
662
|
+
raise ValueError(
|
|
663
|
+
"A grid must be provided for plotting. Please pass a valid `Grid` object."
|
|
664
|
+
)
|
|
665
|
+
|
|
666
|
+
valid_release_names = [r.name for r in self.releases]
|
|
667
|
+
_validate_release_input(release_name, valid_release_names, list_allowed=False)
|
|
668
|
+
release = self.releases[release_name]
|
|
669
|
+
|
|
670
|
+
# Prepare grid coordinates
|
|
671
|
+
lon_deg = self.grid.ds.lon_rho
|
|
672
|
+
lat_deg = self.grid.ds.lat_rho
|
|
673
|
+
if self.grid.straddle:
|
|
674
|
+
lon_deg = xr.where(lon_deg > 180, lon_deg - 360, lon_deg)
|
|
675
|
+
|
|
676
|
+
# Setup figure
|
|
677
|
+
fig = plt.figure(figsize=(12, 5.5))
|
|
678
|
+
gs = gridspec.GridSpec(nrows=2, ncols=2, figure=fig)
|
|
679
|
+
trans = _get_projection(lon_deg, lat_deg)
|
|
680
|
+
ax0 = fig.add_subplot(gs[:, 0], projection=trans)
|
|
681
|
+
ax1 = fig.add_subplot(gs[0, 1])
|
|
682
|
+
ax2 = fig.add_subplot(gs[1, 1])
|
|
683
|
+
cmap = plt.colormaps.get_cmap("RdPu")
|
|
684
|
+
cmap.set_bad(color="gray")
|
|
685
|
+
kwargs = {"cmap": cmap}
|
|
686
|
+
|
|
687
|
+
# Top down view plot
|
|
688
|
+
horizontal_field = _map_horizontal_gaussian(self.grid, release)
|
|
689
|
+
horizontal_field = horizontal_field.assign_coords(
|
|
690
|
+
{"lon": lon_deg, "lat": lat_deg}
|
|
691
|
+
)
|
|
692
|
+
_plot(
|
|
693
|
+
horizontal_field.where(self.grid.ds.mask_rho),
|
|
694
|
+
kwargs=kwargs,
|
|
695
|
+
ax=ax0,
|
|
696
|
+
c=None,
|
|
697
|
+
add_colorbar=False,
|
|
698
|
+
)
|
|
699
|
+
if mark_release_center:
|
|
700
|
+
_plot_location(
|
|
701
|
+
grid=self.grid, releases=[release], ax=ax0, include_legend=False
|
|
702
|
+
)
|
|
703
|
+
|
|
704
|
+
# Side view plots
|
|
705
|
+
kwargs = {
|
|
706
|
+
"cmap": cmap,
|
|
707
|
+
"y": "depth",
|
|
708
|
+
"yincrease": False,
|
|
709
|
+
"add_colorbar": False,
|
|
710
|
+
}
|
|
711
|
+
# Plot along latitude
|
|
712
|
+
vertical_field = _map_vertical_gaussian(
|
|
713
|
+
self.grid, release, horizontal_field, orientation="latitude"
|
|
714
|
+
)
|
|
715
|
+
more_kwargs = {"x": "lat"}
|
|
716
|
+
vertical_field.plot(**kwargs, **more_kwargs, ax=ax1)
|
|
717
|
+
if mark_release_center:
|
|
718
|
+
ax1.plot(
|
|
719
|
+
release.lat,
|
|
720
|
+
release.depth,
|
|
721
|
+
color="k",
|
|
722
|
+
marker="x",
|
|
723
|
+
markersize=8,
|
|
724
|
+
markeredgewidth=2,
|
|
725
|
+
)
|
|
726
|
+
|
|
727
|
+
ax1.set(title=f"Longitude: {release.lon}°E", xlabel="Latitude [°N]")
|
|
728
|
+
# Plot along longitude
|
|
729
|
+
vertical_field = _map_vertical_gaussian(
|
|
730
|
+
self.grid, release, horizontal_field, orientation="longitude"
|
|
731
|
+
)
|
|
732
|
+
more_kwargs = {"x": "lon"}
|
|
733
|
+
vertical_field.plot(**kwargs, **more_kwargs, ax=ax2)
|
|
734
|
+
if mark_release_center:
|
|
735
|
+
release_lon = normalize_longitude(release.lon, self.grid.straddle)
|
|
736
|
+
ax2.plot(
|
|
737
|
+
release_lon,
|
|
738
|
+
release.depth,
|
|
739
|
+
color="k",
|
|
740
|
+
marker="x",
|
|
741
|
+
markersize=8,
|
|
742
|
+
markeredgewidth=2,
|
|
743
|
+
)
|
|
744
|
+
ax2.set(title=f"Latitude: {release.lat}°N", xlabel="Longitude [°E]")
|
|
745
|
+
|
|
746
|
+
# Adjust layout and title
|
|
747
|
+
fig.subplots_adjust(hspace=0.45)
|
|
748
|
+
fig.suptitle(f"Release distribution for: {release_name}")
|
|
749
|
+
|
|
750
|
+
def save(
|
|
751
|
+
self,
|
|
752
|
+
filepath: str | Path,
|
|
753
|
+
) -> list[Path]:
|
|
754
|
+
"""Save the volume source with tracers to netCDF4 file.
|
|
755
|
+
|
|
756
|
+
Parameters
|
|
757
|
+
----------
|
|
758
|
+
filepath : str | Path
|
|
759
|
+
The base path and filename for the output files.
|
|
760
|
+
|
|
761
|
+
Returns
|
|
762
|
+
-------
|
|
763
|
+
list[Path]
|
|
764
|
+
A list of `Path` objects for the saved files. Each element in the list corresponds to a file that was saved.
|
|
765
|
+
"""
|
|
766
|
+
|
|
767
|
+
# Ensure filepath is a Path object
|
|
768
|
+
filepath = Path(filepath)
|
|
769
|
+
|
|
770
|
+
# Remove ".nc" suffix if present
|
|
771
|
+
if filepath.suffix == ".nc":
|
|
772
|
+
filepath = filepath.with_suffix("")
|
|
773
|
+
|
|
774
|
+
dataset_list = [self.ds]
|
|
775
|
+
output_filenames = [str(filepath)]
|
|
776
|
+
|
|
777
|
+
saved_filenames = save_datasets(dataset_list, output_filenames)
|
|
778
|
+
|
|
779
|
+
return saved_filenames
|
|
780
|
+
|
|
781
|
+
@model_serializer
|
|
782
|
+
def _serialize(self) -> dict:
|
|
783
|
+
return _to_dict(self)
|
|
784
|
+
|
|
785
|
+
def to_yaml(self, filepath: str | Path) -> None:
|
|
786
|
+
"""Export the parameters of the class to a YAML file, including the version of
|
|
787
|
+
roms-tools.
|
|
788
|
+
|
|
789
|
+
Parameters
|
|
790
|
+
----------
|
|
791
|
+
filepath : str | Path
|
|
792
|
+
The path to the YAML file where the parameters will be saved.
|
|
793
|
+
"""
|
|
794
|
+
|
|
795
|
+
forcing_dict = self.model_dump()
|
|
796
|
+
metadata = self.releases[0].get_tracer_metadata()
|
|
797
|
+
forcing_dict["CDRForcing"]["_tracer_metadata"] = metadata
|
|
798
|
+
|
|
799
|
+
_write_to_yaml(forcing_dict, filepath)
|
|
800
|
+
|
|
801
|
+
@classmethod
|
|
802
|
+
def from_yaml(cls, filepath: str | Path) -> "CDRForcing":
|
|
803
|
+
"""Create an instance of the CDRForcing class from a YAML file.
|
|
804
|
+
|
|
805
|
+
Parameters
|
|
806
|
+
----------
|
|
807
|
+
filepath : str | Path
|
|
808
|
+
The path to the YAML file from which the parameters will be read.
|
|
809
|
+
|
|
810
|
+
Returns
|
|
811
|
+
-------
|
|
812
|
+
CDRForcing
|
|
813
|
+
An instance of the CDRForcing class.
|
|
814
|
+
"""
|
|
815
|
+
filepath = Path(filepath)
|
|
816
|
+
|
|
817
|
+
grid = Grid.from_yaml(filepath)
|
|
818
|
+
params = _from_yaml(cls, filepath)
|
|
819
|
+
params.pop("_tracer_metadata", None)
|
|
820
|
+
|
|
821
|
+
return cls(grid=grid, **params)
|
|
822
|
+
|
|
823
|
+
|
|
824
|
+
def _validate_release_input(releases, valid_releases, list_allowed=True):
|
|
825
|
+
"""Validates the input for release names in plotting methods to ensure they are in
|
|
826
|
+
an acceptable format and exist within the set of valid releases.
|
|
827
|
+
|
|
828
|
+
This method ensures that the `releases` parameter is either a single release name (string) or a list
|
|
829
|
+
of release names (strings), and checks that each release exists in the set of valid releases.
|
|
830
|
+
|
|
831
|
+
Parameters
|
|
832
|
+
----------
|
|
833
|
+
releases : str or list of str
|
|
834
|
+
A single release name as a string, or a list of release names (strings) to validate.
|
|
835
|
+
|
|
836
|
+
list_allowed : bool, optional
|
|
837
|
+
If `True`, a list of release names is allowed. If `False`, only a single release name (string)
|
|
838
|
+
is allowed. Default is `True`.
|
|
839
|
+
|
|
840
|
+
Raises
|
|
841
|
+
------
|
|
842
|
+
ValueError
|
|
843
|
+
If `releases` is not a string or list of strings, or if any release name is invalid (not in `self.releases`).
|
|
844
|
+
|
|
845
|
+
Notes
|
|
846
|
+
-----
|
|
847
|
+
This method checks that the `releases` input is in a valid format (either a string or a list of strings),
|
|
848
|
+
and ensures each release is present in the set of valid releases defined in `self.releases`. Invalid releases
|
|
849
|
+
are reported in the error message.
|
|
850
|
+
|
|
851
|
+
If `list_allowed` is set to `False`, only a single release name (string) will be accepted. Otherwise, a
|
|
852
|
+
list of release names is also acceptable.
|
|
853
|
+
"""
|
|
854
|
+
|
|
855
|
+
# Ensure that a list of releases is only allowed if `list_allowed` is True
|
|
856
|
+
if not list_allowed and not isinstance(releases, str):
|
|
857
|
+
raise ValueError(
|
|
858
|
+
f"Only a single release name (string) is allowed. Got: {releases}"
|
|
859
|
+
)
|
|
860
|
+
|
|
861
|
+
if isinstance(releases, str):
|
|
862
|
+
releases = [releases] # Convert to list if a single string is provided
|
|
863
|
+
elif isinstance(releases, list):
|
|
864
|
+
if not all(isinstance(r, str) for r in releases):
|
|
865
|
+
raise ValueError("All elements in `releases` list must be strings.")
|
|
866
|
+
else:
|
|
867
|
+
raise ValueError(
|
|
868
|
+
"`releases` should be a string (single release name) or a list of strings (release names)."
|
|
869
|
+
)
|
|
870
|
+
|
|
871
|
+
# Validate that the specified releases exist in self.releases
|
|
872
|
+
invalid_releases = [
|
|
873
|
+
release for release in releases if release not in valid_releases
|
|
874
|
+
]
|
|
875
|
+
if invalid_releases:
|
|
876
|
+
raise ValueError(f"Invalid releases: {', '.join(invalid_releases)}")
|
|
877
|
+
|
|
878
|
+
|
|
879
|
+
def _get_release_colors(valid_releases: list[str]) -> dict[str, tuple]:
|
|
880
|
+
"""Returns a dictionary of colors for the valid releases, based on a consistent
|
|
881
|
+
colormap.
|
|
882
|
+
|
|
883
|
+
Parameters
|
|
884
|
+
----------
|
|
885
|
+
valid_releases : List[str]
|
|
886
|
+
List of release names to assign colors to.
|
|
887
|
+
|
|
888
|
+
Returns
|
|
889
|
+
-------
|
|
890
|
+
Dict[str, tuple]
|
|
891
|
+
A dictionary where the keys are release names and the values are their corresponding colors,
|
|
892
|
+
assigned based on the order of releases in the valid releases list.
|
|
893
|
+
|
|
894
|
+
Raises
|
|
895
|
+
------
|
|
896
|
+
ValueError
|
|
897
|
+
If the number of valid releases exceeds the available colormap capacity.
|
|
898
|
+
|
|
899
|
+
Notes
|
|
900
|
+
-----
|
|
901
|
+
The colormap is chosen dynamically based on the number of valid releases:
|
|
902
|
+
|
|
903
|
+
- If there are 10 or fewer releases, the "tab10" colormap is used.
|
|
904
|
+
- If there are more than 10 but fewer than or equal to 20 releases, the "tab20" colormap is used.
|
|
905
|
+
- For more than 20 releases, the "tab20b" colormap is used.
|
|
906
|
+
"""
|
|
907
|
+
|
|
908
|
+
# Determine the colormap based on the number of releases
|
|
909
|
+
if len(valid_releases) <= 10:
|
|
910
|
+
color_map = plt.get_cmap("tab10")
|
|
911
|
+
elif len(valid_releases) <= 20:
|
|
912
|
+
color_map = plt.get_cmap("tab20")
|
|
913
|
+
else:
|
|
914
|
+
color_map = plt.get_cmap("tab20b")
|
|
915
|
+
|
|
916
|
+
# Ensure the number of releases doesn't exceed the available colormap capacity
|
|
917
|
+
if len(valid_releases) > color_map.N:
|
|
918
|
+
raise ValueError(
|
|
919
|
+
f"Too many releases. The selected colormap supports up to {color_map.N} releases."
|
|
920
|
+
)
|
|
921
|
+
|
|
922
|
+
# Create a dictionary of colors based on the release indices
|
|
923
|
+
colors = {name: color_map(i) for i, name in enumerate(valid_releases)}
|
|
924
|
+
|
|
925
|
+
return colors
|
|
926
|
+
|
|
927
|
+
|
|
928
|
+
def _validate_release_location(grid, release: Release):
|
|
929
|
+
"""Validates the closest grid location for a release site.
|
|
930
|
+
|
|
931
|
+
This function ensures that the given release site (lat, lon, depth) lies
|
|
932
|
+
within the ocean portion of the model grid domain. It:
|
|
933
|
+
|
|
934
|
+
- Checks if the point is within the grid domain (with buffer for boundary artifacts).
|
|
935
|
+
- Verifies that the location is not on land.
|
|
936
|
+
- Verifies that the location is not below the seafloor.
|
|
937
|
+
"""
|
|
938
|
+
if grid:
|
|
939
|
+
# Adjust longitude based on whether it crosses the International Date Line (straddle case)
|
|
940
|
+
if grid.straddle:
|
|
941
|
+
lon = xr.where(release.lon > 180, release.lon - 360, release.lon)
|
|
942
|
+
else:
|
|
943
|
+
lon = xr.where(release.lon < 0, release.lon + 360, release.lon)
|
|
944
|
+
|
|
945
|
+
dx = 1 / grid.ds.pm
|
|
946
|
+
dy = 1 / grid.ds.pn
|
|
947
|
+
max_grid_spacing = np.sqrt(dx**2 + dy**2) / 2
|
|
948
|
+
|
|
949
|
+
# Compute great-circle distance to all grid points
|
|
950
|
+
dist = gc_dist(grid.ds.lon_rho, grid.ds.lat_rho, lon, release.lat)
|
|
951
|
+
dist_min = dist.min(dim=["eta_rho", "xi_rho"])
|
|
952
|
+
|
|
953
|
+
if (dist_min > max_grid_spacing).all():
|
|
954
|
+
raise ValueError(
|
|
955
|
+
f"Release site '{release.name}' is outside of the grid domain. "
|
|
956
|
+
"Ensure the provided (lat, lon) falls within the model grid extent."
|
|
957
|
+
)
|
|
958
|
+
|
|
959
|
+
# Find the indices of the closest grid cell
|
|
960
|
+
indices = np.where(dist == dist_min)
|
|
961
|
+
eta_rho = indices[0][0]
|
|
962
|
+
xi_rho = indices[1][0]
|
|
963
|
+
|
|
964
|
+
eta_max = grid.ds.sizes["eta_rho"] - 1
|
|
965
|
+
xi_max = grid.ds.sizes["xi_rho"] - 1
|
|
966
|
+
|
|
967
|
+
if eta_rho in [0, eta_max] or xi_rho in [0, xi_max]:
|
|
968
|
+
raise ValueError(
|
|
969
|
+
f"Release site '{release.name}' is located too close to the grid boundary. "
|
|
970
|
+
"Place release location (lat, lon) away from grid boundaries."
|
|
971
|
+
)
|
|
972
|
+
|
|
973
|
+
if grid.ds.mask_rho[eta_rho, xi_rho].values == 0:
|
|
974
|
+
raise ValueError(
|
|
975
|
+
f"Release site '{release.name}' is on land. "
|
|
976
|
+
"Please provide coordinates (lat, lon) over ocean."
|
|
977
|
+
)
|
|
978
|
+
|
|
979
|
+
if grid.ds.h[eta_rho, xi_rho].values < release.depth:
|
|
980
|
+
raise ValueError(
|
|
981
|
+
f"Release site '{release.name}' lies below the seafloor. "
|
|
982
|
+
f"Seafloor depth is {grid.ds.h[eta_rho, xi_rho].values:.2f} m, "
|
|
983
|
+
f"but requested depth is {release.depth:.2f} m. Adjust depth or location (lat, lon)."
|
|
984
|
+
)
|
|
985
|
+
|
|
986
|
+
else:
|
|
987
|
+
logging.warning(
|
|
988
|
+
"Grid not provided: cannot verify whether the specified lat/lon/depth location is within the domain or on land. "
|
|
989
|
+
"Please check manually or provide a grid when instantiating the class."
|
|
990
|
+
)
|
|
991
|
+
|
|
992
|
+
|
|
993
|
+
def _map_horizontal_gaussian(grid: Grid, release: Release):
|
|
994
|
+
"""Map a tracer release to the ROMS grid as a normalized 2D Gaussian distribution.
|
|
995
|
+
|
|
996
|
+
The tracer is centered at the nearest grid cell to the release location, then smoothed
|
|
997
|
+
using a Gaussian filter (via GCM-Filters) with horizontal scale `release.hsc`. Land points
|
|
998
|
+
are masked out, and the distribution is renormalized to integrate to 1 over the ocean.
|
|
999
|
+
|
|
1000
|
+
Parameters
|
|
1001
|
+
----------
|
|
1002
|
+
grid : Grid
|
|
1003
|
+
ROMS grid object with grid metrics and land mask.
|
|
1004
|
+
release : Release
|
|
1005
|
+
Release location and horizontal scale (hsc) in meters.
|
|
1006
|
+
|
|
1007
|
+
Returns
|
|
1008
|
+
-------
|
|
1009
|
+
delta_smooth : xarray.DataArray
|
|
1010
|
+
Normalized 2D tracer distribution on the ROMS grid (zero over land).
|
|
1011
|
+
"""
|
|
1012
|
+
# Find closest grid cell center
|
|
1013
|
+
target_coords = get_target_coords(grid)
|
|
1014
|
+
lon = release.lon
|
|
1015
|
+
if target_coords["straddle"]:
|
|
1016
|
+
lon = xr.where(lon > 180, lon - 360, lon)
|
|
1017
|
+
else:
|
|
1018
|
+
lon = xr.where(lon < 0, lon + 360, lon)
|
|
1019
|
+
dist = gc_dist(target_coords["lon"], target_coords["lat"], lon, release.lat)
|
|
1020
|
+
dist_min = dist.min(dim=["eta_rho", "xi_rho"])
|
|
1021
|
+
|
|
1022
|
+
# Find the indices of the closest grid cell
|
|
1023
|
+
indices = np.where(dist == dist_min)
|
|
1024
|
+
eta_rho = indices[0][0]
|
|
1025
|
+
xi_rho = indices[1][0]
|
|
1026
|
+
|
|
1027
|
+
# Create a delta function at the center of the Gaussian release
|
|
1028
|
+
delta = xr.zeros_like(grid.ds.mask_rho)
|
|
1029
|
+
delta[eta_rho, xi_rho] = 1
|
|
1030
|
+
|
|
1031
|
+
# Calculate the grid cell area from the inverse grid metrics (pm, pn)
|
|
1032
|
+
area = 1 / (grid.ds.pm * grid.ds.pn)
|
|
1033
|
+
|
|
1034
|
+
# Compute the mean grid spacing (dx) as the average of mean dx and dy
|
|
1035
|
+
dx = (((1 / grid.ds.pm).mean() + (1 / grid.ds.pn).mean()) / 2).item()
|
|
1036
|
+
|
|
1037
|
+
# Extend the domain in both dimensions to mitigate boundary effects during filtering
|
|
1038
|
+
# - Create a mask of ones ignoring land (will be renormalized later)
|
|
1039
|
+
mask = xr.ones_like(grid.ds.mask_rho)
|
|
1040
|
+
|
|
1041
|
+
# Extend the mask along eta_rho by concatenating three copies plus a zeroed edge cell
|
|
1042
|
+
margin_mask = xr.concat(
|
|
1043
|
+
[mask, mask, mask, 0 * mask.isel(eta_rho=-1)], dim="eta_rho"
|
|
1044
|
+
)
|
|
1045
|
+
# Similarly extend along xi_rho
|
|
1046
|
+
margin_mask = xr.concat(
|
|
1047
|
+
[margin_mask, margin_mask, margin_mask, 0 * margin_mask.isel(xi_rho=-1)],
|
|
1048
|
+
dim="xi_rho",
|
|
1049
|
+
)
|
|
1050
|
+
|
|
1051
|
+
# Extend the delta function in the same manner to match the enlarged domain
|
|
1052
|
+
delta_extended = xr.concat(
|
|
1053
|
+
[0 * delta, delta, 0 * delta, 0 * delta.isel(eta_rho=-1)], dim="eta_rho"
|
|
1054
|
+
)
|
|
1055
|
+
delta_extended = xr.concat(
|
|
1056
|
+
[
|
|
1057
|
+
0 * delta_extended,
|
|
1058
|
+
delta_extended,
|
|
1059
|
+
0 * delta_extended,
|
|
1060
|
+
0 * delta_extended.isel(xi_rho=-1),
|
|
1061
|
+
],
|
|
1062
|
+
dim="xi_rho",
|
|
1063
|
+
)
|
|
1064
|
+
|
|
1065
|
+
# Extend the cell area array to match the enlarged domain
|
|
1066
|
+
area_extended = xr.concat([area, area, area, area.isel(eta_rho=-1)], dim="eta_rho")
|
|
1067
|
+
area_extended = xr.concat(
|
|
1068
|
+
[area_extended, area_extended, area_extended, area_extended.isel(xi_rho=-1)],
|
|
1069
|
+
dim="xi_rho",
|
|
1070
|
+
)
|
|
1071
|
+
|
|
1072
|
+
# Define Gaussian filter parameters:
|
|
1073
|
+
# - filter_scale is computed so that the Gaussian's std dev matches
|
|
1074
|
+
# the equivalent boxcar filter of width equal to release.hsc / dx
|
|
1075
|
+
# multiplied by sqrt(12) to convert from boxcar to Gaussian std dev.
|
|
1076
|
+
filter_scale = release.hsc / dx * np.sqrt(12)
|
|
1077
|
+
|
|
1078
|
+
filter = gcm_filters.Filter(
|
|
1079
|
+
filter_scale=filter_scale,
|
|
1080
|
+
dx_min=1,
|
|
1081
|
+
filter_shape=gcm_filters.FilterShape.GAUSSIAN,
|
|
1082
|
+
grid_type=gcm_filters.GridType.REGULAR_WITH_LAND_AREA_WEIGHTED,
|
|
1083
|
+
grid_vars={"wet_mask": margin_mask, "area": area_extended},
|
|
1084
|
+
)
|
|
1085
|
+
|
|
1086
|
+
# Apply the Gaussian filter to the extended delta function over spatial dimensions
|
|
1087
|
+
delta_smooth = filter.apply(delta_extended, dims=["eta_rho", "xi_rho"])
|
|
1088
|
+
|
|
1089
|
+
# Remove the extended margins to return to the original domain size
|
|
1090
|
+
delta_smooth = delta_smooth.isel(
|
|
1091
|
+
eta_rho=slice(grid.ds.sizes["eta_rho"], -grid.ds.sizes["eta_rho"] - 1),
|
|
1092
|
+
xi_rho=slice(grid.ds.sizes["xi_rho"], -grid.ds.sizes["eta_rho"] - 1),
|
|
1093
|
+
)
|
|
1094
|
+
|
|
1095
|
+
# Mask out land cells and set values to zero there
|
|
1096
|
+
delta_smooth = delta_smooth.where(grid.ds.mask_rho, 0.0)
|
|
1097
|
+
|
|
1098
|
+
# Renormalize so the integral over ocean points sums to 1
|
|
1099
|
+
integral = delta_smooth.sum(dim=["eta_rho", "xi_rho"])
|
|
1100
|
+
delta_smooth = delta_smooth / integral
|
|
1101
|
+
|
|
1102
|
+
return delta_smooth
|
|
1103
|
+
|
|
1104
|
+
|
|
1105
|
+
def _map_vertical_gaussian(grid, release, field, orientation="latitude"):
|
|
1106
|
+
"""Extract a vertical section from a ROMS grid and apply a Gaussian distribution in
|
|
1107
|
+
depth.
|
|
1108
|
+
|
|
1109
|
+
This function interpolates a horizontally Gaussian field (e.g., from a tracer release)
|
|
1110
|
+
along either a constant latitude or longitude section and distributes it vertically using
|
|
1111
|
+
a Gaussian profile centered around the release depth.
|
|
1112
|
+
|
|
1113
|
+
Parameters
|
|
1114
|
+
----------
|
|
1115
|
+
grid : Grid
|
|
1116
|
+
ROMS grid object with methods and attributes used for horizontal resolution,
|
|
1117
|
+
depth computation, and straddling logic.
|
|
1118
|
+
release : Release
|
|
1119
|
+
Release object containing coordinates (`lat`, `lon`, `depth`) and vertical
|
|
1120
|
+
spread (`vsc`) for the Gaussian distribution.
|
|
1121
|
+
field : xr.DataArray
|
|
1122
|
+
2D horizontal tracer field defined on the ROMS grid.
|
|
1123
|
+
orientation : {"latitude", "longitude"}, default "latitude"
|
|
1124
|
+
Orientation of the extracted vertical section. If "latitude", extracts
|
|
1125
|
+
a section along constant longitude. If "longitude", extracts a section
|
|
1126
|
+
along constant latitude.
|
|
1127
|
+
|
|
1128
|
+
Returns
|
|
1129
|
+
-------
|
|
1130
|
+
vertical_field : xr.DataArray
|
|
1131
|
+
2D field (depth vs. latitude or longitude) with the vertically-distributed
|
|
1132
|
+
Gaussian mapped along the specified section.
|
|
1133
|
+
"""
|
|
1134
|
+
meters_per_degree = 2 * np.pi * R_EARTH / 360
|
|
1135
|
+
release_lon = normalize_longitude(release.lon, grid.straddle)
|
|
1136
|
+
|
|
1137
|
+
if orientation == "longitude":
|
|
1138
|
+
lon_deg = grid.ds.lon_rho
|
|
1139
|
+
if grid.straddle:
|
|
1140
|
+
lon_deg = xr.where(lon_deg > 180, lon_deg - 360, lon_deg)
|
|
1141
|
+
hsc_in_degrees = release.hsc / (meters_per_degree * np.cos(release.lat))
|
|
1142
|
+
lons, _ = _generate_focused_coordinate_range(
|
|
1143
|
+
center=release_lon,
|
|
1144
|
+
sc=hsc_in_degrees,
|
|
1145
|
+
min_val=lon_deg.min().values,
|
|
1146
|
+
max_val=lon_deg.max().values,
|
|
1147
|
+
N=2000,
|
|
1148
|
+
)
|
|
1149
|
+
lons = xr.DataArray(lons, dims=["lon"], attrs={"units": "°E"})
|
|
1150
|
+
lats = [release.lat]
|
|
1151
|
+
|
|
1152
|
+
elif orientation == "latitude":
|
|
1153
|
+
lons = [release_lon]
|
|
1154
|
+
hsc_in_degrees = release.hsc / (
|
|
1155
|
+
meters_per_degree * np.cos(grid.ds.lat_rho.mean().values)
|
|
1156
|
+
)
|
|
1157
|
+
lats, _ = _generate_focused_coordinate_range(
|
|
1158
|
+
center=release.lat,
|
|
1159
|
+
sc=hsc_in_degrees,
|
|
1160
|
+
min_val=grid.ds.lat_rho.min().values,
|
|
1161
|
+
max_val=grid.ds.lat_rho.max().values,
|
|
1162
|
+
N=2000,
|
|
1163
|
+
)
|
|
1164
|
+
lats = xr.DataArray(lats, dims=["lat"], attrs={"units": "°N"})
|
|
1165
|
+
else:
|
|
1166
|
+
raise ValueError(
|
|
1167
|
+
"`section_orientation` must be either 'latitude' or 'longitude'."
|
|
1168
|
+
)
|
|
1169
|
+
|
|
1170
|
+
# Regrid 2D horizontal Gaussian onto desired 1D horizontal section
|
|
1171
|
+
target_coords = {"lat": lats, "lon": lons}
|
|
1172
|
+
lateral_regrid = LateralRegridFromROMS(field, target_coords)
|
|
1173
|
+
field = lateral_regrid.apply(field).squeeze()
|
|
1174
|
+
h = lateral_regrid.apply(grid.ds.h).squeeze()
|
|
1175
|
+
|
|
1176
|
+
# Define depth levels
|
|
1177
|
+
depth_levels, _ = _generate_focused_coordinate_range(
|
|
1178
|
+
center=release.depth,
|
|
1179
|
+
sc=release.vsc,
|
|
1180
|
+
min_val=0.0,
|
|
1181
|
+
max_val=h.max().values,
|
|
1182
|
+
N=2000,
|
|
1183
|
+
)
|
|
1184
|
+
depth_levels = xr.DataArray(
|
|
1185
|
+
np.asarray(depth_levels),
|
|
1186
|
+
dims=["depth"],
|
|
1187
|
+
attrs={"long_name": "Depth", "units": "m"},
|
|
1188
|
+
)
|
|
1189
|
+
depth_levels = depth_levels.astype(np.float32)
|
|
1190
|
+
|
|
1191
|
+
if release.vsc == 0:
|
|
1192
|
+
# Find index of depth_level closest to release.depth
|
|
1193
|
+
closest_idx = np.abs(depth_levels - release.depth).argmin()
|
|
1194
|
+
weights = xr.zeros_like(depth_levels)
|
|
1195
|
+
weights[closest_idx] = 1.0
|
|
1196
|
+
else:
|
|
1197
|
+
# Compute Gaussian weights at each layer center
|
|
1198
|
+
weights = np.exp(-0.5 * ((depth_levels - release.depth) / release.vsc) ** 2)
|
|
1199
|
+
weights /= weights.sum()
|
|
1200
|
+
|
|
1201
|
+
# Redistribute Gaussian mass from under topography to open ocean
|
|
1202
|
+
weights = weights.where(depth_levels < h)
|
|
1203
|
+
weights = weights / weights.sum()
|
|
1204
|
+
|
|
1205
|
+
# Map 1D to 2D Gaussian
|
|
1206
|
+
vertical_field = field * weights
|
|
1207
|
+
|
|
1208
|
+
# Remove NaNs at the edges
|
|
1209
|
+
if orientation == "longitude":
|
|
1210
|
+
vertical_field, _ = _remove_edge_nans(vertical_field, "lon", layer_depth=h)
|
|
1211
|
+
if orientation == "latitude":
|
|
1212
|
+
vertical_field, _ = _remove_edge_nans(vertical_field, "lat", layer_depth=h)
|
|
1213
|
+
|
|
1214
|
+
vertical_field = vertical_field.assign_coords({"depth": depth_levels})
|
|
1215
|
+
|
|
1216
|
+
return vertical_field
|
|
1217
|
+
|
|
1218
|
+
|
|
1219
|
+
def _plot_location(
|
|
1220
|
+
grid: Grid,
|
|
1221
|
+
releases: ReleaseCollector,
|
|
1222
|
+
ax: Axes,
|
|
1223
|
+
colors: dict[str, tuple] | None = None,
|
|
1224
|
+
include_legend: bool = True,
|
|
1225
|
+
) -> None:
|
|
1226
|
+
"""Plot the center location of each release on a top-down map view.
|
|
1227
|
+
|
|
1228
|
+
Each release is represented as a point on the map, with its color
|
|
1229
|
+
determined by the `colors` dictionary.
|
|
1230
|
+
|
|
1231
|
+
Parameters
|
|
1232
|
+
----------
|
|
1233
|
+
grid : Grid
|
|
1234
|
+
The grid object defining the spatial extent and coordinate system for the plot.
|
|
1235
|
+
|
|
1236
|
+
releases : ReleaseCollector
|
|
1237
|
+
Collection of `Release` objects to plot. Each `Release` must have `.lat`, `.lon`,
|
|
1238
|
+
and `.name` attributes.
|
|
1239
|
+
|
|
1240
|
+
ax : matplotlib.axes.Axes
|
|
1241
|
+
The Matplotlib axis object to plot on.
|
|
1242
|
+
|
|
1243
|
+
colors : dict of str to tuple, optional
|
|
1244
|
+
Optional dictionary mapping release names to RGBA color tuples. If not provided,
|
|
1245
|
+
all releases are plotted in a default color (`"#dd1c77"`).
|
|
1246
|
+
|
|
1247
|
+
include_legend : bool, default True
|
|
1248
|
+
Whether to include a legend showing release names.
|
|
1249
|
+
|
|
1250
|
+
Returns
|
|
1251
|
+
-------
|
|
1252
|
+
None
|
|
1253
|
+
"""
|
|
1254
|
+
|
|
1255
|
+
lon_deg = grid.ds.lon_rho
|
|
1256
|
+
lat_deg = grid.ds.lat_rho
|
|
1257
|
+
if grid.straddle:
|
|
1258
|
+
lon_deg = xr.where(lon_deg > 180, lon_deg - 360, lon_deg)
|
|
1259
|
+
trans = _get_projection(lon_deg, lat_deg)
|
|
1260
|
+
|
|
1261
|
+
proj = ccrs.PlateCarree()
|
|
1262
|
+
|
|
1263
|
+
for release in releases:
|
|
1264
|
+
# transform coordinates to projected space
|
|
1265
|
+
transformed_lon, transformed_lat = trans.transform_point(
|
|
1266
|
+
release.lon,
|
|
1267
|
+
release.lat,
|
|
1268
|
+
proj,
|
|
1269
|
+
)
|
|
1270
|
+
|
|
1271
|
+
if colors is not None:
|
|
1272
|
+
color = colors[release.name]
|
|
1273
|
+
else:
|
|
1274
|
+
color = "k"
|
|
1275
|
+
|
|
1276
|
+
ax.plot(
|
|
1277
|
+
transformed_lon,
|
|
1278
|
+
transformed_lat,
|
|
1279
|
+
marker="x",
|
|
1280
|
+
markersize=8,
|
|
1281
|
+
markeredgewidth=2,
|
|
1282
|
+
label=release.name,
|
|
1283
|
+
color=color,
|
|
1284
|
+
)
|
|
1285
|
+
|
|
1286
|
+
if include_legend:
|
|
1287
|
+
ax.legend(loc="center left", bbox_to_anchor=(1.1, 0.5))
|