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

Changeset 15128


Ignore:
Timestamp:
2021-07-18T16:30:44+02:00 (3 years ago)
Author:
dbruciaferri
Message:

add 3D computation of model levels slope parameter

Location:
NEMO/branches/UKMO/tools_r4.0-HEAD_dev_MEs/DOMAINcfg/src
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/UKMO/tools_r4.0-HEAD_dev_MEs/DOMAINcfg/src/domain.f90

    r15121 r15128  
    385385      !!                              and depths (ln_e3_dep=F)  
    386386      !!---------------------------------------------------------------------- 
    387       INTEGER           ::   ji, jj, jk   ! dummy loop indices 
    388       INTEGER           ::   izco, izps, isco, icav 
    389       INTEGER           ::   inum     ! temprary units for 'domain_cfg.nc' file 
    390       CHARACTER(len=21) ::   clnam    ! filename (mesh and mask informations) 
    391       REAL(wp), DIMENSION(jpi,jpj) ::   z2d   ! workspace 
     387      INTEGER                          ::   ji, jj, jk             ! dummy loop indices 
     388      INTEGER                          ::   izco, izps, isco, icav 
     389      INTEGER                          ::   inum                   ! temporary units for  
     390                                                                   ! 'domain_cfg.nc' file 
     391      CHARACTER(len=21)                ::   clnam                  ! filename (mesh and  
     392                                                                   ! mask informations) 
     393      REAL(wp), DIMENSION(jpi,jpj)     ::   z2d                    ! workspace 
     394      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   z3d                    ! workspace 
    392395      !!---------------------------------------------------------------------- 
    393396      ! 
     
    493496         CALL dom_stiff( z2d ) 
    494497         CALL iom_rstput( 0, 0, inum, 'stiffness', z2d )        !    ! Max. grid stiffness ratio 
     498         CALL dom_stiff_3D( z3d ) 
     499         CALL iom_rstput( 0, 0, inum, 'stiff3D', z3d )  ! 3D stiffness ratio 
    495500      ENDIF 
    496501      ! 
  • NEMO/branches/UKMO/tools_r4.0-HEAD_dev_MEs/DOMAINcfg/src/domwri.f90

    r15121 r15128  
    3030   PUBLIC   dom_wri_coordinate   ! routine called by domhgr.F90 
    3131   PUBLIC   dom_stiff            ! routine called by inidom.F90 
     32   PUBLIC   dom_stiff_3d         ! routine called by domain.F90 
    3233 
    3334   !!---------------------------------------------------------------------- 
     
    480481   END SUBROUTINE dom_stiff 
    481482 
     483 
     484   SUBROUTINE dom_stiff_3D( px1 ) 
     485      !!---------------------------------------------------------------------- 
     486      !!                  ***  ROUTINE dom_stiff  *** 
     487      !!                      
     488      !! ** Purpose :   Diagnose maximum grid stiffness/hydrostatic consistency 
     489      !! 
     490      !! ** Method  :   Compute Haney (1991) hydrostatic condition ratio 
     491      !!                Save the maximum in the vertical direction 
     492      !!                (this number is only relevant in s-coordinates) 
     493      !! 
     494      !!                Haney, 1991, J. Phys. Oceanogr., 21, 610-619. 
     495      !!---------------------------------------------------------------------- 
     496      REAL(wp), DIMENSION(:,:,:), INTENT(out), OPTIONAL ::   px1   ! stiffness 
     497      ! 
     498      INTEGER  ::   ji, jj, jk 
     499      REAL(wp) ::   zrxmax 
     500      REAL(wp), DIMENSION(4) ::   zr1 
     501      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zx1 
     502      !!---------------------------------------------------------------------- 
     503      zx1(:,:,:) = 0._wp 
     504      zrxmax     = 0._wp 
     505      zr1(:)     = 0._wp 
     506      ! 
     507      DO ji = 2, jpim1 
     508         DO jj = 2, jpjm1 
     509            DO jk = 1, jpkm1 
     510!!gm   remark: dk(gdepw) = e3t   ===>>>  possible simplification of the following calculation .... 
     511!!             especially since it is gde3w which is used to compute the pressure gradient 
     512!!             furthermore, I think gdept_0 should be used below instead of w-point in the numerator 
     513!!             so that the ratio is computed at the same point (i.e. uw and vw) .... 
     514               zr1(1) = ABS(  ( gdepw_0(ji  ,jj,jk  )-gdepw_0(ji-1,jj,jk  )               & 
     515                    &           +gdepw_0(ji  ,jj,jk+1)-gdepw_0(ji-1,jj,jk+1) )            & 
     516                    &       / ( gdepw_0(ji  ,jj,jk  )+gdepw_0(ji-1,jj,jk  )               & 
     517                    &          -gdepw_0(ji  ,jj,jk+1)-gdepw_0(ji-1,jj,jk+1) + rsmall )  ) * umask(ji-1,jj,jk) 
     518               zr1(2) = ABS(  ( gdepw_0(ji+1,jj,jk  )-gdepw_0(ji  ,jj,jk  )               & 
     519                    &          +gdepw_0(ji+1,jj,jk+1)-gdepw_0(ji  ,jj,jk+1) )             & 
     520                    &       / ( gdepw_0(ji+1,jj,jk  )+gdepw_0(ji  ,jj,jk  )               & 
     521                    &          -gdepw_0(ji+1,jj,jk+1)-gdepw_0(ji  ,jj,jk+1) + rsmall )  ) * umask(ji  ,jj,jk) 
     522               zr1(3) = ABS(  ( gdepw_0(ji,jj+1,jk  )-gdepw_0(ji,jj  ,jk  )               & 
     523                    &          +gdepw_0(ji,jj+1,jk+1)-gdepw_0(ji,jj  ,jk+1) )             & 
     524                    &       / ( gdepw_0(ji,jj+1,jk  )+gdepw_0(ji,jj  ,jk  )               & 
     525                    &          -gdepw_0(ji,jj+1,jk+1)-gdepw_0(ji,jj  ,jk+1) + rsmall )  ) * vmask(ji,jj  ,jk) 
     526               zr1(4) = ABS(  ( gdepw_0(ji,jj  ,jk  )-gdepw_0(ji,jj-1,jk  )               & 
     527                    &          +gdepw_0(ji,jj  ,jk+1)-gdepw_0(ji,jj-1,jk+1) )             & 
     528                    &       / ( gdepw_0(ji,jj  ,jk  )+gdepw_0(ji,jj-1,jk  )               & 
     529                    &          -gdepw_0(ji,jj  ,jk+1)-gdepw_0(ji,jj-1,jk+1) + rsmall )  ) * vmask(ji,jj-1,jk) 
     530               zrxmax = MAXVAL( zr1(1:4) ) 
     531               zx1(ji,jj,jk) = zrxmax 
     532            END DO 
     533         END DO 
     534      END DO 
     535      CALL lbc_lnk( zx1, 'T', 1. ) 
     536      ! 
     537      IF( PRESENT( px1 ) )    px1 = zx1 
     538      ! 
     539   END SUBROUTINE dom_stiff_3D 
     540 
    482541   !!====================================================================== 
    483542END MODULE domwri 
Note: See TracChangeset for help on using the changeset viewer.