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 6991 for branches/UKMO/CO6_KD490_amm7oper/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90 – NEMO

Ignore:
Timestamp:
2016-10-05T12:08:37+02:00 (8 years ago)
Author:
kingr
Message:

Adding Momme's bdy changes for zerograd and neumann conditions.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/CO6_KD490_amm7oper/NEMOGCM/NEMO/OPA_SRC/DYN/dynkeg.F90

    r6331 r6991  
    2424   USE wrk_nemo        ! Memory Allocation 
    2525   USE timing          ! Timing 
    26  
     26#if defined key_bdy 
     27   USE bdy_oce         ! ocean open boundary conditions 
     28#endif 
     29    
    2730   IMPLICIT NONE 
    2831   PRIVATE 
     
    7881      REAL(wp), POINTER, DIMENSION(:,:,:) :: zhke 
    7982      REAL(wp), POINTER, DIMENSION(:,:,:) :: ztrdu, ztrdv  
     83#if defined key_bdy 
     84      INTEGER  ::   jb                 ! dummy loop indices 
     85      INTEGER  ::   ii, ij, igrd, ib_bdy   ! local integers 
     86      INTEGER  ::   fu, fv 
     87#endif 
    8088      !!---------------------------------------------------------------------- 
    8189      ! 
     
    97105       
    98106      zhke(:,:,jpk) = 0._wp 
     107 
     108#if defined key_bdy 
     109      ! Maria Luneva & Fred Wobus: July-2016 
     110      ! compensate for lack of turbulent kinetic energy on liquid bdy points 
     111      DO ib_bdy = 1, nb_bdy 
     112         IF( cn_dyn3d(ib_bdy) /= 'none' ) THEN 
     113            igrd = 2           ! Copying normal velocity into points outside bdy 
     114            DO jb = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
     115               DO jk = 1, jpkm1 
     116                  ii   = idx_bdy(ib_bdy)%nbi(jb,igrd) 
     117                  ij   = idx_bdy(ib_bdy)%nbj(jb,igrd) 
     118                  fu   = NINT( idx_bdy(ib_bdy)%flagu(jb,igrd) ) 
     119                  un(ii-fu,ij,jk) = un(ii,ij,jk) * umask(ii,ij,jk) 
     120               END DO 
     121            END DO 
     122            ! 
     123            igrd = 3           ! Copying normal velocity into points outside bdy 
     124            DO jb = 1, idx_bdy(ib_bdy)%nblenrim(igrd) 
     125               DO jk = 1, jpkm1 
     126                  ii   = idx_bdy(ib_bdy)%nbi(jb,igrd) 
     127                  ij   = idx_bdy(ib_bdy)%nbj(jb,igrd) 
     128                  fv   = NINT( idx_bdy(ib_bdy)%flagv(jb,igrd) ) 
     129                  vn(ii,ij-fv,jk) = vn(ii,ij,jk) * vmask(ii,ij,jk) 
     130               END DO 
     131            END DO 
     132         ENDIF 
     133      ENDDO  
     134#endif  
    99135       
    100136      SELECT CASE ( kscheme )             !== Horizontal kinetic energy at T-point  ==! 
     
    134170      END SELECT 
    135171      ! 
     172 
     173#if defined key_bdy 
     174      ! restore velocity masks at points outside boundary 
     175      un(:,:,:) = un(:,:,:) * umask(:,:,:) 
     176      vn(:,:,:) = vn(:,:,:) * vmask(:,:,:) 
     177#endif      
     178 
    136179      DO jk = 1, jpkm1                    !==  grad( KE ) added to the general momentum trends  ==! 
    137180         DO jj = 2, jpjm1 
Note: See TracChangeset for help on using the changeset viewer.