Opened 3 years ago

Last modified 5 days ago

#1900 assigned Feature request

Considering ocean column properties in NEMO-ICB module

Reported by: nacho Owned by: mathiot
Priority: low Milestone:
Component: OCE Version: trunk
Severity: minor Keywords: NEMO ICB
Cc: gm, pierre.mathiot@… Review: pending
MP ready?: no
Progress:

Description

Proposed modifications consists in considering the ocean column properties in the dynamics and thermodynamics parametrizations of the NEMO-ICB module:
1- In the computation of the ocean drag term for the iceberg dynamics equation we propose the use of the depth-integrated ocean velocity as described in equation 2.1 of Merino et al 2016, instead of considering the ocean surface velocity. In the situation where the submerged part of an iceberg is greater than the ocean bathymetry, the integrated velocity considers zero velocity for the part of the iceberg which is deeper than the ocean bathymetry. This parametrization has the effect of reducing the iceberg velocity when icebergs transit through shallow regions of the ocean. We have chosen not to stop or stuck icebergs in such situation since this has a strong impact in the iceberg distribution and it would require a representation of subgrid bathymetry. 
2- For the computation of the basal turbulence melt rate term, we propose to consider the ocean temperature at the iceberg depth (equation 2.2 in Merino et al 2016) instead of the sea surface temperature. In cases where the submerged part of the iceberg is greater than the ocean bathymetry we propose to consider the ocean temperature at the ocean bathymetry depth. 
3- For the buoyant convection term, we propose to integrate this term along the submerged part of the iceberg (equation 2.3 of Merino et al 2016), instead of only consider the ocean surface temperature. In cases where the submerged part of the iceberg is greater than the ocean bathymetry, the ocean temperature considered in the integral for the part of the iceberg which is found deeper than the ocean bathymetry (no temperature is defined deeper than the ocean bathymetry) is the temperature of the ocean at the bathymetry depth.

Commit History (1)

ChangesetAuthorTimeChangeLog
13277mathiot2020-07-09T09:50:25+02:00

ticket #1900: start dev branch for ticket 1900 (copy of the preparatory work done in tickets_2494_2375)

Attachments (1)

ICB.tgz (60.5 KB) - added by nacho 3 years ago.
ICB module with proposed modifications In line with NEMO_3.6_STABLE. (rev 7843)

Download all attachments as: .zip

Change History (8)

Changed 3 years ago by nacho

ICB module with proposed modifications In line with NEMO_3.6_STABLE. (rev 7843)

comment:1 Changed 3 years ago by gm

  • Owner changed from nemo to gm

Thanks Nacho to return back to the system this nice and very useful development.
I will add it to the next NEMO version

gurvan

comment:2 Changed 3 years ago by clevy

  • Cc gm added
  • Status changed from new to assigned

comment:3 Changed 3 years ago by gm

  • Milestone 2015 nemo_v3_6_STABLE deleted
  • Version changed from release-3.6 to trunk

comment:4 Changed 4 months ago by clevy

  • Severity set to minor
  • Type changed from Enhancement to Feature request

comment:5 Changed 3 weeks ago by mathiot

  • Cc pierre.mathiot@… added
  • MP ready? set to no
  • Review set to pending

Gurvan did you make any progress on it (comment 2, 3 years ago) ?

  • If yes, I am looking at it to port it to version 4.0.X. I am happy to start from Nacho tarball but if you started something it could spare me some time.
  • If no, do you want to be previewer and reviewer ? If no (because lack of time or other), don't worry, I will ask the Met Office (Dave or Amy) or MEOM (Jean-Marc) as they are also interested in it, simply tell me if you want to be kept in touch of the dev process (email exchange and other with the MetO) ?

comment:6 Changed 5 days ago by mathiot

  • Owner changed from gm to mathiot

Suggested implementation:

  • start from the branch tickets_2494_2375 which simplify icbutl (weights computed only once per time step, less lbclnk, …)

For point 2 (basal melt):
==================
Nacho implemented it by adding a subroutine icb_utl_basalMelting in icbutl (here the core of it):

       zU(1:jpi,1:jpj)    = un(:,:,kLevels)
       zuvel              = icb_utl_bilin_h( zU, pi, pj, 'U' )
       zV(1:jpi,1:jpj)    = vn(:,:,kLevels)
       zvvel              = icb_utl_bilin_h( zV, pi, pj, 'V' )
       ztemp(1:jpi,1:jpj) = tsn(:,:,kLevels,1)
       zt                 = icb_utl_bilin_h( ztemp, pi, pj, 'T' )

       zdvo = SQRT( (pu-zuvel)**2 + (pv-zvvel)**2 )
       pmvo = MAX( 0.58*(zdvo**0.8)*(zt+4.0)/(pL**0.2)  , 0._wp ) * z1_rday

I suggest to keep the melt computation in icbthm (zdvo and pmvo) and compute only tob, uob and vob at the icb position in icbinterp ⇒ should not change the results

For point 3 (lateral melt):
==================
Nacho implemented it by adding a subroutine icb_utl_buoyantConvectionMelt in icbutl (here the core of it):

    DO jk=1,kLevels
       IF (jk  >  ibathy) THEN
          ilevel = ibathy
       ELSE
          ilevel = jk
       ENDIF
       ztemp(1:jpi,1:jpj) = tsn(:,:,ilevel,1)
       zt                 = icb_utl_bilin_h( ztemp, pi, pj, 'T' )
       zmv                = MAX( 7.62e-3*zt+1.29e-3*(zt**2)            , 0._wp ) * z1_rday
       pmvo               = pmvo + zmv*fse3t(mi1(pi),mj1(pj),ilevel)
       zmetric            = zmetric + fse3t(mi1(pi),mj1(pj),ilevel)
    END DO

As in point 2, I suggest to keep the melt computation in icbthm and only compute in icbinterp tlat(1:jkmax for icb). There are 3d initialization of temp for each icb. I suggest, to do it once between level 1:jkmax(ie jk at 250m) to define toce_e and use toce_e for each iceberg for the computation of tlat(1:jkmax) using an interface icb_bilin_h to manage 2d and 3d interpolation. Obviously this 3d toce_e could be used for point 2. ⇒ should not change the results.

For point 1 (verticals integration of velocity)
================================
Nacho implement it like this:

    DO jk=1,kLevels
       zvelU(1:jpi,1:jpj) = un(:,:,jk)
       zu                 = icb_utl_bilin_h( zvelU, pi, pj, 'T' )
       zvelV(1:jpi,1:jpj) = vn(:,:,jk)
       zv                 = icb_utl_bilin_h( zvelV, pi, pj, 'T' )
       puo                = puo + zu*fse3t(mi1(pi),mj1(pj),jk)
       pvo                = pvo + zv*fse3t(mi1(pi),mj1(pj),jk)
       zmetric            = zmetric + fse3t(mi1(pi),mj1(pj),jk)
    END DO

    puo = puo / zmetric
    pvo = pvo / zmetric

As in point 3, there is some 3d initialization (zvelU, zvelV) and this is done for each ice shelf. I suggest to define as for point 3, uoce_e and voce_e as 3d array (vertical dim 1:jkmax (ie jk at 250m)) once for all and use this one for each icebergs. The interpolation being done with the interface build for point 1. Obviously voce_e and uoce_e could be used for point2. ⇒ should preserve results.

This will decrease a lot the copy of array, keep melt in icbthm.

In the mean time:

  • lbc_lnk will be added as I suspect a reproducibility issue in point1 as value on the halo is not defined. ⇒ will change results and be done at the end
  • mi1(pi) looks weird to me as pi is a REAL. Fixing this could change results
  • effect of bathymetry will be added as is, even if I am not convince at all (for me we should deal with it the same way we deal with the coastline, ie if draft deeper than bathy, the icb will only move along the isobath or toward deeper ocean, not through the shallow bank).


comment:7 Changed 5 days ago by mathiot

In 13277:

ticket #1900: start dev branch for ticket 1900 (copy of the preparatory work done in tickets_2494_2375)

Note: See TracTickets for help on using tickets.