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

Ignore:
Timestamp:
2007-10-16T13:03:55+02:00 (17 years ago)
Author:
smasson
Message:

finalize the first set of modifications related to ticket:3

File:
1 edited

Legend:

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

    r699 r717  
    329329 
    330330 
    331    SUBROUTINE lbc_lnk_3d( pt3d, cd_type, psgn, cd_mpp ) 
     331   SUBROUTINE lbc_lnk_3d( pt3d, cd_type, psgn, cd_mpp, pval ) 
    332332      !!--------------------------------------------------------------------- 
    333333      !!                  ***  ROUTINE lbc_lnk_3d  *** 
     
    355355      CHARACTER(len=3), INTENT( in ), OPTIONAL ::    & 
    356356         cd_mpp        ! fill the overlap area only (here do nothing) 
     357      REAL(wp)        , INTENT(in   ), OPTIONAL           ::   pval      ! background value (used at closed boundaries) 
    357358 
    358359      !! * Local declarations 
    359360      INTEGER  ::   ji, jk 
    360361      INTEGER  ::   ijt, iju 
     362      REAL(wp) ::   zland 
    361363      !!---------------------------------------------------------------------- 
    362364      !!  OPA 9.0 , LOCEAN-IPSL (2005)  
     
    365367      !!---------------------------------------------------------------------- 
    366368 
    367       IF (PRESENT(cd_mpp)) THEN 
     369      IF( PRESENT( pval ) ) THEN      ! set land value (zero by default) 
     370         zland = pval 
     371      ELSE 
     372         zland = 0.e0 
     373      ENDIF 
     374 
     375 
     376      IF( PRESENT( cd_mpp ) ) THEN 
    368377         ! only fill the overlap area and extra allows  
    369378         ! this is in mpp case. In this module, just do nothing 
     
    385394            SELECT CASE ( cd_type ) 
    386395            CASE ( 'T' , 'U' , 'V' , 'W' )             ! T-, U-, V-, W-points 
    387                pt3d( 1 ,:,jk) = 0.e0 
    388                pt3d(jpi,:,jk) = 0.e0 
    389             CASE ( 'F' )                               ! F-point 
    390                pt3d(jpi,:,jk) = 0.e0 
     396               pt3d( 1 ,:,jk) = zland 
     397               pt3d(jpi,:,jk) = zland 
     398            CASE ( 'F' )                               ! F-point 
     399               pt3d(jpi,:,jk) = zland 
    391400            END SELECT 
    392401 
     
    402411            CASE ( 'T' , 'U' , 'W' )                   ! T-, U-, W-points 
    403412               pt3d(:, 1 ,jk) = pt3d(:,3,jk) 
    404                pt3d(:,jpj,jk) = 0.e0 
     413               pt3d(:,jpj,jk) = zland 
    405414            CASE ( 'V' , 'F' )                         ! V-, F-points 
    406415               pt3d(:, 1 ,jk) = psgn * pt3d(:,2,jk) 
    407                pt3d(:,jpj,jk) = 0.e0 
     416               pt3d(:,jpj,jk) = zland 
    408417            END SELECT 
    409418 
    410419         CASE ( 3 , 4 )                        ! *  North fold  T-point pivot 
    411420 
    412             pt3d( 1 ,jpj,jk) = 0.e0 
    413             pt3d(jpi,jpj,jk) = 0.e0 
     421            pt3d( 1 ,jpj,jk) = zland 
     422            pt3d(jpi,jpj,jk) = zland 
    414423 
    415424            SELECT CASE ( cd_type ) 
     
    417426               DO ji = 2, jpi 
    418427                  ijt = jpi-ji+2 
    419                   pt3d(ji, 1 ,jk) = 0.e0 
     428                  pt3d(ji, 1 ,jk) = zland 
    420429                  pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-2,jk) 
    421430               END DO 
     
    427436               DO ji = 1, jpi-1 
    428437                  iju = jpi-ji+1 
    429                   pt3d(ji, 1 ,jk) = 0.e0 
     438                  pt3d(ji, 1 ,jk) = zland 
    430439                  pt3d(ji,jpj,jk) = psgn * pt3d(iju,jpj-2,jk) 
    431440               END DO 
     
    437446                  DO ji = 2, jpi 
    438447                     ijt = jpi-ji+2 
    439                      pt3d(ji,  1  ,jk) = 0.e0 
     448                     pt3d(ji,  1  ,jk) = zland 
    440449                     pt3d(ji,jpj-1,jk) = psgn * pt3d(ijt,jpj-2,jk) 
    441450                     pt3d(ji,jpj  ,jk) = psgn * pt3d(ijt,jpj-3,jk) 
     
    451460         CASE ( 5 , 6 )                        ! *  North fold  F-point pivot 
    452461 
    453             pt3d( 1 ,jpj,jk) = 0.e0 
    454             pt3d(jpi,jpj,jk) = 0.e0 
     462            pt3d( 1 ,jpj,jk) = zland 
     463            pt3d(jpi,jpj,jk) = zland 
    455464 
    456465            SELECT CASE ( cd_type ) 
     
    458467               DO ji = 1, jpi 
    459468                  ijt = jpi-ji+1 
    460                   pt3d(ji, 1 ,jk) = 0.e0 
     469                  pt3d(ji, 1 ,jk) = zland 
    461470                  pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-1,jk) 
    462471               END DO 
     
    464473                  DO ji = 1, jpi-1 
    465474                     iju = jpi-ji 
    466                      pt3d(ji, 1 ,jk) = 0.e0 
     475                     pt3d(ji, 1 ,jk) = zland 
    467476                     pt3d(ji,jpj,jk) = psgn * pt3d(iju,jpj-1,jk) 
    468477                  END DO 
     
    470479                  DO ji = 1, jpi 
    471480                     ijt = jpi-ji+1 
    472                      pt3d(ji, 1 ,jk) = 0.e0 
     481                     pt3d(ji, 1 ,jk) = zland 
    473482                     pt3d(ji,jpj,jk) = psgn * pt3d(ijt,jpj-2,jk) 
    474483                  END DO 
     
    492501            SELECT CASE ( cd_type ) 
    493502            CASE ( 'T' , 'U' , 'V' , 'W' )             ! T-, U-, V-, W-points 
    494                pt3d(:, 1 ,jk) = 0.e0 
    495                pt3d(:,jpj,jk) = 0.e0 
    496             CASE ( 'F' )                               ! F-point 
    497                pt3d(:,jpj,jk) = 0.e0 
     503               pt3d(:, 1 ,jk) = zland 
     504               pt3d(:,jpj,jk) = zland 
     505            CASE ( 'F' )                               ! F-point 
     506               pt3d(:,jpj,jk) = zland 
    498507            END SELECT 
    499508 
     
    506515 
    507516 
    508    SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp ) 
     517   SUBROUTINE lbc_lnk_2d( pt2d, cd_type, psgn, cd_mpp, pval ) 
    509518      !!--------------------------------------------------------------------- 
    510519      !!                 ***  ROUTINE lbc_lnk_2d  *** 
     
    532541      CHARACTER(len=3), INTENT( in ), OPTIONAL ::    & 
    533542         cd_mpp        ! fill the overlap area only (here do nothing) 
     543      REAL(wp)        , INTENT(in   ), OPTIONAL           ::   pval      ! background value (used at closed boundaries) 
    534544 
    535545      !! * Local declarations 
    536546      INTEGER  ::   ji 
    537547      INTEGER  ::   ijt, iju 
     548      REAL(wp) ::   zland 
    538549      !!---------------------------------------------------------------------- 
    539       !!  OPA 8.5, LODYC-IPSL (2002) 
    540       !!---------------------------------------------------------------------- 
     550 
     551      IF( PRESENT( pval ) ) THEN      ! set land value (zero by default) 
     552         zland = pval 
     553      ELSE 
     554         zland = 0.e0 
     555      ENDIF 
    541556 
    542557      IF (PRESENT(cd_mpp)) THEN 
     
    556571         SELECT CASE ( cd_type ) 
    557572         CASE ( 'T' , 'U' , 'V' , 'W' )                ! T-, U-, V-, W-points 
    558             pt2d( 1 ,:) = 0.e0 
    559             pt2d(jpi,:) = 0.e0 
     573            pt2d( 1 ,:) = zland 
     574            pt2d(jpi,:) = zland 
    560575         CASE ( 'F' )                                  ! F-point, ice U-V point 
    561             pt2d(jpi,:) = 0.e0  
     576            pt2d(jpi,:) = zland 
    562577         CASE ( 'I' )                                  ! F-point, ice U-V point 
    563             pt2d( 1 ,:) = 0.e0  
    564             pt2d(jpi,:) = 0.e0  
     578            pt2d( 1 ,:) = zland 
     579            pt2d(jpi,:) = zland 
    565580         END SELECT 
    566581 
     
    576591         CASE ( 'T' , 'U' , 'W' )                      ! T-, U-, W-points 
    577592            pt2d(:, 1 ) = pt2d(:,3) 
    578             pt2d(:,jpj) = 0.e0 
     593            pt2d(:,jpj) = zland 
    579594         CASE ( 'V' , 'F' , 'I' )                      ! V-, F-points, ice U-V point 
    580595            pt2d(:, 1 ) = psgn * pt2d(:,2) 
    581             pt2d(:,jpj) = 0.e0 
     596            pt2d(:,jpj) = zland 
    582597         END SELECT 
    583598 
    584599      CASE ( 3 , 4 )                           ! * North fold  T-point pivot 
    585600 
    586          pt2d( 1 , 1 ) = 0.e0        !!!!!  bug gm ??? !Edmee 
    587          pt2d( 1 ,jpj) = 0.e0 
    588          pt2d(jpi,jpj) = 0.e0 
     601         pt2d( 1 , 1 ) = zland       !!!!!  bug gm ??? !Edmee 
     602         pt2d( 1 ,jpj) = zland 
     603         pt2d(jpi,jpj) = zland 
    589604 
    590605         SELECT CASE ( cd_type ) 
     
    593608            DO ji = 2, jpi 
    594609               ijt = jpi-ji+2 
    595                pt2d(ji, 1 ) = 0.e0 
     610               pt2d(ji, 1 ) = zland 
    596611               pt2d(ji,jpj) = psgn * pt2d(ijt,jpj-2) 
    597612            END DO 
     
    604619            DO ji = 1, jpi-1 
    605620               iju = jpi-ji+1 
    606                pt2d(ji, 1 ) = 0.e0 
     621               pt2d(ji, 1 ) = zland 
    607622               pt2d(ji,jpj) = psgn * pt2d(iju,jpj-2) 
    608623            END DO 
     
    615630            DO ji = 2, jpi 
    616631               ijt = jpi-ji+2 
    617                pt2d(ji, 1   ) = 0.e0 
     632               pt2d(ji, 1   ) = zland 
    618633               pt2d(ji,jpj-1) = psgn * pt2d(ijt,jpj-2) 
    619634               pt2d(ji,jpj  ) = psgn * pt2d(ijt,jpj-3) 
     
    628643 
    629644         CASE ( 'I' )                                  ! ice U-V point 
    630             pt2d(:, 1 ) = 0.e0 
     645            pt2d(:, 1 ) = zland 
    631646            pt2d(2,jpj) = psgn * pt2d(3,jpj-1) 
    632647            DO ji = 3, jpi 
     
    639654      CASE ( 5 , 6 )                           ! * North fold  F-point pivot 
    640655 
    641          pt2d( 1 , 1 ) = 0.e0           !!bug  ??? 
    642          pt2d( 1 ,jpj) = 0.e0 
    643          pt2d(jpi,jpj) = 0.e0 
     656         pt2d( 1 , 1 ) = zland          !!bug  ??? 
     657         pt2d( 1 ,jpj) = zland 
     658         pt2d(jpi,jpj) = zland 
    644659 
    645660         SELECT CASE ( cd_type ) 
     
    648663            DO ji = 1, jpi 
    649664               ijt = jpi-ji+1 
    650                pt2d(ji, 1 ) = 0.e0 
     665               pt2d(ji, 1 ) = zland 
    651666               pt2d(ji,jpj) = psgn * pt2d(ijt,jpj-1) 
    652667            END DO 
     
    655670            DO ji = 1, jpi-1 
    656671               iju = jpi-ji 
    657                pt2d(ji, 1 ) = 0.e0 
     672               pt2d(ji, 1 ) = zland 
    658673               pt2d(ji,jpj) = psgn * pt2d(iju,jpj-1) 
    659674            END DO 
     
    662677            DO ji = 1, jpi 
    663678               ijt = jpi-ji+1 
    664                pt2d(ji, 1 ) = 0.e0 
     679               pt2d(ji, 1 ) = zland 
    665680               pt2d(ji,jpj) = psgn * pt2d(ijt,jpj-2) 
    666681            END DO 
     
    681696 
    682697         CASE ( 'I' )                                  ! ice U-V point 
    683             pt2d( : , 1 ) = 0.e0 
    684             pt2d( 2 ,jpj) = 0.e0 
     698            pt2d( : , 1 ) = zland 
     699            pt2d( 2 ,jpj) = zland 
    685700            DO ji = 2 , jpim1 
    686701               ijt = jpi - ji + 2 
     
    694709         SELECT CASE ( cd_type ) 
    695710         CASE ( 'T' , 'U' , 'V' , 'W' )                ! T-, U-, V-, W-points 
    696             pt2d(:, 1 ) = 0.e0 
    697             pt2d(:,jpj) = 0.e0 
     711            pt2d(:, 1 ) = zland 
     712            pt2d(:,jpj) = zland 
    698713         CASE ( 'F' )                                  ! F-point 
    699             pt2d(:,jpj) = 0.e0 
     714            pt2d(:,jpj) = zland 
    700715         CASE ( 'I' )                                  ! ice U-V point 
    701             pt2d(:, 1 ) = 0.e0 
    702             pt2d(:,jpj) = 0.e0 
     716            pt2d(:, 1 ) = zland 
     717            pt2d(:,jpj) = zland 
    703718         END SELECT 
    704719 
Note: See TracChangeset for help on using the changeset viewer.