New URL for NEMO forge!

Since March 2022 along with NEMO 4.2 release, the code development moved to a self-hosted GitLab.
This present forge is now archived and remained online for history.
#662 (Improving sbccpl to cope with multiple ice categories) – NEMO

Opened 14 years ago

Closed 12 years ago

Last modified 22 months ago

#662 closed Task (fixed)

Improving sbccpl to cope with multiple ice categories

Reported by: charris Owned by: charris
Priority: normal Milestone:
Component: OCE Version: v3.3
Severity: Keywords: 2011 Misc. v3.3
Cc: smasson


Currently sbccpl will only work properly if there is a single ice category (as for LIM2). For LIM3 and CICE several of the fields (both sent and received) may have a number of categories - usually 5 but not necessarily. We need to allow the pointer structure for sending and receiving data to cope with this possibility without using unnecesarily large arrays when running with single category ice.

This follows on from some work in #436 and #444.

Commit History (17)


#662 Additional documentation.


#662 Minor additions to documentation for CICE.


#662 Changes to header information + more namelists updated.


#662 Minor change to CICE interface code, plus more careful checking for options not currently available with CICE.


#662 Bibliography reference for CICE.


#662 Updated documentation for sbccpl.


#662 Updated namelists for documentation.


#662 Documentation for running with CICE.


#662 Changes to complement those in [2884] to allow NEMO-CICE model to compile OK.


#662 Tidying + changes to make sure NEMO-CICE model will compile OK.


#662 Tidying of sbc_cpl_ice_flx (mainly related to LIM2). There is still scope for cleaning up the use of ice fraction and lead fraction in the sbccpl routines, but best to wait until the LIM3 functionality is properly sorted.


#662 Latest code changes for sbccpl. These include bug-fixes, control of topmelt and botmelt coupling fields for running CICE with the UM, some more steps towards being able to run with multiple categories for LIM3 and a change in the arguments passed to sbc_cpl_ice_flx.


#662 Fix to ordering of ice and snow thickness fields.


#662 First set of changes - more details in ticket.


#662 Before major changes started, add bug-fix to index in ice stress rotation code and turn off setting of ln_rnf since this needs to be true to allow special treatment at river mouths.


Create a branch for work on UKMO8/LOCEAN2, details in ticket #662


First set of changes in prepration for multi-category ice fields, see ticket #662

Change History (16)

comment:1 Changed 12 years ago by charris

  • Milestone changed from 2010 Stream 0: Coastal ocean ready to 2011 Stream 2: Developer Interface
  • Owner changed from NEMO team to charris
  • Version changed from v3.2 to v3.3

Updating ticket for 2011 work on UKMO8 and LOCEAN2.

comment:2 Changed 12 years ago by charris

First set of code changes added in [2813]. These include

  1. Changes to namsbc_cpl structure (largely as in [2063])
  2. Introduction of a category option (currently only available for the send fields and only as 'yes' or 'no' - if the set as 'no' but running with multi-category sea-ice then quantities will be meaned
  3. sbccpl and cpl_oasis3 modified so that any looping through sea-ice categories can be done in cpl_oasis3 and hidden from sbccpl.

Comments / questions for Sebastien:

  1. What I had already done for setting the namcouple names is roughly what you said in your e-mail but needs a bit of tweaking to deal with more than 9 categories etc in the way you suggest (currently things in cpl_oasis3 are hard-coded to limit to no more than 9 but this could easily be changed)
  2. We had previously discussed whether to have 2D and 3D arrays within the frcv derived type but I went with just 3D basically because I couldn't find a clean way of being able to call cpl_prism_rcv with either a 2D or 3D array and it didn't seem worth having 2D arrays if I was forced to reshape them anyway.
  3. I had hoped to be able to have a_i, ht_i and hs_i as 3D pointers which would be allocated for LIM3 / CICE and pointed at existing 2D arrays (like fr_i and hsnif / hicif) in the climatological ice / LIM2 cases. However unless you know different it doesn't seem possible to map 2D arrays to 3D pointers as far as I can tell so I've add to allocated the 3D arrays in all cases.
  4. The setting of wndm and atm_co2 probably shouldn't be in the IF( k_ice <= 1 ) loop (this is inherited from the original code). Could you clarify this?
  5. I guess kinfo in cpl_oasis3 should really be a multi-category array but can probably get away with leaving as it is for the moment
  6. The use of TRIM in sbccpl is a bit inconsistent at the moment - not quite sure whether it is really required or not?

The big thing now is how to deal with the received fields and requirements for LIM3 and CICE:

  1. I'm not sure about the current rcv_ice_flx routines. Can we get away with not having to use arguments in the calls by just having declaring unallocated arrays for LIM2 / no-ice?
  2. These routines aren't particularly flexible because without making big changes to the CICE code, I need to have access to snow, total precip, emp, sublimation etc separately to pass from NEMO to CICE rather than just predetermined things like emp_tot and emp_ice.
  3. CICE also requires some extra heat-fluxes (topmelt and botmelt) from the atmosphere which need setting somewhere.

What are your thoughts on the best way to proceed here?

comment:3 Changed 12 years ago by charris

Latest changes in [2832].

comment:4 Changed 12 years ago by charris

Latest changes to sbccpl branch in [2834]. These are mainly tidying or, as agreed with Sebastien, relate to change of use of sprecip / snow for LIM2 to make code more transparent. is now also available which contains the code changes for actually coupling NEMO to CICE (with key_cice). The majority of the code changes are in the new sbcice_cice.F90 module but there are inevitably minor changes in a few other routines (some details of the various changes are described in [2874]).

The dev_r2802_UKMO8_cice branch can be used independently of the dev_r2802_UKMO8_sbccpl branch for running forced NEMO-CICE, or in combination with the sbccpl branch for running fully coupled UM-NEMO-CICE (e.g. HadGEM3-A0). The dev_r2802_UKMO8_sbccpl branch can be used without the dev_r2802_UKMO8_cice branch when not using key_cice. Both branches together compile with key_cice, key_lim2, key_lim3 and without any ice model cpp key.

Priority now is for testing in a coupled model using LIM2...

comment:5 Changed 12 years ago by charris

Adding some further details in wiki:/ticket/662?.

comment:6 Changed 12 years ago by charris

  • Resolution set to fixed
  • Status changed from new to closed

Sebastien has now tested this code in NEMO-LIM2 and ECHAM (see comments in wiki:/ticket/662?) and approved code for 3.4.

comment:7 Changed 7 years ago by nicolasmartin

  • Keywords 2011 Developer Interface Stream added

comment:8 Changed 7 years ago by nicolasmartin

  • Keywords interfaces added; Interface removed

comment:9 Changed 7 years ago by nicolasmartin

  • Keywords Developer removed

comment:10 Changed 7 years ago by nicolasmartin

  • Keywords nemo_v3_3* added

comment:11 Changed 7 years ago by nicolasmartin

  • Milestone 2011 Stream 2: Developer Interface deleted

Milestone 2011 Stream 2: Developer Interface deleted

comment:12 Changed 7 years ago by nicolasmartin

  • Keywords interfaces added; UI removed

comment:13 Changed 7 years ago by nicolasmartin

  • Keywords interfaces removed

comment:14 Changed 6 years ago by nemo

  • Type changed from Development to Task

Remove 'Development' type

comment:15 Changed 6 years ago by nemo

  • Keywords nemo_v3_3* removed

comment:16 Changed 22 months ago by nemo

  • Keywords Misc. v3.3 added; nemo_v3_3* removed
Note: See TracTickets for help on using tickets.