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 2454 for branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90 – NEMO

Ignore:
Timestamp:
2010-12-06T06:19:30+01:00 (13 years ago)
Author:
gm
Message:

v3.3beta: #772 compilation without key_ldfslp

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/nemo_v3_3_beta/NEMOGCM/NEMO/OPA_SRC/TRA/traldf_iso_grif.F90

    r2450 r2454  
    1111   !!   'key_ldfslp'               slope of the lateral diffusive direction 
    1212   !!---------------------------------------------------------------------- 
    13    !!   tra_ldf_iso_grif  : update the tracer trend with the horizontal  
    14    !!                       component of a iso-neutral laplacian operator 
    15    !!                       and with the vertical part of 
    16    !!                       the isopycnal or geopotential s-coord. operator  
     13   !!   tra_ldf_iso_grif  : update the tracer trend with the horizontal component   
     14   !!                       of the Griffies iso-neutral laplacian operator  
    1715   !!---------------------------------------------------------------------- 
    1816   USE oce             ! ocean dynamics and active tracers 
    1917   USE dom_oce         ! ocean space and time domain 
     18   USE trc_oce         ! share passive tracers/Ocean variables 
     19   USE zdf_oce         ! ocean vertical physics 
    2020   USE ldftra_oce      ! ocean active tracers: lateral physics 
    21    USE zdf_oce         ! ocean vertical physics 
    22    USE in_out_manager  ! I/O manager 
    23    USE iom             ! 
    2421   USE ldfslp          ! iso-neutral slopes 
    2522   USE diaptr          ! poleward transport diagnostics 
    26    USE trc_oce         ! share passive tracers/Ocean variables 
     23   USE in_out_manager  ! I/O manager 
     24   USE iom             ! I/O library 
    2725#if defined key_diaar5 
    2826   USE phycst          ! physical constants 
     
    112110      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zdit, zdjt, ztfw   ! 3D workspace 
    113111      ! 
    114       REAL(wp) ::   zslope_skew,zslope_iso,zslope2, zbu, zbv 
    115       REAL(wp) ::   ze1ur,zdxt,ze2vr,ze3wr,zdyt,zdzt 
    116       REAL(wp) ::   ah,zah_slp,zaei_slp 
     112      REAL(wp) ::   zslope_skew, zslope_iso, zslope2, zbu, zbv 
     113      REAL(wp) ::   ze1ur, zdxt, ze2vr, ze3wr, zdyt, zdzt 
     114      REAL(wp) ::   zah, zah_slp, zaei_slp 
    117115#if defined key_diaar5 
    118116      REAL(wp), DIMENSION(jpi,jpj)     ::   z2d                ! 2D workspace 
     
    144142!!gm Future development: consider using Ah defined at T-points and attached to the 4 t-point triads 
    145143 
    146       ah_wslp2(:,:,:) = 0.0 
     144      ah_wslp2(:,:,:) = 0._wp 
    147145      IF( ln_traldf_gdia ) THEN 
    148          psix_eiv(:,:,:) = 0.0 
    149          psiy_eiv(:,:,:) = 0.0 
     146         psix_eiv(:,:,:) = 0._wp 
     147         psiy_eiv(:,:,:) = 0._wp 
    150148      ENDIF 
    151149 
    152       DO ip=0,1 
    153          DO kp=0,1 
    154             DO jk=1,jpkm1 
    155                DO jj=1,jpjm1 
    156                   DO ji=1,fs_jpim1 
    157                      ze3wr=1.0_wp/fse3w(ji+ip,jj,jk+kp) 
    158                      zbu = 0.25_wp*e1u(ji,jj)*e2u(ji,jj)*fse3u(ji,jj,jk) 
    159                      ah = fsahtu(ji,jj,jk)                                  !  fsaht(ji+ip,jj,jk) 
     150      DO ip = 0, 1 
     151         DO kp = 0, 1 
     152            DO jk = 1, jpkm1 
     153               DO jj = 1, jpjm1 
     154                  DO ji = 1, fs_jpim1 
     155                     ze3wr = 1._wp / fse3w(ji+ip,jj,jk+kp) 
     156                     zbu   = 0.25_wp * e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
     157                     zah  = fsahtu(ji,jj,jk)                                  !  fsaht(ji+ip,jj,jk) 
    160158                     zslope_skew = triadi_g(ji+ip,jj,jk,1-ip,kp) 
    161                      zslope2 = ( zslope_skew & 
    162                         &      - umask(ji,jj,jk+kp)*(fsdept(ji+1,jj,jk) - fsdept(ji ,jj ,jk))*ze1ur )**2 
    163                      ah_wslp2(ji+ip,jj,jk+kp)=ah_wslp2(ji+ip,jj,jk+kp) + & 
    164                         & ah*((zbu*ze3wr)/(e1t(ji+ip,jj)*e2t(ji+ip,jj)))*zslope2 
     159                     zslope2 = zslope_skew - ( fsdept(ji+1,jj,jk) - fsdept(ji ,jj ,jk) ) * ze1ur * umask(ji,jj,jk+kp) 
     160                     zslope2 = zslope2 *zslope2 
     161                     ah_wslp2(ji+ip,jj,jk+kp) = ah_wslp2(ji+ip,jj,jk+kp)    & 
     162                        &                     + ah * ( zbu * ze3wr / ( e1t(ji+ip,jj) * e2t(ji+ip,jj) ) ) * zslope2 
    165163                     IF( ln_traldf_gdia ) THEN 
    166                         zaei_slp = fsaeiw(ji+ip,jj,jk)*zslope_skew!fsaeit(ji+ip,jj,jk)*zslope_skew 
    167                         psix_eiv(ji,jj,jk+kp) = psix_eiv(ji,jj,jk+kp) + 0.25_wp*zaei_slp 
     164                        zaei_slp = fsaeiw(ji+ip,jj,jk) * zslope_skew        !fsaeit(ji+ip,jj,jk)*zslope_skew 
     165                        psix_eiv(ji,jj,jk+kp) = psix_eiv(ji,jj,jk+kp) + 0.25_wp * zaei_slp 
    168166                     ENDIF 
    169167                  END DO 
     
    173171      END DO 
    174172      ! 
    175       DO jp=0,1 
    176          DO kp=0,1 
    177             DO jk=1,jpkm1 
    178                DO jj=1,jpjm1 
     173      DO jp = 0, 1 
     174         DO kp = 0, 1 
     175            DO jk = 1, jpkm1 
     176               DO jj = 1, jpjm1 
    179177                  DO ji=1,fs_jpim1 
    180                      ze3wr=1.0_wp/fse3w(ji,jj+jp,jk+kp) 
    181                      zbv = 0.25_wp*e1v(ji,jj)*e2v(ji,jj)*fse3v(ji,jj,jk) 
    182                      ah = fsahtu(ji,jj,jk)!fsaht(ji,jj+jp,jk) 
     178                     ze3wr = 1.0_wp / fse3w(ji,jj+jp,jk+kp) 
     179                     zbv   = 0.25_wp * e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
     180                     zah   = fsahtu(ji,jj,jk)                                       !fsaht(ji,jj+jp,jk) 
    183181                     zslope_skew = triadj_g(ji,jj+jp,jk,1-jp,kp) 
    184                      zslope2=(zslope_skew - vmask(ji,jj,jk+kp)*(fsdept(ji,jj+1,jk) - fsdept(ji ,jj ,jk))*ze2vr & 
    185                         & )**2 
    186                      ah_wslp2(ji,jj+jp,jk+kp)=ah_wslp2(ji,jj+jp,jk+kp) + & 
    187                         & ah*((zbv*ze3wr)/(e1t(ji,jj+jp)*e2t(ji,jj+jp)))*zslope2 
     182                     zslope2 = zslope_skew - ( fsdept(ji,jj+1,jk) - fsdept(ji,jj,jk) ) * ze2vr * vmask(ji,jj,jk+kp) 
     183                     zslope2 = zslope2 * zslope2 
     184                     ah_wslp2(ji,jj+jp,jk+kp) = ah_wslp2(ji,jj+jp,jk+kp)  & 
     185                        &                     + zah * ( zbv * ze3wr / ( e1t(ji,jj+jp) * e2t(ji,jj+jp) ) ) * zslope2 
    188186                     IF( ln_traldf_gdia ) THEN 
    189187                        zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew     !fsaeit(ji,jj+jp,jk)*zslope_skew 
    190                         psiy_eiv(ji,jj,jk+kp) = psiy_eiv(ji,jj,jk+kp) + 0.25_wp*zaei_slp 
     188                        psiy_eiv(ji,jj,jk+kp) = psiy_eiv(ji,jj,jk+kp) + 0.25_wp * zaei_slp 
    191189                     ENDIF 
    192190                  END DO 
     
    245243            ENDIF 
    246244 
    247             DO ip=0,1              !==  Horizontal & vertical fluxes 
    248                DO kp=0,1 
    249                   DO jj=1,jpjm1 
    250                      DO ji=1,fs_jpim1 
     245            DO ip = 0, 1              !==  Horizontal & vertical fluxes 
     246               DO kp = 0, 1 
     247                  DO jj = 1, jpjm1 
     248                     DO ji = 1, fs_jpim1 
    251249                        ze1ur = 1._wp / e1u(ji,jj) 
    252250                        zdxt = zdit(ji,jj,jk) * ze1ur 
    253                         ze3wr = 1._wp/fse3w(ji+ip,jj,jk+kp) 
     251                        ze3wr = 1._wp / fse3w(ji+ip,jj,jk+kp) 
    254252                        zdzt  = zdkt(ji+ip,jj,kp) * ze3wr 
    255253                        zslope_skew = triadi_g(ji+ip,jj,jk,1-ip,kp) 
     
    257255 
    258256                        zbu = 0.25_wp * e1u(ji,jj) * e2u(ji,jj) * fse3u(ji,jj,jk) 
    259                         ah = fsahtu(ji,jj,jk)!*umask(ji,jj,jk+kp)         !fsaht(ji+ip,jj,jk)             ===>>  ???? 
    260                         zah_slp = ah*zslope_iso 
     257                        zah = fsahtu(ji,jj,jk)   !*umask(ji,jj,jk+kp)         !fsaht(ji+ip,jj,jk)           ===>>  ???? 
     258                        zah_slp  = zah * zslope_iso 
    261259                        zaei_slp = fsaeiw(ji+ip,jj,jk) * zslope_skew    !fsaeit(ji+ip,jj,jk)*zslope_skew 
    262                         zftu(ji,jj,jk)  = zftu(ji,jj,jk) - (ah*zdxt + (zah_slp - zaei_slp)*zdzt)*zbu*ze1ur 
    263                         ztfw(ji+ip,jj,jk+kp) = ztfw(ji+ip,jj,jk+kp) - (zah_slp + zaei_slp)*zdxt *zbu*ze3wr 
     260                        zftu(ji,jj,jk) = zftu(ji,jj,jk) - ( zah * zdxt + (zah_slp - zaei_slp) * zdzt ) * zbu * ze1ur 
     261                        ztfw(ji+ip,jj,jk+kp) = ztfw(ji+ip,jj,jk+kp) - (zah_slp + zaei_slp) * zdxt * zbu * ze3wr 
    264262                     END DO 
    265263                  END DO 
     
    267265            END DO 
    268266 
    269             DO jp=0,1 
    270                DO kp=0,1 
    271                   DO jj=1,jpjm1 
    272                      DO ji=1,fs_jpim1 
    273                         ze2vr = 1._wp/e2v(ji,jj) 
    274                         zdyt = zdjt(ji,jj,jk)*ze2vr 
    275                         ze3wr = 1._wp/fse3w(ji,jj+jp,jk+kp) 
     267            DO jp = 0, 1 
     268               DO kp = 0, 1 
     269                  DO jj = 1, jpjm1 
     270                     DO ji = 1, fs_jpim1 
     271                        ze2vr = 1._wp / e2v(ji,jj) 
     272                        zdyt = zdjt(ji,jj,jk) * ze2vr 
     273                        ze3wr = 1._wp / fse3w(ji,jj+jp,jk+kp) 
    276274                        zdzt = zdkt(ji,jj+jp,kp) * ze3wr 
    277275                        zslope_skew = triadj_g(ji,jj+jp,jk,1-jp,kp) 
    278                         zslope_iso = triadj(ji,jj+jp,jk,1-jp,kp) 
     276                        zslope_iso  = triadj(ji,jj+jp,jk,1-jp,kp) 
    279277                        zbv = 0.25_wp * e1v(ji,jj) * e2v(ji,jj) * fse3v(ji,jj,jk) 
    280                         ah    = fsahtv(ji,jj,jk)!*vmask(ji,jj,jk+kp)         !fsaht(ji,jj+jp,jk) 
    281                         zah_slp = ah * zslope_iso 
    282                         zaei_slp = fsaeiw(ji,jj+jp,jk)*zslope_skew!fsaeit(ji,jj+jp,jk)*zslope_skew 
    283                         zftv(ji,jj,jk) = zftv(ji,jj,jk) - (ah*zdyt + (zah_slp - zaei_slp)*zdzt)*zbv*ze2vr 
    284                         ztfw(ji,jj+jp,jk+kp) = ztfw(ji,jj+jp,jk+kp) - (zah_slp + zaei_slp)*zdyt*zbv*ze3wr 
     278                        zah = fsahtv(ji,jj,jk)        !*vmask(ji,jj,jk+kp)         !fsaht(ji,jj+jp,jk) 
     279                        zah_slp = zah * zslope_iso 
     280                        zaei_slp = fsaeiw(ji,jj+jp,jk) * zslope_skew    !fsaeit(ji,jj+jp,jk)*zslope_skew 
     281                        zftv(ji,jj,jk) = zftv(ji,jj,jk) - ( zah * zdyt + (zah_slp - zaei_slp) * zdzt ) * zbv * ze2vr 
     282                        ztfw(ji,jj+jp,jk+kp) = ztfw(ji,jj+jp,jk+kp) - (zah_slp + zaei_slp) * zdyt * zbv * ze3wr 
    285283                     END DO 
    286284                  END DO 
     
    350348   !!---------------------------------------------------------------------- 
    351349CONTAINS 
    352    SUBROUTINE tra_ldf_iso_grif( kt )               ! Empty routine 
    353       WRITE(*,*) 'tra_ldf_iso: You should not have seen this print! error?', kt 
     350   SUBROUTINE tra_ldf_iso_grif( kt, cdtype, pgu, pgv, ptb, pta, kjpt, pahtb0 )      ! Empty routine 
     351      CHARACTER(len=3) ::   cdtype 
     352      REAL, DIMENSION(:,:,:) ::   pgu, pgv   ! tracer gradient at pstep levels 
     353      REAL, DIMENSION(:,:,:,:) ::   ptb, pta 
     354      WRITE(*,*) 'tra_ldf_iso_grif: You should not have seen this print! error?', kt, cdtype,    & 
     355         &                  pgu(1,1,1), pgv(1,1,1), ptb(1,1,1,1), pta(1,1,1,1), kjpt, pahtb0 
    354356   END SUBROUTINE tra_ldf_iso_grif 
    355357#endif 
Note: See TracChangeset for help on using the changeset viewer.