-
Notifications
You must be signed in to change notification settings - Fork 9
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
A first stab at a diagnostic surface temperature implementation #278
base: main
Are you sure you want to change the base?
Conversation
…into ss/one-degree-take3
A very crude first calculation in where single_column_profiles.mp4There is a large difference in the ocean surface temperature (about 1 degree K), but very little in the fluxes. |
However, the surface diffusivity predicted by CATKE in the above video is single_column_profiles.mp4I need to test this on the whole surface to see if there are maybe hot or cold spots that show more difference. As it stands, the net difference in heat flux is less than 1 Probably for sea ice where timescales are faster this might matter more. |
Co-authored-by: Gregory L. Wagner <[email protected]>
Codecov ReportAttention: Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #278 +/- ##
=====================================
Coverage 0.00% 0.00%
=====================================
Files 33 34 +1
Lines 1876 1910 +34
=====================================
- Misses 1876 1910 +34 ☔ View full report in Codecov by Sentry. |
Co-authored-by: Gregory L. Wagner <[email protected]>
This PR implements two types:
BulkTemperature
SkinTemperature
The first type is supposed to represent the default option we have know: the surface temperature is provided and equal to the temperature of "surface" model (either sea ice or ocean). This temperature is fixed and not iterated over.
The second type represents a diagnostic temperature that is diagnosed by a flux balance between the
SkinTemperature
, for the moment only a simple diffusive flux with prescribed diffusivity leading to an explicit expression for temperature, but they can become more complicated.In this second case the temperature is solved for in the
flux_balance_temperature(::SkinTemperature, T_ocean, net_external_flux)
functionThese types are provided to the
similarity_theory
as a new field namedsurface_temperature_type
. The surface temperature is then stored in aT_surface
field which is added tosimilarity_theory.fields
There is a bit of a pitfall in this implementation: it is difficult to implement temperature-dependent radiative properties, because radiative properties (that depend on i and j and the grid) are passed already computed to the solver.
I would be against passing i, j and the grid to the surface flux solver (it would entangle the solver with oceananigans so it would be difficult to swap it out with a
SurfaceFluxes.jl
solver), so we could rethink albedo and emissivity computation.