Opened 19 months ago

Last modified 7 days ago

#1688 new Task

Missing diagnostics for CMIP6

Reported by: Tim Graham Owned by: shaconemo
Priority: minor Milestone:
Component: OPA Version: nemo_v3_6_STABLE
Keywords: Cc:



As discussed in the ST video conference last week I think there are some diagnostics missing from nemo_v3_6_STABLE that are required for CMPI6


After looking through the OMIP requirements document I think the following are missing:
1) Correct definitions of basins as described in section 4.6 of the document

2) Dynamic SSH (I think we could do this in XIOS).

3) Area averaged SST & SSS (This would be very easy but I can't see it in the code anywhere)

4) Squared ocean buoyancy frequency (just requires an extra iom_put call).

5) Quasi-barotropic streamfunction

6) Meridional depth-mass and depth-density streamfunction for each of Indo-Pacific, Atlantic-Arctic and Global Ocean. Ideally these should be done using zig-zag lines along the grid to approximate lines of latitude as well as calculating it on the native grid.

7) As for number 6 from sub-gridscale processes

8) Heat & Salt transports from Gyres, Overturning, mesoscale ddvection, diffusion for each basin

9) Mass transports through straits?

10) Trend diagnostics to be converted to W/m2 using XIOS.

11) Rate of work against stratification

12) EKE from mesoscale parameterization


I'm happy to be corrected if these are in the code already.

Commit History (1)


Add an ideal tracer age as a permanent module in TOP, see ticket #1688

Change History (10)

comment:1 Changed 19 months ago by Tim Graham

A couple of extra diagnostics that I missed:

13) Ideal age tracer

14) Heat flux in x direction and y direction as 3D fields (we have model code to do this and could add it to nemo_v3_6_STABLE if required.

comment:2 Changed 18 months ago by Tim Graham

Branch created for these:

Heat transports from advection and diffusion for each basin added to branch at r6433

comment:3 Changed 18 months ago by Tim Graham

Added dynamic SSH and squared buoyancy frequency at r6435.

comment:4 Changed 18 months ago by Tim Graham

Correction for dynamic SSH at r6437

comment:5 Changed 16 months ago by Tim Graham

An update on progress with this:

I have been focussing on preparing diagnostics for HighResMIP as we plan to run this very soon. At r6535 of my branch I added the following:

  • vertical integral of zonal mass transport added in diawri. This can be used offline to calculate the quasi-barotropic streamfunction.
  • Added a function to iom.F90 to automatically choose an ocean point for the 1_point group to output scalars in XIOS
  • Added the heat flux from runoff into sbccpl (this was already in field_def so perhaps it was accidentally deleted?)
  • Corrections to units, long names and standard_names in field_def.xml

I'm currently testing code from Andrew for an ideal age tracer. This is being added in the MY_TRC module. Do we want to add this as a permanent module instead of putting it in MY_TRC?

At the Met Office we don't think we will be able to calculate overturning, heat and salt transports as true northward transports in time so we will probably just do these on the native grid unless anyone else has time to write the code for this.

comment:6 Changed 16 months ago by Tomas Lovato

Just a note on the heat flux from runoff.
The output of this term was already reinstated in both nemo3.6_stable and trunk as described in ticket #1650.

I think it could be useful to save also the geothermal heat flux
in order to have all data needed for the Boundary heat fluxes computations in one place,
This is appears to me needed also because in the shaconemo configuration
this forcing is being interpolated on the fly from the regular grid dataset.

According to the OMIP protocol, the variable should be
CMOR name: hfgeou
CF name :upward_geothermal_heat_flux_at_sea_floor,
units: W/m2

In addition it is possible to get rid of the lbc_lnk call in the trabbc routine by changing the loop indexes,
as proposed in the following

       !                             !  Add the geothermal heat flux trend on temperature
-      DO jj = 2, jpjm1
-         DO ji = 2, jpim1
+      DO jj = 1, jpj
+         DO ji = 1, jpi
             ik = mbkt(ji,jj)
             zqgh_trd = qgh_trd0(ji,jj) / fse3t(ji,jj,ik)
             tsa(ji,jj,ik,jp_tem) = tsa(ji,jj,ik,jp_tem) + zqgh_trd
          END DO
       END DO
-      CALL lbc_lnk( tsa(:,:,:,jp_tem) , 'T', 1. )
-      !
       IF( l_trdtra ) THEN        ! Save the geothermal heat flux trend for diagnostics
          ztrdt(:,:,:) = tsa(:,:,:,jp_tem) - ztrdt(:,:,:)
          CALL trd_tra( kt, 'TRA', jp_tem, jptra_bbc, ztrdt )
          CALL wrk_dealloc( jpi, jpj, jpk, ztrdt )
+      IF( iom_use('hfgeou') )  CALL iom_put( 'hfgeou', qgh_trd0 )
+      !
       IF(ln_ctl)   CALL prt_ctl( tab3d_1=tsa(:,:,:,jp_tem), clinfo1=' bbc  - Ta: ', mask1=tmask, clinfo3='tra-ta' )
       IF( nn_timing == 1 )  CALL timing_stop('tra_bbc')

comment:7 Changed 16 months ago by Christian Ethe

For the age tracer, the best is to create a new sub-directory in TOP_SRC and leave MY_TRC as it is now to mimic a tracer unit vector useful to check conservation.

In addition we also have an age tracer develop by George Nurser. I've planned to put it in the system for the next release, but I can do the job for the 3.6 stable ; maybe in the v3_6_extra_CMIP6_diagnostics branch ?

comment:8 Changed 16 months ago by Tim Graham

Thanks Dorotea & Christian.

Dorotea: I agree it would be good to be able to output the geothermal heat flux from the model (even if we only do it once for all of our model runs).

Christian: I think we probably have the same code for the age tracer. If you have time to add it in as a new directory in v3_6_extra_CMIP6_diagnostics then that would be really helpful.

comment:9 Changed 9 days ago by Tomas Lovato

I guess much of this activity now moved to the shaconemo repository in preparation to CMIP6.

If the tracking of issues trough this ticket got superseded by the activity on the parallel repository,
I would suggest to close the ticket and provide indication on where to find the development follow-up.

Finally, I see as a good practice that changes made in shaconemo should be back-ported
into the v3.6_stable branch to maintain a clean history of the code development
(maybe also by renaming key_diaar5 to key_diaar6!)

comment:10 Changed 7 days ago by Claire Levy

  • Owner changed from nemo to shaconemo
  • Type changed from Defect to Task
Note: See TracTickets for help on using tickets.