Skip to content
Draft
Show file tree
Hide file tree
Changes from 246 commits
Commits
Show all changes
341 commits
Select commit Hold shift + click to select a range
4a49b40
start with this
simone-silvestri Apr 3, 2025
fea1854
default to inmemory
simone-silvestri Apr 3, 2025
4441567
Merge remote-tracking branch 'origin/ss/multi-year-JRA55' into ss/omi…
simone-silvestri Apr 3, 2025
7c4aa61
go!
simone-silvestri Apr 3, 2025
24f7d93
add a failsafe + a test
simone-silvestri Apr 3, 2025
d231995
some cleanup
simone-silvestri Apr 3, 2025
ca1980c
better to write last
simone-silvestri Apr 3, 2025
f448eeb
Merge remote-tracking branch 'origin/ss/multi-year-JRA55' into ss/omi…
simone-silvestri Apr 3, 2025
fed209b
Merge branch 'main' into ss/sea-ice-momentum-stress
simone-silvestri Apr 3, 2025
aeedd2f
last index
simone-silvestri Apr 3, 2025
f954c69
Merge branch 'ss/sea-ice-momentum-stress' of github.com:CliMA/ClimaOc…
simone-silvestri Apr 3, 2025
ddee7f0
add this
simone-silvestri Apr 3, 2025
daeb12f
add a clock
simone-silvestri Apr 3, 2025
629d582
add the arctic
simone-silvestri Apr 3, 2025
54165a0
Merge branch 'ss/sea-ice-momentum-stress' into ss/omip-prototype
simone-silvestri Apr 3, 2025
35fe01d
try it out
simone-silvestri Apr 3, 2025
5548a99
correct dates
simone-silvestri Apr 3, 2025
dfb8590
Update experiments/omip_prototype/quarter_degree_omip.jl
simone-silvestri Apr 4, 2025
a049dc1
Update experiments/omip_prototype/quarter_degree_omip.jl
simone-silvestri Apr 4, 2025
d1e6faf
add stuff
simone-silvestri Apr 4, 2025
7186256
Merge branch 'main' into ss/omip-prototype
simone-silvestri Apr 7, 2025
a6d758d
going sixth degree
simone-silvestri Apr 10, 2025
0b8624e
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Apr 10, 2025
f18a772
some changes
simone-silvestri Apr 10, 2025
6679bbd
synchronize the clocks for the moment
simone-silvestri Apr 10, 2025
50a7226
Merge branch 'main' into ss/omip-prototype
simone-silvestri Apr 10, 2025
7975dd4
Update test_jra55.jl
simone-silvestri Apr 10, 2025
77e440b
bugfix
simone-silvestri Apr 10, 2025
5e3c729
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Apr 10, 2025
b05fb83
improve it quickly for now
simone-silvestri Apr 10, 2025
501b3fa
continue
simone-silvestri Apr 10, 2025
f258e29
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Apr 10, 2025
5751899
another try...
simone-silvestri Apr 14, 2025
af67adc
bugfix for the salt flux
simone-silvestri Apr 24, 2025
d008026
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Apr 30, 2025
83f97e9
try it out
simone-silvestri Apr 30, 2025
03e7f19
correction
simone-silvestri Apr 30, 2025
1e02dd9
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri May 14, 2025
1eedc44
correct
simone-silvestri May 14, 2025
202212c
update
simone-silvestri May 22, 2025
efa566c
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri May 22, 2025
0c8d8b1
go for it
simone-silvestri May 22, 2025
0f04d0f
Update src/SeaIceSimulations.jl
simone-silvestri May 22, 2025
e28b9a4
Update SeaIceSimulations.jl
simone-silvestri May 22, 2025
0e1d4ca
Merge branch 'ss/default-sea-ice' into ss/omip-prototype
simone-silvestri May 22, 2025
2eeed4c
some.. salinity
simone-silvestri May 22, 2025
b27ac12
Merge branch 'main' into ss/omip-prototype
simone-silvestri May 29, 2025
4d09283
Merge branch 'main' into ss/omip-prototype
simone-silvestri Jun 5, 2025
1507936
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Jun 18, 2025
702fe64
update sea ice simulation
simone-silvestri Jun 18, 2025
9664584
try like this for the moment and let it go
simone-silvestri Jun 18, 2025
8392922
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Jul 14, 2025
d28b611
added project
simone-silvestri Jul 14, 2025
4b763ee
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Jul 14, 2025
c306b0f
retry like this
simone-silvestri Jul 14, 2025
83331f8
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Jul 14, 2025
4857647
hmmm this was explicit
simone-silvestri Jul 14, 2025
668bc53
use a fixed dt
simone-silvestri Jul 14, 2025
dcce9e2
update to new syntax
simone-silvestri Jul 14, 2025
d5288c1
go like this
simone-silvestri Jul 14, 2025
1322148
add a one-degree to test it out
simone-silvestri Jul 14, 2025
2490da2
Update one_degree_simulation.jl
simone-silvestri Jul 15, 2025
c411c71
Update one_degree_simulation.jl
simone-silvestri Jul 15, 2025
f762205
try without implicit solver
simone-silvestri Jul 17, 2025
759c1ac
Update Project.toml
simone-silvestri Jul 17, 2025
01e9f05
Update near_global_ocean_simulation.jl
simone-silvestri Jul 17, 2025
e48a2b5
Update one_degree_simulation.jl
simone-silvestri Jul 17, 2025
0765874
changes
simone-silvestri Jul 17, 2025
808e6c9
try it in both
simone-silvestri Jul 17, 2025
88bd4e8
Merge branch 'ss/adapt-to-new-oceananigans' into ss/zstar
simone-silvestri Jul 17, 2025
7cacb1d
adding the correct zstar branch
simone-silvestri Jul 17, 2025
7cb8d6b
added CUDA
simone-silvestri Jul 17, 2025
469883a
Update pipeline.yml
simone-silvestri Jul 17, 2025
86d0bce
revert CUDA
simone-silvestri Jul 17, 2025
509d6b4
enforce using a specific branch
navidcy Jul 17, 2025
308c9e3
Delete Manifest.toml
navidcy Jul 17, 2025
06d895c
Update Project.toml
navidcy Jul 17, 2025
6397010
enforce using Oceananigans#ss/fix-zstar-bc
navidcy Jul 17, 2025
ea59ebb
drop geebrish
navidcy Jul 17, 2025
352a3ef
enforce using Oceananigans#ss/fix-zstar-bc
navidcy Jul 17, 2025
2beac0e
use julia v1.10.10
navidcy Jul 17, 2025
ea86989
precompile again
navidcy Jul 17, 2025
89af369
use julia v1.10.10
navidcy Jul 17, 2025
9e2482b
first oceananigans; then develop
navidcy Jul 17, 2025
9affa64
add CUDA
navidcy Jul 17, 2025
7717533
using CUDA + record from Makie not CUDA
navidcy Jul 17, 2025
6e0be09
Update one_degree_simulation.jl
simone-silvestri Jul 18, 2025
4488c2e
some changes
simone-silvestri Jul 18, 2025
26fde07
Merge branch 'ss/zstar' of github.com:CliMA/ClimaOcean.jl into ss/zstar
simone-silvestri Jul 18, 2025
a436bed
increase a bit
simone-silvestri Jul 18, 2025
5746652
add more stuff
simone-silvestri Jul 18, 2025
5127f05
improvements
simone-silvestri Jul 18, 2025
1037980
improve
simone-silvestri Jul 18, 2025
71c82f5
add an equatorial single column
simone-silvestri Jul 21, 2025
bc33d07
possibly remove a bug?
simone-silvestri Jul 21, 2025
ed0d210
Update atmosphere_sea_ice_fluxes.jl
simone-silvestri Jul 21, 2025
5b5b747
Update atmosphere_sea_ice_fluxes.jl
simone-silvestri Jul 21, 2025
28d3e4e
adding the correct Manifest
simone-silvestri Jul 21, 2025
00a2933
Merge branch 'ss/zstar' of github.com:CliMA/ClimaOcean.jl into ss/zstar
simone-silvestri Jul 21, 2025
d7ef440
update
simone-silvestri Jul 21, 2025
b0d1fd3
Merge branch 'main' into ss/zstar
navidcy Jul 22, 2025
860ff09
Merge branch 'main' into ss/zstar
simone-silvestri Jul 22, 2025
5637600
Merge branch 'ss/zstar' of github.com:CliMA/ClimaOcean.jl into ss/zstar
simone-silvestri Jul 22, 2025
b3ab48b
remove equatorial single column
simone-silvestri Jul 22, 2025
d1c7450
remove manifest
simone-silvestri Jul 22, 2025
a1ede1f
revert
simone-silvestri Jul 22, 2025
4015bf4
token
simone-silvestri Jul 22, 2025
970ffeb
Revert "token"
simone-silvestri Jul 22, 2025
4b4f64e
Merge remote-tracking branch 'origin/ss/zstar' into ss/omip-prototype
simone-silvestri Jul 22, 2025
e6ff0d4
changed JRA55
simone-silvestri Jul 22, 2025
ef45d0c
added Project
simone-silvestri Jul 22, 2025
d96c32b
merged
simone-silvestri Jul 22, 2025
ea3ee12
bugfix
simone-silvestri Jul 22, 2025
9165bd2
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Jul 22, 2025
add5526
this should fix it
simone-silvestri Jul 22, 2025
35e2df6
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Jul 25, 2025
92fda28
change sea ice
simone-silvestri Jul 28, 2025
ec70ca0
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Jul 29, 2025
469bcb1
consolidate sea ice temperature
simone-silvestri Jul 30, 2025
736ac4c
adding the manifest
simone-silvestri Jul 30, 2025
6db860a
adding Manifest
simone-silvestri Aug 1, 2025
5e0997c
comment out for now
simone-silvestri Aug 1, 2025
049dacd
go for it
simone-silvestri Aug 8, 2025
cf22586
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Aug 8, 2025
17a2250
improve
simone-silvestri Aug 8, 2025
d024542
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Aug 8, 2025
7d6ce58
improving the performance
simone-silvestri Aug 18, 2025
5e66a54
speed up
simone-silvestri Aug 18, 2025
9063e3e
recorrect Oceananigans
simone-silvestri Aug 18, 2025
4fb3526
Merge branch 'main' into ss/omip-prototype
simone-silvestri Aug 18, 2025
e7845a5
new Manifest
simone-silvestri Aug 18, 2025
fca5484
do not add Oceananigans
simone-silvestri Aug 18, 2025
09d22a3
Update make.jl
simone-silvestri Aug 18, 2025
3885668
one-degree-ompi for calibration
simone-silvestri Aug 20, 2025
8bbc3b8
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Aug 20, 2025
988ec77
update one degree
simone-silvestri Aug 20, 2025
3419022
use the correct value
simone-silvestri Aug 20, 2025
b1430e2
remove this for the moment
simone-silvestri Aug 20, 2025
abced34
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Aug 20, 2025
cf2e735
Update make.jl
simone-silvestri Aug 21, 2025
d0b3bf9
reduced the timestep
simone-silvestri Aug 28, 2025
5f3452d
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Aug 28, 2025
f9613d8
enforce real minimum depth
simone-silvestri Aug 28, 2025
557ddc9
Merge branch 'main' into ss/omip-prototype
simone-silvestri Sep 19, 2025
3861dba
Merge branch 'main' into ss/omip-prototype
xkykai Sep 22, 2025
d126260
Merge branch 'main' into ss/omip-prototype
xkykai Sep 23, 2025
22d6f31
Merge branch 'main' into ss/omip-prototype
xkykai Sep 29, 2025
743fa84
Merge branch 'main' into ss/omip-prototype
simone-silvestri Sep 30, 2025
f3b1b97
merge commit
simone-silvestri Oct 3, 2025
c21aab6
Merge branch 'main' into ss/omip-prototype
taimoorsohail Oct 10, 2025
01af82e
Merge branch 'main' into ss/omip-prototype
navidcy Oct 10, 2025
91fae63
Merge branch 'main' into ss/omip-prototype
taimoorsohail Oct 13, 2025
2bf3999
Resolved merge conflict in Project.toml with [targets]
taimoorsohail Oct 17, 2025
21e3c57
adapt to new timestepper
simone-silvestri Nov 7, 2025
19ee5e4
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Nov 7, 2025
e661608
add DateTime clock timestepping test + fix import issues
navidcy Dec 1, 2025
3712296
Update Project.toml
navidcy Dec 1, 2025
4ba70a3
add clock kwarg in docstring
navidcy Dec 1, 2025
6e19316
Clean up formatting in ocean_simulation.jl
navidcy Dec 1, 2025
bb6ee96
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Dec 1, 2025
4c2570c
fix all
simone-silvestri Dec 1, 2025
ae2602b
update
simone-silvestri Dec 1, 2025
4ce942b
go ahead
simone-silvestri Dec 1, 2025
b253fef
fix it up
simone-silvestri Dec 1, 2025
00205b6
bugfix
simone-silvestri Dec 1, 2025
f14ef99
Merge branch 'main' into ncc/datetime-timestepping
simone-silvestri Dec 2, 2025
3b6b1ea
bugfix
simone-silvestri Dec 2, 2025
78d78c2
Apply suggestion from @simone-silvestri
simone-silvestri Dec 2, 2025
ba02445
change docs
simone-silvestri Dec 2, 2025
90843e3
Merge branch 'ss/bugfix-2' of github.com:CliMA/ClimaOcean.jl into ss/…
simone-silvestri Dec 2, 2025
4427feb
add new Oceananigans verison
simone-silvestri Dec 2, 2025
6f877ba
add new Oceananigans verison
simone-silvestri Dec 2, 2025
f090a62
Merge remote-tracking branch 'origin/ncc/datetime-timestepping' into …
simone-silvestri Dec 2, 2025
3c1b9f0
Merge remote-tracking branch 'origin/ss/bugfix-2' into ss/omip-prototype
simone-silvestri Dec 2, 2025
c8d850b
Merge branch 'main' into ss/omip-prototype
simone-silvestri Dec 9, 2025
f07686b
updates
simone-silvestri Dec 11, 2025
9cadad8
Merge branch 'ss/omip-prototype' of github.com:CliMA/ClimaOcean.jl in…
simone-silvestri Dec 11, 2025
29ce3e2
updated project
simone-silvestri Dec 11, 2025
c90cfad
add correct revision
simone-silvestri Dec 11, 2025
cc6d8e4
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Dec 19, 2025
cf13948
correct project
simone-silvestri Dec 23, 2025
298bd34
some fixes
simone-silvestri Dec 27, 2025
3b5a07d
Merge remote-tracking branch 'origin/main' into ss/omip-prototype
simone-silvestri Dec 28, 2025
d8431d1
revert
simone-silvestri Dec 29, 2025
aba62a5
revert again
simone-silvestri Dec 29, 2025
3bf4880
use this tracer advection
simone-silvestri Dec 29, 2025
1683a9c
improve
simone-silvestri Jan 9, 2026
df335b1
update some docstring
simone-silvestri Jan 9, 2026
ce29c15
Merge branch 'main' into ss/three-equation-fluxes
simone-silvestri Jan 9, 2026
67ac496
remove the twoequationflux
simone-silvestri Jan 9, 2026
4bd2268
Merge branch 'ss/three-equation-fluxes' of github.com:CliMA/ClimaOcea…
simone-silvestri Jan 9, 2026
084b006
Merge branch 'main' into ss/three-equation-fluxes
simone-silvestri Jan 12, 2026
e4bf5fc
removed unused `properties` field
simone-silvestri Jan 12, 2026
87562a5
Merge branch 'ss/three-equation-fluxes' of github.com:CliMA/ClimaOcea…
simone-silvestri Jan 12, 2026
073d94d
fix disambiguation problem
simone-silvestri Jan 12, 2026
2cc6e4e
no computation of atmosphere-seaice
simone-silvestri Jan 12, 2026
da73eb0
include the correct tests
simone-silvestri Jan 12, 2026
a56854d
small fix
simone-silvestri Jan 12, 2026
aabed1b
Merge branch 'main' into ss/three-equation-fluxes
simone-silvestri Jan 13, 2026
794da75
Merge branch 'main' into ss/three-equation-fluxes
simone-silvestri Jan 13, 2026
421bdc5
Importing timesteppers from Oceananigans.Simulations instead of Ocean…
taimoorsohail Jan 14, 2026
e599654
Adjusted ocean_simulation function to reflect new format of Hydrostat…
taimoorsohail Jan 14, 2026
df9303a
Bump Oceanangians compat requirements
taimoorsohail Jan 15, 2026
e01490a
Merge branch 'main' into ss/three-equation-fluxes
xkykai Jan 15, 2026
2d3c595
test conventions
simone-silvestri Jan 15, 2026
4896407
Merge branch 'main' into ss/omip-prototype
simone-silvestri Jan 15, 2026
bd999f8
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 15, 2026
511251c
correct formulation
simone-silvestri Jan 16, 2026
d73900b
add the linear liquidus
simone-silvestri Jan 16, 2026
bcb80b6
add the melt rate
simone-silvestri Jan 16, 2026
790fff4
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 16, 2026
b17edf5
try it like this
simone-silvestri Jan 16, 2026
7b78ddf
mutliply melt rate by concentration?
simone-silvestri Jan 16, 2026
7fc7e18
improve 3-formulation fluxes
simone-silvestri Jan 16, 2026
ee821a1
do not count twice
simone-silvestri Jan 16, 2026
9136548
Merge remote-tracking branch 'origin/ss/three-equation-fluxes' into s…
simone-silvestri Jan 16, 2026
caf0e5e
finally update
simone-silvestri Jan 16, 2026
83b886a
Merge remote-tracking branch 'origin/ss/three-equation-fluxes' into s…
simone-silvestri Jan 16, 2026
cfedf3c
add some tests and a new formulation
simone-silvestri Jan 16, 2026
e4c3ba4
Merge remote-tracking branch 'origin/ss/three-equation-fluxes' into s…
simone-silvestri Jan 16, 2026
829bdb6
separate into frazil and melt components
simone-silvestri Jan 16, 2026
8dc252b
Merge remote-tracking branch 'origin/ss/three-equation-fluxes' into s…
simone-silvestri Jan 16, 2026
55f40e6
streamlined implementation, added conductive flux through the ice
simone-silvestri Jan 17, 2026
60a21ee
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 17, 2026
3db817a
fix tests
simone-silvestri Jan 17, 2026
796c3e6
correct constructor
simone-silvestri Jan 17, 2026
4ceb7c8
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 17, 2026
e972fd0
forgot a where {FT}
simone-silvestri Jan 17, 2026
dddafca
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 17, 2026
fa13e09
add correct conductive_flux and ice_temperature
simone-silvestri Jan 17, 2026
c5c4c2f
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 17, 2026
64881ed
add an adapt method
simone-silvestri Jan 17, 2026
1894d94
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 17, 2026
e91fbd9
fix tests
simone-silvestri Jan 17, 2026
ddd8ba9
add some documentation
simone-silvestri Jan 17, 2026
29999bd
fix docs
simone-silvestri Jan 18, 2026
e13e8aa
add ClimaSeaice
simone-silvestri Jan 18, 2026
90b7322
Merge branch 'ss/three-equation-fluxes' into ss/omip-prototype
simone-silvestri Jan 19, 2026
7704645
remove sources
simone-silvestri Jan 19, 2026
9b49800
update sea ice
simone-silvestri Jan 22, 2026
b5ac778
Merge branch 'main' into ss/omip-prototype
simone-silvestri Jan 23, 2026
b06b7a2
this should solve it
simone-silvestri Feb 9, 2026
9564e2a
Merge branch 'ss/fix-bug-in-fluxes' into ss/omip-prototype
simone-silvestri Feb 9, 2026
6d24bf2
guard from NaNs
simone-silvestri Feb 9, 2026
1ee0a89
Merge branch 'ss/fix-bug-in-fluxes' into ss/omip-prototype
simone-silvestri Feb 9, 2026
811128c
use a minimum gustiness
simone-silvestri Feb 9, 2026
4c3f3b3
Merge branch 'ss/fix-bug-in-fluxes' into ss/omip-prototype
simone-silvestri Feb 9, 2026
59e30b8
Merge branch 'main' into ss/omip-prototype
simone-silvestri Feb 13, 2026
1778853
fix a bug
simone-silvestri Feb 14, 2026
94fc935
make sure this will not crash
simone-silvestri Feb 14, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,556 changes: 1,556 additions & 0 deletions Manifest.toml

Large diffs are not rendered by default.

16 changes: 16 additions & 0 deletions docs/make.jl
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,22 @@ using
DocumenterCitations,
Literate

# temporary to enforce Oceananigans to use a specific branch
using Pkg
Pkg.add(PackageSpec(
name = "Oceananigans",
url = "https://github.com/CliMA/Oceananigans.jl",
rev = "ss/omip-branch-2"
))

Pkg.add(PackageSpec(
name = "ClimaSeaIce",
url = "https://github.com/CliMA/ClimaSeaIce.jl",
rev = "ss/omip-branch-2"
))
Pkg.resolve()
@show Pkg.status()
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

we don't need these right?


ENV["DATADEPS_ALWAYS_ACCEPT"] = "true"

bib_filepath = joinpath(dirname(@__FILE__), "climaocean.bib")
Expand Down
635 changes: 0 additions & 635 deletions docs/src/interface_fluxes.md

Large diffs are not rendered by default.

8 changes: 8 additions & 0 deletions experiments/omip_prototype/download_data.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,8 @@
using ClimaOcean
using ClimaOcean.JRA55
using ClimaOcean.DataWrangling: download_dataset

atmosphere = JRA55PrescribedAtmosphere(; dir="forcing_data/",
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Trying to encourage people not to set this variable because it makes setups less portable (eg data will be re-downloaded everywhere)

dataset=JRA55MultipleYears(),
backend=JRA55NetCDFBackend(10),
include_rivers_and_icebergs=true)
155 changes: 155 additions & 0 deletions experiments/omip_prototype/one_degree_omip.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,155 @@
using ClimaOcean
using ClimaSeaIce
using Oceananigans
using Oceananigans.Grids
using Oceananigans.Units
using Oceananigans.OrthogonalSphericalShellGrids
using ClimaOcean.OceanSimulations
using ClimaOcean.ECCO
using ClimaOcean.JRA55
using ClimaOcean.DataWrangling
using ClimaSeaIce.SeaIceThermodynamics: IceWaterThermalEquilibrium
using Printf
using Dates
using CUDA

import Oceananigans.OutputWriters: checkpointer_address

arch = GPU()

Nx = 360 # longitudinal direction
Ny = 180 # meridional direction
Nz = 60

z_faces = ExponentialCoordinate(Nz, -6000, 0)
# z_faces = MutableVerticalDiscretization(z_faces)

const z_surf = z_faces(Nz)

grid = TripolarGrid(arch;
size = (Nx, Ny, Nz),
z = z_faces,
halo = (7, 7, 7))

bottom_height = regrid_bathymetry(grid; minimum_depth=15, major_basins=1, interpolation_passes=75)
grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height); active_cells_map=true)

#####
##### A Propgnostic Ocean model
#####

using Oceananigans.TurbulenceClosures: ExplicitTimeDiscretization
using Oceananigans.TurbulenceClosures.TKEBasedVerticalDiffusivities: CATKEVerticalDiffusivity, CATKEMixingLength, CATKEEquation

momentum_advection = WENOVectorInvariant(order=5)
tracer_advection = WENO(order=5)

free_surface = SplitExplicitFreeSurface(grid; cfl=0.7, fixed_Δt=45minutes)

eddy_closure = Oceananigans.TurbulenceClosures.IsopycnalSkewSymmetricDiffusivity(κ_skew=1e3, κ_symmetric=1e3)
catke_closure = ClimaOcean.OceanSimulations.default_ocean_closure()
closure = (catke_closure, VerticalScalarDiffusivity(κ=1e-5, ν=1e-4), eddy_closure)

dataset = EN4Monthly()
date = DateTime(1958, 1, 1)
@inline mask(x, y, z, t) = z ≥ z_surf - 1
Smetadata = Metadata(:salinity; dataset)

FS = DatasetRestoring(Smetadata, grid; rate = 1/18days, mask, time_indices_in_memory = 10)

ocean = ocean_simulation(grid; Δt=1minutes,
momentum_advection,
tracer_advection,
timestepper = :SplitRungeKutta3,
free_surface,
forcing = (; S = FS),
closure)

dataset = EN4Monthly()
date = DateTime(1958, 1, 1)

set!(ocean.model, T=Metadatum(:temperature; dataset, date),
S=Metadatum(:salinity; dataset, date))

@info ocean.model.clock

#####
##### A Prognostic Sea-ice model
#####

# Default sea-ice dynamics and salinity coupling are included in the defaults
sea_ice = sea_ice_simulation(grid, ocean; advection=WENO(order=7))

set!(sea_ice.model, h=Metadatum(:sea_ice_thickness; dataset=ECCO4Monthly()),
ℵ=Metadatum(:sea_ice_concentration; dataset=ECCO4Monthly()))

#####
##### A Prescribed Atmosphere model
#####

dir = "./forcing_data"
dataset = MultiYearJRA55()
backend = JRA55NetCDFBackend(100)

atmosphere = JRA55PrescribedAtmosphere(arch; dir, dataset, backend, include_rivers_and_icebergs=true)
radiation = Radiation()

#####
##### An ocean-sea ice coupled model
#####

omip = OceanSeaIceModel(ocean, sea_ice; atmosphere, radiation)
omip = Simulation(omip, Δt=20minutes, stop_time=60days)

# Figure out the outputs....
checkpointer_address(::SeaIceModel) = "SeaIceModel"

ocean.output_writers[:checkpointer] = Checkpointer(ocean.model,
schedule = IterationInterval(1000),
prefix = "ocean_checkpoint_onedegree",
overwrite_existing = true)

sea_ice.output_writers[:checkpointer] = Checkpointer(sea_ice.model,
schedule = IterationInterval(1000),
prefix = "sea_ice_checkpoint_onedegree",
overwrite_existing = true)

wall_time = Ref(time_ns())

using Statistics

function progress(sim)
sea_ice = sim.model.sea_ice
ocean = sim.model.ocean
hmax = maximum(sea_ice.model.ice_thickness)
ℵmax = maximum(sea_ice.model.ice_concentration)
Tmax = maximum(sim.model.interfaces.atmosphere_sea_ice_interface.temperature)
Tmin = minimum(sim.model.interfaces.atmosphere_sea_ice_interface.temperature)
umax = maximum(ocean.model.velocities.u)
vmax = maximum(ocean.model.velocities.v)
wmax = maximum(ocean.model.velocities.w)

step_time = 1e-9 * (time_ns() - wall_time[])

msg1 = @sprintf("time: %s, iteration: %d, Δt: %s, ", prettytime(sim), iteration(sim), prettytime(sim.Δt))
msg2 = @sprintf("max(h): %.2e m, max(ℵ): %.2e ", hmax, ℵmax)
msg4 = @sprintf("extrema(T): (%.2f, %.2f) ᵒC, ", Tmax, Tmin)
msg5 = @sprintf("maximum(u): (%.2f, %.2f, %.2f) m/s, ", umax, vmax, wmax)
msg6 = @sprintf("wall time: %s \n", prettytime(step_time))

@info msg1 * msg2 * msg4 * msg5 * msg6

wall_time[] = time_ns()

return nothing
end

# And add it as a callback to the simulation.
add_callback!(omip, progress, IterationInterval(1))

run!(omip)

omip.Δt = 30minutes
omip.stop_time = 58 * 365days

run!(omip)
153 changes: 153 additions & 0 deletions experiments/omip_prototype/sixth_degree_omip.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,153 @@
using ClimaOcean
using ClimaSeaIce
using Oceananigans
using Oceananigans.Grids
using Oceananigans.Units
using Oceananigans.OrthogonalSphericalShellGrids
using ClimaOcean.OceanSimulations
using ClimaOcean.ECCO
using ClimaOcean.JRA55
using ClimaOcean.DataWrangling
using ClimaSeaIce.SeaIceThermodynamics: IceWaterThermalEquilibrium
using Printf
using Dates
using CUDA

import Oceananigans.OutputWriters: checkpointer_address

function synch!(clock1::Clock, clock2)
# Synchronize the clocks
clock1.time = clock2.time
clock1.iteration = clock2.iteration
clock1.last_Δt = clock2.last_Δt
end

synch!(model1, model2) = synch!(model1.clock, model2.clock)
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

if you need this please put it in a separate PR and get that merged, because people want to use stuff


arch = GPU()

Nx = 2160 # longitudinal direction
Ny = 1080 # meridional direction
Nz = 60

r_faces = ClimaOcean.ExponentialCoordinate(Nz, -6000)
z_faces = MutableVerticalDiscretization(r_faces)

grid = TripolarGrid(arch;
size = (Nx, Ny, Nz),
z = z_faces,
halo = (7, 7, 7))

bottom_height = regrid_bathymetry(grid; minimum_depth=15, major_basins=1, interpolation_passes=15)
grid = ImmersedBoundaryGrid(grid, GridFittedBottom(bottom_height); active_cells_map=true)

#####
##### A Propgnostic Ocean model
#####

using Oceananigans.TurbulenceClosures: ExplicitTimeDiscretization
using Oceananigans.TurbulenceClosures.TKEBasedVerticalDiffusivities: CATKEVerticalDiffusivity, CATKEMixingLength, CATKEEquation

momentum_advection = WENOVectorInvariant()
tracer_advection = WENO(order=7)

free_surface = SplitExplicitFreeSurface(grid; cfl=0.7, fixed_Δt=10minutes)

mixing_length = CATKEMixingLength(Cᵇ=0.01)
turbulent_kinetic_energy_equation = CATKEEquation(Cᵂϵ=1.0)

catke_closure = CATKEVerticalDiffusivity(; mixing_length, turbulent_kinetic_energy_equation)
closure = (catke_closure, VerticalScalarDiffusivity(κ=1e-5, ν=1e-5))
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@simone-silvestri, why change CATKE defaults?

cc @taimoorsohail, @glwagner

Copy link
Member

@glwagner glwagner Jun 14, 2025

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Also it's wrong to add an additional background diffusivity. CATKE already introduces a background diffusivity via the minimum_tke parameter.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Otherwise I guess it's ok to experiment with different parameter choices, if there are choices that work better we can make them default in Oceananigans.


ocean = ocean_simulation(grid; Δt=1minutes,
momentum_advection,
tracer_advection,
free_surface,
closure)

dataset = ECCO4Monthly()

set!(ocean.model, T=Metadatum(:temperature; dataset),
S=Metadatum(:salinity; dataset))

#####
##### A Prognostic Sea-ice model
#####

# Default sea-ice dynamics and salinity coupling are included in the defaults
sea_ice = sea_ice_simulation(grid; advection=WENO(order=7))

set!(sea_ice.model, h=Metadatum(:sea_ice_thickness; dataset),
ℵ=Metadatum(:sea_ice_concentration; dataset))

#####
##### A Prescribed Atmosphere model
#####

dir = "./forcing_data"
dataset = MultiYearJRA55()
backend = JRA55NetCDFBackend(100)

atmosphere = JRA55PrescribedAtmosphere(arch; dir, dataset, backend, include_rivers_and_icebergs=true)
radiation = Radiation()

#####
##### An ocean-sea ice coupled model
#####

omip = OceanSeaIceModel(ocean, sea_ice; atmosphere, radiation)
omip = Simulation(omip, Δt=20, stop_time=60days)

# Figure out the outputs....

checkpointer_address(::SeaIceModel) = "SeaIceModel"

ocean.output_writers[:checkpointer] = Checkpointer(ocean.model,
schedule = IterationInterval(10000),
prefix = "ocean_checkpoint",
overwrite_existing = true)

sea_ice.output_writers[:checkpointer] = Checkpointer(sea_ice.model,
schedule = IterationInterval(10000),
prefix = "sea_ice_checkpoint",
overwrite_existing = true)

wall_time = Ref(time_ns())

using Statistics

function progress(sim)
sea_ice = sim.model.sea_ice
ocean = sim.model.ocean
hmax = maximum(sea_ice.model.ice_thickness)
ℵmax = maximum(sea_ice.model.ice_concentration)
Tmax = maximum(sim.model.interfaces.atmosphere_sea_ice_interface.temperature)
Tmin = minimum(sim.model.interfaces.atmosphere_sea_ice_interface.temperature)
umax = maximum(ocean.model.velocities.u)
vmax = maximum(ocean.model.velocities.v)
wmax = maximum(ocean.model.velocities.w)

step_time = 1e-9 * (time_ns() - wall_time[])

msg1 = @sprintf("time: %s, iteration: %d, Δt: %s, ", prettytime(sim), iteration(sim), prettytime(sim.Δt))
msg2 = @sprintf("max(h): %.2e m, max(ℵ): %.2e ", hmax, ℵmax)
msg4 = @sprintf("extrema(T): (%.2f, %.2f) ᵒC, ", Tmax, Tmin)
msg5 = @sprintf("maximum(u): (%.2f, %.2f, %.2f) m/s, ", umax, vmax, wmax)
msg6 = @sprintf("wall time: %s \n", prettytime(step_time))

@info msg1 * msg2 * msg4 * msg5 * msg6

wall_time[] = time_ns()

return nothing
end

# And add it as a callback to the simulation.
add_callback!(omip, progress, IterationInterval(50))

run!(omip)

omip.Δt = 6minutes
omip.stop_time = 58 * 365days

run!(omip)
Loading
Loading