I am using NEMOv4.0.4 and I am trying to output the zonally and depth integrated poleward heat transport, i.e. the variable called
sophtvtr and also
sopht_vt_bsn in case it is split per basin.
NEMO is producing an output with the expected dimensions, yet the output does not make sense to me. It is showing only positive values from the South to the North Pole:
Actually, looking at the code (routine
dia_ptr_hst in diaptr.F90) it seems that the temperature is never multiplied by the meridional current. And I am able to reproduce similar results by computing offline from monthly outputs the following: thetao * rho * Cp * e1v * e3v, which after integration over longitudes and depths gives:
I haven’t checked whether this problem still exists in NEMO4.2.
Vladimir here. I think it would be informative to add that we will try to correct the subroutine calculating
sophtvtr and test it. And everyone will be welcome to review it and, potentially, add it as an official bug-fix to nemo4.
Yohan and I have investigated this issue with heat/salt transport. We found out that it was the refactoring/merging the functionality of diaptr.F90 and diaprod.F90 of nemo3.6 into diaptr.F90 nemo4 resulted in this erroneous behaviour (nemo4 no longer has diaprod.F90). When nemo4 computes
sophtvtr multiplication by
vn is missing in (in nemo3.6 it happens inside
SUBROUTINE dia_prod). As the result,
sophtvtr has the wrong shape and range, as plotted by Yohan above, and is erroneous.
Adding the missing multiplication by y-velocities allowed us to obtain the expected result for global OHT. We are getting a reasonable range from -0.5PW to 1.5PW and okay shape.
I would like also to note, that other variables “of the same kind” can have the same problem. E.g. in diaprod.F90 there are also calculations of various transports where multiplication by
wn is applied. One has to check that those calculations have been ported accurately to diaptr.F90 in nemo4.