Horizontal convection with nonlinear equation of state #1855
Replies: 3 comments 3 replies
-
This is definitely possible and might be a good thing to add to #1847 ... The model in #1847 is built with these lines: model = IncompressibleModel(
architecture = CPU(),
grid = grid,
advection = WENO5(),
timestepper = :RungeKutta3,
tracers = :b,
buoyancy = BuoyancyTracer(),
closure = IsotropicDiffusivity(ν=ν, κ=κ),
boundary_conditions = (b=b_bcs,)
) To use conservative temperature and absolute salinity (with a linear equation of state) we write tracers = (:T, :S)
buoyancy = SeawaterBuoyancy(equation_of_state=LinearEquationOfState(α=2e-4, β=8e-4)) as, for example, the ocean wind mixing and convection example does: Nonlinear equations of state defined by using SeawaterPolynomials: TEOS10EquationOfState
buoyancy = SeawaterBuoyancy(equation_of_state=TEOS10EquationOfState()) We also support a few sets of "second-order" polynomials that were introduced by Roquet et al 2015: using SeawaterPolynomials: RoquetEquationOfStateationOfState
buoyancy = SeawaterBuoyancy(equation_of_state=RoquetEquationOfState(coefficient_set=:SecondOrder)) Docs are limited (please help!) but this docstring should explain: """
RoquetSeawaterPolynomial([FT=Float64,] coefficient_set=:SecondOrder)
Returns a `SecondOrderSeawaterPolynomial` with coefficients optimized by
> Roquet et al., "Defining a Simplified yet 'Realistic' Equation of State for Seawater",
Journal of Physical Oceanography (2015).
The `coefficient_set` is a symbol or string that selects one of the "sets" of
optimized second order coefficients.
Coefficient sets
================
- `:Linear`: a linear equation of state, `ρ = ρᵣ + R₁₀₀ * Θ + R₀₁₀ * Sᴬ`
- `:Cabbeling`: includes quadratic temperature term,
`ρ = ρᵣ + R₁₀₀ * Θ + R₀₁₀ * Sᴬ + R₀₂₀ * Θ^2`
- `:CabbelingThermobaricity`: includes 'thermobaricity' term,
`ρ = ρᵣ + R₁₀₀ * Θ + R₀₁₀ * Sᴬ + R₀₂₀ * Θ^2 - R₀₁₁ * Θ * Z`
- `:Freezing`: same as `:cabbeling_thermobaricity` with modified constants to increase
accuracy near freezing
- `:SecondOrder`: includes quadratic salinity, halibaricity, and thermohaline term,
`ρ = ρᵣ + R₁₀₀ * Θ + R₀₁₀ * Sᴬ + R₀₂₀ * Θ^2 - R₀₁₁ * T * Z`
+ R₂₀₀ * Sᴬ^2 - R₁₀₁ * Sᴬ * Z + R₁₁₀ * Sᴬ * Θ`
The optimized coefficients are reported in
Table 3 of Roquet et al., "Defining a Simplified yet 'Realistic'
Equation of State for Seawater", Journal of Physical Oceanography (2015), and
further discussed around equations (12)--(15). The optimization minimizes
errors in estimated horizontal density gradient estiamted from climatological temperature
and salinity distributions between the 5 simplified forms chosen by Roquet et. al
and the full-fledged [TEOS-10](http://www.teos-10.org) equation of state.
""" Note that using SeawaterPolynomials: RoquetEquationOfStateationOfState
tracers = :T
roquet_eos = RoquetEquationOfState(coefficient_set=:SecondOrder)
buoyancy = SeawaterBuoyancy(equation_of_state=roquet_eos, constant_salinity=35.0) There's also a reference density associated with both Here's a link to the code: |
Beta Was this translation helpful? Give feedback.
-
Great! @kialstewart would the implementation of EOS that the docstring above describes be sufficient? If so, perhaps try to dig out your setup so we have a vague idea on parameter values of interest and perhaps we can try to sit down and set up a simulation when I'm at ANU next week at some point? |
Beta Was this translation helpful? Give feedback.
-
Hi @navidcy Here are a set of values that worked with MITgcm. These describe a 2048264 (nxnynz, so 2-dimensional in x and z) horizontal convection simulation with imposed surface temperature and salinity distributions. The distribution of the surface temperature is sinusoidal in x with a minimum of 5oC at mid-domain and 15oC at the (periodic) endwalls. The distribution of the surface salinity is approximately sinusoidal with a minimum in the middle and maximum at the endwalls; the exact value of the surface salinity at a given location depends on the imposed surface temperature and reference temperature, such that the imposed salinity and temperature fields compensate to give zero density anomaly imposed at the surface. The imposed surface salinity distribution thus depends on the equation of state. The implementation of the EOS mentioned above would be great. There would be 5 initial EOS configurations to test: R_100 (linear, only temperature) The idiot-check would be that the second configuration produces zero circulation (only a diffusive transport of heat and salt). Keen to chat more. Kial time step number of grid cells horizontal grid spacing vertical grid spacing (top and bottom, and change smoothly between) reference temperature (use as initial) reference salinity (use as initial) boundary conditions vertical diffusivity: temperature (top and bottom values, change smoothly between) horizontal diffusivity: temperature vertical diffusivity: salinity (top and bottom values, change smoothly between) horizontal diffusivity: salinity gravity = 9.81 relaxation timescale: temperature relaxation timescale: salinity |
Beta Was this translation helpful? Give feedback.
-
Hey, some people from my group were intrigued with the horizonal convection simulation. I was asked whether it's possible to have a nonlinear equation of state and simulate tracers
T
andS
and then have buoyancyb
be given as a function ofT
,S
and pressure (or depth)?The idea is to start with or impose a temperature-salinity configuration so that the surface buoyancy is homogeneous. Then T and S will start diffuse but as they reach certain depth, nonlinearities in the equation of state might give rise to APE and thus circulation.
I'm cc'ing @kialstewart who probably can explain it better. We don't require the full TEOS-10 for this, just the first few polynomials in the polynomial expansion of TEOS.
Beta Was this translation helpful? Give feedback.
All reactions