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 11758 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/tests/BENCH/MY_SRC/zdfiwm.F90 – NEMO

Ignore:
Timestamp:
2019-10-21T18:19:16+02:00 (5 years ago)
Author:
acc
Message:

Branch 2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps. Removal of unnecessary cyclic dependancy between oce_trc and step and update to previously untested BENCH MY_SRC files

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/tests/BENCH/MY_SRC/zdfiwm.F90

    r10420 r11758  
    6969 
    7070 
    71    SUBROUTINE zdf_iwm( kt, p_avm, p_avt, p_avs ) 
     71   SUBROUTINE zdf_iwm( kt, Kmm, p_avm, p_avt, p_avs ) 
    7272      !!---------------------------------------------------------------------- 
    7373      !!                  ***  ROUTINE zdf_iwm  *** 
     
    118118      !!---------------------------------------------------------------------- 
    119119      INTEGER                    , INTENT(in   ) ::   kt             ! ocean time step 
     120      INTEGER                    , INTENT(in   ) ::   Kmm            ! time level index 
    120121      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avm          ! momentum Kz (w-points) 
    121122      REAL(wp), DIMENSION(:,:,:) , INTENT(inout) ::   p_avt, p_avs   ! tracer   Kz (w-points) 
     
    155156         END DO 
    156157      END DO 
    157 !!gm gde3w ==>>>  check for ssh taken into account.... seem OK gde3w_n=gdept_n - sshn 
     158!!gm gde3w ==>>>  check for ssh taken into account.... seem OK gde3w_n=gdept(Kmm) - ssh(Kmm) 
    158159      DO jk = 2, jpkm1              ! complete with the level-dependent part 
    159          zemx_iwm(:,:,jk) = zfact(:,:) * (  EXP( ( gde3w_n(:,:,jk  ) - zhdep(:,:) ) / hcri_iwm(:,:) )                      & 
    160             &                             - EXP( ( gde3w_n(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) )  ) * wmask(:,:,jk)   & 
    161             &                          / ( gde3w_n(:,:,jk) - gde3w_n(:,:,jk-1) ) 
    162  
    163 !!gm delta(gde3w_n) = e3t_n  !!  Please verify the grid-point position w versus t-point 
     160         zemx_iwm(:,:,jk) = zfact(:,:) * (  EXP( ( gde3w(:,:,jk  ) - zhdep(:,:) ) / hcri_iwm(:,:) )                      & 
     161            &                             - EXP( ( gde3w(:,:,jk-1) - zhdep(:,:) ) / hcri_iwm(:,:) )  ) * wmask(:,:,jk)   & 
     162            &                          / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 
     163 
     164!!gm delta(gde3w) = e3t(Kmm)  !!  Please verify the grid-point position w versus t-point 
    164165!!gm it seems to me that only 1/hcri_iwm  is used ==>  compute it one for all 
    165166 
     
    175176         zfact(:,:) = 0._wp 
    176177         DO jk = 2, jpkm1              ! part independent of the level 
    177             zfact(:,:) = zfact(:,:) + e3w_n(:,:,jk) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
     178            zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
    178179         END DO 
    179180         ! 
     
    192193         zfact(:,:) = 0._wp 
    193194         DO jk = 2, jpkm1              ! part independent of the level 
    194             zfact(:,:) = zfact(:,:) + e3w_n(:,:,jk) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk) 
     195            zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * MAX( 0._wp, rn2(:,:,jk) ) * wmask(:,:,jk) 
    195196         END DO 
    196197         ! 
     
    213214      zfact(:,:)   = 0._wp 
    214215      DO jk = 2, jpkm1 
    215          zfact(:,:) = zfact(:,:) + e3w_n(:,:,jk) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
     216         zfact(:,:) = zfact(:,:) + e3w(:,:,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) * wmask(:,:,jk) 
    216217         zwkb(:,:,jk) = zfact(:,:) 
    217218      END DO 
    218219!!gm even better: 
    219220!      DO jk = 2, jpkm1 
    220 !         zwkb(:,:) = zwkb(:,:) + e3w_n(:,:,jk) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) 
     221!         zwkb(:,:) = zwkb(:,:) + e3w(:,:,jk,Kmm) * SQRT(  MAX( 0._wp, rn2(:,:,jk) )  ) 
    221222!      END DO 
    222223!      zfact(:,:) = zwkb(:,:,jpkm1) 
     
    253254      DO jk = 2, jpkm1              ! complete with the level-dependent part 
    254255         zemx_iwm(:,:,jk) = zemx_iwm(:,:,jk) + zweight(:,:,jk) * zfact(:,:) * wmask(:,:,jk)   & 
    255             &                                / ( gde3w_n(:,:,jk) - gde3w_n(:,:,jk-1) ) 
    256 !!gm  use of e3t_n just above? 
     256            &                                / ( gde3w(:,:,jk) - gde3w(:,:,jk-1) ) 
     257!!gm  use of e3t(:,:,:,Kmm) just above? 
    257258      END DO 
    258259      ! 
    259260!!gm  this is to be replaced by just a constant value znu=1.e-6 m2/s 
    260261      ! Calculate molecular kinematic viscosity 
    261       znu_t(:,:,:) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * tsn(:,:,:,jp_tem) + 0.00694_wp * tsn(:,:,:,jp_tem) * tsn(:,:,:,jp_tem)  & 
    262          &                                  + 0.02305_wp * tsn(:,:,:,jp_sal)  ) * tmask(:,:,:) * r1_rau0 
     262      znu_t(:,:,:) = 1.e-4_wp * (  17.91_wp - 0.53810_wp * ts(:,:,:,jp_tem,Kmm) + 0.00694_wp * ts(:,:,:,jp_tem,Kmm) * ts(:,:,:,jp_tem,Kmm)  & 
     263         &                                  + 0.02305_wp * ts(:,:,:,jp_sal,Kmm)  ) * tmask(:,:,:) * r1_rau0 
    263264      DO jk = 2, jpkm1 
    264265         znu_w(:,:,jk) = 0.5_wp * ( znu_t(:,:,jk-1) + znu_t(:,:,jk) ) * wmask(:,:,jk) 
     
    300301            DO jj = 1, jpj 
    301302               DO ji = 1, jpi 
    302                   zztmp = zztmp + e3w_n(ji,jj,jk) * e1e2t(ji,jj)   & 
     303                  zztmp = zztmp + e3w(ji,jj,jk,Kmm) * e1e2t(ji,jj)   & 
    303304                     &          * MAX( 0._wp, rn2(ji,jj,jk) ) * zav_wave(ji,jj,jk) * wmask(ji,jj,jk) * tmask_i(ji,jj) 
    304305               END DO 
     
    356357         z2d(:,:) = 0._wp 
    357358         DO jk = 2, jpkm1 
    358             z2d(:,:) = z2d(:,:) + e3w_n(:,:,jk) * z3d(:,:,jk) * wmask(:,:,jk) 
     359            z2d(:,:) = z2d(:,:) + e3w(:,:,jk,Kmm) * z3d(:,:,jk) * wmask(:,:,jk) 
    359360         END DO 
    360361         z2d(:,:) = rau0 * z2d(:,:) 
Note: See TracChangeset for help on using the changeset viewer.