New URL for NEMO forge!   http://forge.nemo-ocean.eu

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.
#2738 (mass of the ice+ocean system depends on the init of ice) – NEMO

Opened 7 months ago

Closed 7 months ago

#2738 closed Defect (duplicate)

mass of the ice+ocean system depends on the init of ice

Reported by: clem Owned by: systeam
Priority: normal Milestone:
Component: SI3 Version: v4.0.*
Severity: minor Keywords:
Cc:

Description

Analysis

The mass of the "ocean + ice" system depends on the initialization of the ice cover. I think it should not. For instance, a simulation initialized with 1m of ice contains less mass than a simulation initialized with 2m of ice. This solely concerns levitating sea ice (the default). For embedded sea ice, ssh is depleted below the ice cover.
This dependency problem has already been raised in ticket #2487 but not yet adressed.

Recommendation

For embedded sea ice, the ssh is depleted below the ice cover so that the mass of the "ocean+ice" system does not depend on the ice initialization.

I propose to do similar thing for levitating sea ice, except that the depletion is spread over the whole basin (including ice shelves). Here is the new piece of code I adapted from Simon to be added in iceistate.F90 (note that a special treatment for agrif is necessary):

      IF( ln_ice_embd ) THEN            ! embedded sea-ice: deplete the initial ssh below sea-ice area
         !                              ! ----------------
         ssh(:,:,Kmm) = ssh(:,:,Kmm) - snwice_mass(:,:) * r1_rho0
         ssh(:,:,Kbb) = ssh(:,:,Kbb) - snwice_mass(:,:) * r1_rho0
         !
      ELSE                              ! levitating sea-ice: deplete the initial ssh over the whole domain
         !                              ! ------------------
         area    = glob_sum( 'iceistate', e1e2t(:,:) * ssmask(:,:) )
         zsshadj = glob_sum( 'iceistate', snwice_mass(:,:) * r1_rho0 * e1e2t(:,:) ) / area
#if defined key_agrif
         ! Override ssh adjustment in nested domains by the root-domain ssh adjustment;
         ! store the adjustment value in a global module variable to make it retrievable in nested domains
         IF( .NOT.Agrif_Root() ) THEN
            zsshadj = Agrif_Parent(rsshadj)
         ELSE
            rsshadj = zsshadj
         ENDIF
#endif
         IF(lwp) WRITE(numout,'(A23,F10.6,A20)') ' sea level adjusted by ', -zsshadj, ' m to compensate for'
         IF(lwp) WRITE(numout,*) ' the initial snow+ice mass'
         !
         WHERE( ssmask(:,:) == 1._wp )
            ssh(:,:,Kmm) = ssh(:,:,Kmm) - zsshadj
            ssh(:,:,Kbb) = ssh(:,:,Kbb) - zsshadj
         ENDWHERE
         !
      ENDIF

This change at the init makes the ssh to drop globally of about 10cm, but simulations with and without are very similar, though I do not have a simulation with open ice shelf cavities to test it. Of course, sette tests are fine.
I think it needs to be implemented in both 4.0-HEAD and the trunk but I need the agreement of the system team before moving forward

Commit History (0)

(No commits)

Change History (1)

comment:1 Changed 7 months ago by clem

  • Resolution set to duplicate
  • Status changed from new to closed
Note: See TracTickets for help on using tickets.