Ignore:
Timestamp:
2019-09-18T10:53:22+02:00 (19 months ago)
Author:
mattmartin
Message:

Added code to include variable slip condition which is used by orca12 into the main GO6 FOAM branch so that the branch list doesn't need to be different for orca12 and orca025.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_package_FOAMv14/NEMOGCM/NEMO/OPA_SRC/DOM/dommsk.F90

    r10302 r11559  
    3333   USE domwri 
    3434   USE timing          ! Timing 
    35  
     35   USE iom             ! For shlat2d 
     36   USE fldread         ! for sn_shlat2d 
     37    
    3638   IMPLICIT NONE 
    3739   PRIVATE 
     
    141143      REAL(wp), POINTER, DIMENSION(:,:) ::  zwf 
    142144      REAL(wp) :: uvt(jpi,jpj)   ! dummy array for masking purposes. 
    143       !! 
    144       NAMELIST/namlbc/ rn_shlat, ln_vorlat 
     145      INTEGER  :: inum             !  logical unit for shlat2d 
     146      REAL(wp) :: zshlat           !: locally modified shlat for some strait 
     147      REAL(wp), POINTER, DIMENSION(:,:) :: zshlat2d 
     148      LOGICAL  :: ln_shlat2d 
     149      TYPE(FLD_N) :: sn_shlat2d 
     150      !! 
     151      NAMELIST/namlbc/ rn_shlat, ln_vorlat, ln_shlat2d, sn_shlat2d 
    145152      !!--------------------------------------------------------------------- 
    146153      ! 
     
    177184      ENDIF 
    178185 
     186      IF ( ln_shlat2d ) THEN 
     187         IF(lwp) WRITE(numout,*) '         READ shlat as a 2D coefficient in a file ' 
     188         CALL wrk_alloc( jpi, jpj, zshlat2d  ) 
     189         CALL iom_open(sn_shlat2d%clname, inum) 
     190         CALL iom_get (inum, jpdom_data, sn_shlat2d%clvar, zshlat2d, 1) ! 
     191         CALL iom_close(inum) 
     192      ENDIF 
     193       
    179194      ! 1. Ocean/land mask at t-point (computed from mbathy) 
    180195      ! ----------------------------- 
     
    391406      DO jk = 1, jpk 
    392407         zwf(:,:) = fmask(:,:,jk)          
    393          DO jj = 2, jpjm1 
    394             DO ji = fs_2, fs_jpim1   ! vector opt. 
    395                IF( fmask(ji,jj,jk) == 0._wp ) THEN 
    396                   fmask(ji,jj,jk) = rn_shlat * MIN( 1._wp , MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
    397                      &                                           zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
    398                ENDIF 
    399             END DO 
    400          END DO 
     408         IF (  ln_shlat2d ) THEN 
     409            DO jj = 2, jpjm1 
     410               DO ji = fs_2, fs_jpim1   ! vector opt. 
     411                  IF( fmask(ji,jj,jk) == 0. ) THEN 
     412                     fmask(ji,jj,jk) = zshlat2d(ji,jj) * MIN( 1._wp, MAX( zwf(ji+1,jj), zwf(ji,jj+1),   & 
     413                        &                                              zwf(ji-1,jj), zwf(ji,jj-1)  )  ) 
     414                  ENDIF 
     415               END DO 
     416            END DO 
     417         ELSE 
     418            DO jj = 2, jpjm1 
     419               DO ji = fs_2, fs_jpim1   ! vector opt. 
     420                  IF( fmask(ji,jj,jk) == 0._wp ) THEN 
     421                     fmask(ji,jj,jk) = rn_shlat * 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         ENDIF 
    401427         DO jj = 2, jpjm1 
    402428            IF( fmask(1,jj,jk) == 0._wp ) THEN 
     
    561587      CALL wrk_dealloc( jpi, jpj, imsk ) 
    562588      CALL wrk_dealloc( jpi, jpj, zwf  ) 
     589      IF ( ln_shlat2d ) THEN 
     590        CALL wrk_dealloc( jpi, jpj, zshlat2d  ) 
     591      ENDIF 
    563592      ! 
    564593      IF( nn_timing == 1 )  CALL timing_stop('dom_msk') 
Note: See TracChangeset for help on using the changeset viewer.