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 490 for trunk/NEMO/TOP_SRC – NEMO

Changeset 490 for trunk/NEMO/TOP_SRC


Ignore:
Timestamp:
2006-09-01T15:50:43+02:00 (18 years ago)
Author:
opalod
Message:

nemo_v1_bugfix_053:CE+RB: enable use of ndttrc

Location:
trunk/NEMO/TOP_SRC/TRP
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/TOP_SRC/TRP/trczdf_exp.F90

    r349 r490  
    9797         IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
    9898            rdttrc(:) =  rdttra(:) * FLOAT(ndttrc)             ! restarting with Euler time stepping 
    99          ELSEIF( kt <= nittrc000 + 1 ) THEN 
     99         ELSEIF( kt <= nittrc000 + ndttrc ) THEN 
    100100            rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc)         ! leapfrog 
    101101         ENDIF 
  • trunk/NEMO/TOP_SRC/TRP/trczdf_imp.F90

    r433 r490  
    9797         IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
    9898            rdttrc(:) =  rdttra(:) * FLOAT(ndttrc)             ! restarting with Euler time stepping 
    99          ELSEIF( kt <= nittrc000 + 1 ) THEN 
     99         ELSEIF( kt <= nittrc000 + ndttrc ) THEN 
    100100            rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc)         ! leapfrog 
    101101         ENDIF 
     
    145145         END DO 
    146146          
    147   
    148    ! Matrix inversion from the first level 
    149    ikst = 1 
    150  
    151 #   include "zdf.matrixsolver.vopt.h90"         
    152   
     147          
     148         ! Matrix inversion from the first level 
     149         !---------------------------------------------------------------------- 
     150         !   solve m.x = y  where m is a tri diagonal matrix ( jpk*jpk ) 
     151         ! 
     152         !        ( zwd1 zws1   0    0    0  )( zwx1 ) ( zwy1 ) 
     153         !        ( zwi2 zwd2 zws2   0    0  )( zwx2 ) ( zwy2 ) 
     154         !        (  0   zwi3 zwd3 zws3   0  )( zwx3 )=( zwy3 ) 
     155         !        (        ...               )( ...  ) ( ...  ) 
     156         !        (  0    0    0   zwik zwdk )( zwxk ) ( zwyk ) 
     157         ! 
     158         !   m is decomposed in the product of an upper and lower triangular matrix 
     159         !   The 3 diagonal terms are in 2d arrays: zwd, zws, zwi 
     160         !   The second member is in 2d array zwy 
     161         !   The solution is in 2d array zwx 
     162         !   The 3d arry zwt is a work space array 
     163         !   zwy is used and then used as a work space array : its value is modified! 
     164         ! 
     165         !   N.B. the starting vertical index (ikst) is equal to 1 except for 
     166         !   the resolution of tke matrix where surface tke value is prescribed 
     167         !   so that ikstrt=2. 
     168        ikst = 1 
     169        ikstp1 = ikst + 1 
     170        ikenm2 = jpk - 2 
     171         
     172        DO jj = 2, jpjm1 
     173           DO ji = fs_2, fs_jpim1 
     174              zwt(ji,jj,ikst) = zwd(ji,jj,ikst) 
     175           END DO 
     176        END DO 
     177         
     178        DO jk = ikstp1, jpkm1 
     179           DO jj = 2, jpjm1 
     180              DO ji = fs_2, fs_jpim1 
     181                 zwt(ji,jj,jk) = zwd(ji,jj,jk) - zwi(ji,jj,jk) * zws(ji,jj,jk-1) / zwt(ji,jj,jk-1) 
     182              END DO 
     183           END DO 
     184        END DO 
     185         
     186        DO jk = ikstp1, jpkm1 
     187           DO jj = 2, jpjm1 
     188              DO ji = fs_2, fs_jpim1 
     189                 zwy(ji,jj,jk) = zwy(ji,jj,jk) - zwi(ji,jj,jk) / zwt(ji,jj,jk-1) * zwy(ji,jj,jk-1) 
     190              END DO 
     191           END DO 
     192        END DO 
     193         
     194        DO jj = 2, jpjm1 
     195           DO ji = fs_2, fs_jpim1 
     196              zwx(ji,jj,jpkm1) = zwy(ji,jj,jpkm1) / zwt(ji,jj,jpkm1) 
     197           END DO 
     198        END DO 
     199         
     200        DO jk = ikenm2, ikst, -1 
     201           DO jj = 2, jpjm1 
     202              DO ji = fs_2, fs_jpim1 
     203                 zwx(ji,jj,jk) = ( zwy(ji,jj,jk) - zws(ji,jj,jk) * zwx(ji,jj,jk+1) ) / zwt(ji,jj,jk) 
     204              END DO 
     205           END DO 
     206        END DO 
     207 
    153208          
    154209#if defined key_trc_diatrd 
  • trunk/NEMO/TOP_SRC/TRP/trczdf_iso.F90

    r433 r490  
    125125      INTEGER ::   ji, jj, jk, jn                 ! dummy loop indices 
    126126      INTEGER ::   ikst, ikenm2, ikstp1       ! temporary integers 
    127 #if defined key_partial_steps 
    128127      INTEGER ::   iku, ikv, ikv1             ! temporary integers 
    129 #endif 
     128 
    130129      REAL(wp) ::   ztra 
    131130      REAL(wp) ::   & 
     
    167166         IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
    168167            rdttrc(:) =  rdttra(:) * FLOAT(ndttrc)             ! restarting with Euler time stepping 
    169          ELSEIF( kt <= nittrc000 + 1 ) THEN 
     168         ELSEIF( kt <= nittrc000 + ndttrc ) THEN 
    170169            rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc)         ! leapfrog 
    171170         ENDIF 
     
    208207               END DO 
    209208            END DO 
    210 #  if defined key_partial_steps 
    211             ! partial steps correction at the bottom ocean level  
    212             DO ji = 1, jpim1 
    213                ! last ocean level 
    214                iku  = MIN( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
    215                ikv  = MIN( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
    216                ikv1 = MIN( mbathy(ji,jj), mbathy(ji  ,jj-1) ) - 1 
    217                ! i-gradient of of passive tracer at jj 
    218                zdit (ji,iku) = gtru(ji,jj,jn) 
    219                ! j-gradient of of passive tracer at jj 
    220                zdjt (ji,ikv) = gtrv(ji,jj,jn)  
    221                ! j-gradient of of passive tracer at jj+1 
    222                zdj1t(ji,ikv1)= gtrv(ji,jj-1,jn) 
    223             END DO 
    224 #endif 
    225  
     209 
     210            IF( ln_zps ) THEN 
     211               ! partial steps correction at the bottom ocean level  
     212               DO ji = 1, jpim1 
     213                  ! last ocean level 
     214                  iku  = MIN( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
     215                  ikv  = MIN( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
     216                  ikv1 = MIN( mbathy(ji,jj), mbathy(ji  ,jj-1) ) - 1 
     217                  ! i-gradient of of passive tracer at jj 
     218                  zdit (ji,iku) = gtru(ji,jj,jn) 
     219                  ! j-gradient of of passive tracer at jj 
     220                  zdjt (ji,ikv) = gtrv(ji,jj,jn)  
     221                  ! j-gradient of of passive tracer at jj+1 
     222                  zdj1t(ji,ikv1)= gtrv(ji,jj-1,jn) 
     223               END DO 
     224            ENDIF 
    226225 
    227226            ! I.2 Vertical fluxes 
     
    279278            !                              ! Eddy induced vertical advective fluxes ! 
    280279            !                              ! ---------------------------------------! 
    281 #if defined key_traldf_c2d || defined key_traldf_c3d 
     280#if defined key_traldf_c2d || defined key_traldf_c3d || defined key_off_degrad 
    282281            DO jk = 2, jpkm1 
    283282               DO ji = 2, jpim1 
  • trunk/NEMO/TOP_SRC/TRP/trczdf_iso_vopt.F90

    r433 r490  
    177177         IF( neuler == 0 .AND. kt == nittrc000 ) THEN 
    178178            rdttrc(:) =  rdttra(:) * FLOAT(ndttrc)             ! restarting with Euler time stepping 
    179          ELSEIF( kt <= nittrc000 + 1 ) THEN 
     179         ELSEIF( kt <= nittrc000 + ndttrc ) THEN 
    180180            rdttrc(:) = 2. * rdttra(:) * FLOAT(ndttrc)         ! leapfrog 
    181181         ENDIF 
     
    398398      !! * Local declarations 
    399399      INTEGER ::   ji, jj, jk,jn       ! dummy loop indices 
    400 #if defined key_partial_steps 
    401400      INTEGER ::   iku, ikv 
    402 #endif 
    403401      REAL(wp) ::   & 
    404402         ztavg,                  &  ! temporary scalars 
     
    446444            END DO 
    447445         END DO 
    448 #  if defined key_partial_steps 
    449          ! partial steps correction at the bottom ocean level  
    450          DO jj = 1, jpjm1 
    451             DO ji = 1, fs_jpim1   ! vector opt. 
    452                ! last ocean level 
    453                iku  = MIN( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
    454                ikv  = MIN( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
    455                ! i-gradient of passive tracer 
    456                zwx (ji,jj,iku) = gtru(ji,jj,jn) 
    457                ! j-gradient of passive tracer 
    458                zwy (ji,jj,ikv) = gtrv(ji,jj,jn)   
    459             END DO 
    460          END DO 
    461 #endif 
     446         IF( ln_zps ) THEN 
     447            ! partial steps correction at the bottom ocean level  
     448            DO jj = 1, jpjm1 
     449               DO ji = 1, fs_jpim1   ! vector opt. 
     450                  ! last ocean level 
     451                  iku  = MIN( mbathy(ji,jj), mbathy(ji+1,jj  ) ) - 1 
     452                  ikv  = MIN( mbathy(ji,jj), mbathy(ji  ,jj+1) ) - 1 
     453                  ! i-gradient of passive tracer 
     454                  zwx (ji,jj,iku) = gtru(ji,jj,jn) 
     455                  ! j-gradient of passive tracer 
     456                  zwy (ji,jj,ikv) = gtrv(ji,jj,jn)   
     457               END DO 
     458            END DO 
     459         ENDIF 
    462460 
    463461 
     
    502500            DO jj = 2, jpjm1 
    503501               DO ji = fs_2, fs_jpim1   ! vector opt. 
    504 #   if defined key_traldf_c2d || defined key_traldf_c3d 
     502#   if defined key_traldf_c2d || defined key_traldf_c3d  || defined key_off_degrad 
    505503                  zuwki = ( wslpi(ji,jj,jk) + wslpi(ji-1,jj,jk) )   & 
    506504                     &  * fsaeitru(ji-1,jj,jk) * e2u(ji-1,jj) * umask(ji-1,jj,jk) 
Note: See TracChangeset for help on using the changeset viewer.