Calculating heat advection terms

Hi all,

I am trying to calculate heat budget for a fixed volume using ACCESS-OM2-01 (JRA-dov1.4). From ACCESS I got temp_xflux_adv and temp_yflux_adv but I couldn’t find temp_zflux_adv in the output. So, I am trying to calculate it following the model formula (Z_adv = cp*rho*dx*dy*wt*temp).

Now closing the budget is not our purpose and I am only including net_heat_flux and advective fluxes. But it should be close to the budget closure, and I am not able to achieve it (i.e., Q_net + Q_adv is not close to dT/dt in the below plot). I have done this using the RYF runs as well, which has all the required terms for the budget closure, and it matches really well.

I am using python, and I noticed that the results differ depending on the interpolation between wt and temp, i.e., whether I interpolate wt on temp grid or temp on wt grid. I am using xarray.interp() for the interpolation.

I would really appreciate if I can get some insight on this. Thanks!

Hi @sb4233.

Sounds fun! I’m not familiar with the diagnostics you describe but there are many reasons why it might not work offline, is it possible for you to re-run with the online diagnostics? You can just run a few timesteps, checking at a single point, to check for closure. Happy to have a quick VC chat if that sounds useful.

Also, when you say ACCESS-OM2-01 (JRA-dov1.4) you mean for IAF? I think these two runs might have used different executables – @aekiss? So I imagine it’s possible that closure may be possible in one setup but not the other.

I think @rmholmes has some experience on similar diagnostics, and might have some tips…

Hi,
Sorry if my question was misleading. I am not trying to run the model. Just trying to use the output from the ACCESS IAF run (i.e., 01deg_jra55v140_iaf). The zonal advective flux ( temp_xflux_adv) and meridional advective flux ( temp_yflux_adv) are available in the output but the vertical advective flux ( temp_zflux_adv) is not. That’s why I am trying to use wt and temp to calculate it manually.

Hi again, thanks for clarifying. Yes, I had understood that you were looking to do this calculation offline. My naive, related question was based on not being sure it should work offline, and that one way to test this was to make sure that it works online in your current configuration.

Another way to ask this is: does 01deg_jra55v140_iaf and the RYF run you have where it works, use the same executable? And does your calculation work on the RYF output (where you temporarily forget that you actually have all the outputs)?

1 Like

Hi Sougata,

Like Chris says, I’m sceptical that you can do this with reasonable accuracy, particularly for vertical advection. The vertical velocity varies rapidly and so any offline computation of vertical advection based on time-averaged wt and temp will potentially miss a lot of stuff (not to mention other issues with reproducing the actual advection operator etc…).

A few other comments:

  • You’ll want to interpolate temp onto the wt grid, since that’s where the temp_zflux_adv should lie anyway (but keep in mind that a simple centered interpolation is not what the model does).
  • It’s not clear to me how you’ve made the above plot. Is dT/dt coming from a time derivative of snapshots (dividing by the instantaneous grid cell thickness from dzt snapshots)?
  • Depending on what volume you are averaging over, there are plenty of other processes that can also play a pretty significant role in the budget, such as vertical mixing.

What are you trying to use this for? That might help us help you.

2 Likes

Also note this discussion: Offline heat budget - #6 by ChrisC28. @adele-morrison might be able to help.

1 Like

Hi @cbull
Thank you for clarifying. Yes, the variables are the same for both runs. I will try the calculation for RYF as you suggested.

Hello @rmholmes,
Thank you for your answer! This is helpful.
Sorry I should have given a description of the plot provided. I am trying to do this calculation for a couple of regions within Indonesian Seas. The plot is representing the monthly climatology. As for dT/dt it is the volume integrated temperature tendency, which is being calculated as below -

cell_volume = dx_sel * dy_sel * dz
T_V = (temp_sel * cell_volume).sum(dim=['lon', 'lat', 'depth']) * (cp * rho)
dT_dt = np.gradient(T_V, axis=0)
dT_dtda = xr.DataArray(dT_dt, coords=T_V.coords, dims=T_V.dims)

Yes mixing can be important ofc, but I have checked the RYF run and it is non-zero but small for this specific region. So the budget essentially a balance between the Q_net and Q_adv.

Seems like the answer lies in the interpolation technique, can you please elaborate / maybe share some resource on how the model interpolates?

Hi Sougata,

The model uses the multi-dimensional piece-wise parabolic method (MDPPM, Colella & Woodward, 1984) for both horizontal and vertical tracer advection with a monotonicity-preserving flux limiter following Suresh and Huynh (1997). But I’m not convinced that will be useful to you. @adele-morrison mentions here that she has reproduced this calculation offline, so maybe you could ask her.

Another inaccuracy you will have is that the time-averaged budget diagnostics (like temp_xflux_adv) will relate to the difference in temperature at the two instants in time at the beginning and ending of the averaging time period (this is what I mean by “snapshots”), as opposed to the differences in time-averages that I presume you are using there. That might be a minor difference for your situation, I’m not sure.

What depths are you doing this analysis over? Are you trying to do a mixed layer heat budget? If so, there are another few issues (I’m working on a robust way of doing this now).

Please also keep in mind that the individual components Xadv, Yadv, Zadv do not have a robust physical meaning as they depend on the temperature scale that you are using (i.e. they could be very different if you use Celsius vs. Kelvin). Their sum should be robust to this (if the volume of the region isn’t changing).

1 Like

Hi Ryan,
Thanks a lot for the explanation!

I am doing the analysis over a fixed volume (0-100 m). Ultimately, I am calculating the convergence of the Xadv, Yadv and Zadv , which in turn result in changes in the temperature.

Also just curious, are the challenges for the MLD heat budget related to the calculation of lateral induction in the Entrainment term?

1 Like

Sounds good. Hopefully you can work something out.

The main issue I think is properly capturing correlations between variations in mixed layer depth and variations in heat budget terms. Entrainment can be computed by residual if you have everything else.

1 Like

Hi Sougata,
I’ve done some calculations of the heat advection terms in the IAF runs before using monthly means (which is what you want to do as I understand). I have also checked the results compared to the online calculated heat budget output diagnostics, and the difference is within acceptable range for our purpose. I believe this will be very much dependent on what you’re interested in. I was looking at sub-surface heat content changes in the Antarctic shelf seas, so quite different from you but could still be helpful.
Let me know if you want to have a chat about this.

1 Like