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 14575 – NEMO

Changeset 14575


Ignore:
Timestamp:
2021-03-03T16:45:08+01:00 (3 years ago)
Author:
antsia
Message:

Merge with UKMO/dev_r7651_GO6pck_shlat2d@9854 only for files dommsk and namelist_ref

Location:
branches/NERC/dev_r5518_GO6_r9321_isf_merge_UKESM_AIS/NEMOGCM
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/NERC/dev_r5518_GO6_r9321_isf_merge_UKESM_AIS/NEMOGCM/CONFIG/SHARED/namelist_ref

    r14573 r14575  
    594594&namlbc        !   lateral momentum boundary condition 
    595595!----------------------------------------------------------------------- 
     596!              ! file name ! frequency (hours) !   variable   ! time interp.   !  clim   ! 'yearly'/ ! weights  ! rotation ! land/sea mask ! 
     597!              !           !  (if <0  months)  !     name     !   (logical)    !  (T/F ) ! 'monthly' ! filename ! pairing  ! filename      ! 
     598   sn_shlat2d  =  'shlat_coef.nc',     -12     ,   'shlat2d'  ,    .false.     ,  .true. ,  'yearly' , ''       , ''       , '' 
     599   ln_shlat2d  = .false.   !  read lateral momentum boundary condition from a file (T) 
    596600   rn_shlat    =    2.     !  shlat = 0  !  0 < shlat < 2  !  shlat = 2  !  2 < shlat 
    597601                           !  free slip  !   partial slip  !   no slip   ! strong slip 
  • branches/NERC/dev_r5518_GO6_r9321_isf_merge_UKESM_AIS/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r14573 r14575  
    3535   USE wrk_nemo        ! Memory allocation 
    3636   USE timing          ! Timing 
     37   USE iom             ! For shlat2d 
     38   USE fldread         ! for sn_shlat2d 
    3739 
    3840   IMPLICIT NONE 
     
    143145      REAL(wp) ::  zphi_drake_passage, zshlat_antarc 
    144146      REAL(wp), POINTER, DIMENSION(:,:) ::  zwf 
    145       !! 
    146       NAMELIST/namlbc/ rn_shlat, ln_vorlat 
     147 
     148      INTEGER  :: inum             !  logical unit for shlat2d 
     149      REAL(wp) :: zshlat           !: locally modified shlat for some strait 
     150      REAL(wp), POINTER, DIMENSION(:,:) :: zshlat2d 
     151      LOGICAL  :: ln_shlat2d 
     152      TYPE(FLD_N) :: sn_shlat2d 
     153      !! 
     154      NAMELIST/namlbc/ rn_shlat, ln_vorlat, ln_shlat2d, sn_shlat2d 
    147155      !!--------------------------------------------------------------------- 
    148156      ! 
     
    177185         WRITE(ctmp1,*) ' rn_shlat is negative = ', rn_shlat 
    178186         CALL ctl_stop( ctmp1 ) 
     187      ENDIF 
     188 
     189      IF ( ln_shlat2d ) THEN 
     190         IF(lwp) WRITE(numout,*) '         READ shlat as a 2D coefficient in a file ' 
     191         CALL wrk_alloc( jpi, jpj, zshlat2d  ) 
     192         CALL iom_open(sn_shlat2d%clname, inum) 
     193         CALL iom_get (inum, jpdom_data, sn_shlat2d%clvar, zshlat2d, 1) ! 
     194         CALL iom_close(inum) 
    179195      ENDIF 
    180196 
     
    399415      DO jk = 1, jpk 
    400416         zwf(:,:) = fmask(:,:,jk)          
    401          DO jj = 2, jpjm1 
    402             DO ji = fs_2, fs_jpim1   ! vector opt. 
    403                IF( fmask(ji,jj,jk) == 0._wp ) THEN 
    404                   fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
    405                      &                                           zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
    406                ENDIF 
    407             END DO 
    408          END DO 
     417         IF (  ln_shlat2d ) THEN 
     418            DO jj = 2, jpjm1 
     419               DO ji = fs_2, fs_jpim1   ! vector opt. 
     420                  IF( fmask(ji,jj,jk) == 0. ) THEN 
     421                     fmask(ji,jj,jk) = zshlat2d(ji,jj) * MIN( 1._wp, MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
     422                        &                                              zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
     423                  ENDIF 
     424               END DO 
     425            END DO 
     426         ELSE 
     427            DO jj = 2, jpjm1 
     428               DO ji = fs_2, fs_jpim1   ! vector opt. 
     429                  IF( fmask(ji,jj,jk) == 0._wp ) THEN 
     430                     fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
     431                        &                                           zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
     432                  ENDIF 
     433               END DO 
     434            END DO 
     435         ENDIF 
    409436         DO jj = 2, jpjm1 
    410437            IF( fmask(1,jj,jk) == 0._wp ) THEN 
     
    569596      CALL wrk_dealloc( jpi, jpj, imsk ) 
    570597      CALL wrk_dealloc( jpi, jpj, zwf  ) 
     598      IF ( ln_shlat2d ) THEN 
     599        CALL wrk_dealloc( jpi, jpj, zshlat2d  ) 
     600      ENDIF 
    571601      ! 
    572602      IF( nn_timing == 1 )  CALL timing_stop('dom_msk') 
Note: See TracChangeset for help on using the changeset viewer.