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 15603 for branches/UKMO/dev_r5518_GO6_starthour_obsoper/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90 – NEMO

Ignore:
Timestamp:
2021-12-16T10:39:55+01:00 (2 years ago)
Author:
mattmartin
Message:

Updated NEMO branch for coupled NWP at GO6 to include stochastic model perturbations.
For more info see ticket: https://code.metoffice.gov.uk/trac/nwpscience/ticket/1125.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/UKMO/dev_r5518_GO6_starthour_obsoper/NEMOGCM/NEMO/OPA_SRC/ZDF/zdfgls.F90

    r12555 r15603  
    22   !!====================================================================== 
    33   !!                       ***  MODULE  zdfgls  *** 
    4    !! Ocean physics:  vertical mixing coefficient computed from the gls  
     4   !! Ocean physics:  vertical mixing coefficient computed from the gls 
    55   !!                 turbulent closure parameterization 
    66   !!====================================================================== 
     
    1616   !!   gls_rst       : read/write gls restart in ocean restart file 
    1717   !!---------------------------------------------------------------------- 
    18    USE oce            ! ocean dynamics and active tracers  
     18   USE oce            ! ocean dynamics and active tracers 
    1919   USE dom_oce        ! ocean space and time domain 
    2020   USE domvvl         ! ocean space and time domain : variable volume layer 
     
    3131   USE iom            ! I/O manager library 
    3232   USE timing         ! Timing 
    33    USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined)   
     33   USE lib_fortran    ! Fortran utilities (allows no signed zero when 'key_nosignedzero' defined) 
     34   USE stopack 
    3435 
    3536   IMPLICIT NONE 
     
    6162   REAL(wp) ::   rn_crban          ! Craig and Banner constant for surface breaking waves mixing 
    6263   REAL(wp) ::   rn_hsro           ! Minimum surface roughness 
    63    REAL(wp) ::   rn_frac_hs        ! Fraction of wave height as surface roughness (if nn_z0_met > 1)  
     64   REAL(wp) ::   rn_frac_hs        ! Fraction of wave height as surface roughness (if nn_z0_met > 1) 
    6465 
    6566   REAL(wp) ::   rcm_sf        =  0.73_wp     ! Shear free turbulence parameters 
    66    REAL(wp) ::   ra_sf         = -2.0_wp      ! Must be negative -2 < ra_sf < -1  
    67    REAL(wp) ::   rl_sf         =  0.2_wp      ! 0 <rl_sf<vkarmn     
     67   REAL(wp) ::   ra_sf         = -2.0_wp      ! Must be negative -2 < ra_sf < -1 
     68   REAL(wp) ::   rl_sf         =  0.2_wp      ! 0 <rl_sf<vkarmn 
    6869   REAL(wp) ::   rghmin        = -0.28_wp 
    6970   REAL(wp) ::   rgh0          =  0.0329_wp 
     
    7273   REAL(wp) ::   ra2           =  0.74_wp 
    7374   REAL(wp) ::   rb1           = 16.60_wp 
    74    REAL(wp) ::   rb2           = 10.10_wp          
    75    REAL(wp) ::   re2           =  1.33_wp          
     75   REAL(wp) ::   rb2           = 10.10_wp 
     76   REAL(wp) ::   re2           =  1.33_wp 
    7677   REAL(wp) ::   rl1           =  0.107_wp 
    7778   REAL(wp) ::   rl2           =  0.0032_wp 
     
    133134      INTEGER  ::   ji, jj, jk, ibot, ibotm1, dir  ! dummy loop arguments 
    134135      REAL(wp) ::   zesh2, zsigpsi, zcoef, zex1, zex2   ! local scalars 
    135       REAL(wp) ::   ztx2, zty2, zup, zdown, zcof        !   -      -  
     136      REAL(wp) ::   ztx2, zty2, zup, zdown, zcof        !   -      - 
    136137      REAL(wp) ::   zratio, zrn2, zflxb, sh             !   -      - 
    137138      REAL(wp) ::   prod, buoy, diss, zdiss, sm         !   -      - 
     
    139140      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zdep 
    140141      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zkar 
    141       REAL(wp), POINTER, DIMENSION(:,:  ) ::   zflxs       ! Turbulence fluxed induced by internal waves  
     142      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zflxs       ! Turbulence fluxed induced by internal waves 
    142143      REAL(wp), POINTER, DIMENSION(:,:  ) ::   zhsro       ! Surface roughness (surface waves) 
    143144      REAL(wp), POINTER, DIMENSION(:,:,:) ::   eb          ! tke at time before 
     
    156157      CALL wrk_alloc( jpi,jpj, zdep, zkar, zflxs, zhsro ) 
    157158      CALL wrk_alloc( jpi,jpj,jpk, eb, mxlb, shear, eps, zwall_psi, z_elem_a, z_elem_b, z_elem_c, psi  ) 
    158        
     159 
    159160      ! Preliminary computing 
    160161 
     
    165166         avm (:,:,:) = avm_k (:,:,:) 
    166167         avmu(:,:,:) = avmu_k(:,:,:) 
    167          avmv(:,:,:) = avmv_k(:,:,:)  
     168         avmv(:,:,:) = avmv_k(:,:,:) 
    168169      ENDIF 
    169170 
    170171      ! Compute surface and bottom friction at T-points 
    171 !CDIR NOVERRCHK           
    172       DO jj = 2, jpjm1           
    173 !CDIR NOVERRCHK          
    174          DO ji = fs_2, fs_jpim1   ! vector opt.          
     172!CDIR NOVERRCHK 
     173      DO jj = 2, jpjm1 
     174!CDIR NOVERRCHK 
     175         DO ji = fs_2, fs_jpim1   ! vector opt. 
    175176            ! 
    176177            ! surface friction 
    177178            ustars2(ji,jj) = r1_rau0 * taum(ji,jj) * tmask(ji,jj,1) 
    178             !    
    179             ! bottom friction (explicit before friction)         
    180             ! Note that we chose here not to bound the friction as in dynbfr)    
    181             ztx2 = (  bfrua(ji,jj)  * ub(ji,jj,mbku(ji,jj)) + bfrua(ji-1,jj) * ub(ji-1,jj,mbku(ji-1,jj))  )   &          
    182                & * ( 1._wp - 0.5_wp * umask(ji,jj,1) * umask(ji-1,jj,1)  )       
    183             zty2 = (  bfrva(ji,jj)  * vb(ji,jj,mbkv(ji,jj)) + bfrva(ji,jj-1) * vb(ji,jj-1,mbkv(ji,jj-1))  )   &          
    184                & * ( 1._wp - 0.5_wp * vmask(ji,jj,1) * vmask(ji,jj-1,1)  )       
    185             ustarb2(ji,jj) = SQRT( ztx2 * ztx2 + zty2 * zty2 ) * tmask(ji,jj,1)          
    186          END DO          
    187       END DO     
     179            ! 
     180            ! bottom friction (explicit before friction) 
     181            ! Note that we chose here not to bound the friction as in dynbfr) 
     182            ztx2 = (  bfrua(ji,jj)  * ub(ji,jj,mbku(ji,jj)) + bfrua(ji-1,jj) * ub(ji-1,jj,mbku(ji-1,jj))  )   & 
     183               & * ( 1._wp - 0.5_wp * umask(ji,jj,1) * umask(ji-1,jj,1)  ) 
     184            zty2 = (  bfrva(ji,jj)  * vb(ji,jj,mbkv(ji,jj)) + bfrva(ji,jj-1) * vb(ji,jj-1,mbkv(ji,jj-1))  )   & 
     185               & * ( 1._wp - 0.5_wp * vmask(ji,jj,1) * vmask(ji,jj-1,1)  ) 
     186            ustarb2(ji,jj) = SQRT( ztx2 * ztx2 + zty2 * zty2 ) * tmask(ji,jj,1) 
     187         END DO 
     188      END DO 
    188189 
    189190      ! Set surface roughness length 
    190191      SELECT CASE ( nn_z0_met ) 
    191192      ! 
    192       CASE ( 0 )             ! Constant roughness           
     193      CASE ( 0 )             ! Constant roughness 
    193194         zhsro(:,:) = rn_hsro 
    194195      CASE ( 1 )             ! Standard Charnock formula 
     
    226227      IF( nn_clos == 0 ) THEN    ! Mellor-Yamada 
    227228         DO jk = 2, jpkm1 
    228             DO jj = 2, jpjm1  
     229            DO jj = 2, jpjm1 
    229230               DO ji = fs_2, fs_jpim1   ! vector opt. 
    230231                  zup   = mxln(ji,jj,jk) * fsdepw(ji,jj,mbkt(ji,jj)+1) 
     
    275276               IF( ln_sigpsi ) THEN 
    276277                  zsigpsi = MIN( 1._wp, zesh2 / eps(ji,jj,jk) )     ! 0. <= zsigpsi <= 1. 
    277                   zwall_psi(ji,jj,jk) = rsc_psi /   &  
     278                  zwall_psi(ji,jj,jk) = rsc_psi /   & 
    278279                     &     (  zsigpsi * rsc_psi + (1._wp-zsigpsi) * rsc_psi0 / MAX( zwall(ji,jj,jk), 1._wp )  ) 
    279280               ELSE 
     
    294295               ! diagonal 
    295296               z_elem_b(ji,jj,jk) = 1._wp - z_elem_a(ji,jj,jk) - z_elem_c(ji,jj,jk)  & 
    296                   &                       + rdt * zdiss * tmask(ji,jj,jk)  
     297                  &                       + rdt * zdiss * tmask(ji,jj,jk) 
    297298               ! 
    298299               ! right hand side in en 
     
    316317      ! First level 
    317318      en(:,:,1) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1)**(2._wp/3._wp) 
    318       en(:,:,1) = MAX(en(:,:,1), rn_emin)  
     319      en(:,:,1) = MAX(en(:,:,1), rn_emin) 
    319320      z_elem_a(:,:,1) = en(:,:,1) 
    320321      z_elem_c(:,:,1) = 0._wp 
    321322      z_elem_b(:,:,1) = 1._wp 
    322       !  
     323      ! 
    323324      ! One level below 
    324325      en(:,:,2) = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1 * ((zhsro(:,:)+fsdepw(:,:,2)) & 
    325326          &            / zhsro(:,:) )**(1.5_wp*ra_sf))**(2._wp/3._wp) 
    326327      en(:,:,2) = MAX(en(:,:,2), rn_emin ) 
    327       z_elem_a(:,:,2) = 0._wp  
     328      z_elem_a(:,:,2) = 0._wp 
    328329      z_elem_c(:,:,2) = 0._wp 
    329330      z_elem_b(:,:,2) = 1._wp 
     
    334335      ! Dirichlet conditions at k=1 
    335336      en(:,:,1)       = rc02r * ustars2(:,:) * (1._wp + rsbc_tke1)**(2._wp/3._wp) 
    336       en(:,:,1)       = MAX(en(:,:,1), rn_emin)       
     337      en(:,:,1)       = MAX(en(:,:,1), rn_emin) 
    337338      z_elem_a(:,:,1) = en(:,:,1) 
    338339      z_elem_c(:,:,1) = 0._wp 
     
    357358      SELECT CASE ( nn_bc_bot ) 
    358359      ! 
    359       CASE ( 0 )             ! Dirichlet  
     360      CASE ( 0 )             ! Dirichlet 
    360361         !                      ! en(ibot) = u*^2 / Co2 and mxln(ibot) = rn_lmin 
    361362         !                      ! Balance between the production and the dissipation terms 
     
    377378               z_elem_c(ji,jj,ibotm1) = 0._wp 
    378379               z_elem_b(ji,jj,ibotm1) = 1._wp 
    379                en(ji,jj,ibotm1) = MAX( rc02r * ustarb2(ji,jj), rn_emin )  
     380               en(ji,jj,ibotm1) = MAX( rc02r * ustarb2(ji,jj), rn_emin ) 
    380381            END DO 
    381382         END DO 
    382383         ! 
    383384      CASE ( 1 )             ! Neumman boundary condition 
    384          !                       
     385         ! 
    385386!CDIR NOVERRCHK 
    386387         DO jj = 2, jpjm1 
     
    428429         END DO 
    429430      END DO 
    430       !                                            ! set the minimum value of tke  
     431      !                                            ! set the minimum value of tke 
    431432      en(:,:,:) = MAX( en(:,:,:), rn_emin ) 
    432433 
     
    470471            DO jj = 2, jpjm1 
    471472               DO ji = fs_2, fs_jpim1   ! vector opt. 
    472                   psi(ji,jj,jk)  = rc02 * eb(ji,jj,jk) * mxlb(ji,jj,jk)**rnn  
     473                  psi(ji,jj,jk)  = rc02 * eb(ji,jj,jk) * mxlb(ji,jj,jk)**rnn 
    473474               END DO 
    474475            END DO 
     
    489490               ! 
    490491               ! psi / k 
    491                zratio = psi(ji,jj,jk) / eb(ji,jj,jk)  
     492               zratio = psi(ji,jj,jk) / eb(ji,jj,jk) 
    492493               ! 
    493494               ! psi3+ : stable : B=-KhN²<0 => N²>0 if rn2>0 dir = 1 (stable) otherwise dir = 0 (unstable) 
     
    509510               zesh2 = dir * ( prod + buoy )          + (1._wp - dir ) * prod                        ! production term 
    510511               zdiss = dir * ( diss / psi(ji,jj,jk) ) + (1._wp - dir ) * (diss-buoy) / psi(ji,jj,jk) ! dissipation term 
    511                !                                                         
     512               ! 
    512513               ! building the matrix 
    513514               zcof = rfact_psi * zwall_psi(ji,jj,jk) * tmask(ji,jj,jk) 
     
    551552      z_elem_c(:,:,2) = 0._wp 
    552553      z_elem_b(:,:,2) = 1._wp 
    553       !  
     554      ! 
    554555      ! 
    555556      CASE ( 1 )             ! Neumann boundary condition on d(psi)/dz 
     
    575576      psi(:,:,2) = psi(:,:,2) + zflxs(:,:) / fse3w(:,:,2) 
    576577 
    577       !    
     578      ! 
    578579      ! 
    579580      END SELECT 
     
    585586      ! 
    586587      ! 
    587       CASE ( 0 )             ! Dirichlet  
     588      CASE ( 0 )             ! Dirichlet 
    588589         !                      ! en(ibot) = u*^2 / Co2 and mxln(ibot) = vkarmn * rn_bfrz0 
    589590         !                      ! Balance between the production and the dissipation terms 
     
    610611         ! 
    611612      CASE ( 1 )             ! Neumman boundary condition 
    612          !                       
     613         ! 
    613614!CDIR NOVERRCHK 
    614615         DO jj = 2, jpjm1 
     
    692693            DO jj = 2, jpjm1 
    693694               DO ji = fs_2, fs_jpim1   ! vector opt. 
    694                   eps(ji,jj,jk) = rc04 * en(ji,jj,jk) * psi(ji,jj,jk)  
     695                  eps(ji,jj,jk) = rc04 * en(ji,jj,jk) * psi(ji,jj,jk) 
    695696               END DO 
    696697            END DO 
     
    719720               eps(ji,jj,jk)  = MAX( eps(ji,jj,jk), rn_epsmin ) 
    720721               mxln(ji,jj,jk)  = rc03 * en(ji,jj,jk) * SQRT( en(ji,jj,jk) ) / eps(ji,jj,jk) 
    721                ! Galperin criterium (NOTE : Not required if the proper value of C3 in stable cases is calculated)  
     722               ! Galperin criterium (NOTE : Not required if the proper value of C3 in stable cases is calculated) 
    722723               zrn2 = MAX( rn2(ji,jj,jk), rsmall ) 
    723724               IF (ln_length_lim) mxln(ji,jj,jk) = MIN(  rn_clim_galp * SQRT( 2._wp * en(ji,jj,jk) / zrn2 ), mxln(ji,jj,jk) ) 
    724725            END DO 
    725726         END DO 
    726       END DO  
     727      END DO 
    727728 
    728729      ! 
     
    806807            END DO 
    807808         END DO 
     809#if defined key_traldf_c2d || key_traldf_c3d 
     810         IF( ln_stopack) THEN 
     811            IF( nn_spp_avt > 0 ) CALL spp_gen(kt, avt(:,:,jk), nn_spp_avt, rn_avt_sd,jk) 
     812            IF( nn_spp_avm > 0 ) CALL spp_gen(kt, avm(:,:,jk), nn_spp_avm, rn_avm_sd,jk) 
     813         ENDIF 
     814#else 
     815         IF ( ln_stopack ) & 
     816            & CALL ctl_stop( 'zdf_gls: parameter perturbation will only work with '// & 
     817                             'key_traldf_c2d or key_traldf_c3d') 
     818#endif 
    808819      END DO 
    809820      ! 
     
    846857      !!---------------------------------------------------------------------- 
    847858      !!                  ***  ROUTINE zdf_gls_init  *** 
    848       !!                      
    849       !! ** Purpose :   Initialization of the vertical eddy diffivity and  
     859      !! 
     860      !! ** Purpose :   Initialization of the vertical eddy diffivity and 
    850861      !!      viscosity when using a gls turbulent closure scheme 
    851862      !! 
     
    881892      READ  ( numnam_cfg, namzdf_gls, IOSTAT = ios, ERR = 902 ) 
    882893902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namzdf_gls in configuration namelist', lwp ) 
    883       IF(lwm .AND. nprint > 2) WRITE ( numond, namzdf_gls ) 
     894      IF(lwm) WRITE ( numond, namzdf_gls ) 
    884895 
    885896      IF(lwp) THEN                     !* Control print 
     
    10691080      END SELECT 
    10701081      ! 
    1071       IF(lwp .AND. lflush) CALL flush(numout)  
     1082      IF(lwp .AND. lflush) CALL flush(numout) 
    10721083      !                                !* Set Schmidt number for psi diffusion in the wave breaking case 
    10731084      !                                     ! See Eq. (13) of Carniel et al, OM, 30, 225-239, 2009 
    10741085      !                                     !  or Eq. (17) of Burchard, JPO, 31, 3133-3145, 2001 
    10751086      IF( ln_sigpsi ) THEN 
    1076          ra_sf = -1.5 ! Set kinetic energy slope, then deduce rsc_psi and rl_sf  
     1087         ra_sf = -1.5 ! Set kinetic energy slope, then deduce rsc_psi and rl_sf 
    10771088         ! Verification: retrieve Burchard (2001) results by uncomenting the line below: 
    10781089         ! Note that the results depend on the value of rn_cm_sf which is constant (=rc0) in his work 
     
    10821093         rsc_psi0 = rsc_psi 
    10831094      ENDIF 
    1084   
     1095 
    10851096      !                                !* Shear free turbulence parameters 
    10861097      ! 
     
    11291140      rc04  = rc03 * rc0 
    11301141      rsbc_tke1 = -3._wp/2._wp*rn_crban*ra_sf*rl_sf                      ! Dirichlet + Wave breaking 
    1131       rsbc_tke2 = rdt * rn_crban / rl_sf                                 ! Neumann + Wave breaking  
     1142      rsbc_tke2 = rdt * rn_crban / rl_sf                                 ! Neumann + Wave breaking 
    11321143      zcr = MAX(rsmall, rsbc_tke1**(1./(-ra_sf*3._wp/2._wp))-1._wp ) 
    1133       rtrans = 0.2_wp / zcr                                              ! Ad. inverse transition length between log and wave layer  
     1144      rtrans = 0.2_wp / zcr                                              ! Ad. inverse transition length between log and wave layer 
    11341145      rsbc_zs1  = rn_charn/grav                                          ! Charnock formula for surface roughness 
    1135       rsbc_zs2  = rn_frac_hs / 0.85_wp / grav * 665._wp                  ! Rascle formula for surface roughness  
     1146      rsbc_zs2  = rn_frac_hs / 0.85_wp / grav * 665._wp                  ! Rascle formula for surface roughness 
    11361147      rsbc_psi1 = -0.5_wp * rdt * rc0**(rpp-2._wp*rmm) / rsc_psi 
    1137       rsbc_psi2 = -0.5_wp * rdt * rc0**rpp * rnn * vkarmn**rnn / rsc_psi ! Neumann + NO Wave breaking  
     1148      rsbc_psi2 = -0.5_wp * rdt * rc0**rpp * rnn * vkarmn**rnn / rsc_psi ! Neumann + NO Wave breaking 
    11381149 
    11391150      rfact_tke = -0.5_wp / rsc_tke * rdt                                ! Cst used for the Diffusion term of tke 
     
    11501161         avmv(:,:,jk) = avmb(jk) * vmask(:,:,jk) 
    11511162      END DO 
    1152       !                               
     1163      ! 
    11531164      CALL gls_rst( nit000, 'READ' )   !* read or initialize all required files 
    11541165      ! 
     
    11611172      !!--------------------------------------------------------------------- 
    11621173      !!                   ***  ROUTINE ts_rst  *** 
    1163       !!                      
     1174      !! 
    11641175      !! ** Purpose :   Read or write TKE file (en) in restart file 
    11651176      !! 
    11661177      !! ** Method  :   use of IOM library 
    1167       !!                if the restart does not contain TKE, en is either  
     1178      !!                if the restart does not contain TKE, en is either 
    11681179      !!                set to rn_emin or recomputed (nn_igls/=0) 
    11691180      !!---------------------------------------------------------------------- 
     
    11771188      !!---------------------------------------------------------------------- 
    11781189      ! 
    1179       IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise  
     1190      IF( TRIM(cdrw) == 'READ' ) THEN        ! Read/initialise 
    11801191         !                                   ! --------------- 
    11811192         IF( ln_rstart ) THEN                   !* Read the restart file 
     
    11961207               CALL iom_get( numror, jpdom_autoglo, 'mxln'  , mxln   ) 
    11971208               IF(nn_timing == 2)  CALL timing_stop('iom_rstget') 
    1198             ELSE                         
     1209            ELSE 
    11991210               IF(lwp) WRITE(numout,*) ' ===>>>> : previous run without gls scheme, en and mxln computed by iterative loop' 
    12001211               IF(lwp .AND. lflush) CALL flush(numout) 
    12011212               en  (:,:,:) = rn_emin 
    1202                mxln(:,:,:) = 0.05         
     1213               mxln(:,:,:) = 0.05 
    12031214               avt_k (:,:,:) = avt (:,:,:) 
    12041215               avm_k (:,:,:) = avm (:,:,:) 
     
    12111222            IF(lwp .AND. lflush) CALL flush(numout) 
    12121223            en  (:,:,:) = rn_emin 
    1213             mxln(:,:,:) = 0.05        
     1224            mxln(:,:,:) = 0.05 
    12141225         ENDIF 
    12151226         ! 
     
    12191230         IF(lwp .AND. lflush) CALL flush(numout) 
    12201231         IF(nn_timing == 2)  CALL timing_start('iom_rstput') 
    1221          CALL iom_rstput( kt, nitrst, numrow, 'en'   , en     )  
     1232         CALL iom_rstput( kt, nitrst, numrow, 'en'   , en     ) 
    12221233         CALL iom_rstput( kt, nitrst, numrow, 'avt'  , avt_k  ) 
    12231234         CALL iom_rstput( kt, nitrst, numrow, 'avm'  , avm_k  ) 
    1224          CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k )  
     1235         CALL iom_rstput( kt, nitrst, numrow, 'avmu' , avmu_k ) 
    12251236         CALL iom_rstput( kt, nitrst, numrow, 'avmv' , avmv_k ) 
    12261237         CALL iom_rstput( kt, nitrst, numrow, 'mxln' , mxln   ) 
     
    12411252      WRITE(*,*) 'zdf_gls_init: You should not have seen this print! error?' 
    12421253   END SUBROUTINE zdf_gls_init 
    1243     
     1254 
    12441255   SUBROUTINE zdf_gls( kt )          ! Empty routine 
    12451256   IMPLICIT NONE 
    1246       INTEGER, INTENT(in) ::   kt ! ocean time step    
     1257      INTEGER, INTENT(in) ::   kt ! ocean time step 
    12471258      WRITE(*,*) 'zdf_gls: You should not have seen this print! error?', kt 
    12481259   END SUBROUTINE zdf_gls 
    1249     
     1260 
    12501261   SUBROUTINE gls_rst( kt, cdrw )          ! Empty routine 
    12511262   IMPLICIT NONE 
     
    12581269   !!====================================================================== 
    12591270END MODULE zdfgls 
    1260  
Note: See TracChangeset for help on using the changeset viewer.