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 2587 for branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/DYN/dynzdf_exp_tam.F90 – NEMO

Ignore:
Timestamp:
2011-02-15T12:58:59+01:00 (13 years ago)
Author:
vidard
Message:

refer to ticket #798

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/TAM_V3_0/NEMOTAM/OPATAM_SRC/DYN/dynzdf_exp_tam.F90

    r1885 r2587  
    2020   !! * Modules used 
    2121 
    22    USE in_out_manager  ! I/O manager 
     22   USE par_kind      , ONLY: & ! Precision variables 
     23      & wp 
     24   USE par_oce       , ONLY: & ! Ocean space and time domain variables 
     25      & jpi,                 & 
     26      & jpj,                 &  
     27      & jpk,                 &  
     28      & jpim1,               & 
     29      & jpjm1,               &  
     30      & jpkm1 
     31   USE oce_tam       , ONLY: & ! ocean dynamics and tracers 
     32      & ub_tl,               & 
     33      & vb_tl,               & 
     34      & ua_tl,               & 
     35      & va_tl,               & 
     36      & ub_ad,               & 
     37      & vb_ad,               & 
     38      & ua_ad,               & 
     39      & va_ad 
     40   USE zdf_oce       , ONLY: & ! ocean vertical physics 
     41      & avmu,                & 
     42      & avmv,                & 
     43      & n_zdfexp 
     44   USE dom_oce       , ONLY: & ! ocean space and time domain 
     45#if defined key_zco 
     46      & e3t_0,               & 
     47      & e3w_0,               & 
     48#else 
     49      & e3u,                 & 
     50      & e3v,                 & 
     51      & e3uw,                & 
     52      & e3vw,                & 
     53#endif 
     54      & umask,               & 
     55      & vmask 
     56   USE phycst        , ONLY: & ! physical constants 
     57      & rau0 
     58   USE in_out_manager, ONLY: & ! I/O manager 
     59      & nit000,              & 
     60      & nitend,              & 
     61      & numout,              & 
     62      & lwp,                 & 
     63      & ctl_stop 
    2364   IMPLICIT NONE 
    2465   PRIVATE 
     
    59100      !! * Local declarations 
    60101      INTEGER ::   ji, jj, jk, jl                              ! dummy loop indices 
    61       REAL(wp) ::   zrau0r, zlavmr, zua, zva                   ! temporary scalars 
    62       REAL(wp), DIMENSION(jpi,jpk) ::   zwx, zwy, zwz, zww     ! temporary workspace arrays 
     102      REAL(wp) ::   zrau0r, zlavmr, zuatl, zvatl                   ! temporary scalars 
     103      REAL(wp), DIMENSION(jpi,jpk) ::   zwxtl, zwytl, zwztl, zwwtl     ! temporary workspace arrays 
    63104      !!---------------------------------------------------------------------- 
    64105 
     
    68109         IF(lwp) WRITE(numout,*) '~~~~~~~~~~~~~~ ' 
    69110      ENDIF 
    70  
    71       CALL ctl_stop ('dyn_zdf_exp_tan not available yet') 
     111      ! Local constant initialization 
     112      ! ----------------------------- 
     113      zrau0r = 1. / rau0                                   ! inverse of the reference density 
     114      zlavmr = 1. / float( n_zdfexp )                      ! inverse of the number of sub time step 
     115 
     116      !                                                ! =============== 
     117      DO jj = 2, jpjm1                                 !  Vertical slab 
     118         !                                             ! =============== 
     119 
     120         ! Surface boundary condition 
     121         DO ji = 2, jpim1 
     122            zwytl(ji,1) = 0.0_wp 
     123            zwwtl(ji,1) = 0.0_wp 
     124         END DO   
     125 
     126         ! Initialization of x, z and contingently trends array 
     127         DO jk = 1, jpk 
     128            DO ji = 2, jpim1 
     129               zwxtl(ji,jk) = ub_tl(ji,jj,jk) 
     130               zwztl(ji,jk) = vb_tl(ji,jj,jk) 
     131            END DO   
     132         END DO   
     133 
     134         ! Time splitting loop 
     135         DO jl = 1, n_zdfexp 
     136 
     137            ! First vertical derivative 
     138            DO jk = 2, jpk 
     139               DO ji = 2, jpim1 
     140                  zwytl(ji,jk) = avmu(ji,jj,jk) * ( zwxtl(ji,jk-1) - zwxtl(ji,jk) ) / fse3uw(ji,jj,jk)  
     141                  zwwtl(ji,jk) = avmv(ji,jj,jk) * ( zwztl(ji,jk-1) - zwztl(ji,jk) ) / fse3vw(ji,jj,jk) 
     142               END DO   
     143            END DO   
     144 
     145            ! Second vertical derivative and trend estimation at kt+l*rdt/n_zdfexp 
     146            DO jk = 1, jpkm1 
     147               DO ji = 2, jpim1 
     148                  zuatl = zlavmr*( zwytl(ji,jk) - zwytl(ji,jk+1) ) / fse3u(ji,jj,jk) 
     149                  zvatl = zlavmr*( zwwtl(ji,jk) - zwwtl(ji,jk+1) ) / fse3v(ji,jj,jk) 
     150                  ua_tl(ji,jj,jk) = ua_tl(ji,jj,jk) + zuatl 
     151                  va_tl(ji,jj,jk) = va_tl(ji,jj,jk) + zvatl 
     152 
     153                  zwxtl(ji,jk) = zwxtl(ji,jk) + p2dt*zuatl*umask(ji,jj,jk) 
     154                  zwztl(ji,jk) = zwztl(ji,jk) + p2dt*zvatl*vmask(ji,jj,jk) 
     155               END DO   
     156            END DO   
     157 
     158         END DO   
     159 
     160         !                                             ! =============== 
     161      END DO                                           !   End of slab 
     162      !                                                ! =============== 
     163 
     164 
    72165   END SUBROUTINE dyn_zdf_exp_tan 
    73166   SUBROUTINE dyn_zdf_exp_adj( kt, p2dt ) 
Note: See TracChangeset for help on using the changeset viewer.