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/TRP/trczdf_imp.F90 – NEMO

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

File:
1 edited

Legend:

Unmodified
Added
Removed
  • 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 
Note: See TracChangeset for help on using the changeset viewer.