Opened 3 years ago

Closed 3 years ago

#1813 closed Bug (fixed)

north fold (MPP case) of I-point with F-pivot fails (e.g. ORCA05 + LIM2_VP)

Reported by: mscheinert Owned by: nemo
Priority: normal Milestone:
Component: OCE Version: release-3.6
Severity: Keywords: NP_folding
Cc:

Description

Context

Sea ice fields in ORCA05 with LIM2_VP show corrupted values along the north fold. It is clearly visible, for example, in the sea ice velocity.

Analysis

ORCA05 uses a F-pivot (jperio=6) and LIM2_VP sea ice velocity points reside on the I-grid.

Routine mpp_lbc_nfd_2d() in lbcnfd.F90 uses the wrong table (pt2dr(ji,ijpjm1)) to interpolate the I-point on the F-folding line:

SUBROUTINE mpp_lbc_nfd_2d( pt2dl, pt2dr, cd_type, psgn )
!...
      SELECT CASE ( npolj )
      !...
      CASE ( 5, 6 )                        ! *  North fold  F-point pivot
          SELECT CASE ( cd_type )
          !...
          CASE ( 'I' )                                  ! ice U-V point (I-point)
              DO ji = startloop , endloop
                  ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4
                  pt2dl(ji,ijpj)= 0.5 * (pt2dr(ji,ijpjm1) + psgn * pt2dr(ijt,ijpjm1))    ! <------- BUG
               END DO
          !...

Fix

The local table pt2dl(ji,ijpjm1) should be used in mpp_lbc_nfd_2d() in this case:

                  pt2dl(ji,ijpj)= 0.5 * (pt2dl(ji,ijpjm1) + psgn * pt2dr(ijt,ijpjm1))    ! <------- FIX

Commit History (2)

ChangesetAuthorTimeChangeLog
7475mocavero2016-12-07T23:47:06+01:00

fix for ticket #1813

7474mocavero2016-12-07T22:52:53+01:00

fix for ticket #1813

Change History (1)

comment:1 Changed 3 years ago by mocavero

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

In revision 7474:

the table has been changed from the remote (pt2tr) to the local (pt2tl) one, in the following cases:

SUBROUTINE mpp_lbc_nfd_2d( pt2dl, pt2dr, cd_type, psgn )
!…
      CASE ( 3, 4 )                       ! *  North fold  T-point pivot
         !
         SELECT CASE ( cd_type )
         !…
         CASE ( 'J' )                                     ! first ice U-V point
            IF (nimpp .ne. 1) THEN
               startloop = 1
            ELSE
               startloop = 3
               pt2dl(2,ijpj) = psgn * pt2dl(3,ijpjm1)
            ENDIF
        !…
         CASE ( 'K' )                                     ! second ice U-V point
            IF (nimpp .ne. 1) THEN
               startloop = 1
            ELSE
               startloop = 3
               pt2dl(2,ijpj) = psgn * pt2dl(3,ijpjm1)
            ENDIF
        !…

      CASE ( 5, 6 )                        ! *  North fold  F-point pivot
         !
         SELECT CASE ( cd_type )
         !…
         CASE ( 'I' )                                  ! ice U-V point (I-point)
         !…
               DO ji = startloop , endloop
                  ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4
                  pt2dl(ji,ijpj)= 0.5 * (pt2dl(ji,ijpjm1) + psgn * pt2dr(ijt,ijpjm1))
               END DO
         CASE ( 'J' )                                  ! first ice U-V point
         !…
               DO ji = startloop , endloop
                  ijt = jpiglo - ji - nimpp - nfiimpp(isendto(1),jpnj) + 4
                  pt2dl(ji,ijpj) = pt2dl(ji,ijpjm1)
               END DO
         !…

Note: See TracTickets for help on using tickets.