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.
Files changed (1083) hide show
  1. ci/environment-with-xesmf.yml +2 -1
  2. ci/environment.yml +2 -1
  3. roms_tools/__init__.py +10 -8
  4. roms_tools/analysis/roms_output.py +28 -137
  5. roms_tools/analysis/utils.py +0 -66
  6. roms_tools/constants.py +5 -0
  7. roms_tools/download.py +47 -4
  8. roms_tools/plot.py +35 -14
  9. roms_tools/regrid.py +3 -2
  10. roms_tools/setup/boundary_forcing.py +30 -27
  11. roms_tools/setup/cdr_forcing.py +1287 -0
  12. roms_tools/setup/cdr_release.py +537 -0
  13. roms_tools/setup/datasets.py +793 -103
  14. roms_tools/setup/fill.py +1 -1
  15. roms_tools/setup/grid.py +243 -79
  16. roms_tools/setup/initial_conditions.py +28 -24
  17. roms_tools/setup/mask.py +5 -3
  18. roms_tools/setup/nesting.py +14 -11
  19. roms_tools/setup/river_forcing.py +62 -125
  20. roms_tools/setup/surface_forcing.py +154 -41
  21. roms_tools/setup/tides.py +100 -426
  22. roms_tools/setup/topography.py +10 -6
  23. roms_tools/setup/utils.py +590 -116
  24. roms_tools/tests/test_analysis/test_roms_output.py +119 -36
  25. roms_tools/tests/test_regrid.py +3 -1
  26. roms_tools/tests/test_setup/test_boundary_forcing.py +57 -7
  27. roms_tools/tests/test_setup/test_cdr_forcing.py +958 -0
  28. roms_tools/tests/test_setup/test_cdr_release.py +388 -0
  29. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/c/0/0/0 +0 -0
  30. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/zarr.json +54 -0
  31. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/c/0/0/0 +0 -0
  32. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/zarr.json +54 -0
  33. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/c/0/0/0 +0 -0
  34. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/zarr.json +54 -0
  35. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/c/0/0/0 +0 -0
  36. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/zarr.json +54 -0
  37. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/c/0/0/0 +0 -0
  38. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/zarr.json +54 -0
  39. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/c/0/0/0 +0 -0
  40. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/zarr.json +54 -0
  41. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/c/0/0/0 +0 -0
  42. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/zarr.json +54 -0
  43. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/c/0/0/0 +0 -0
  44. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/zarr.json +54 -0
  45. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/c/0/0/0 +0 -0
  46. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/zarr.json +54 -0
  47. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/c/0/0/0 +0 -0
  48. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/zarr.json +54 -0
  49. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/c/0/0/0 +0 -0
  50. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/zarr.json +54 -0
  51. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/c/0/0/0 +0 -0
  52. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/zarr.json +54 -0
  53. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/c/0/0/0 +0 -0
  54. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/zarr.json +54 -0
  55. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/c/0/0/0 +0 -0
  56. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/zarr.json +54 -0
  57. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/c/0/0/0 +0 -0
  58. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/zarr.json +54 -0
  59. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/c/0/0/0 +0 -0
  60. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/zarr.json +54 -0
  61. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/c/0/0/0 +0 -0
  62. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/zarr.json +54 -0
  63. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/c/0/0/0 +0 -0
  64. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/zarr.json +54 -0
  65. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/c/0/0/0 +0 -0
  66. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/zarr.json +54 -0
  67. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/c/0/0/0 +0 -0
  68. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/zarr.json +54 -0
  69. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/c/0/0/0 +0 -0
  70. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/zarr.json +54 -0
  71. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/c/0/0/0 +0 -0
  72. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/zarr.json +54 -0
  73. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/c/0/0/0 +0 -0
  74. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/zarr.json +54 -0
  75. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/c/0/0/0 +0 -0
  76. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/zarr.json +54 -0
  77. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/c/0/0/0 +0 -0
  78. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/zarr.json +54 -0
  79. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/c/0/0/0 +0 -0
  80. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/zarr.json +54 -0
  81. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/c/0/0/0 +0 -0
  82. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/zarr.json +54 -0
  83. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/c/0/0/0 +0 -0
  84. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/zarr.json +54 -0
  85. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/c/0/0/0 +0 -0
  86. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/zarr.json +54 -0
  87. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/c/0/0/0 +0 -0
  88. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/zarr.json +54 -0
  89. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/c/0/0/0 +0 -0
  90. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/zarr.json +54 -0
  91. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/c/0/0/0 +0 -0
  92. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/zarr.json +54 -0
  93. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/c/0/0/0 +0 -0
  94. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/zarr.json +54 -0
  95. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/c/0/0/0 +0 -0
  96. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/zarr.json +54 -0
  97. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/c/0/0/0 +0 -0
  98. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/zarr.json +54 -0
  99. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/c/0/0/0 +0 -0
  100. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/zarr.json +54 -0
  101. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/c/0/0/0 +0 -0
  102. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/zarr.json +54 -0
  103. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/c/0/0/0 +0 -0
  104. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/zarr.json +54 -0
  105. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/c/0/0/0 +0 -0
  106. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/zarr.json +54 -0
  107. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/c/0/0/0 +0 -0
  108. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/zarr.json +54 -0
  109. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/c/0/0/0 +0 -0
  110. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/zarr.json +54 -0
  111. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/c/0/0/0 +0 -0
  112. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/zarr.json +54 -0
  113. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/c/0/0/0 +0 -0
  114. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/zarr.json +54 -0
  115. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/c/0/0/0 +0 -0
  116. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/zarr.json +54 -0
  117. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/c/0/0/0 +0 -0
  118. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/zarr.json +54 -0
  119. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/c/0/0/0 +0 -0
  120. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/zarr.json +54 -0
  121. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/c/0/0/0 +0 -0
  122. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/zarr.json +54 -0
  123. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/c/0/0/0 +0 -0
  124. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/zarr.json +54 -0
  125. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/c/0/0/0 +0 -0
  126. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/zarr.json +54 -0
  127. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/c/0/0/0 +0 -0
  128. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/zarr.json +54 -0
  129. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/c/0/0/0 +0 -0
  130. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/zarr.json +54 -0
  131. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/c/0/0/0 +0 -0
  132. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/zarr.json +54 -0
  133. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/c/0/0/0 +0 -0
  134. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/zarr.json +54 -0
  135. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/c/0/0/0 +0 -0
  136. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/zarr.json +54 -0
  137. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/c/0/0/0 +0 -0
  138. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/zarr.json +54 -0
  139. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/c/0/0/0 +0 -0
  140. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/zarr.json +54 -0
  141. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/c/0/0/0 +0 -0
  142. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/zarr.json +54 -0
  143. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/c/0/0/0 +0 -0
  144. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/zarr.json +54 -0
  145. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/c/0/0/0 +0 -0
  146. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/zarr.json +54 -0
  147. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/c/0/0/0 +0 -0
  148. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/zarr.json +54 -0
  149. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/c/0/0/0 +0 -0
  150. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/zarr.json +54 -0
  151. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/c/0/0/0 +0 -0
  152. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/zarr.json +54 -0
  153. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/c/0/0/0 +0 -0
  154. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/zarr.json +54 -0
  155. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/c/0/0/0 +0 -0
  156. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/zarr.json +54 -0
  157. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/c/0/0/0 +0 -0
  158. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/zarr.json +54 -0
  159. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/c/0/0/0 +0 -0
  160. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/zarr.json +54 -0
  161. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/c/0/0/0 +0 -0
  162. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/zarr.json +54 -0
  163. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/c/0/0/0 +0 -0
  164. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/zarr.json +54 -0
  165. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/c/0 +0 -0
  166. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/zarr.json +47 -0
  167. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/c/0 +0 -0
  168. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/zarr.json +48 -0
  169. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/c/0/0/0 +0 -0
  170. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/zarr.json +54 -0
  171. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/c/0/0/0 +0 -0
  172. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/zarr.json +54 -0
  173. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/c/0/0/0 +0 -0
  174. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/zarr.json +54 -0
  175. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/c/0/0/0 +0 -0
  176. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/zarr.json +54 -0
  177. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/c/0/0/0 +0 -0
  178. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/zarr.json +54 -0
  179. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/c/0/0/0 +0 -0
  180. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/zarr.json +54 -0
  181. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/c/0/0/0 +0 -0
  182. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/zarr.json +54 -0
  183. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/c/0/0/0 +0 -0
  184. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/zarr.json +54 -0
  185. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/c/0/0/0 +0 -0
  186. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/zarr.json +54 -0
  187. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/c/0/0/0 +0 -0
  188. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/zarr.json +54 -0
  189. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/c/0/0/0 +0 -0
  190. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/zarr.json +54 -0
  191. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/c/0/0/0 +0 -0
  192. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/zarr.json +54 -0
  193. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/c/0/0/0 +0 -0
  194. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/zarr.json +54 -0
  195. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/c/0/0/0 +0 -0
  196. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/zarr.json +54 -0
  197. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/c/0/0/0 +0 -0
  198. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/zarr.json +54 -0
  199. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/c/0/0/0 +0 -0
  200. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/zarr.json +54 -0
  201. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/c/0/0/0 +0 -0
  202. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/zarr.json +54 -0
  203. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/c/0/0/0 +0 -0
  204. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/zarr.json +54 -0
  205. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/c/0/0/0 +0 -0
  206. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/zarr.json +54 -0
  207. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/c/0/0/0 +0 -0
  208. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/zarr.json +54 -0
  209. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/c/0/0/0 +0 -0
  210. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/zarr.json +54 -0
  211. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/c/0/0/0 +0 -0
  212. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/zarr.json +54 -0
  213. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/c/0/0/0 +0 -0
  214. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/zarr.json +54 -0
  215. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/c/0/0/0 +0 -0
  216. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/zarr.json +54 -0
  217. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/c/0/0/0 +0 -0
  218. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/zarr.json +54 -0
  219. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/c/0/0/0 +0 -0
  220. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/zarr.json +54 -0
  221. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/c/0/0/0 +0 -0
  222. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/zarr.json +54 -0
  223. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/c/0/0/0 +0 -0
  224. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/zarr.json +54 -0
  225. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/c/0/0/0 +0 -0
  226. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/zarr.json +54 -0
  227. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/c/0/0/0 +0 -0
  228. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/zarr.json +54 -0
  229. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/c/0/0/0 +0 -0
  230. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/zarr.json +54 -0
  231. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/c/0/0/0 +0 -0
  232. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/zarr.json +54 -0
  233. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/c/0/0/0 +0 -0
  234. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/zarr.json +54 -0
  235. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/c/0/0/0 +0 -0
  236. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/zarr.json +54 -0
  237. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/c/0/0/0 +0 -0
  238. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/zarr.json +54 -0
  239. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/c/0/0/0 +0 -0
  240. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/zarr.json +54 -0
  241. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/c/0 +0 -0
  242. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/zarr.json +45 -0
  243. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/c/0/0/0 +0 -0
  244. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/zarr.json +54 -0
  245. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/c/0/0/0 +0 -0
  246. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/zarr.json +54 -0
  247. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/c/0/0/0 +0 -0
  248. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/zarr.json +54 -0
  249. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/c/0/0/0 +0 -0
  250. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/zarr.json +54 -0
  251. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/c/0/0/0 +0 -0
  252. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/zarr.json +54 -0
  253. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/c/0/0/0 +0 -0
  254. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/zarr.json +54 -0
  255. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/c/0/0/0 +0 -0
  256. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/zarr.json +54 -0
  257. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/c/0/0/0 +0 -0
  258. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/zarr.json +54 -0
  259. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/c/0/0/0 +0 -0
  260. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/zarr.json +54 -0
  261. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/c/0/0/0 +0 -0
  262. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/zarr.json +54 -0
  263. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/c/0/0/0 +0 -0
  264. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/zarr.json +54 -0
  265. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/c/0/0/0 +0 -0
  266. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/zarr.json +54 -0
  267. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/c/0/0/0 +0 -0
  268. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/zarr.json +54 -0
  269. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/c/0/0/0 +0 -0
  270. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/zarr.json +54 -0
  271. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/c/0/0/0 +0 -0
  272. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/zarr.json +54 -0
  273. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/c/0/0/0 +0 -0
  274. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/zarr.json +54 -0
  275. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/c/0/0/0 +0 -0
  276. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/zarr.json +54 -0
  277. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/c/0/0/0 +0 -0
  278. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/zarr.json +54 -0
  279. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/c/0/0/0 +0 -0
  280. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/zarr.json +54 -0
  281. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/c/0/0/0 +0 -0
  282. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/zarr.json +54 -0
  283. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zarr.json +7076 -0
  284. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/c/0/0/0 +0 -0
  285. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/zarr.json +54 -0
  286. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/c/0/0/0 +0 -0
  287. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/zarr.json +54 -0
  288. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/c/0/0/0 +0 -0
  289. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/zarr.json +54 -0
  290. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/c/0/0/0 +0 -0
  291. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/zarr.json +54 -0
  292. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/c/0 +0 -0
  293. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/zarr.json +47 -0
  294. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/c/0/0/0 +0 -0
  295. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/zarr.json +56 -0
  296. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/c/0 +0 -0
  297. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/zarr.json +48 -0
  298. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/c/0/0/0 +0 -0
  299. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/zarr.json +56 -0
  300. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/c/0 +0 -0
  301. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/zarr.json +48 -0
  302. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/c/0 +0 -0
  303. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/zarr.json +45 -0
  304. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/c/0/0/0 +0 -0
  305. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/zarr.json +54 -0
  306. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/c/0 +0 -0
  307. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/zarr.json +48 -0
  308. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/c/0/0/0 +0 -0
  309. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/zarr.json +56 -0
  310. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/c/0 +0 -0
  311. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/zarr.json +48 -0
  312. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/c/0/0/0 +0 -0
  313. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/zarr.json +56 -0
  314. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/c/0/0/0 +0 -0
  315. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/zarr.json +54 -0
  316. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/c/0 +0 -0
  317. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/zarr.json +48 -0
  318. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/zarr.json +686 -0
  319. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/c/0/0/0/0 +0 -0
  320. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/zarr.json +57 -0
  321. 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
  322. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/zarr.json +57 -0
  323. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/c/0 +0 -0
  324. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/zarr.json +47 -0
  325. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/c/0 +0 -0
  326. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/zarr.json +47 -0
  327. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/c/0/0/0/0 +0 -0
  328. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/zarr.json +57 -0
  329. 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
  330. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/zarr.json +57 -0
  331. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/c/0/0/0/0 +0 -0
  332. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/zarr.json +57 -0
  333. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/c/0/0/0/0 +0 -0
  334. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/zarr.json +57 -0
  335. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/c/0/0/0/0 +0 -0
  336. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/zarr.json +57 -0
  337. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/c/0/0/0/0 +0 -0
  338. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/zarr.json +57 -0
  339. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/c/0/0/0/0 +0 -0
  340. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/zarr.json +57 -0
  341. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/c/0/0/0/0 +0 -0
  342. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/zarr.json +57 -0
  343. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/c/0/0/0/0 +0 -0
  344. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/zarr.json +57 -0
  345. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/c/0/0/0/0 +0 -0
  346. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/zarr.json +57 -0
  347. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/c/0/0/0/0 +0 -0
  348. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/zarr.json +57 -0
  349. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/c/0/0/0/0 +0 -0
  350. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/zarr.json +57 -0
  351. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/c/0/0/0/0 +0 -0
  352. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/zarr.json +57 -0
  353. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/c/0/0/0/0 +0 -0
  354. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/zarr.json +57 -0
  355. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/c/0/0/0/0 +0 -0
  356. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/zarr.json +57 -0
  357. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/zarr.json +47 -0
  358. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/c/0/0/0/0 +0 -0
  359. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/zarr.json +57 -0
  360. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/c/0/0/0/0 +0 -0
  361. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/zarr.json +57 -0
  362. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/c/0/0/0/0 +0 -0
  363. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/zarr.json +57 -0
  364. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/c/0/0/0/0 +0 -0
  365. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/zarr.json +57 -0
  366. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/c/0/0/0/0 +0 -0
  367. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/zarr.json +57 -0
  368. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/c/0/0/0/0 +0 -0
  369. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/zarr.json +57 -0
  370. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/c/0/0/0/0 +0 -0
  371. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/zarr.json +57 -0
  372. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/c/0/0/0/0 +0 -0
  373. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/zarr.json +57 -0
  374. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/c/0/0/0/0 +0 -0
  375. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/zarr.json +57 -0
  376. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/c/0 +0 -0
  377. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/zarr.json +47 -0
  378. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/c/0/0/0/0 +0 -0
  379. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/zarr.json +57 -0
  380. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/c/0/0/0/0 +0 -0
  381. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/zarr.json +57 -0
  382. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/c/0/0/0/0 +0 -0
  383. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/zarr.json +57 -0
  384. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/c/0/0/0/0 +0 -0
  385. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/zarr.json +57 -0
  386. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/c/0/0/0/0 +0 -0
  387. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/zarr.json +57 -0
  388. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/c/0/0/0/0 +0 -0
  389. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/zarr.json +57 -0
  390. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/c/0/0/0/0 +0 -0
  391. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/zarr.json +57 -0
  392. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/c/0/0/0/0 +0 -0
  393. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/zarr.json +57 -0
  394. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/c/0/0/0 +0 -0
  395. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/zarr.json +54 -0
  396. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/c/0/0/0/0 +0 -0
  397. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/zarr.json +57 -0
  398. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/c/0/0/0 +0 -0
  399. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/zarr.json +54 -0
  400. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/zarr.json +57 -0
  401. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zarr.json +2481 -0
  402. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/c/0/0/0 +0 -0
  403. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/zarr.json +54 -0
  404. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/c/0/0/0/0 +0 -0
  405. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/zarr.json +57 -0
  406. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/.zmetadata +53 -1
  407. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/river_tracer/.zattrs +1 -1
  408. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zarray +20 -0
  409. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/.zattrs +6 -0
  410. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_long_name/0 +0 -0
  411. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zarray +20 -0
  412. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/.zattrs +6 -0
  413. roms_tools/tests/test_setup/test_data/river_forcing_no_climatology.zarr/tracer_unit/0 +0 -0
  414. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/c/0 +0 -0
  415. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/zarr.json +47 -0
  416. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/c/0 +0 -0
  417. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/zarr.json +45 -0
  418. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/c/0 +0 -0
  419. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/zarr.json +45 -0
  420. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/c/0/0 +0 -0
  421. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/zarr.json +50 -0
  422. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/c/0/0 +0 -0
  423. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/zarr.json +50 -0
  424. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/c/0 +0 -0
  425. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/zarr.json +43 -0
  426. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/c/0 +0 -0
  427. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/zarr.json +48 -0
  428. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/c/0/0/0 +0 -0
  429. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/zarr.json +53 -0
  430. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/c/0/0 +0 -0
  431. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/zarr.json +51 -0
  432. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/c/0 +0 -0
  433. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_long_name/zarr.json +43 -0
  434. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/c/0 +0 -0
  435. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/zarr.json +43 -0
  436. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/c/0 +0 -0
  437. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_unit/zarr.json +43 -0
  438. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/zarr.json +574 -0
  439. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zattrs +1 -2
  440. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/.zmetadata +27 -5
  441. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zarray +20 -0
  442. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/.zattrs +5 -0
  443. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ntides/0 +0 -0
  444. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/omega/.zattrs +1 -3
  445. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Im/0.0.0 +0 -0
  446. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/pot_Re/0.0.0 +0 -0
  447. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Im/0.0.0 +0 -0
  448. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/ssh_Re/0.0.0 +0 -0
  449. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Im/0.0.0 +0 -0
  450. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/u_Re/0.0.0 +0 -0
  451. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Im/0.0.0 +0 -0
  452. roms_tools/tests/test_setup/test_data/tidal_forcing.zarr/v_Re/0.0.0 +0 -0
  453. roms_tools/tests/test_setup/test_datasets.py +110 -6
  454. roms_tools/tests/test_setup/test_fill.py +3 -2
  455. roms_tools/tests/test_setup/test_grid.py +419 -101
  456. roms_tools/tests/test_setup/test_initial_conditions.py +69 -7
  457. roms_tools/tests/test_setup/test_nesting.py +8 -6
  458. roms_tools/tests/test_setup/test_river_forcing.py +15 -15
  459. roms_tools/tests/test_setup/test_surface_forcing.py +210 -116
  460. roms_tools/tests/test_setup/test_tides.py +118 -51
  461. roms_tools/tests/test_setup/test_utils.py +10 -6
  462. roms_tools/tests/test_setup/test_validation.py +6 -2
  463. roms_tools/tests/test_tiling/test_partition.py +18 -4
  464. roms_tools/tests/test_utils.py +21 -0
  465. roms_tools/tests/test_vertical_coordinate.py +11 -6
  466. roms_tools/tiling/partition.py +30 -11
  467. roms_tools/utils.py +315 -17
  468. roms_tools/vertical_coordinate.py +7 -5
  469. roms_tools-3.0.0.dist-info/METADATA +143 -0
  470. roms_tools-3.0.0.dist-info/RECORD +1462 -0
  471. roms_tools-3.0.0.dist-info/WHEEL +5 -0
  472. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/.zattrs +0 -14
  473. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/.zgroup +0 -3
  474. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/.zmetadata +0 -4456
  475. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/.zarray +0 -24
  476. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/.zattrs +0 -10
  477. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_east/0.0.0 +0 -0
  478. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/.zarray +0 -24
  479. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/.zattrs +0 -10
  480. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_north/0.0.0 +0 -0
  481. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/.zarray +0 -24
  482. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/.zattrs +0 -10
  483. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_south/0.0.0 +0 -0
  484. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/.zarray +0 -24
  485. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/.zattrs +0 -10
  486. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_ALT_CO2_west/0.0.0 +0 -0
  487. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/.zarray +0 -24
  488. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/.zattrs +0 -10
  489. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_east/0.0.0 +0 -0
  490. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/.zarray +0 -24
  491. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/.zattrs +0 -10
  492. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_north/0.0.0 +0 -0
  493. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/.zarray +0 -24
  494. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/.zattrs +0 -10
  495. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_south/0.0.0 +0 -0
  496. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/.zarray +0 -24
  497. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/.zattrs +0 -10
  498. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/ALK_west/0.0.0 +0 -0
  499. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/.zarray +0 -24
  500. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/.zattrs +0 -10
  501. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_east/0.0.0 +0 -0
  502. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/.zarray +0 -24
  503. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/.zattrs +0 -10
  504. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_north/0.0.0 +0 -0
  505. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/.zarray +0 -24
  506. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/.zattrs +0 -10
  507. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_south/0.0.0 +0 -0
  508. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/.zarray +0 -24
  509. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/.zattrs +0 -10
  510. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_ALT_CO2_west/0.0.0 +0 -0
  511. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/.zarray +0 -24
  512. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/.zattrs +0 -10
  513. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_east/0.0.0 +0 -0
  514. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/.zarray +0 -24
  515. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/.zattrs +0 -10
  516. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_north/0.0.0 +0 -0
  517. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/.zarray +0 -24
  518. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/.zattrs +0 -10
  519. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_south/0.0.0 +0 -0
  520. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/.zarray +0 -24
  521. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/.zattrs +0 -10
  522. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DIC_west/0.0.0 +0 -0
  523. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/.zarray +0 -24
  524. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/.zattrs +0 -10
  525. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_east/0.0.0 +0 -0
  526. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/.zarray +0 -24
  527. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/.zattrs +0 -10
  528. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_north/0.0.0 +0 -0
  529. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/.zarray +0 -24
  530. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/.zattrs +0 -10
  531. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_south/0.0.0 +0 -0
  532. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/.zarray +0 -24
  533. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/.zattrs +0 -10
  534. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOC_west/0.0.0 +0 -0
  535. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/.zarray +0 -24
  536. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/.zattrs +0 -10
  537. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_east/0.0.0 +0 -0
  538. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/.zarray +0 -24
  539. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/.zattrs +0 -10
  540. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_north/0.0.0 +0 -0
  541. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/.zarray +0 -24
  542. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/.zattrs +0 -10
  543. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_south/0.0.0 +0 -0
  544. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/.zarray +0 -24
  545. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/.zattrs +0 -10
  546. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOCr_west/0.0.0 +0 -0
  547. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/.zarray +0 -24
  548. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/.zattrs +0 -10
  549. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_east/0.0.0 +0 -0
  550. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/.zarray +0 -24
  551. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/.zattrs +0 -10
  552. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_north/0.0.0 +0 -0
  553. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/.zarray +0 -24
  554. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/.zattrs +0 -10
  555. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_south/0.0.0 +0 -0
  556. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/.zarray +0 -24
  557. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/.zattrs +0 -10
  558. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DON_west/0.0.0 +0 -0
  559. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/.zarray +0 -24
  560. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/.zattrs +0 -10
  561. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_east/0.0.0 +0 -0
  562. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/.zarray +0 -24
  563. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/.zattrs +0 -10
  564. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_north/0.0.0 +0 -0
  565. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/.zarray +0 -24
  566. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/.zattrs +0 -10
  567. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_south/0.0.0 +0 -0
  568. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/.zarray +0 -24
  569. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/.zattrs +0 -10
  570. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DONr_west/0.0.0 +0 -0
  571. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/.zarray +0 -24
  572. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/.zattrs +0 -10
  573. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_east/0.0.0 +0 -0
  574. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/.zarray +0 -24
  575. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/.zattrs +0 -10
  576. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_north/0.0.0 +0 -0
  577. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/.zarray +0 -24
  578. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/.zattrs +0 -10
  579. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_south/0.0.0 +0 -0
  580. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/.zarray +0 -24
  581. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/.zattrs +0 -10
  582. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOP_west/0.0.0 +0 -0
  583. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/.zarray +0 -24
  584. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/.zattrs +0 -10
  585. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_east/0.0.0 +0 -0
  586. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/.zarray +0 -24
  587. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/.zattrs +0 -10
  588. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_north/0.0.0 +0 -0
  589. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/.zarray +0 -24
  590. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/.zattrs +0 -10
  591. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_south/0.0.0 +0 -0
  592. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/.zarray +0 -24
  593. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/.zattrs +0 -10
  594. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/DOPr_west/0.0.0 +0 -0
  595. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/.zarray +0 -24
  596. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/.zattrs +0 -10
  597. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_east/0.0.0 +0 -0
  598. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/.zarray +0 -24
  599. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/.zattrs +0 -10
  600. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_north/0.0.0 +0 -0
  601. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/.zarray +0 -24
  602. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/.zattrs +0 -10
  603. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_south/0.0.0 +0 -0
  604. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/.zarray +0 -24
  605. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/.zattrs +0 -10
  606. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Fe_west/0.0.0 +0 -0
  607. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/.zarray +0 -24
  608. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/.zattrs +0 -10
  609. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_east/0.0.0 +0 -0
  610. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/.zarray +0 -24
  611. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/.zattrs +0 -10
  612. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_north/0.0.0 +0 -0
  613. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/.zarray +0 -24
  614. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/.zattrs +0 -10
  615. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_south/0.0.0 +0 -0
  616. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/.zarray +0 -24
  617. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/.zattrs +0 -10
  618. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/Lig_west/0.0.0 +0 -0
  619. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/.zarray +0 -24
  620. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/.zattrs +0 -10
  621. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_east/0.0.0 +0 -0
  622. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/.zarray +0 -24
  623. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/.zattrs +0 -10
  624. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_north/0.0.0 +0 -0
  625. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/.zarray +0 -24
  626. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/.zattrs +0 -10
  627. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_south/0.0.0 +0 -0
  628. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/.zarray +0 -24
  629. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/.zattrs +0 -10
  630. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NH4_west/0.0.0 +0 -0
  631. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/.zarray +0 -24
  632. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/.zattrs +0 -10
  633. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_east/0.0.0 +0 -0
  634. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/.zarray +0 -24
  635. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/.zattrs +0 -10
  636. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_north/0.0.0 +0 -0
  637. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/.zarray +0 -24
  638. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/.zattrs +0 -10
  639. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_south/0.0.0 +0 -0
  640. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/.zarray +0 -24
  641. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/.zattrs +0 -10
  642. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/NO3_west/0.0.0 +0 -0
  643. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/.zarray +0 -24
  644. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/.zattrs +0 -10
  645. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_east/0.0.0 +0 -0
  646. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/.zarray +0 -24
  647. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/.zattrs +0 -10
  648. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_north/0.0.0 +0 -0
  649. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/.zarray +0 -24
  650. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/.zattrs +0 -10
  651. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_south/0.0.0 +0 -0
  652. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/.zarray +0 -24
  653. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/.zattrs +0 -10
  654. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/O2_west/0.0.0 +0 -0
  655. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/.zarray +0 -24
  656. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/.zattrs +0 -10
  657. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_east/0.0.0 +0 -0
  658. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/.zarray +0 -24
  659. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/.zattrs +0 -10
  660. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_north/0.0.0 +0 -0
  661. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/.zarray +0 -24
  662. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/.zattrs +0 -10
  663. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_south/0.0.0 +0 -0
  664. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/.zarray +0 -24
  665. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/.zattrs +0 -10
  666. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/PO4_west/0.0.0 +0 -0
  667. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/.zarray +0 -24
  668. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/.zattrs +0 -10
  669. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_east/0.0.0 +0 -0
  670. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/.zarray +0 -24
  671. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/.zattrs +0 -10
  672. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_north/0.0.0 +0 -0
  673. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/.zarray +0 -24
  674. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/.zattrs +0 -10
  675. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_south/0.0.0 +0 -0
  676. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/.zarray +0 -24
  677. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/.zattrs +0 -10
  678. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/SiO3_west/0.0.0 +0 -0
  679. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/.zarray +0 -20
  680. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/.zattrs +0 -8
  681. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/abs_time/0 +0 -0
  682. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/.zarray +0 -20
  683. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/.zattrs +0 -8
  684. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/bry_time/0 +0 -0
  685. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/.zarray +0 -24
  686. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/.zattrs +0 -10
  687. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_east/0.0.0 +0 -0
  688. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/.zarray +0 -24
  689. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/.zattrs +0 -10
  690. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_north/0.0.0 +0 -0
  691. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/.zarray +0 -24
  692. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/.zattrs +0 -10
  693. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_south/0.0.0 +0 -0
  694. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/.zarray +0 -24
  695. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/.zattrs +0 -10
  696. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatC_west/0.0.0 +0 -0
  697. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/.zarray +0 -24
  698. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/.zattrs +0 -10
  699. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_east/0.0.0 +0 -0
  700. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/.zarray +0 -24
  701. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/.zattrs +0 -10
  702. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_north/0.0.0 +0 -0
  703. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/.zarray +0 -24
  704. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/.zattrs +0 -10
  705. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_south/0.0.0 +0 -0
  706. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/.zarray +0 -24
  707. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/.zattrs +0 -10
  708. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatChl_west/0.0.0 +0 -0
  709. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/.zarray +0 -24
  710. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/.zattrs +0 -10
  711. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_east/0.0.0 +0 -0
  712. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/.zarray +0 -24
  713. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/.zattrs +0 -10
  714. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_north/0.0.0 +0 -0
  715. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/.zarray +0 -24
  716. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/.zattrs +0 -10
  717. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_south/0.0.0 +0 -0
  718. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/.zarray +0 -24
  719. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/.zattrs +0 -10
  720. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatFe_west/0.0.0 +0 -0
  721. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/.zarray +0 -24
  722. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/.zattrs +0 -10
  723. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_east/0.0.0 +0 -0
  724. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/.zarray +0 -24
  725. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/.zattrs +0 -10
  726. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_north/0.0.0 +0 -0
  727. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/.zarray +0 -24
  728. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/.zattrs +0 -10
  729. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_south/0.0.0 +0 -0
  730. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/.zarray +0 -24
  731. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/.zattrs +0 -10
  732. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatP_west/0.0.0 +0 -0
  733. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/.zarray +0 -24
  734. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/.zattrs +0 -10
  735. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_east/0.0.0 +0 -0
  736. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/.zarray +0 -24
  737. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/.zattrs +0 -10
  738. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_north/0.0.0 +0 -0
  739. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/.zarray +0 -24
  740. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/.zattrs +0 -10
  741. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_south/0.0.0 +0 -0
  742. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/.zarray +0 -24
  743. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/.zattrs +0 -10
  744. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diatSi_west/0.0.0 +0 -0
  745. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/.zarray +0 -24
  746. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/.zattrs +0 -10
  747. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_east/0.0.0 +0 -0
  748. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/.zarray +0 -24
  749. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/.zattrs +0 -10
  750. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_north/0.0.0 +0 -0
  751. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/.zarray +0 -24
  752. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/.zattrs +0 -10
  753. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_south/0.0.0 +0 -0
  754. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/.zarray +0 -24
  755. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/.zattrs +0 -10
  756. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazC_west/0.0.0 +0 -0
  757. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/.zarray +0 -24
  758. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/.zattrs +0 -10
  759. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_east/0.0.0 +0 -0
  760. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/.zarray +0 -24
  761. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/.zattrs +0 -10
  762. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_north/0.0.0 +0 -0
  763. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/.zarray +0 -24
  764. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/.zattrs +0 -10
  765. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_south/0.0.0 +0 -0
  766. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/.zarray +0 -24
  767. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/.zattrs +0 -10
  768. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazChl_west/0.0.0 +0 -0
  769. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/.zarray +0 -24
  770. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/.zattrs +0 -10
  771. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_east/0.0.0 +0 -0
  772. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/.zarray +0 -24
  773. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/.zattrs +0 -10
  774. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_north/0.0.0 +0 -0
  775. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/.zarray +0 -24
  776. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/.zattrs +0 -10
  777. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_south/0.0.0 +0 -0
  778. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/.zarray +0 -24
  779. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/.zattrs +0 -10
  780. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazFe_west/0.0.0 +0 -0
  781. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/.zarray +0 -24
  782. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/.zattrs +0 -10
  783. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_east/0.0.0 +0 -0
  784. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/.zarray +0 -24
  785. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/.zattrs +0 -10
  786. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_north/0.0.0 +0 -0
  787. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/.zarray +0 -24
  788. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/.zattrs +0 -10
  789. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_south/0.0.0 +0 -0
  790. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/.zarray +0 -24
  791. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/.zattrs +0 -10
  792. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/diazP_west/0.0.0 +0 -0
  793. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/.zarray +0 -20
  794. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/.zattrs +0 -6
  795. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/month/0 +0 -0
  796. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/.zarray +0 -24
  797. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/.zattrs +0 -10
  798. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_east/0.0.0 +0 -0
  799. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/.zarray +0 -24
  800. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/.zattrs +0 -10
  801. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_north/0.0.0 +0 -0
  802. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/.zarray +0 -24
  803. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/.zattrs +0 -10
  804. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_south/0.0.0 +0 -0
  805. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/.zarray +0 -24
  806. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/.zattrs +0 -10
  807. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spC_west/0.0.0 +0 -0
  808. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/.zarray +0 -24
  809. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/.zattrs +0 -10
  810. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_east/0.0.0 +0 -0
  811. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/.zarray +0 -24
  812. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/.zattrs +0 -10
  813. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_north/0.0.0 +0 -0
  814. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/.zarray +0 -24
  815. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/.zattrs +0 -10
  816. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_south/0.0.0 +0 -0
  817. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/.zarray +0 -24
  818. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/.zattrs +0 -10
  819. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spCaCO3_west/0.0.0 +0 -0
  820. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/.zarray +0 -24
  821. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/.zattrs +0 -10
  822. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_east/0.0.0 +0 -0
  823. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/.zarray +0 -24
  824. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/.zattrs +0 -10
  825. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_north/0.0.0 +0 -0
  826. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/.zarray +0 -24
  827. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/.zattrs +0 -10
  828. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_south/0.0.0 +0 -0
  829. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/.zarray +0 -24
  830. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/.zattrs +0 -10
  831. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spChl_west/0.0.0 +0 -0
  832. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/.zarray +0 -24
  833. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/.zattrs +0 -10
  834. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_east/0.0.0 +0 -0
  835. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/.zarray +0 -24
  836. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/.zattrs +0 -10
  837. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_north/0.0.0 +0 -0
  838. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/.zarray +0 -24
  839. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/.zattrs +0 -10
  840. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_south/0.0.0 +0 -0
  841. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/.zarray +0 -24
  842. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/.zattrs +0 -10
  843. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spFe_west/0.0.0 +0 -0
  844. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/.zarray +0 -24
  845. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/.zattrs +0 -10
  846. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_east/0.0.0 +0 -0
  847. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/.zarray +0 -24
  848. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/.zattrs +0 -10
  849. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_north/0.0.0 +0 -0
  850. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/.zarray +0 -24
  851. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/.zattrs +0 -10
  852. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_south/0.0.0 +0 -0
  853. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/.zarray +0 -24
  854. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/.zattrs +0 -10
  855. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/spP_west/0.0.0 +0 -0
  856. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/.zarray +0 -24
  857. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/.zattrs +0 -10
  858. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_east/0.0.0 +0 -0
  859. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/.zarray +0 -24
  860. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/.zattrs +0 -10
  861. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_north/0.0.0 +0 -0
  862. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/.zarray +0 -24
  863. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/.zattrs +0 -10
  864. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_south/0.0.0 +0 -0
  865. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/.zarray +0 -24
  866. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/.zattrs +0 -10
  867. roms_tools/tests/test_setup/test_data/bgc_boundary_forcing_from_unified_climatology.zarr/zooC_west/0.0.0 +0 -0
  868. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/.zattrs +0 -12
  869. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/.zgroup +0 -3
  870. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/.zmetadata +0 -424
  871. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/.zarray +0 -20
  872. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/.zattrs +0 -8
  873. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/abs_time/0 +0 -0
  874. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/.zarray +0 -24
  875. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/.zattrs +0 -12
  876. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust/0.0.0 +0 -0
  877. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/.zarray +0 -20
  878. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/.zattrs +0 -8
  879. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/dust_time/0 +0 -0
  880. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/.zarray +0 -24
  881. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/.zattrs +0 -12
  882. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron/0.0.0 +0 -0
  883. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/.zarray +0 -20
  884. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/.zattrs +0 -8
  885. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/iron_time/0 +0 -0
  886. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/.zarray +0 -20
  887. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/.zattrs +0 -6
  888. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/month/0 +0 -0
  889. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/.zarray +0 -24
  890. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/.zattrs +0 -10
  891. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy/0.0.0 +0 -0
  892. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/.zarray +0 -20
  893. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/.zattrs +0 -8
  894. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nhy_time/0 +0 -0
  895. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/.zarray +0 -24
  896. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/.zattrs +0 -10
  897. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox/0.0.0 +0 -0
  898. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/.zarray +0 -20
  899. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/.zattrs +0 -8
  900. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/nox_time/0 +0 -0
  901. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/.zarray +0 -24
  902. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/.zattrs +0 -12
  903. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air/0.0.0 +0 -0
  904. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/.zarray +0 -24
  905. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/.zattrs +0 -10
  906. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_air_alt/0.0.0 +0 -0
  907. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/.zarray +0 -20
  908. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/.zattrs +0 -8
  909. roms_tools/tests/test_setup/test_data/bgc_surface_forcing_from_unified_climatology.zarr/pco2_time/0 +0 -0
  910. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/.zattrs +0 -12
  911. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/.zgroup +0 -3
  912. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/.zmetadata +0 -1600
  913. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/.zarray +0 -26
  914. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/.zattrs +0 -11
  915. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK/0.0.0.0 +0 -0
  916. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/.zarray +0 -26
  917. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/.zattrs +0 -11
  918. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ALK_ALT_CO2/0.0.0.0 +0 -0
  919. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/.zarray +0 -20
  920. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/.zattrs +0 -7
  921. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_r/0 +0 -0
  922. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/.zarray +0 -20
  923. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/.zattrs +0 -7
  924. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Cs_w/0 +0 -0
  925. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/.zarray +0 -26
  926. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/.zattrs +0 -11
  927. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC/0.0.0.0 +0 -0
  928. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/.zarray +0 -26
  929. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/.zattrs +0 -11
  930. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DIC_ALT_CO2/0.0.0.0 +0 -0
  931. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/.zarray +0 -26
  932. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/.zattrs +0 -11
  933. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOC/0.0.0.0 +0 -0
  934. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/.zarray +0 -26
  935. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/.zattrs +0 -11
  936. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOCr/0.0.0.0 +0 -0
  937. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/.zarray +0 -26
  938. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/.zattrs +0 -11
  939. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DON/0.0.0.0 +0 -0
  940. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/.zarray +0 -26
  941. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/.zattrs +0 -11
  942. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DONr/0.0.0.0 +0 -0
  943. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/.zarray +0 -26
  944. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/.zattrs +0 -11
  945. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOP/0.0.0.0 +0 -0
  946. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/.zarray +0 -26
  947. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/.zattrs +0 -11
  948. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/DOPr/0.0.0.0 +0 -0
  949. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/.zarray +0 -26
  950. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/.zattrs +0 -11
  951. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Fe/0.0.0.0 +0 -0
  952. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/.zarray +0 -26
  953. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/.zattrs +0 -11
  954. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/Lig/0.0.0.0 +0 -0
  955. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/.zarray +0 -26
  956. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/.zattrs +0 -11
  957. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NH4/0.0.0.0 +0 -0
  958. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/.zarray +0 -26
  959. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/.zattrs +0 -11
  960. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/NO3/0.0.0.0 +0 -0
  961. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/.zarray +0 -26
  962. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/.zattrs +0 -11
  963. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/O2/0.0.0.0 +0 -0
  964. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/.zarray +0 -26
  965. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/.zattrs +0 -11
  966. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/PO4/0.0.0.0 +0 -0
  967. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/.zarray +0 -26
  968. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/.zattrs +0 -11
  969. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/SiO3/0.0.0.0 +0 -0
  970. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/.zarray +0 -20
  971. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/.zattrs +0 -8
  972. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/abs_time/0 +0 -0
  973. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/.zarray +0 -26
  974. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/.zattrs +0 -11
  975. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatC/0.0.0.0 +0 -0
  976. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/.zarray +0 -26
  977. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/.zattrs +0 -11
  978. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatChl/0.0.0.0 +0 -0
  979. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/.zarray +0 -26
  980. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/.zattrs +0 -11
  981. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatFe/0.0.0.0 +0 -0
  982. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/.zarray +0 -26
  983. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/.zattrs +0 -11
  984. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatP/0.0.0.0 +0 -0
  985. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/.zarray +0 -26
  986. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/.zattrs +0 -11
  987. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diatSi/0.0.0.0 +0 -0
  988. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/.zarray +0 -26
  989. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/.zattrs +0 -11
  990. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazC/0.0.0.0 +0 -0
  991. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/.zarray +0 -26
  992. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/.zattrs +0 -11
  993. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazChl/0.0.0.0 +0 -0
  994. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/.zarray +0 -26
  995. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/.zattrs +0 -11
  996. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazFe/0.0.0.0 +0 -0
  997. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/.zarray +0 -26
  998. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/.zattrs +0 -11
  999. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/diazP/0.0.0.0 +0 -0
  1000. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/.zarray +0 -20
  1001. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/.zattrs +0 -7
  1002. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ocean_time/0 +0 -0
  1003. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/.zarray +0 -26
  1004. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/.zattrs +0 -11
  1005. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/salt/0.0.0.0 +0 -0
  1006. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/.zarray +0 -26
  1007. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/.zattrs +0 -11
  1008. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spC/0.0.0.0 +0 -0
  1009. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/.zarray +0 -26
  1010. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/.zattrs +0 -11
  1011. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spCaCO3/0.0.0.0 +0 -0
  1012. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/.zarray +0 -26
  1013. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/.zattrs +0 -11
  1014. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spChl/0.0.0.0 +0 -0
  1015. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/.zarray +0 -26
  1016. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/.zattrs +0 -11
  1017. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spFe/0.0.0.0 +0 -0
  1018. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/.zarray +0 -26
  1019. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/.zattrs +0 -11
  1020. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/spP/0.0.0.0 +0 -0
  1021. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/.zarray +0 -26
  1022. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/.zattrs +0 -11
  1023. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/temp/0.0.0.0 +0 -0
  1024. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/.zarray +0 -26
  1025. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/.zattrs +0 -11
  1026. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/u/0.0.0.0 +0 -0
  1027. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/.zarray +0 -24
  1028. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/.zattrs +0 -10
  1029. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/ubar/0.0.0 +0 -0
  1030. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/.zarray +0 -26
  1031. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/.zattrs +0 -11
  1032. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/v/0.0.0.0 +0 -0
  1033. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/.zarray +0 -24
  1034. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/.zattrs +0 -10
  1035. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/vbar/0.0.0 +0 -0
  1036. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/.zarray +0 -26
  1037. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/.zattrs +0 -11
  1038. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/w/0.0.0.0 +0 -0
  1039. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/.zarray +0 -24
  1040. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/.zattrs +0 -10
  1041. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zeta/0.0.0 +0 -0
  1042. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/.zarray +0 -26
  1043. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/.zattrs +0 -11
  1044. roms_tools/tests/test_setup/test_data/initial_conditions_with_unified_bgc_from_climatology.zarr/zooC/0.0.0.0 +0 -0
  1045. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zattrs +0 -3
  1046. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zgroup +0 -3
  1047. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/.zmetadata +0 -299
  1048. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/.zarray +0 -20
  1049. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/.zattrs +0 -8
  1050. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/abs_time/0 +0 -0
  1051. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/.zarray +0 -20
  1052. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/.zattrs +0 -6
  1053. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/month/0 +0 -0
  1054. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/.zarray +0 -20
  1055. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/.zattrs +0 -6
  1056. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/nriver/0 +0 -0
  1057. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/.zarray +0 -22
  1058. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/.zattrs +0 -8
  1059. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_fraction/0.0 +0 -0
  1060. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/.zarray +0 -22
  1061. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/.zattrs +0 -8
  1062. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_index/0.0 +0 -0
  1063. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/.zarray +0 -24
  1064. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/.zattrs +0 -6
  1065. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_name/0 +0 -0
  1066. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/.zarray +0 -20
  1067. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/.zattrs +0 -8
  1068. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_time/0 +0 -0
  1069. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zarray +0 -24
  1070. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/.zattrs +0 -9
  1071. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_tracer/0.0.0 +0 -0
  1072. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/.zarray +0 -22
  1073. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/.zattrs +0 -9
  1074. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/river_volume/0.0 +0 -0
  1075. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/.zarray +0 -20
  1076. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/.zattrs +0 -6
  1077. roms_tools/tests/test_setup/test_data/river_forcing_with_bgc.zarr/tracer_name/0 +0 -0
  1078. roms_tools/tests/test_setup/test_topography.py +0 -201
  1079. roms_tools-2.6.2.dist-info/METADATA +0 -147
  1080. roms_tools-2.6.2.dist-info/RECORD +0 -1652
  1081. roms_tools-2.6.2.dist-info/WHEEL +0 -5
  1082. {roms_tools-2.6.2.dist-info → roms_tools-3.0.0.dist-info}/licenses/LICENSE +0 -0
  1083. {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))