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.
#2570 (compatibility between isf and tramle) – NEMO

Opened 4 years ago

Last modified 4 years ago

#2570 new Defect

compatibility between isf and tramle

Reported by: mathiot Owned by: systeam
Priority: low Milestone:
Component: TRA Version: v4.0.*
Severity: minor Keywords: ISF
Cc:

Description

Context

After testing eORCA1 with tramle activated and , I found it more instable. By looking at the code, I am not convinced at all, tramle.F90 is compatible with ice shelf cavities.

Analysis

  • nlb10 is computed like this:
    !                                ! deepest/shallowest W level Above/Below ~10m
    !!gm BUG in s-coordinate this does not work!
          zrefdep = 10._wp - 0.1_wp * MINVAL( e3w_1d )                   ! ref. depth with tolerance (10% of minimum layer thickness)
          nlb10 = MINLOC( gdepw_1d, mask = gdepw_1d > zrefdep, dim = 1 ) ! shallowest W level Below ~10m
          nla10 = nlb10 - 1                                              ! deepest    W level Above ~10m
    !!gm end bug
    
  • With this definition of nla10, this definition of mld used for MLE under an ice shelf does not make sense to me (because rhop(ji,jj,nla10) is on land):
          !                                      !==  MLD used for MLE  ==!
          !                                                ! compute from the 10m density to deal with the diurnal cycle
          inml_mle(:,:) = mbkt(:,:) + 1                    ! init. to number of ocean w-level (T-level + 1)
          IF ( nla10 > 0 ) THEN                            ! avoid case where first level is thicker than 10m
             DO jk = jpkm1, nlb10, -1                      ! from the bottom to nlb10 (10m)
                DO jj = 1, jpj
                   DO ji = 1, jpi                          ! index of the w-level at the ML based
                      IF( rhop(ji,jj,jk) > rhop(ji,jj,nla10) + rn_rho_c_mle )   inml_mle(ji,jj) = jk      ! Mixed layer
                   END DO
                END DO
             END DO
          ENDIF
          ikmax = MIN( MAXVAL( inml_mle(:,:) ), jpkm1 )                  ! max level of the computation
    
  • Based on the name of the variables, I am not sure if the masking is right, should it be uwmask instead of umask ?
                   zpsi_uw(ji,jj,jk) = zpsim_u(ji,jj) * zmuw * umask(ji,jj,jk)
                   zpsi_vw(ji,jj,jk) = zpsim_v(ji,jj) * zmvw * vmask(ji,jj,jk)
    
  • There is also some gdepw here and there in tramle, are they adapted under an isf (with respect to the definition of the mld under an isf) ?.
  • it affects NEMO4 and trunk

Recommendation

  • advices are needed from someone who know this part of code.
  • as a temporary fix before it is fixed, probably this should do the job: multiply zpsi_u/vw by u/vmask(:,:,1) should do the trick to set it to 0 inside a cavity.

Commit History (2)

ChangesetAuthorTimeChangeLog
14211mathiot2020-12-18T11:04:16+01:00

ticket #2570: switch off tramle under isf until tramle is compatible with isf cavities (SETTE results unchanged)

14210mathiot2020-12-18T11:03:04+01:00

ticket #2570: switch off tramle under isf until tramle is compatible with isf cavities (SETTE results unchanged)

Change History (3)

comment:1 Changed 4 years ago by nemo

  • Version changed from v4.0 to v4.0.*

comment:2 Changed 4 years ago by mathiot

In 14210:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found

comment:3 Changed 4 years ago by mathiot

In 14211:

Error: Failed to load processor CommitTicketReference
No macro or processor named 'CommitTicketReference' found
Note: See TracTickets for help on using tickets.