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

Changeset 250


Ignore:
Timestamp:
2005-03-30T12:31:27+02:00 (19 years ago)
Author:
opalod
Message:

CT : UPDATE173 : Allow the possibility to have constant thickness levels for the vertical grid

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/DOM/domzgr.F90

    r247 r250  
    173173         WRITE(numout,*) '    zgr_z   : Reference vertical z-coordinates' 
    174174         WRITE(numout,*) '    ~~~~~~~' 
    175          IF ( ppa1 == 0. .AND. ppa0 == 0. .AND. ppsur == 0. ) THEN 
    176             WRITE(numout,*) '         zsur, za0, za1 computed from ' 
    177             WRITE(numout,*) '                 zdzmin = ', zdzmin 
    178             WRITE(numout,*) '                 zhmax  = ', zhmax 
    179          ENDIF 
    180          WRITE(numout,*) '              Namelist namzgr : value of coefficients for vertical mesh:' 
    181          WRITE(numout,*) '                 zsur = ', zsur 
    182          WRITE(numout,*) '                 za0  = ', za0 
    183          WRITE(numout,*) '                 za1  = ', za1 
    184          WRITE(numout,*) '                 zkth = ', zkth 
    185          WRITE(numout,*) '                 zacr = ', zacr 
     175         IF (  ppkth == 0. ) THEN               
     176              WRITE(numout,*) '            Uniform grid with ',jpk-1,' layers' 
     177              WRITE(numout,*) '            Total depth    :', zhmax 
     178              WRITE(numout,*) '            Layer thickness:', zhmax/(jpk-1) 
     179         ELSE 
     180            IF ( ppa1 == 0. .AND. ppa0 == 0. .AND. ppsur == 0. ) THEN 
     181               WRITE(numout,*) '         zsur, za0, za1 computed from ' 
     182               WRITE(numout,*) '                 zdzmin = ', zdzmin 
     183               WRITE(numout,*) '                 zhmax  = ', zhmax 
     184            ENDIF 
     185            WRITE(numout,*) '           Value of coefficients for vertical mesh:' 
     186            WRITE(numout,*) '                 zsur = ', zsur 
     187            WRITE(numout,*) '                 za0  = ', za0 
     188            WRITE(numout,*) '                 za1  = ', za1 
     189            WRITE(numout,*) '                 zkth = ', zkth 
     190            WRITE(numout,*) '                 zacr = ', zacr 
     191         ENDIF 
    186192      ENDIF 
    187193 
     
    189195      ! Reference z-coordinate (depth - scale factor at T- and W-points) 
    190196      ! ====================== 
    191  
    192       DO jk = 1, jpk 
    193          zw = FLOAT( jk ) 
    194          zt = FLOAT( jk ) + 0.5 
    195          gdepw(jk) = ( zsur + za0 * zw + za1 * zacr * LOG( COSH( (zw-zkth)/zacr ) )  ) 
    196          gdept(jk) = ( zsur + za0 * zt + za1 * zacr * LOG( COSH( (zt-zkth)/zacr ) )  ) 
    197          e3w  (jk) =          za0      + za1        * TANH(      (zw-zkth)/zacr   ) 
    198          e3t  (jk) =          za0      + za1        * TANH(      (zt-zkth)/zacr   ) 
    199       END DO 
    200       gdepw(1) = 0.e0   ! force first w-level to be exactly at zero 
    201  
     197      IF (  ppkth == 0. ) THEN            !  uniform vertical grid        
     198 
     199         za1 = zhmax/FLOAT(jpk-1)  
     200         DO jk = 1, jpk 
     201            zw = FLOAT( jk ) 
     202            zt = FLOAT( jk ) + 0.5 
     203            gdepw(jk) = ( zw - 1 ) * za1 
     204            gdept(jk) = ( zt - 1 ) * za1 
     205            e3w  (jk) =  za1 
     206            e3t  (jk) =  za1 
     207         END DO 
     208 
     209      ELSE 
     210 
     211         DO jk = 1, jpk 
     212            zw = FLOAT( jk ) 
     213            zt = FLOAT( jk ) + 0.5 
     214            gdepw(jk) = ( zsur + za0 * zw + za1 * zacr * LOG( COSH( (zw-zkth)/zacr ) )  ) 
     215            gdept(jk) = ( zsur + za0 * zt + za1 * zacr * LOG( COSH( (zt-zkth)/zacr ) )  ) 
     216            e3w  (jk) =          za0      + za1        * TANH(      (zw-zkth)/zacr   ) 
     217            e3t  (jk) =          za0      + za1        * TANH(      (zt-zkth)/zacr   ) 
     218         END DO 
     219         gdepw(1) = 0.e0   ! force first w-level to be exactly at zero 
     220 
     221      ENDIF 
    202222 
    203223      ! Control and  print 
Note: See TracChangeset for help on using the changeset viewer.