[v4.0.x] Closing freshwater budget (ocean + sea ice)

Dear All,

I am trying to do a total budget of volume and freshwater in a closed area in the Arctic. So basically to do that I need to compute horizontal fluxes of volume and salt in the ocean AND in Sea ice.
First I would like to know if this is possible using Nemo4.0.4 with SI³, meaning that if I convert the horizontal sea ice mass flux (that is in kg/s) by simply dividing by 1000 to transform it into a water volume flux, am I supposed to be able to close the total water volume budget ? Meaning, is the mass of sea ice taken away from the ocean when it creates and put back when it melts ?
Then there is the salt flux, I used the horizontal sea ice mass computation output and multiplied it by the local sea ice salinity simply, to compute the horizontal sea ice salt flux.
At the end I have a result that I find a bit too high, meaning that the shelf from the Barents Sea Opening to the Eastern Siberian Peninsula sends about 1.e5 m³/s of freshwater to the centre of the Arctic if sea ice fluxes are considered, vs. 0.6e5 m³/s of freshwater if sea ice fluxes are not considered.

Thanks for your help,


Hi Robinson,

I’ve tried doing similar things in the past and found it challenging. I couldn’t manage to properly close the budget. Regarding your question on sea ice – ocean mass exchange, I’d assume “yes”, but I’d use the reference density (1026 kg/m3) to get an equivalent sea water volume estimate. IMO it’s also important to account for surface freshwater sources (precipitations, evaporation, sublimation), and other additional freshwater sources (runoffs, icebergs, calvings, etc.).

Also, try using diagnostic fields that are defined as standard NEMO outputs for transport, as much as possible, instead of computing heat/volume/salt transport from combining outputted fields. Unless you use timestep-per-timestep outputs, the latter will lead to aliasing errors resulting from time averaging. Instead, you’re probably better off relying on the “transport” diagnostics pre-defined in the field_def.xml files. They will be assessed at each time step, and then averaged, which is OK. I think most of what you’re looking for is available, maybe at the exception of salt advection through sea ice, and then there might an extra trick with the thickness categories in there…?

If you use VVL/QCO, you must also take the varying vertical factors (e3t, e3u, e3v) into account. It might be a good idea to use XIOS to get vertically integrated diagnostics accounting for these.

Sorry about just giving ideas and no clear, definitive answer. I think it’s a quite challenging problem, and am curious about whether getting a clear budget is possible. Let me know if this helps or if clarifications are needed.

Bonjour Charles,

Thanks for the detailed reply. Meanwhile I figured out one needs to divide by 1026 and not 1000, and also I use standard NEMO outputs, except that I created one to compute horizontal salt fluxes in the sea ice (based on the mass transport by sea ice, simply multiplied by sm_i, the sea ice mean salinity). Fluxes are outputted directly via the xml structure, so each flux is computed for each time step, and then averaged, so it should conserve things. That is my experience, even with vvl.
With a closed basin, the freshwater flux average over a time period long enough should equal Runoff+P-E basically, but also simply the volume flux since a closed basin cannot accumulate salt.
The results I get are not absurd, but a bit surprising still I believe, rather on the high side…

Thanks for your help,

Oh OK, my bad then! I have a question - how do you implement the summed ocean transports within the XML file? Is this fine?

    <field id="thetao_uocetr_vsum"   long_name="ocean temperature transport along i-axis  summed on the vertical"         field_ref="toce"       unit="degC*m2/s"> this * uoce_e3u_vsum  </field>

(which can then be multiplied by e2u to get degC*m3/s).

And one more about salt - do you use 1026 as a constant sea water density for converting from volume to mass (to eventually get an integral transport in kg[salt] s-1). If so, in your experience, is that fine?

Bonjour Charles,

I guess your mention of “sum” refers to spatial integration. I never do that online, I have python tools (that I am happy to share although they are not super clean) to compute fluxes along any cross section between 2 points of the grid (does not need to follow i or j axis). I simply output fluxes such as
uocetr_eff, u_heattr, u_salttr in 3D and then I let my python stuff do the flux computation for a given cross section. If I consider sea ice, I proceed the same way for sea ice horizontal fluxes, and then add the sea ice flux converted into volume flow to the top layer.
For the liquid part, I am quite confident this works, I do not need any reference density in this case. But if I consider the sea ice part, and since sea ice fluxes are in kg/s then I divide by 1026 to convert them into volume fluxes indeed. But once again, do take everything I mention with a pinch of salt (ah ah) for sea ice fluxes, because on this part I’m not super confident yet.

I don’t know if it answers your question,


here is a small doc to help with budgets. Nemo 4.0.4 does not close the budgets exactly because of some remaining bugs but nemo4.0.7 (or nemo4.0-head) does.

Merci Clément,

But right now I can live with a bug if the error is not so important. At least I need to know if my reasoning makes sense… I will check with the total P-E+R on my area of concern if it fits or if I’m totally out.

Thanks to both of you!