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 642 for trunk/NEMO/OPA_SRC/TRA/tranxt.F90 – NEMO

Ignore:
Timestamp:
2007-03-15T12:17:58+01:00 (18 years ago)
Author:
opalod
Message:

nemo_v2_bugfix_028 : CT : correction to be able to compile without compilation stop when using key_zco cpp key

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMO/OPA_SRC/TRA/tranxt.F90

    r592 r642  
    8686      INTEGER, INTENT(in) ::   kt    ! ocean time-step index 
    8787      !! 
    88       INTEGER  ::   ji, jj, jk   ! dummy loop indices 
    89       REAL(wp) ::   zt, zs      ! temporary scalars 
    90       REAL(wp) ::   zfact        ! temporary scalar 
     88      INTEGER  ::   ji, jj, jk    ! dummy loop indices 
     89      REAL(wp) ::   zt, zs, zssh1 ! temporary scalars 
     90      REAL(wp) ::   zfact         ! temporary scalar 
    9191      !! Variable volume 
    92       REAL(wp) ::   zssh                         ! temporary scalars 
     92      REAL(wp), DIMENSION(jpi,jpj) ::   zssh                         ! temporary scalars 
    9393      REAL(wp), DIMENSION(jpi,jpj,jpk) :: zfse3tb, zfse3tn, zfse3ta  ! 3D workspace 
    9494 
     
    100100         ! Scale factors at before and after time step 
    101101         ! ------------------------------------------- 
    102          DO jk = 1, jpkm1 
    103             zfse3tb(:,:,jk)  = fsve3t(:,:,jk) * ( 1 + sshb(:,:) * mut(:,:,jk) ) 
    104             zfse3ta(:,:,jk)  = fsve3t(:,:,jk) * ( 1 + ssha(:,:) * mut(:,:,jk) ) 
    105          END DO 
     102         zfse3tb(:,:,:) = sfe3( sshb, 'T' )    ;    zfse3ta(:,:,:) = sfe3( ssha, 'T' ) 
    106103 
    107104         ! Asselin filtered scale factor at now time step 
    108105         ! ---------------------------------------------- 
    109106         IF( (neuler == 0 .AND. kt == nit000) .OR. lk_dynspg_ts ) THEN 
    110             zfse3tn(:,:,:) = fse3t(:,:,:) 
     107            zfse3tn(:,:,:) = sfe3ini( 'T' ) 
    111108         ELSE 
    112             DO jk = 1, jpkm1 
    113                DO jj = 1, jpj 
    114                   DO ji = 1, jpi 
    115                      zssh = atfp * ( sshb(ji,jj) + ssha(ji,jj) ) + atfp1 * sshn(ji,jj) 
    116                      zfse3tn(ji,jj,jk) = fsve3t(ji,jj,jk) * ( 1 + zssh * mut(ji,jj,jk) ) 
    117                   END DO 
     109            zssh(:,:) = atfp * ( sshb(:,:) + ssha(:,:) ) + atfp1 * sshn(:,:) 
     110            zfse3tn(:,:,:) = sfe3( zssh, 'T' ) 
     111         ENDIF 
     112 
     113         ! Thickness weighting 
     114         ! ------------------- 
     115         DO jk = 1, jpkm1 
     116            DO jj = 1, jpj 
     117               DO ji = 1, jpi 
     118                  ta(ji,jj,jk) = ta(ji,jj,jk) * fse3t(ji,jj,jk) 
     119                  sa(ji,jj,jk) = sa(ji,jj,jk) * fse3t(ji,jj,jk) 
     120 
     121                  tn(ji,jj,jk) = tn(ji,jj,jk) * fse3t(ji,jj,jk) 
     122                  sn(ji,jj,jk) = sn(ji,jj,jk) * fse3t(ji,jj,jk) 
     123 
     124                  tb(ji,jj,jk) = tb(ji,jj,jk) * zfse3tb(ji,jj,jk) 
     125                  sb(ji,jj,jk) = sb(ji,jj,jk) * zfse3tb(ji,jj,jk) 
    118126               END DO 
    119127            END DO 
    120          ENDIF 
    121  
    122          ! Thickness weighting 
    123          ! ------------------- 
    124          ta(:,:,1:jpkm1) = ta(:,:,1:jpkm1) * fse3t (:,:,1:jpkm1) 
    125          sa(:,:,1:jpkm1) = sa(:,:,1:jpkm1) * fse3t (:,:,1:jpkm1) 
    126  
    127          tn(:,:,1:jpkm1) = tn(:,:,1:jpkm1) * fse3t (:,:,1:jpkm1) 
    128          sn(:,:,1:jpkm1) = sn(:,:,1:jpkm1) * fse3t (:,:,1:jpkm1) 
    129  
    130          tb(:,:,1:jpkm1) = tb(:,:,1:jpkm1) * zfse3tb(:,:,1:jpkm1) 
    131          sb(:,:,1:jpkm1) = sb(:,:,1:jpkm1) * zfse3tb(:,:,1:jpkm1) 
     128         END DO 
    132129 
    133130      ENDIF 
     
    221218                  DO jj = 1, jpj 
    222219                     DO ji = 1, jpi 
    223                         zssh = tmask(ji,jj,jk) / fse3t(ji,jj,jk) 
    224                         tb(ji,jj,jk) = tn(ji,jj,jk) * zssh * tmask(ji,jj,jk) 
    225                         sb(ji,jj,jk) = sn(ji,jj,jk) * zssh * tmask(ji,jj,jk) 
    226                         zssh = tmask(ji,jj,jk) / zfse3ta(ji,jj,jk) 
    227                         tn(ji,jj,jk) = ta(ji,jj,jk) * zssh * tmask(ji,jj,jk) 
    228                         sn(ji,jj,jk) = sa(ji,jj,jk) * zssh * tmask(ji,jj,jk) 
     220                        zssh1 = tmask(ji,jj,jk) / fse3t(ji,jj,jk) 
     221                        tb(ji,jj,jk) = tn(ji,jj,jk) * zssh1 * tmask(ji,jj,jk) 
     222                        sb(ji,jj,jk) = sn(ji,jj,jk) * zssh1 * tmask(ji,jj,jk) 
     223                        zssh1 = tmask(ji,jj,jk) / zfse3ta(ji,jj,jk) 
     224                        tn(ji,jj,jk) = ta(ji,jj,jk) * zssh1 * tmask(ji,jj,jk) 
     225                        sn(ji,jj,jk) = sa(ji,jj,jk) * zssh1 * tmask(ji,jj,jk) 
    229226                     END DO 
    230227                  END DO 
     
    255252                  DO jj = 1, jpj 
    256253                     DO ji = 1, jpi 
    257                         zssh = tmask(ji,jj,jk) / zfse3tn(ji,jj,jk) 
     254                        zssh1 = tmask(ji,jj,jk) / zfse3tn(ji,jj,jk) 
    258255                        tb(ji,jj,jk) = ( atfp  * ( tb(ji,jj,jk) + ta(ji,jj,jk) ) & 
    259                           &            + atfp1 * tn(ji,jj,jk) ) * zssh 
     256                          &            + atfp1 * tn(ji,jj,jk) ) * zssh1 
    260257                        sb(ji,jj,jk) = ( atfp  * ( sb(ji,jj,jk) + sa(ji,jj,jk) ) & 
    261                           &            + atfp1 * sn(ji,jj,jk) ) * zssh 
    262                         zssh = tmask(ji,jj,1) / zfse3ta(ji,jj,jk) 
    263                         tn(ji,jj,jk) = ta(ji,jj,jk) * zssh 
    264                         sn(ji,jj,jk) = sa(ji,jj,jk) * zssh 
     258                          &            + atfp1 * sn(ji,jj,jk) ) * zssh1 
     259                        zssh1 = tmask(ji,jj,1) / zfse3ta(ji,jj,jk) 
     260                        tn(ji,jj,jk) = ta(ji,jj,jk) * zssh1 
     261                        sn(ji,jj,jk) = sa(ji,jj,jk) * zssh1 
    265262                     END DO 
    266263                  END DO 
Note: See TracChangeset for help on using the changeset viewer.