Opened 4 months ago

Last modified 3 months ago

#2570 new Defect

compatibility between isf and tramle

Reported by: mathiot Owned by: systeam
Priority: low Milestone:
Component: TRA Version: 4.0-HEAD
Severity: minor Keywords: ISF
Cc: Branch review: failed
MP ready?: no Task progress: Unspecified

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 3 months ago by nemo

  • Version changed from release-4.0 to 4.0-HEAD

comment:2 Changed 3 months ago by mathiot

In 14210:

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

comment:3 Changed 3 months ago by mathiot

In 14211:

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

Note: See TracTickets for help on using tickets.