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 233 for trunk/NEMO/OPA_SRC/lib_mpp.F90 – NEMO

Ignore:
Timestamp:
2005-03-22T11:13:51+01:00 (19 years ago)
Author:
opalod
Message:

CT : BUGFIX164 : bug correction on the North fold treatment bondary condition for 'F' and 'G' points on 3D and 2D fields in both cases .i.e. using either T- or F- pivot points

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/lib_mpp.F90

    r219 r233  
    3838   !!        !  98  (M. Imbard, J. Escobar, L. Colombet ) SHMEM and MPI 
    3939   !!   9.0  !  03  (J.-M. Molines, G. Madec)  F90, free form 
     40   !!        !  04  (R. Bourdalle Badie)  isend option in mpi 
     41   !!        !  05  (G. Madec, S. Masson)  npolj=5,6 F-point & ice cases 
    4042   !!---------------------------------------------------------------------- 
    4143   !!  OPA 9.0 , LODYC-IPSL (2003) 
     
    286288         CALL pvmfmytid( npvm_mytid ) 
    287289         IF( mynode_print /= 0 ) THEN 
    288             WRITE(nummpp,*) 'mynode, npvm_ipas =', npvm_ipas, ' nprocmax=', nprocmax 
    289             WRITE(nummpp,*) 'mynode, npvm_mytid=', npvm_mytid, ' after pvmfmytid' 
     290            WRITE(numout,*) 'mynode, npvm_ipas =', npvm_ipas, ' nprocmax=', nprocmax 
     291            WRITE(numout,*) 'mynode, npvm_mytid=', npvm_mytid, ' after pvmfmytid' 
    290292         ENDIF 
    291293 
     
    295297         CALL mpparent( iparent_tid ) 
    296298         IF( mynode_print /= 0 ) THEN 
    297             WRITE(nummpp,*) 'mynode, npvm_mytid=', npvm_mytid,   & 
     299            WRITE(numout,*) 'mynode, npvm_mytid=', npvm_mytid,   & 
    298300               &            ' after mpparent, npvm_tids(0) = ',   & 
    299301               &            npvm_tids(0), ' iparent_tid=', iparent_tid 
    300302         ENDIF 
    301303         IF( iparent_tid < 0 )  THEN 
    302             WRITE(nummpp,*) 'mynode, npvm_mytid=', npvm_mytid,   & 
     304            WRITE(numout,*) 'mynode, npvm_mytid=', npvm_mytid,   & 
    303305               &            ' after mpparent, npvm_tids(0) = ',   & 
    304306               &            npvm_tids(0), ' iparent_tid=', iparent_tid 
     
    306308            npvm_me = 0 
    307309            IF( ndim_mpp > nprocmax ) THEN 
    308                WRITE(nummpp,*) 'npvm_mytid=', npvm_mytid, ' too great' 
     310               WRITE(numout,*) 'npvm_mytid=', npvm_mytid, ' too great' 
    309311               STOP  ' mynode ' 
    310312            ELSE 
     
    322324   
    323325               IF( mynode_print /= 0 ) THEN 
    324                   WRITE(nummpp,*) 'mynode, npvm_mytid=',npvm_mytid,   & 
     326                  WRITE(numout,*) 'mynode, npvm_mytid=',npvm_mytid,   & 
    325327                     &            ' maitre=',executable,' info=', info   & 
    326328                     &            ,' npvm_nproc=',npvm_nproc 
    327                   WRITE(nummpp,*) 'mynode, npvm_mytid=',npvm_mytid,   & 
     329                  WRITE(numout,*) 'mynode, npvm_mytid=',npvm_mytid,   & 
    328330                     &            ' npvm_tids ',(npvm_tids(ji),ji=0,npvm_nproc-1) 
    329331               ENDIF 
     
    342344            ! receive the tids array and set me 
    343345            ! --------------------------------- 
    344             IF( mynode_print /= 0 )   WRITE(nummpp,*) 'mynode, npvm_mytid=',npvm_mytid, ' pvmfrecv' 
     346            IF( mynode_print /= 0 )   WRITE(numout,*) 'mynode, npvm_mytid=',npvm_mytid, ' pvmfrecv' 
    345347            CALL pvmfrecv( iparent_tid, 10, info ) 
    346             IF( mynode_print /= 0 )   WRITE(nummpp,*) 'mynode, npvm_mytid=',npvm_mytid, " fin pvmfrecv" 
     348            IF( mynode_print /= 0 )   WRITE(numout,*) 'mynode, npvm_mytid=',npvm_mytid, " fin pvmfrecv" 
    347349            CALL pvmfunpack( jpvmint, npvm_nproc, 1         , 1, info ) 
    348350            CALL pvmfunpack( jpvmint, npvm_tids , npvm_nproc, 1, info ) 
    349351            IF( mynode_print /= 0 ) THEN 
    350                WRITE(nummpp,*) 'mynode, npvm_mytid=',npvm_mytid,   & 
     352               WRITE(numout,*) 'mynode, npvm_mytid=',npvm_mytid,   & 
    351353                  &            ' esclave=', executable,' info=', info,' npvm_nproc=',npvm_nproc 
    352                WRITE(nummpp,*) 'mynode, npvm_mytid=', npvm_mytid,   & 
     354               WRITE(numout,*) 'mynode, npvm_mytid=', npvm_mytid,   & 
    353355                  &            'npvm_tids', ( npvm_tids(ji), ji = 0, npvm_nproc-1 ) 
    354356            ENDIF 
     
    368370            IF( ji == npvm_me ) THEN 
    369371               CALL pvmfjoingroup ( opaall, npvm_inum ) 
    370                IF( npvm_inum /= npvm_me )   WRITE(nummpp,*) 'mynode not arrived in the good order for opaall' 
     372               IF( npvm_inum /= npvm_me )   WRITE(numout,*) 'mynode not arrived in the good order for opaall' 
    371373            ENDIF 
    372374            CALL pvmfbarrier( "bidon", npvm_nproc, info ) 
     
    383385      imyhost   = npvm_tids(0) 
    384386      IF( mynode_print /= 0 ) THEN 
    385          WRITE(nummpp,*)'mynode: npvm_mytid=', npvm_mytid, ' npvm_me=', npvm_me,   & 
     387         WRITE(numout,*)'mynode: npvm_mytid=', npvm_mytid, ' npvm_me=', npvm_me,   & 
    386388            &           ' npvm_nproc=', npvm_nproc , ' npvm_ipas=', npvm_ipas 
    387389      ENDIF 
     
    413415      CALL pvmfgetpe( nt3d_mytid, it3d_my_pe ) 
    414416      IF( mpparent_print /= 0 ) THEN 
    415          WRITE(nummpp,*) 'mpparent: nt3d_mytid= ', nt3d_mytid ,' it3d_my_pe=',it3d_my_pe 
     417         WRITE(numout,*) 'mpparent: nt3d_mytid= ', nt3d_mytid ,' it3d_my_pe=',it3d_my_pe 
    416418      ENDIF 
    417419      IF( it3d_my_pe == 0 ) THEN 
     
    421423         kparent_tid = -1 
    422424         IF(mpparent_print /= 0 ) THEN 
    423             WRITE(nummpp,*) 'mpparent, nt3d_mytid=',nt3d_mytid ,' kparent_tid=',kparent_tid 
     425            WRITE(numout,*) 'mpparent, nt3d_mytid=',nt3d_mytid ,' kparent_tid=',kparent_tid 
    424426         ENDIF 
    425427         !          --- END receive dimension --- 
    426428         IF( ndim_mpp > nprocmax ) THEN 
    427             WRITE(nummpp,*) 'mytid=',nt3d_mytid,' too great' 
     429            WRITE(numout,*) 'mytid=',nt3d_mytid,' too great' 
    428430            STOP  ' mpparent ' 
    429431         ELSE 
     
    431433         ENDIF 
    432434         IF( mpparent_print /= 0 ) THEN 
    433             WRITE(nummpp,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' nt3d_nproc=', nt3d_nproc 
     435            WRITE(numout,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' nt3d_nproc=', nt3d_nproc 
    434436         ENDIF 
    435437         !-------- receive tids from others process -------- 
     
    438440            CALL pvmfunpack( jpvmint, nt3d_tids(ji), 1, 1, info ) 
    439441            IF( mpparent_print /= 0 ) THEN 
    440                WRITE(nummpp,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' receive=', nt3d_tids(ji), ' from = ', ji 
     442               WRITE(numout,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' receive=', nt3d_tids(ji), ' from = ', ji 
    441443            ENDIF 
    442444         END DO 
    443445         nt3d_tids(0) = nt3d_mytid 
    444446         IF( mpparent_print /= 0 ) THEN 
    445             WRITE(nummpp,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' nt3d_tids(ji) =', (nt3d_tids(ji),   & 
     447            WRITE(numout,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' nt3d_tids(ji) =', (nt3d_tids(ji),   & 
    446448                 ji = 0, nt3d_nproc-1 ) 
    447             WRITE(nummpp,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' kparent_tid=', kparent_tid 
     449            WRITE(numout,*) 'mpparent, nt3d_mytid=', nt3d_mytid , ' kparent_tid=', kparent_tid 
    448450         ENDIF 
    449451 
     
    727729         SELECT CASE ( npolj ) 
    728730   
    729          CASE ( 4 )    ! T pivot 
     731         CASE ( 3 , 4 )    ! T pivot 
    730732            iloc = jpiglo - 2 * ( nimpp - 1 ) 
    731733 
     
    769771                  DO ji = 1, nlci-1 
    770772                     iju=iloc-ji+1 
    771                      ptab(ji,nlcj-1,jk) = ptab(iju,nlcj-2,jk) 
    772                      ptab(ji,nlcj  ,jk) = ptab(iju,nlcj-3,jk) 
     773                     ptab(ji,nlcj-1,jk) = psgn * ptab(iju,nlcj-2,jk) 
     774                     ptab(ji,nlcj  ,jk) = psgn * ptab(iju,nlcj-3,jk) 
    773775                  END DO 
    774776               END DO 
     
    776778          END SELECT 
    777779        
    778          CASE ( 6 ) ! F pivot 
     780         CASE ( 5 , 6 ) ! F pivot 
    779781            iloc=jpiglo-2*(nimpp-1) 
    780782   
     
    813815                  DO ji = 1, nlci-1 
    814816                     iju=iloc-ji 
    815                      ptab(ji,nlcj,jk) = ptab(iju,nlcj-2,jk) 
    816                      ptab(ji,nlcj  ,jk) = ptab(iju,nlcj-3,jk) 
     817                     ptab(ji,nlcj,jk) = psgn * ptab(iju,nlcj-2,jk) 
    817818                  END DO 
    818819                  DO ji = nlci/2+1, nlci-1 
     
    11611162         SELECT CASE ( npolj ) 
    11621163   
    1163          CASE ( 4 )   !  T pivot 
     1164         CASE ( 3 , 4 )   !  T pivot 
    11641165            iloc = jpiglo - 2 * ( nimpp - 1 ) 
    11651166   
     
    11961197               DO ji = 1, nlci-1 
    11971198                  iju=iloc-ji+1 
    1198                   pt2d(ji,nlcj-1) = pt2d(iju,nlcj-2) 
    1199                   pt2d(ji,nlcj  ) = pt2d(iju,nlcj-3) 
     1199                  pt2d(ji,nlcj-1) = psgn * pt2d(iju,nlcj-2) 
     1200                  pt2d(ji,nlcj  ) = psgn * pt2d(iju,nlcj-3) 
    12001201               END DO 
    12011202   
     
    12091210            END SELECT 
    12101211   
    1211          CASE (6) ! F pivot 
     1212         CASE ( 5 , 6 )                ! F pivot 
    12121213            iloc=jpiglo-2*(nimpp-1) 
    12131214   
     
    12391240               DO ji = 1, nlci-1 
    12401241                  iju=iloc-ji 
    1241                   pt2d(ji,nlcj) = pt2d(iju,nlcj-2) 
    1242                   pt2d(ji,nlcj  ) = pt2d(iju,nlcj-3) 
     1242                  pt2d(ji,nlcj) = psgn * pt2d(iju,nlcj-2) 
    12431243               END DO 
    12441244               DO ji = nlci/2+1, nlci-1 
     
    12481248   
    12491249            CASE ( 'I' )                                  ! ice U-V point 
    1250                   pt2d( 2 ,nlcj) = 0.e0           !!bug  ??? 
    1251                DO ji = 1 , nlci-1            !!bug rob= 2,jpim1 
    1252                   ijt = iloc - ji            !!bug rob= ijt=jpi-ji+2   ??? 
     1250               pt2d( 2 ,nlcj) = 0.e0 
     1251               DO ji = 2 , nlci-1 
     1252                  ijt = iloc - ji + 2 
    12531253                  pt2d(ji,nlcj)= 0.5 * ( pt2d(ji,nlcj-1) + psgn * pt2d(ijt,nlcj-1) ) 
    12541254               END DO 
     
    13931393      CASE ( 4 ) 
    13941394         DO ji = 1, nlci 
    1395             ptab(ji,nlcj-2) = ptab(ji,nlcj-2)+t2p1(ji,1,1) 
     1395            ptab(ji,nlcj-2) = ptab(ji,nlcj-2) + t2p1(ji,1,1) 
    13961396         END DO 
    13971397      CASE ( 6 ) 
    13981398         DO ji = 1, nlci 
    1399             ptab(ji,nlcj-1) = ptab(ji,nlcj-1)+t2p1(ji,1,1) 
     1399            ptab(ji,nlcj-1) = ptab(ji,nlcj-1) + t2p1(ji,1,1) 
    14001400         END DO 
    14011401 
     
    31863186       DO jj = nlcj - ijpj +1, nlcj 
    31873187          ij = jj - nlcj + ijpj 
    3188           znorthloc(:,ij,jk)=pt3d(:,jj,jk) 
     3188          znorthloc(:,ij,jk) = pt3d(:,jj,jk) 
    31893189       END DO 
    31903190    END DO 
     
    32713271                DO ji = 1, jpiglo-1 
    32723272                   iju = jpiglo-ji+1 
    3273                    ztab(ji,ijpj-1,jk) = ztab(iju,ijpj-2,jk) 
    3274                    ztab(ji,ijpj  ,jk) = ztab(iju,ijpj-3,jk) 
     3273                   ztab(ji,ijpj-1,jk) = psgn * ztab(iju,ijpj-2,jk) 
     3274                   ztab(ji,ijpj  ,jk) = psgn * ztab(iju,ijpj-3,jk) 
    32753275                END DO 
    32763276 
     
    33093309                DO ji = 1, jpiglo-1 
    33103310                   iju = jpiglo-ji 
    3311                    ztab(ji,ijpj  ,jk) = ztab(iju,ijpj-2,jk) 
     3311                   ztab(ji,ijpj  ,jk) = psgn * ztab(iju,ijpj-2,jk) 
    33123312                END DO 
    33133313                DO ji = jpiglo/2+1, jpiglo-1 
    33143314                   iju = jpiglo-ji 
    3315                    ztab(ji,ijpjm1,jk) = ztab(iju,ijpjm1,jk) 
     3315                   ztab(ji,ijpjm1,jk) = psgn * ztab(iju,ijpjm1,jk) 
    33163316                END DO 
    33173317 
     
    34863486             END DO 
    34873487 
    3488           CASE ( 'U' )                               ! U-point 
     3488          CASE ( 'U' )                                     ! U-point 
    34893489             DO ji = 1, jpiglo-1 
    34903490                iju = jpiglo-ji+1 
     
    34963496             END DO 
    34973497 
    3498           CASE ( 'V' )                               ! V-point 
     3498          CASE ( 'V' )                                     ! V-point 
    34993499             DO ji = 2, jpiglo 
    35003500                ijt = jpiglo-ji+2 
     
    35063506             DO ji = 1, jpiglo-1 
    35073507                iju = jpiglo-ji+1 
    3508                 ztab(ji,ijpj-1) = ztab(iju,ijpj-2) 
    3509                 ztab(ji,ijpj  ) = ztab(iju,ijpj-3) 
     3508                ztab(ji,ijpj-1) = psgn * ztab(iju,ijpj-2) 
     3509                ztab(ji,ijpj  ) = psgn * ztab(iju,ijpj-3) 
    35103510             END DO 
    35113511 
    3512           CASE ( 'I' )                                  ! ice U-V point 
     3512          CASE ( 'I' )                                     ! ice U-V point 
    35133513             ztab(2,ijpj) = psgn * ztab(3,ijpj-1) 
    35143514             DO ji = 3, jpiglo 
     
    35263526          SELECT CASE ( cd_type ) 
    35273527 
    3528           CASE ( 'T' , 'W' ,'S' )                         ! T-, W-point 
     3528          CASE ( 'T' , 'W' ,'S' )                          ! T-, W-point 
    35293529             DO ji = 1, jpiglo 
    35303530                ijt = jpiglo-ji+1 
     
    35323532             END DO 
    35333533 
    3534           CASE ( 'U' )                               ! U-point 
     3534          CASE ( 'U' )                                     ! U-point 
    35353535             DO ji = 1, jpiglo-1 
    35363536                iju = jpiglo-ji 
     
    35383538             END DO 
    35393539 
    3540           CASE ( 'V' )                               ! V-point 
     3540          CASE ( 'V' )                                     ! V-point 
    35413541             DO ji = 1, jpiglo 
    35423542                ijt = jpiglo-ji+1 
     
    35513551             DO ji = 1, jpiglo-1 
    35523552                iju = jpiglo-ji 
    3553                 ztab(ji,ijpj  ) = ztab(iju,ijpj-2) 
     3553                ztab(ji,ijpj  ) = psgn * ztab(iju,ijpj-2) 
    35543554             END DO 
    35553555             DO ji = jpiglo/2+1, jpiglo-1 
    35563556                iju = jpiglo-ji 
    3557                 ztab(ji,ijpjm1) = ztab(iju,ijpjm1) 
     3557                ztab(ji,ijpjm1) = psgn * ztab(iju,ijpjm1) 
    35583558             END DO 
    35593559 
     3560             CASE ( 'I' )                                  ! ice U-V point 
     3561                ztab( 2 ,ijpj) = 0.e0 
     3562                DO ji = 2 , jpiglo-1 
     3563                   ijt = jpi - ji + 2 
     3564                   ztab(ji,ijpj)= 0.5 * ( ztab(ji,ijpj-1) + psgn * ztab(ijt,ijpj-1) ) 
     3565                END DO 
     3566 
    35603567          END SELECT 
    35613568 
     
    35643571            SELECT CASE ( cd_type)  
    35653572   
    3566             CASE ( 'T' , 'U' , 'V' , 'W' )             ! T-, U-, V-, W-points 
     3573            CASE ( 'T' , 'U' , 'V' , 'W' )                 ! T-, U-, V-, W-points 
    35673574               ztab(:, 1 ) = 0.e0 
    35683575               ztab(:,ijpj) = 0.e0 
    35693576 
    3570             CASE ( 'F' )                               ! F-point 
     3577            CASE ( 'F' )                                   ! F-point 
    35713578               ztab(:,ijpj) = 0.e0 
    35723579 
    3573             CASE ( 'I' )                                  ! ice U-V point 
     3580            CASE ( 'I' )                                   ! ice U-V point 
    35743581               ztab(:, 1 ) = 0.e0 
    35753582               ztab(:,ijpj) = 0.e0 
Note: See TracChangeset for help on using the changeset viewer.