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.
Changeset 13899 for NEMO/branches/2020/tickets_icb_1900/src/OCE/BDY/bdyini.F90 – NEMO

Ignore:
Timestamp:
2020-11-27T17:26:33+01:00 (4 years ago)
Author:
mathiot
Message:

ticket #1900: update branch to trunk and add ICB test case

Location:
NEMO/branches/2020/tickets_icb_1900
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/tickets_icb_1900

    • Property svn:externals
      •  

        old new  
        22^/utils/build/makenemo@HEAD   makenemo 
        33^/utils/build/mk@HEAD         mk 
        4 ^/utils/tools/@HEAD           tools 
         4^/utils/tools@HEAD            tools 
        55^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
         
        88 
        99# SETTE 
        10 ^/utils/CI/sette@12931        sette 
         10^/utils/CI/sette@13559        sette 
  • NEMO/branches/2020/tickets_icb_1900/src/OCE/BDY/bdyini.F90

    r13226 r13899  
    416416               CALL iom_get( inum, jpdom_unknown, 'nbi'//cgrid(igrd), zz_read(1:nblendta(igrd,ib_bdy),:) ) 
    417417               DO ii = 1,nblendta(igrd,ib_bdy) 
    418                   nbidta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) 
     418                  nbidta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) + nn_hls 
    419419               END DO 
    420420               CALL iom_get( inum, jpdom_unknown, 'nbj'//cgrid(igrd), zz_read(1:nblendta(igrd,ib_bdy),:) ) 
    421421               DO ii = 1,nblendta(igrd,ib_bdy) 
    422                   nbjdta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) 
     422                  nbjdta(ii,igrd,ib_bdy) = NINT( zz_read(ii,1) ) + nn_hls 
    423423               END DO 
    424424               CALL iom_get( inum, jpdom_unknown, 'nbr'//cgrid(igrd), zz_read(1:nblendta(igrd,ib_bdy),:) ) 
     
    786786                  ii = idx_bdy(ib_bdy)%nbi(ib,igrd) 
    787787                  ij = idx_bdy(ib_bdy)%nbj(ib,igrd) 
    788                   IF(  mig(ii) > 2 .AND. mig(ii) < jpiglo-2 .AND. mjg(ij) > 2 .AND. mjg(ij) < jpjglo-2  ) THEN 
     788                  IF(  mig0(ii) > 2 .AND. mig0(ii) < Ni0glo-2 .AND. mjg0(ij) > 2 .AND. mjg0(ij) < Nj0glo-2  ) THEN 
    789789                     WRITE(ctmp1,*) ' Orlanski is not safe when the open boundaries are on the interior of the computational domain' 
    790790                     CALL ctl_stop( ctmp1 ) 
     
    10711071   SUBROUTINE bdy_read_seg( kb_bdy, knblendta )  
    10721072      !!---------------------------------------------------------------------- 
    1073       !!                 ***  ROUTINE bdy_coords_seg  *** 
     1073      !!                 ***  ROUTINE bdy_read_seg  *** 
    10741074      !! 
    10751075      !! ** Purpose :  build bdy coordinates with segments defined in namelist 
     
    11111111      CASE( 'N' ) 
    11121112         IF( nbdyind == -1 ) THEN  ! Automatic boundary definition: if nbdysegX = -1 
    1113             nbdyind  = jpjglo - 2  ! set boundary to whole side of model domain. 
     1113            nbdyind  = Nj0glo - 2  ! set boundary to whole side of model domain. 
    11141114            nbdybeg  = 2 
    1115             nbdyend  = jpiglo - 1 
     1115            nbdyend  = Ni0glo - 1 
    11161116         ENDIF 
    11171117         nbdysegn = nbdysegn + 1 
    11181118         npckgn(nbdysegn) = kb_bdy ! Save bdy package number 
    1119          jpjnob(nbdysegn) = nbdyind 
     1119         jpjnob(nbdysegn) = nbdyind  
    11201120         jpindt(nbdysegn) = nbdybeg 
    11211121         jpinft(nbdysegn) = nbdyend 
     
    11251125            nbdyind  = 2           ! set boundary to whole side of model domain. 
    11261126            nbdybeg  = 2 
    1127             nbdyend  = jpiglo - 1 
     1127            nbdyend  = Ni0glo - 1 
    11281128         ENDIF 
    11291129         nbdysegs = nbdysegs + 1 
     
    11351135      CASE( 'E' ) 
    11361136         IF( nbdyind == -1 ) THEN  ! Automatic boundary definition: if nbdysegX = -1 
    1137             nbdyind  = jpiglo - 2  ! set boundary to whole side of model domain. 
     1137            nbdyind  = Ni0glo - 2  ! set boundary to whole side of model domain. 
    11381138            nbdybeg  = 2 
    1139             nbdyend  = jpjglo - 1 
     1139            nbdyend  = Nj0glo - 1 
    11401140         ENDIF 
    11411141         nbdysege = nbdysege + 1  
     
    11491149            nbdyind  = 2           ! set boundary to whole side of model domain. 
    11501150            nbdybeg  = 2 
    1151             nbdyend  = jpjglo - 1 
     1151            nbdyend  = Nj0glo - 1 
    11521152         ENDIF 
    11531153         nbdysegw = nbdysegw + 1 
     
    11921192      IF(lwp) WRITE(numout,*) 'Number of north segments     : ', nbdysegn 
    11931193      IF(lwp) WRITE(numout,*) 'Number of south segments     : ', nbdysegs 
     1194      ! 
    11941195      ! 1. Check bounds 
    11951196      !---------------- 
    11961197      DO ib = 1, nbdysegn 
    11971198         IF (lwp) WRITE(numout,*) '**check north seg bounds pckg: ', npckgn(ib) 
    1198          IF ((jpjnob(ib).ge.jpjglo-1).or.&  
     1199         IF ((jpjnob(ib).ge.Nj0glo-1).or.&  
    11991200            &(jpjnob(ib).le.1))        CALL ctl_stop( 'nbdyind out of domain' ) 
    12001201         IF (jpindt(ib).ge.jpinft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 
    12011202         IF (jpindt(ib).lt.1     )     CALL ctl_stop( 'Start index out of domain' ) 
    1202          IF (jpinft(ib).gt.jpiglo)     CALL ctl_stop( 'End index out of domain' ) 
     1203         IF (jpinft(ib).gt.Ni0glo)     CALL ctl_stop( 'End index out of domain' ) 
    12031204      END DO 
    12041205      ! 
    12051206      DO ib = 1, nbdysegs 
    12061207         IF (lwp) WRITE(numout,*) '**check south seg bounds pckg: ', npckgs(ib) 
    1207          IF ((jpjsob(ib).ge.jpjglo-1).or.&  
     1208         IF ((jpjsob(ib).ge.Nj0glo-1).or.&  
    12081209            &(jpjsob(ib).le.1))        CALL ctl_stop( 'nbdyind out of domain' ) 
    12091210         IF (jpisdt(ib).ge.jpisft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 
    12101211         IF (jpisdt(ib).lt.1     )     CALL ctl_stop( 'Start index out of domain' ) 
    1211          IF (jpisft(ib).gt.jpiglo)     CALL ctl_stop( 'End index out of domain' ) 
     1212         IF (jpisft(ib).gt.Ni0glo)     CALL ctl_stop( 'End index out of domain' ) 
    12121213      END DO 
    12131214      ! 
    12141215      DO ib = 1, nbdysege 
    12151216         IF (lwp) WRITE(numout,*) '**check east  seg bounds pckg: ', npckge(ib) 
    1216          IF ((jpieob(ib).ge.jpiglo-1).or.&  
     1217         IF ((jpieob(ib).ge.Ni0glo-1).or.&  
    12171218            &(jpieob(ib).le.1))        CALL ctl_stop( 'nbdyind out of domain' ) 
    12181219         IF (jpjedt(ib).ge.jpjeft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 
    12191220         IF (jpjedt(ib).lt.1     )     CALL ctl_stop( 'Start index out of domain' ) 
    1220          IF (jpjeft(ib).gt.jpjglo)     CALL ctl_stop( 'End index out of domain' ) 
     1221         IF (jpjeft(ib).gt.Nj0glo)     CALL ctl_stop( 'End index out of domain' ) 
    12211222      END DO 
    12221223      ! 
    12231224      DO ib = 1, nbdysegw 
    12241225         IF (lwp) WRITE(numout,*) '**check west  seg bounds pckg: ', npckgw(ib) 
    1225          IF ((jpiwob(ib).ge.jpiglo-1).or.&  
     1226         IF ((jpiwob(ib).ge.Ni0glo-1).or.&  
    12261227            &(jpiwob(ib).le.1))        CALL ctl_stop( 'nbdyind out of domain' ) 
    12271228         IF (jpjwdt(ib).ge.jpjwft(ib)) CALL ctl_stop( 'Bdy start index is greater than end index' ) 
    12281229         IF (jpjwdt(ib).lt.1     )     CALL ctl_stop( 'Start index out of domain' ) 
    1229          IF (jpjwft(ib).gt.jpjglo)     CALL ctl_stop( 'End index out of domain' ) 
     1230         IF (jpjwft(ib).gt.Nj0glo)     CALL ctl_stop( 'End index out of domain' ) 
    12301231      ENDDO 
    1231       ! 
    12321232      !       
    12331233      ! 2. Look for segment crossings 
     
    13781378         DO ji = 1, jpi 
    13791379            DO jj = 1, jpj              
    1380               IF (((ji + nimpp - 1) == jpiwob(ib)).AND. &  
    1381                &  ((jj + njmpp - 1) == jpjwdt(ib))) ztestmask(1)=tmask(ji,jj,1) 
    1382               IF (((ji + nimpp - 1) == jpiwob(ib)).AND. &  
    1383                &  ((jj + njmpp - 1) == jpjwft(ib))) ztestmask(2)=tmask(ji,jj,1)   
     1380              IF( mig0(ji) == jpiwob(ib) .AND. mjg0(jj) == jpjwdt(ib) )   ztestmask(1) = tmask(ji,jj,1) 
     1381              IF( mig0(ji) == jpiwob(ib) .AND. mjg0(jj) == jpjwft(ib) )   ztestmask(2) = tmask(ji,jj,1)   
    13841382            END DO 
    13851383         END DO 
     
    14161414         DO ji = 1, jpi 
    14171415            DO jj = 1, jpj              
    1418               IF (((ji + nimpp - 1) == jpieob(ib)+1).AND. &  
    1419                &  ((jj + njmpp - 1) == jpjedt(ib))) ztestmask(1)=tmask(ji,jj,1) 
    1420               IF (((ji + nimpp - 1) == jpieob(ib)+1).AND. &  
    1421                &  ((jj + njmpp - 1) == jpjeft(ib))) ztestmask(2)=tmask(ji,jj,1)   
     1416              IF( mig0(ji) == jpieob(ib)+1 .AND. mjg0(jj) == jpjedt(ib) )   ztestmask(1) = tmask(ji,jj,1) 
     1417              IF( mig0(ji) == jpieob(ib)+1 .AND. mjg0(jj) == jpjeft(ib) )   ztestmask(2) = tmask(ji,jj,1)   
    14221418            END DO 
    14231419         END DO 
     
    14541450         DO ji = 1, jpi 
    14551451            DO jj = 1, jpj              
    1456               IF (((jj + njmpp - 1) == jpjsob(ib)).AND. &  
    1457                &  ((ji + nimpp - 1) == jpisdt(ib))) ztestmask(1)=tmask(ji,jj,1) 
    1458               IF (((jj + njmpp - 1) == jpjsob(ib)).AND. &  
    1459                &  ((ji + nimpp - 1) == jpisft(ib))) ztestmask(2)=tmask(ji,jj,1)   
     1452              IF( mjg0(jj) == jpjsob(ib) .AND. mig0(ji) == jpisdt(ib) )   ztestmask(1) = tmask(ji,jj,1) 
     1453              IF( mjg0(jj) == jpjsob(ib) .AND. mig0(ji) == jpisft(ib) )   ztestmask(2) = tmask(ji,jj,1)   
    14601454            END DO 
    14611455         END DO 
     
    14781472         DO ji = 1, jpi 
    14791473            DO jj = 1, jpj              
    1480               IF (((jj + njmpp - 1) == jpjnob(ib)+1).AND. &  
    1481                &  ((ji + nimpp - 1) == jpindt(ib))) ztestmask(1)=tmask(ji,jj,1) 
    1482               IF (((jj + njmpp - 1) == jpjnob(ib)+1).AND. &  
    1483                &  ((ji + nimpp - 1) == jpinft(ib))) ztestmask(2)=tmask(ji,jj,1)   
     1474               IF( mjg0(jj) == jpjnob(ib)+1 .AND. mig0(ji) == jpindt(ib) )   ztestmask(1) = tmask(ji,jj,1) 
     1475               IF( mjg0(jj) == jpjnob(ib)+1 .AND. mig0(ji) == jpinft(ib) )   ztestmask(2) = tmask(ji,jj,1)   
    14841476            END DO 
    14851477         END DO 
     
    15341526            DO ij = jpjedt(iseg), jpjeft(iseg) 
    15351527               icount = icount + 1 
    1536                nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir 
    1537                nbjdta(icount, igrd, ib_bdy) = ij 
     1528               nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir + nn_hls 
     1529               nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 
    15381530               nbrdta(icount, igrd, ib_bdy) = ir 
    15391531            ENDDO 
     
    15461538            DO ij = jpjedt(iseg), jpjeft(iseg) 
    15471539               icount = icount + 1 
    1548                nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 1 - ir 
    1549                nbjdta(icount, igrd, ib_bdy) = ij 
     1540               nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 1 - ir + nn_hls 
     1541               nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 
    15501542               nbrdta(icount, igrd, ib_bdy) = ir 
    15511543            ENDDO 
     
    15591551            DO ij = jpjedt(iseg), jpjeft(iseg) 
    15601552               icount = icount + 1 
    1561                nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir 
    1562                nbjdta(icount, igrd, ib_bdy) = ij 
     1553               nbidta(icount, igrd, ib_bdy) = jpieob(iseg) + 2 - ir + nn_hls 
     1554               nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 
    15631555               nbrdta(icount, igrd, ib_bdy) = ir 
    15641556            ENDDO 
     
    15791571            DO ij = jpjwdt(iseg), jpjwft(iseg) 
    15801572               icount = icount + 1 
    1581                nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 
    1582                nbjdta(icount, igrd, ib_bdy) = ij 
     1573               nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 + nn_hls 
     1574               nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 
    15831575               nbrdta(icount, igrd, ib_bdy) = ir 
    15841576            ENDDO 
     
    15911583            DO ij = jpjwdt(iseg), jpjwft(iseg) 
    15921584               icount = icount + 1 
    1593                nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 
    1594                nbjdta(icount, igrd, ib_bdy) = ij 
     1585               nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 + nn_hls 
     1586               nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 
    15951587               nbrdta(icount, igrd, ib_bdy) = ir 
    15961588            ENDDO 
     
    16041596            DO ij = jpjwdt(iseg), jpjwft(iseg) 
    16051597               icount = icount + 1 
    1606                nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 
    1607                nbjdta(icount, igrd, ib_bdy) = ij 
     1598               nbidta(icount, igrd, ib_bdy) = jpiwob(iseg) + ir - 1 + nn_hls 
     1599               nbjdta(icount, igrd, ib_bdy) = ij + nn_hls 
    16081600               nbrdta(icount, igrd, ib_bdy) = ir 
    16091601            ENDDO 
     
    16241616            DO ii = jpindt(iseg), jpinft(iseg) 
    16251617               icount = icount + 1 
    1626                nbidta(icount, igrd, ib_bdy) = ii 
    1627                nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir  
     1618               nbidta(icount, igrd, ib_bdy) = ii + nn_hls 
     1619               nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir + nn_hls  
    16281620               nbrdta(icount, igrd, ib_bdy) = ir 
    16291621            ENDDO 
     
    16371629            DO ii = jpindt(iseg), jpinft(iseg) 
    16381630               icount = icount + 1 
    1639                nbidta(icount, igrd, ib_bdy) = ii 
    1640                nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir 
     1631               nbidta(icount, igrd, ib_bdy) = ii + nn_hls 
     1632               nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 2 - ir + nn_hls 
    16411633               nbrdta(icount, igrd, ib_bdy) = ir 
    16421634            ENDDO 
     
    16511643            DO ii = jpindt(iseg), jpinft(iseg) 
    16521644               icount = icount + 1 
    1653                nbidta(icount, igrd, ib_bdy) = ii 
    1654                nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 1 - ir 
     1645               nbidta(icount, igrd, ib_bdy) = ii + nn_hls 
     1646               nbjdta(icount, igrd, ib_bdy) = jpjnob(iseg) + 1 - ir + nn_hls 
    16551647               nbrdta(icount, igrd, ib_bdy) = ir 
    16561648            ENDDO 
     
    16691661            DO ii = jpisdt(iseg), jpisft(iseg) 
    16701662               icount = icount + 1 
    1671                nbidta(icount, igrd, ib_bdy) = ii 
    1672                nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 
     1663               nbidta(icount, igrd, ib_bdy) = ii + nn_hls 
     1664               nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 + nn_hls 
    16731665               nbrdta(icount, igrd, ib_bdy) = ir 
    16741666            ENDDO 
     
    16821674            DO ii = jpisdt(iseg), jpisft(iseg) 
    16831675               icount = icount + 1 
    1684                nbidta(icount, igrd, ib_bdy) = ii 
    1685                nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 
     1676               nbidta(icount, igrd, ib_bdy) = ii + nn_hls 
     1677               nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 + nn_hls 
    16861678               nbrdta(icount, igrd, ib_bdy) = ir 
    16871679            ENDDO 
     
    16961688            DO ii = jpisdt(iseg), jpisft(iseg) 
    16971689               icount = icount + 1 
    1698                nbidta(icount, igrd, ib_bdy) = ii 
    1699                nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 
     1690               nbidta(icount, igrd, ib_bdy) = ii + nn_hls 
     1691               nbjdta(icount, igrd, ib_bdy) = jpjsob(iseg) + ir - 1 + nn_hls 
    17001692               nbrdta(icount, igrd, ib_bdy) = ir 
    17011693            ENDDO 
Note: See TracChangeset for help on using the changeset viewer.