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 12691 for NEMO/branches/UKMO/NEMO_4.0.1_biharmonic_GM/src/OCE – NEMO

Ignore:
Timestamp:
2020-04-06T17:36:16+02:00 (4 years ago)
Author:
davestorkey
Message:

UKMO/NEMO_4.0.1_biharmonic_GM : stabilising correction terms

Location:
NEMO/branches/UKMO/NEMO_4.0.1_biharmonic_GM/src/OCE
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/NEMO_4.0.1_biharmonic_GM/src/OCE/DIA/diaar5.F90

    r12535 r12691  
    136136         !                                         ! steric sea surface height 
    137137         CALL eos( tsn, zrhd, zrhop, gdept_n(:,:,:) )                 ! now in situ and potential density 
    138          !CW: commenting out the following line, as seems weird to zero the array before output & only way to get rhop output 
    139          !zrhop(:,:,jpk) = 0._wp 
     138         zrhop(:,:,jpk) = 0._wp 
    140139         CALL iom_put( 'rhop', zrhop ) 
    141140         ! 
  • NEMO/branches/UKMO/NEMO_4.0.1_biharmonic_GM/src/OCE/DYN/dynldf_lap_blp.F90

    r12688 r12691  
    1717   USE ldfslp         ! iso-neutral slopes  
    1818   USE zdf_oce        ! ocean vertical physics 
     19   USE phycst 
    1920   ! 
    2021   USE in_out_manager ! I/O manager 
     
    211212      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    212213      ! 
    213       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zulap, zvlap   ! laplacian at u- and v-point 
    214       REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zulapdz, zvlapdz   ! -1*bhm * d/dz(del^2 u) at u- and v-point 
     214      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zulap, zvlap     ! laplacian at u- and v-point 
     215      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zulapdz, zvlapdz ! -1*bhm * d/dz(del^2 u) at u- and v-point 
     216      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zmu              ! = bhm / avm 
    215217      !!---------------------------------------------------------------------- 
    216218      ! 
     
    222224      ! 
    223225   
     226      ! Calculate ratio of bhm and avm for stabilising correction terms 
     227      ! and add to avm to be included in the vertical diffusion calculation later. 
     228      DO jk = 2, jpkm1  
     229         DO jj = 2, jpjm1 
     230            DO ji = fs_2, jpim1   ! vector opt. 
     231               zmu(ji,jj,jk) = ( bhm(ji,jj,jk) / (avm(ji,jj,jk) + rsmall) ) * wmask(ji,jj,jk) 
     232               avm(ji,jj,jk) = avm(ji,jj,jk) + zmu(ji,jj,jk) 
     233            ENDDO 
     234         ENDDO 
     235      ENDDO 
     236      CALL lbc_lnk_multi( 'dyn_ldf_bgm', zmu, 'W', 1. , avm, 'W', 1. )  
     237       
     238      ! Calculate (del2 u) 
    224239      CALL dyn_ldf_lap_no_ahm( kt, pub, pvb, zulap, zvlap, 1 )    
    225240 
     
    230245         DO jj = 2, jpjm1 
    231246            DO ji = fs_2, jpim1   ! vector opt. 
    232                 zulapdz(ji,jj,jk) = -0.5_wp*(bhm(ji+1,jj  ,jk)+bhm(ji,jj,jk))*(zulap(ji,jj,jk-1) - zulap(ji,jj,jk)) * wumask(ji,jj,jk) / e3uw_n(ji,jj,jk) 
    233                 zvlapdz(ji,jj,jk) = -0.5_wp*(bhm(ji  ,jj+1,jk)+bhm(ji,jj,jk))*(zvlap(ji,jj,jk-1) - zvlap(ji,jj,jk)) * wvmask(ji,jj,jk) / e3vw_n(ji,jj,jk) 
     247                zulapdz(ji,jj,jk) = ( -0.5_wp*(bhm(ji+1,jj  ,jk)+bhm(ji,jj,jk))*(zulap(ji,jj,jk-1) - zulap(ji,jj,jk)) & 
     248     &                                -0.5_wp*(zmu(ji+1,jj  ,jk)+zmu(ji,jj,jk))*(pub  (ji,jj,jk-1) - pub  (ji,jj,jk)) ) * wumask(ji,jj,jk) / e3uw_n(ji,jj,jk)  
     249                zvlapdz(ji,jj,jk) = ( -0.5_wp*(bhm(ji  ,jj+1,jk)+bhm(ji,jj,jk))*(zvlap(ji,jj,jk-1) - zvlap(ji,jj,jk)) & 
     250     &                                -0.5_wp*(zmu(ji  ,jj+1,jk)+zmu(ji,jj,jk))*(pvb  (ji,jj,jk-1) - pvb  (ji,jj,jk)) ) * wumask(ji,jj,jk) / e3uw_n(ji,jj,jk)  
    234251            ENDDO 
    235252         ENDDO 
    236253      ENDDO 
    237  
    238254 
    239255!CW: set boundary conditions: d/dz(del^2 u) = 0 at top and bottom, so that eddy-induced velocity, w*=0 
     
    252268        ENDDO 
    253269 
    254  
    255  
    256  
    257270!!    calculate d/dz(-bhm * d/dz(del^2 u)) 
    258271                                                       ! =============== 
  • NEMO/branches/UKMO/NEMO_4.0.1_biharmonic_GM/src/OCE/LDF/ldfdyn.F90

    r12688 r12691  
    521521            ELSEIF( ln_dynldf_bgm ) THEN                 !bi-Laplacian GM operator (mask only) 
    522522               bhm(:,:,1:jpkm1) =       bhm(:,:,1:jpkm1)   * wmask(:,:,1:jpkm1) 
     523               CALL lbc_lnk( 'ldf_dyn_init', bhm , 'W', 1. )  
    523524               ! 
    524525            ENDIF 
Note: See TracChangeset for help on using the changeset viewer.