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 3211 for branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90 – NEMO

Ignore:
Timestamp:
2011-12-11T16:00:26+01:00 (13 years ago)
Author:
spickles2
Message:

Stephen Pickles, 11 Dec 2011

Commit to bring the rest of the DCSE NEMO development branch
in line with the latest development version. This includes
array index re-ordering of all OPA_SRC/.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2011/DEV_r2739_STFC_dCSE/NEMOGCM/NEMO/OPA_SRC/TRA/traqsr.F90

    r2715 r3211  
    5353   REAL(wp), DIMENSION(3,61) ::   rkrgb   !: tabulated attenuation coefficients for RGB absorption 
    5454 
     55   !! * Control permutation of array indices 
     56#  include "oce_ftrans.h90" 
     57#  include "dom_oce_ftrans.h90" 
     58#  include "sbc_oce_ftrans.h90" 
     59#  include "trc_oce_ftrans.h90" 
     60 
    5561   !! * Substitutions 
    5662#  include "domzgr_substitute.h90" 
     
    94100      USE wrk_nemo, ONLY:   ze0  => wrk_3d_1 , ze1  => wrk_3d_2 , ze2  => wrk_3d_3 
    95101      USE wrk_nemo, ONLY:   ze3  => wrk_3d_4 , zea  => wrk_3d_5 
     102 
     103      !! DCSE_NEMO: need additional directives for renamed module variables 
     104!FTRANS ze0 ze1 ze2 ze3 zea :I :I :z 
    96105      ! 
    97106      INTEGER, INTENT(in) ::   kt     ! ocean time-step 
     
    102111      REAL(wp) ::   zc0, zc1, zc2, zc3   !    -         - 
    103112      REAL(wp) ::   zz0, zz1, z1_e3t     !    -         - 
     113 
     114!FTRANS ztrdt :I :I :z 
    104115      REAL(wp), DIMENSION(:,:,:), ALLOCATABLE ::  ztrdt 
    105116      !!---------------------------------------------------------------------- 
     
    144155      IF( lk_qsr_bio .AND. ln_qsr_bio ) THEN      !  bio-model fluxes  : all vertical coordinates  ! 
    145156         !                                        ! ============================================== ! 
     157#if defined key_z_first 
     158         DO jj = 1, jpj 
     159            DO ji = 1, jpi 
     160               DO jk = 1, jpkm1 
     161                  qsr_hc(:,:,jk) = ro0cpr * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 
     162               END DO 
     163            END DO 
     164         END DO 
     165#else 
    146166         DO jk = 1, jpkm1 
    147167            qsr_hc(:,:,jk) = ro0cpr * ( etot3(:,:,jk) - etot3(:,:,jk+1) ) 
    148168         END DO 
     169#endif 
    149170         !                                        Add to the general trend 
     171#if defined key_z_first 
     172         DO jj = 2, jpjm1  
     173            DO ji = 2, jpim1 
     174               DO jk = 1, jpkm1 
     175#else 
    150176         DO jk = 1, jpkm1 
    151177            DO jj = 2, jpjm1  
    152178               DO ji = fs_2, fs_jpim1   ! vector opt. 
     179#endif 
    153180                  z1_e3t = zfact / fse3t(ji,jj,jk) 
    154181                  tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) + ( qsr_hc_b(ji,jj,jk) + qsr_hc(ji,jj,jk) ) * z1_e3t 
     
    198225               zea(:,:,1) =         qsr(:,:) 
    199226               ! 
     227#if defined key_z_first 
     228               DO jj = 1, jpj 
     229                  DO ji = 1, jpi 
     230                     DO jk = 2, nksr+1 
     231#else 
    200232               DO jk = 2, nksr+1 
    201233!CDIR NOVERRCHK 
     
    203235!CDIR NOVERRCHK    
    204236                     DO ji = 1, jpi 
     237#endif 
    205238                        zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * xsi0r     ) 
    206239                        zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t(ji,jj,jk-1) * zekb(ji,jj) ) 
     
    216249               END DO 
    217250               ! 
     251#if defined key_z_first 
     252               DO jj = 1, jpj 
     253                  DO ji = 1, jpi 
     254                     DO jk = 1, nksr                                  ! compute and add qsr trend to ta 
     255                        qsr_hc(ji,jj,jk) = ro0cpr * ( zea(ji,jj,jk) - zea(ji,jj,jk+1) ) 
     256                     END DO 
     257                  END DO 
     258               END DO 
     259#else 
    218260               DO jk = 1, nksr                                        ! compute and add qsr trend to ta 
    219261                  qsr_hc(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) ) 
    220262               END DO 
     263#endif 
    221264               zea(:,:,nksr+1:jpk) = 0.e0     ! below 400m set to zero 
    222265               CALL iom_put( 'qsr3d', zea )   ! Shortwave Radiation 3D distribution 
    223266               ! 
    224267            ELSE                                                 !*  Constant Chlorophyll 
     268#if defined key_z_first 
     269               DO jj = 1, jpj 
     270                  DO ji = 1, jpi 
     271                     DO jk = 1, nksr 
     272                        qsr_hc(ji,jj,jk) =  etot3(ji,jj,jk) * qsr(ji,jj) 
     273                     END DO 
     274                  END DO 
     275               END DO 
     276#else 
    225277               DO jk = 1, nksr 
    226278                  qsr_hc(:,:,jk) =  etot3(:,:,jk) * qsr(:,:) 
    227279               END DO 
     280#endif 
    228281            ENDIF 
    229282 
     
    236289               zz0   =        rn_abs   * ro0cpr 
    237290               zz1   = ( 1. - rn_abs ) * ro0cpr 
     291#if defined key_z_first 
     292               DO jj = 2, jpjm1 
     293                  DO ji = 2, jpim1 
     294                     DO jk = 1, nksr              ! solar heat absorbed at T-point in the top 400m  
     295#else 
    238296               DO jk = 1, nksr                    ! solar heat absorbed at T-point in the top 400m  
    239297                  DO jj = 2, jpjm1 
    240298                     DO ji = 2, jpim1 
     299#endif 
    241300                        zc0 = zz0 * EXP( -fsdepw(ji,jj,jk  )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk  )*xsi1r ) 
    242301                        zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r ) 
     
    246305               END DO 
    247306            ELSE                                               !* constant volume: coef. computed one for all 
     307#if defined key_z_first 
     308               DO jj = 2, jpjm1 
     309                  DO ji = 2, jpim1 
     310                     DO jk = 1, nksr 
     311#else 
    248312               DO jk = 1, nksr 
    249313                  DO jj = 2, jpjm1 
    250314                     DO ji = fs_2, fs_jpim1   ! vector opt. 
     315#endif 
    251316                        qsr_hc(ji,jj,jk) =  etot3(ji,jj,jk) * qsr(ji,jj) 
    252317                     END DO 
     
    259324         ! 
    260325         !                                        Add to the general trend 
     326#if defined key_z_first 
     327         DO jj = 2, jpjm1  
     328            DO ji = 2, jpim1 
     329               DO jk = 1, nksr 
     330#else 
    261331         DO jk = 1, nksr 
    262332            DO jj = 2, jpjm1  
    263333               DO ji = fs_2, fs_jpim1   ! vector opt. 
     334#endif 
    264335                  z1_e3t = zfact / fse3t(ji,jj,jk) 
    265336                  tsa(ji,jj,jk,jp_tem) = tsa(ji,jj,jk,jp_tem) + ( qsr_hc_b(ji,jj,jk) + qsr_hc(ji,jj,jk) ) * z1_e3t 
     
    293364   END SUBROUTINE tra_qsr 
    294365 
     366   !! * Reset control of array index permutation  
     367!FTRANS CLEAR 
     368#  include "oce_ftrans.h90" 
     369#  include "dom_oce_ftrans.h90" 
     370#  include "sbc_oce_ftrans.h90" 
     371#  include "trc_oce_ftrans.h90" 
    295372 
    296373   SUBROUTINE tra_qsr_init 
     
    315392      USE wrk_nemo, ONLY:   ze0  => wrk_3d_1 , ze1  => wrk_3d_2 , ze2 => wrk_3d_3 
    316393      USE wrk_nemo, ONLY:   ze3  => wrk_3d_4 , zea  => wrk_3d_5 
     394 
     395      !! DCSE_NEMO: Need additional directives for renamed module variables 
     396!FTRANS ze0 ze1 ze2 ze3 zea :I :I :z 
     397 
    317398      ! 
    318399      INTEGER  ::   ji, jj, jk     ! dummy loop indices 
     
    433514                  ! 
    434515                  zcoef = ( 1. - rn_abs ) / 3.e0              ! equi-partition in R-G-B 
     516                
     517#if defined key_z_first 
     518                  DO jj = 1, jpj 
     519                     DO ji = 1, jpi 
     520                        ze0(ji,jj,1) = rn_abs 
     521                        ze1(ji,jj,1) = zcoef 
     522                        ze2(ji,jj,1) = zcoef  
     523                        ze3(ji,jj,1) = zcoef 
     524                        zea(ji,jj,1) = tmask(ji,jj,1)         ! = ( ze0+ze1+z2+ze3 ) * tmask 
     525                        DO jk = 2, nksr+1 
     526#else 
    435527                  ze0(:,:,1) = rn_abs 
    436528                  ze1(:,:,1) = zcoef 
     
    438530                  ze3(:,:,1) = zcoef 
    439531                  zea(:,:,1) = tmask(:,:,1)                   ! = ( ze0+ze1+z2+ze3 ) * tmask 
    440                 
    441532                  DO jk = 2, nksr+1 
    442533!CDIR NOVERRCHK 
     
    444535!CDIR NOVERRCHK    
    445536                        DO ji = 1, jpi 
     537#endif 
    446538                           zc0 = ze0(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * xsi0r     ) 
    447539                           zc1 = ze1(ji,jj,jk-1) * EXP( - fse3t_0(ji,jj,jk-1) * zekb(ji,jj) ) 
     
    457549                  END DO  
    458550                  ! 
     551#if defined key_z_first 
     552                  DO jj = 1, jpj 
     553                     DO ji = 1, jpi 
     554                        DO jk = 1, nksr 
     555                           etot3(ji,jj,jk) = ro0cpr * ( zea(ji,jj,jk) - zea(ji,jj,jk+1) )  
     556                        END DO 
     557                     END DO 
     558                  END DO 
     559#else 
    459560                  DO jk = 1, nksr 
    460561                     etot3(:,:,jk) = ro0cpr * ( zea(:,:,jk) - zea(:,:,jk+1) )  
    461562                  END DO 
     563#endif 
    462564                  etot3(:,:,nksr+1:jpk) = 0.e0                ! below 400m set to zero 
    463565               ENDIF 
     
    481583               zz0 =        rn_abs   * ro0cpr 
    482584               zz1 = ( 1. - rn_abs ) * ro0cpr 
     585#if defined key_z_first 
     586               DO jj = 1, jpj                     !*  solar heat absorbed at T-point computed once for all 
     587                  DO ji = 1, jpi 
     588                     DO jk = 1, nksr                         ! top 400 meters 
     589                        zc0 = zz0 * EXP( -fsdepw(ji,jj,jk  )*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk  )*xsi1r ) 
     590                        zc1 = zz0 * EXP( -fsdepw(ji,jj,jk+1)*xsi0r ) + zz1 * EXP( -fsdepw(ji,jj,jk+1)*xsi1r ) 
     591                        etot3(ji,jj,jk) = (  zc0 * tmask(ji,jj,jk) - zc1 * tmask(ji,jj,jk+1)  )  
     592                     END DO 
     593                     DO jk = nksr+1, jpk 
     594                        etot3(ji,jj,jk) = 0.e0       ! below 400m set to zero 
     595                     END DO 
     596                  END DO 
     597               END DO 
     598#else 
    483599               DO jk = 1, nksr                    !*  solar heat absorbed at T-point computed once for all 
    484600                  DO jj = 1, jpj                              ! top 400 meters 
     
    491607               END DO 
    492608               etot3(:,:,nksr+1:jpk) = 0.e0                   ! below 400m set to zero 
     609#endif 
    493610               ! 
    494611            ENDIF 
Note: See TracChangeset for help on using the changeset viewer.