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 11001 for NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/C1D/dyndmp.F90 – NEMO

Ignore:
Timestamp:
2019-05-20T14:19:17+02:00 (5 years ago)
Author:
davestorkey
Message:

2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps : C1D and step.F90. Passes SETTE. Compiles with key_c1d.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2019/dev_r10721_KERNEL-02_Storkey_Coward_IMMERSE_first_steps/src/OCE/C1D/dyndmp.F90

    r10425 r11001  
    130130 
    131131 
    132    SUBROUTINE dyn_dmp( kt ) 
     132   SUBROUTINE dyn_dmp( kt, Kbb, Kmm, puu, pvv, Krhs ) 
    133133      !!---------------------------------------------------------------------- 
    134134      !!                   ***  ROUTINE dyn_dmp  *** 
     
    140140      !! ** Method  :   Compute Newtonian damping towards u_dta and v_dta  
    141141      !!      and add to the general momentum trends: 
    142       !!                     ua = ua + resto_uv * (u_dta - ub) 
    143       !!                     va = va + resto_uv * (v_dta - vb) 
     142      !!                     puu(Krhs) = puu(Krhs) + resto_uv * (u_dta - puu(Kbb)) 
     143      !!                     pvv(Krhs) = pvv(Krhs) + resto_uv * (v_dta - pvv(Kbb)) 
    144144      !!      The trend is computed either throughout the water column 
    145145      !!      (nn_zdmp=0), where the vertical mixing is weak (nn_zdmp=1) or 
    146146      !!      below the well mixed layer (nn_zdmp=2) 
    147147      !! 
    148       !! ** Action  : - (ua,va)   momentum trends updated with the damping trend 
    149       !!---------------------------------------------------------------------- 
    150       INTEGER, INTENT(in) ::   kt   ! ocean time-step index 
     148      !! ** Action  : - (puu(:,:,:,Krhs),pvv(:,:,:,Krhs))   momentum trends updated with the damping trend 
     149      !!---------------------------------------------------------------------- 
     150      INTEGER                             , INTENT(in   ) ::   kt             ! ocean time-step index 
     151      INTEGER                             , INTENT(in   ) ::   Kbb, Kmm, Krhs ! ocean time level indices 
     152      REAL(wp), DIMENSION(jpi,jpj,jpk,jpt), INTENT(inout) ::   puu, pvv       ! ocean velocities and RHS of momentum equation 
    151153      !! 
    152154      INTEGER  ::   ji, jj, jk   ! dummy loop indices 
     
    159161      ! 
    160162      !                           !==   read and interpolate U & V current data at kt   ==! 
    161       CALL dta_uvd( kt, zuv_dta ) !!! NOTE: This subroutine must be altered for use outside 
     163      CALL dta_uvd( kt, Kmm, zuv_dta ) !!! NOTE: This subroutine must be altered for use outside 
    162164                                  !!!       the C1D context (use of U,V grid variables) 
    163165      ! 
     
    168170            DO jj = 2, jpjm1 
    169171               DO ji = fs_2, fs_jpim1   ! vector opt. 
    170                   zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - ub(ji,jj,jk) ) 
    171                   zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - vb(ji,jj,jk) ) 
    172                   ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    173                   va(ji,jj,jk) = va(ji,jj,jk) + zva 
     172                  zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - puu(ji,jj,jk,Kbb) ) 
     173                  zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - pvv(ji,jj,jk,Kbb) ) 
     174                  puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + zua 
     175                  pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) + zva 
    174176                  utrdmp(ji,jj,jk) = zua           ! save the trends 
    175177                  vtrdmp(ji,jj,jk) = zva       
     
    183185               DO ji = fs_2, fs_jpim1   ! vector opt. 
    184186                  IF( avt(ji,jj,jk) <= avt_c ) THEN 
    185                      zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - ub(ji,jj,jk) ) 
    186                      zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - vb(ji,jj,jk) ) 
     187                     zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - puu(ji,jj,jk,Kbb) ) 
     188                     zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - pvv(ji,jj,jk,Kbb) ) 
    187189                  ELSE 
    188190                     zua = 0._wp 
    189191                     zva = 0._wp   
    190192                  ENDIF 
    191                   ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    192                   va(ji,jj,jk) = va(ji,jj,jk) + zva 
     193                  puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + zua 
     194                  pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) + zva 
    193195                  utrdmp(ji,jj,jk) = zua           ! save the trends 
    194196                  vtrdmp(ji,jj,jk) = zva 
     
    201203            DO jj = 2, jpjm1 
    202204               DO ji = fs_2, fs_jpim1   ! vector opt. 
    203                   IF( gdept_n(ji,jj,jk) >= hmlp (ji,jj) ) THEN 
    204                      zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - ub(ji,jj,jk) ) 
    205                      zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - vb(ji,jj,jk) ) 
     205                  IF( gdept(ji,jj,jk,Kmm) >= hmlp (ji,jj) ) THEN 
     206                     zua = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,1) - puu(ji,jj,jk,Kbb) ) 
     207                     zva = resto_uv(ji,jj,jk) * ( zuv_dta(ji,jj,jk,2) - pvv(ji,jj,jk,Kbb) ) 
    206208                  ELSE 
    207209                     zua = 0._wp 
    208210                     zva = 0._wp   
    209211                  ENDIF 
    210                   ua(ji,jj,jk) = ua(ji,jj,jk) + zua 
    211                   va(ji,jj,jk) = va(ji,jj,jk) + zva 
     212                  puu(ji,jj,jk,Krhs) = puu(ji,jj,jk,Krhs) + zua 
     213                  pvv(ji,jj,jk,Krhs) = pvv(ji,jj,jk,Krhs) + zva 
    212214                  utrdmp(ji,jj,jk) = zua           ! save the trends 
    213215                  vtrdmp(ji,jj,jk) = zva 
     
    219221      ! 
    220222      !                           ! Control print 
    221       IF( ln_ctl   )   CALL prt_ctl( tab3d_1=ua(:,:,:), clinfo1=' dmp  - Ua: ', mask1=umask,   & 
    222          &                           tab3d_2=va(:,:,:), clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
     223      IF( ln_ctl   )   CALL prt_ctl( tab3d_1=puu(:,:,:,Krhs), clinfo1=' dmp  - Ua: ', mask1=umask,   & 
     224         &                           tab3d_2=pvv(:,:,:,Krhs), clinfo2=       ' Va: ', mask2=vmask, clinfo3='dyn' ) 
    223225      ! 
    224226      ! 
Note: See TracChangeset for help on using the changeset viewer.