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 3600 for branches/2012/dev_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90 – NEMO

Ignore:
Timestamp:
2012-11-19T14:59:22+01:00 (11 years ago)
Author:
rfurner
Message:

Changes from branch dev_r3435_UKMO7_SCOORDS revision 3435 to 3507 merged in

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2012/dev_UKMO_2012/NEMOGCM/NEMO/OPA_SRC/DOM/domain.F90

    r3421 r3600  
    3636   USE dyncor_c1d      ! Coriolis term (c1d case)         (cor_c1d routine) 
    3737   USE timing          ! Timing 
     38   USE lbclnk          ! ocean lateral boundary condition (or mpp link) 
    3839 
    3940   IMPLICIT NONE 
     
    8485                             CALL dom_zgr      ! Vertical mesh and bathymetry 
    8586                             CALL dom_msk      ! Masks 
     87      IF( ln_sco )           CALL dom_stiff    ! Maximum stiffness ratio/hydrostatic consistency 
    8688      IF( lk_vvl         )   CALL dom_vvl      ! Vertical variable mesh 
    8789      ! 
     
    322324   END SUBROUTINE dom_ctl 
    323325 
     326   SUBROUTINE dom_stiff 
     327      !!---------------------------------------------------------------------- 
     328      !!                  ***  ROUTINE dom_stiff  *** 
     329      !!                      
     330      !! ** Purpose :   Diagnose maximum grid stiffness/hydrostatic consistency 
     331      !! 
     332      !! ** Method  :   Compute Haney (1991) hydrostatic condition ratio 
     333      !!                Save the maximum in the vertical direction 
     334      !!                (this number is only relevant in s-coordinates) 
     335      !! 
     336      !!                Haney, R. L., 1991: On the pressure gradient force 
     337      !!                over steep topography in sigma coordinate ocean models.  
     338      !!                J. Phys. Oceanogr., 21, 610???619. 
     339      !!---------------------------------------------------------------------- 
     340      INTEGER  ::   ji, jj, jk  
     341      REAL(wp) ::   zrxmax 
     342      REAL(wp), DIMENSION(4) :: zr1 
     343      !!---------------------------------------------------------------------- 
     344      rx1(:,:) = 0.e0 
     345      zrxmax   = 0.e0 
     346      zr1(:)   = 0.e0 
     347       
     348      DO ji = 2, jpim1 
     349         DO jj = 2, jpjm1 
     350            DO jk = 1, jpkm1 
     351               zr1(1) = umask(ji-1,jj  ,jk) *abs( (gdepw(ji  ,jj  ,jk  )-gdepw(ji-1,jj  ,jk  )  &  
     352                    &                         +gdepw(ji  ,jj  ,jk+1)-gdepw(ji-1,jj  ,jk+1)) & 
     353                    &                        /(gdepw(ji  ,jj  ,jk  )+gdepw(ji-1,jj  ,jk  )  & 
     354                    &                         -gdepw(ji  ,jj  ,jk+1)-gdepw(ji-1,jj  ,jk+1) + rsmall) ) 
     355               zr1(2) = umask(ji  ,jj  ,jk) *abs( (gdepw(ji+1,jj  ,jk  )-gdepw(ji  ,jj  ,jk  )  & 
     356                    &                         +gdepw(ji+1,jj  ,jk+1)-gdepw(ji  ,jj  ,jk+1)) & 
     357                    &                        /(gdepw(ji+1,jj  ,jk  )+gdepw(ji  ,jj  ,jk  )  & 
     358                    &                         -gdepw(ji+1,jj  ,jk+1)-gdepw(ji  ,jj  ,jk+1) + rsmall) ) 
     359               zr1(3) = vmask(ji  ,jj  ,jk) *abs( (gdepw(ji  ,jj+1,jk  )-gdepw(ji  ,jj  ,jk  )  & 
     360                    &                         +gdepw(ji  ,jj+1,jk+1)-gdepw(ji  ,jj  ,jk+1)) & 
     361                    &                        /(gdepw(ji  ,jj+1,jk  )+gdepw(ji  ,jj  ,jk  )  & 
     362                    &                         -gdepw(ji  ,jj+1,jk+1)-gdepw(ji  ,jj  ,jk+1) + rsmall) ) 
     363               zr1(4) = vmask(ji  ,jj-1,jk) *abs( (gdepw(ji  ,jj  ,jk  )-gdepw(ji  ,jj-1,jk  )  & 
     364                    &                         +gdepw(ji  ,jj  ,jk+1)-gdepw(ji  ,jj-1,jk+1)) & 
     365                    &                        /(gdepw(ji  ,jj  ,jk  )+gdepw(ji  ,jj-1,jk  )  & 
     366                    &                         -gdepw(ji,  jj  ,jk+1)-gdepw(ji  ,jj-1,jk+1) + rsmall) ) 
     367               zrxmax = MAXVAL(zr1(1:4)) 
     368               rx1(ji,jj) = MAX(rx1(ji,jj), zrxmax) 
     369            END DO 
     370         END DO 
     371      END DO 
     372 
     373      CALL lbc_lnk( rx1, 'T', 1. ) 
     374 
     375      zrxmax = MAXVAL(rx1) 
     376 
     377      IF( lk_mpp )   CALL mpp_max( zrxmax ) ! max over the global domain 
     378 
     379      IF(lwp) THEN 
     380         WRITE(numout,*) 
     381         WRITE(numout,*) 'dom_stiff : maximum grid stiffness ratio: ', zrxmax 
     382         WRITE(numout,*) '~~~~~~~~~' 
     383      ENDIF 
     384 
     385   END SUBROUTINE dom_stiff 
     386 
     387 
     388 
    324389   !!====================================================================== 
    325390END MODULE domain 
Note: See TracChangeset for help on using the changeset viewer.