Maybe useful tips in Bi et al. (GRL, 2001)? It has an accelerated-ocean run that (direct quote below)
lasts for 400 ‘normal’ years until year 1100, implying a nearly 11000 year ‘effective’ integration for the deepest level with intermediate varying times for other deep levels.
I guess @Benoit comment is a refence in Dave Bi paper to use in the CSIRO model it different tracer time steps, I know Richard Matear and Andrew Lenton (with MOM3) attempted different approaches to accelerate spin up of their ocean for BGC runs some years ago, I guess they are not on the hive but we could bring them into the discussion by email.
Something that has not been mentioned here and that might work is Anderson Acceleration? Khatiwala (2023) used it for passive tracers but he noted the following (bold emphasis and acronym definitions mine):
A third direction is to investigate whether AA [Anderson Acceleration] can be used to accelerate the dynamical equilibration of seasonally-forced ocean models. Indeed, this problem was one of the primary motivations for the development of the TMM [Transport Matrix Method] (Khatiwala et al., 2005). And it was also the context in which MFNK [Matrix-Free Newton Krylov] was first applied to the ocean spin-up problem (Merlis & Khatiwala, 2008). One could either apply AA to the full model state or, simpler and as proposed by Khatiwala et al. (2005), interleave equilibration by AA of active tracers (temperature and salinity) with conventional direct integration to adjust the dynamical (velocity and pressure) fields.
Sorry to revive this again, but I think this may be useful for the next person trying to do the same thing, in case it works.
Hi Benoit,
I am definitely interested to know of ways to accelerate tracer equilibration, but haven’t found a way to readily implement such a scheme in MOM5. I will have a look at the Khatiwala 2023 paper. If you know of a method or a workflow that we could try, let me know and I’ll be interested.
Regards,
David
I should add that I did try with a summer intern project to do something along the lines of a matrix-derived temperature-salinity equilibrium from a transient simulation.
What we did in short was to take the SST and SSS fields and circulation from a short simulation (e.g. 50 or 100 years), put them into a transport matrix of the annualised circulation with those surface fields as boundary conditions, and solve for the 3D temperature and salinity steady state.
The results were surprisingly unhelpful. What we got for 3D temperature was a pretty decent reflection of the transient 3D temperature at the time of simulation (i.e. we could “invert” for the 3D temperature knowing the surface temperature), but it didn’t help us get closer to the true equilibrium that you would get from running the model for 3000 years.
I would love to know a way to do it better though.
Thanks @Benoit, this looks like a very useful technique. I like that it treats the model as a black box - that makes it very versatile.
I suspect it would be straightforward to implement this via scripts that are automatically called by payu although all the recent restarts would need to be available so it would need restart_freq: 1.
FYI it reminds me of Sheremet’s method, which is a similar idea (but continuously damping to a weighted running mean rather than giving the system a jolt at the start of each run segment) designed to stabilise short-period oscillatory instabilities rather than accelerate convergence to a long-term equilibrium.
Thanks Andrew. I have forked the github repository from Khatiwala, added my own functions to interface with the GFDL model age tracer, and provided an example of my implementation in payu. You can check it out here:
Yes, I emailed Samar and he sent me his python version as well. But he also asked me not to share the python version because he hasn’t published it yet… so I decided to use his publicly available matlab algorithm.