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 6060 for branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90 – NEMO

Ignore:
Timestamp:
2015-12-16T10:25:22+01:00 (8 years ago)
Author:
timgraham
Message:

Merged dev_r5836_noc2_VVL_BY_DEFAULT into branch

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2015/dev_merge_2015/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r5930 r6060  
    77   !!            6.0  ! 1993-03  (M. Guyon)  symetrical conditions (M. Guyon) 
    88   !!            7.0  ! 1996-01  (G. Madec)  suppression of common work arrays 
    9    !!             -   ! 1996-05  (G. Madec)  mask computed from tmask and sup- 
    10    !!                 !                      pression of the double computation of bmask 
     9   !!             -   ! 1996-05  (G. Madec)  mask computed from tmask 
    1110   !!            8.0  ! 1997-02  (G. Madec)  mesh information put in domhgr.F 
    1211   !!            8.1  ! 1997-07  (G. Madec)  modification of mbathy and fmask 
     
    2524   USE oce             ! ocean dynamics and tracers 
    2625   USE dom_oce         ! ocean space and time domain 
     26   ! 
    2727   USE in_out_manager  ! I/O manager 
    2828   USE lbclnk          ! ocean lateral boundary conditions (or mpp link) 
    29    USE lib_mpp 
     29   USE lib_mpp         ! 
    3030   USE wrk_nemo        ! Memory allocation 
    3131   USE timing          ! Timing 
     
    3434   PRIVATE 
    3535 
    36    PUBLIC   dom_msk         ! routine called by inidom.F90 
     36   PUBLIC   dom_msk    ! routine called by inidom.F90 
    3737 
    3838   !                            !!* Namelist namlbc : lateral boundary condition * 
     
    8989      !! 
    9090      !!      N.B. If nperio not equal to 0, the land/ocean mask arrays 
    91       !!      are defined with the proper value at lateral domain boundaries, 
    92       !!      but bmask. indeed, bmask defined the domain over which the 
    93       !!      barotropic stream function is computed. this domain cannot 
    94       !!      contain identical columns because the matrix associated with 
    95       !!      the barotropic stream function equation is then no more inverti- 
    96       !!      ble. therefore bmask is set to 0 along lateral domain boundaries 
    97       !!      even IF nperio is not zero. 
     91      !!      are defined with the proper value at lateral domain boundaries. 
    9892      !! 
    9993      !!      In case of open boundaries (lk_bdy=T): 
    10094      !!        - tmask is set to 1 on the points to be computed bay the open 
    10195      !!          boundaries routines. 
    102       !!        - bmask is  set to 0 on the open boundaries. 
    10396      !! 
    10497      !! ** Action :   tmask    : land/ocean mask at t-point (=0. or 1.) 
     
    107100      !!               fmask    : land/ocean mask at f-point (=0. or 1.) 
    108101      !!                          =rn_shlat along lateral boundaries 
    109       !!               bmask    : land/ocean mask at barotropic stream 
    110       !!                          function point (=0. or 1.) and set to 0 along lateral boundaries 
    111102      !!               tmask_i  : interior ocean mask 
    112103      !!---------------------------------------------------------------------- 
     
    254245      END DO 
    255246 
    256       ! 4. ocean/land mask for the elliptic equation 
    257       ! -------------------------------------------- 
    258       bmask(:,:) = ssmask(:,:)       ! elliptic equation is written at t-point 
    259       ! 
    260       !                               ! Boundary conditions 
    261       !                                    ! cyclic east-west : bmask must be set to 0. on rows 1 and jpi 
    262       IF( nperio == 1 .OR. nperio == 4 .OR. nperio == 6 ) THEN 
    263          bmask( 1 ,:) = 0._wp 
    264          bmask(jpi,:) = 0._wp 
    265       ENDIF 
    266       IF( nperio == 2 ) THEN               ! south symmetric :  bmask must be set to 0. on row 1 
    267          bmask(:, 1 ) = 0._wp 
    268       ENDIF 
    269       !                                    ! north fold :  
    270       IF( nperio == 3 .OR. nperio == 4 ) THEN   ! T-pt pivot : bmask set to 0. on row jpj and on half jpjglo-1 row 
    271          DO ji = 1, jpi                       
    272             ii = ji + nimpp - 1 
    273             bmask(ji,jpj-1) = bmask(ji,jpj-1) * tpol(ii) 
    274             bmask(ji,jpj  ) = 0._wp 
    275          END DO 
    276       ENDIF 
    277       IF( nperio == 5 .OR. nperio == 6 ) THEN   ! F-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj 
    278          bmask(:,jpj) = 0._wp 
    279       ENDIF 
    280       ! 
    281       IF( lk_mpp ) THEN                    ! mpp specificities 
    282          !                                      ! bmask is set to zero on the overlap region 
    283          IF( nbondi /= -1 .AND. nbondi /= 2 )   bmask(  1 :jpreci,:) = 0._wp 
    284          IF( nbondi /=  1 .AND. nbondi /= 2 )   bmask(nlci:jpi   ,:) = 0._wp 
    285          IF( nbondj /= -1 .AND. nbondj /= 2 )   bmask(:,  1 :jprecj) = 0._wp 
    286          IF( nbondj /=  1 .AND. nbondj /= 2 )   bmask(:,nlcj:jpj   ) = 0._wp 
    287          ! 
    288          IF( npolj == 3 .OR. npolj == 4 ) THEN  ! north fold : bmask must be set to 0. on rows jpj-1 and jpj 
    289             DO ji = 1, nlci 
    290                ii = ji + nimpp - 1 
    291                bmask(ji,nlcj-1) = bmask(ji,nlcj-1) * tpol(ii) 
    292                bmask(ji,nlcj  ) = 0._wp 
    293             END DO 
    294          ENDIF 
    295          IF( npolj == 5 .OR. npolj == 6 ) THEN  ! F-pt pivot and T-pt elliptic eq. : bmask set to 0. on row jpj 
    296             DO ji = 1, nlci 
    297                bmask(ji,nlcj  ) = 0._wp 
    298             END DO 
    299          ENDIF 
    300       ENDIF 
    301  
    302247      ! Lateral boundary conditions on velocity (modify fmask) 
    303248      ! ---------------------------------------      
     
    399344      ! 
    400345      CALL lbc_lnk( fmask, 'F', 1._wp )      ! Lateral boundary conditions on fmask 
    401  
     346      ! 
    402347      ! CAUTION : The fmask may be further modified in dyn_vor_init ( dynvor.F90 ) 
    403              
    404       IF( nprint == 1 .AND. lwp ) THEN      ! Control print 
    405          imsk(:,:) = INT( tmask_i(:,:) ) 
    406          WRITE(numout,*) ' tmask_i : ' 
    407          CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1,   & 
    408                &                           1, jpj, 1, 1, numout) 
    409          WRITE (numout,*) 
    410          WRITE (numout,*) ' dommsk: tmask for each level' 
    411          WRITE (numout,*) ' ----------------------------' 
    412          DO jk = 1, jpk 
    413             imsk(:,:) = INT( tmask(:,:,jk) ) 
    414  
    415             WRITE(numout,*) 
    416             WRITE(numout,*) ' level = ',jk 
    417             CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1,   & 
    418                &                              1, jpj, 1, 1, numout) 
    419          END DO 
    420          WRITE(numout,*) 
    421          WRITE(numout,*) ' dom_msk: vmask for each level' 
    422          WRITE(numout,*) ' -----------------------------' 
    423          DO jk = 1, jpk 
    424             imsk(:,:) = INT( vmask(:,:,jk) ) 
    425             WRITE(numout,*) 
    426             WRITE(numout,*) ' level = ',jk 
    427             CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1,   & 
    428                &                              1, jpj, 1, 1, numout) 
    429          END DO 
    430          WRITE(numout,*) 
    431          WRITE(numout,*) ' dom_msk: fmask for each level' 
    432          WRITE(numout,*) ' -----------------------------' 
    433          DO jk = 1, jpk 
    434             imsk(:,:) = INT( fmask(:,:,jk) ) 
    435             WRITE(numout,*) 
    436             WRITE(numout,*) ' level = ',jk 
    437             CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1,   & 
    438                &                              1, jpj, 1, 1, numout ) 
    439          END DO 
    440          WRITE(numout,*) 
    441          WRITE(numout,*) ' dom_msk: bmask ' 
    442          WRITE(numout,*) ' ---------------' 
    443          WRITE(numout,*) 
    444          imsk(:,:) = INT( bmask(:,:) ) 
    445          CALL prihin( imsk(:,:), jpi, jpj, 1, jpi, 1,   & 
    446             &                              1, jpj, 1, 1, numout ) 
    447       ENDIF 
    448348      ! 
    449349      CALL wrk_dealloc( jpi, jpj, imsk ) 
Note: See TracChangeset for help on using the changeset viewer.