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 13540 for NEMO/branches/2020/r12377_ticket2386/src/TOP/PISCES/P4Z/p4zopt.F90 – NEMO

Ignore:
Timestamp:
2020-09-29T12:41:06+02:00 (4 years ago)
Author:
andmirek
Message:

Ticket #2386: update to latest trunk

Location:
NEMO/branches/2020/r12377_ticket2386
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2020/r12377_ticket2386

    • Property svn:externals
      •  

        old new  
        33^/utils/build/mk@HEAD         mk 
        44^/utils/tools@HEAD            tools 
        5 ^/vendors/AGRIF/dev@HEAD      ext/AGRIF 
         5^/vendors/AGRIF/dev_r12970_AGRIF_CMEMS      ext/AGRIF 
        66^/vendors/FCM@HEAD            ext/FCM 
        77^/vendors/IOIPSL@HEAD         ext/IOIPSL 
        88 
        99# SETTE 
        10 ^/utils/CI/sette@HEAD         sette 
         10^/utils/CI/sette@13507        sette 
  • NEMO/branches/2020/r12377_ticket2386/src/TOP/PISCES/P4Z/p4zopt.F90

    r12377 r13540  
    1616   USE iom            ! I/O manager 
    1717   USE fldread        !  time interpolation 
    18    USE prtctl_trc     !  print control for debugging 
     18   USE prtctl         !  print control for debugging 
    1919 
    2020   IMPLICIT NONE 
     
    3737   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:)   ::   par_varsw      ! PAR fraction of shortwave 
    3838   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ekb, ekg, ekr  ! wavelength (Red-Green-Blue) 
    39  
    40    INTEGER  ::   nksrp   ! levels below which the light cannot penetrate ( depth larger than 391 m) 
    41  
    42    REAL(wp), DIMENSION(3,61) ::   xkrgb   ! tabulated attenuation coefficients for RGB absorption 
    4339    
    4440   !! * Substitutions 
    4541#  include "do_loop_substitute.h90" 
     42#  include "domzgr_substitute.h90" 
    4643   !!---------------------------------------------------------------------- 
    4744   !! NEMO/TOP 4.0 , NEMO Consortium (2018) 
     
    8885      IF( ln_p5z )   zchl3d(:,:,:) = zchl3d(:,:,:)    + tr(:,:,:,jppch,Kbb) 
    8986      ! 
    90       DO_3D_11_11( 1, jpkm1 ) 
     87      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    9188         zchl = ( zchl3d(ji,jj,jk) + rtrn ) * 1.e6 
    9289         zchl = MIN(  10. , MAX( 0.05, zchl )  ) 
    9390         irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) 
    9491         !                                                          
    95          ekb(ji,jj,jk) = xkrgb(1,irgb) * e3t(ji,jj,jk,Kmm) 
    96          ekg(ji,jj,jk) = xkrgb(2,irgb) * e3t(ji,jj,jk,Kmm) 
    97          ekr(ji,jj,jk) = xkrgb(3,irgb) * e3t(ji,jj,jk,Kmm) 
     92         ekb(ji,jj,jk) = rkrgb(1,irgb) * e3t(ji,jj,jk,Kmm) 
     93         ekg(ji,jj,jk) = rkrgb(2,irgb) * e3t(ji,jj,jk,Kmm) 
     94         ekr(ji,jj,jk) = rkrgb(3,irgb) * e3t(ji,jj,jk,Kmm) 
    9895      END_3D 
    9996      !                                        !* Photosynthetically Available Radiation (PAR) 
     
    105102         CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100 )  
    106103         ! 
    107          DO jk = 1, nksrp       
     104         DO jk = 1, nksr       
    108105            etot_ndcy(:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
    109106            enano    (:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 
     
    111108         END DO 
    112109         IF( ln_p5z ) THEN 
    113             DO jk = 1, nksrp       
     110            DO jk = 1, nksr       
    114111              epico  (:,:,jk) =  1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
    115112            END DO 
     
    120117         CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3 )  
    121118         ! 
    122          DO jk = 1, nksrp       
     119         DO jk = 1, nksr       
    123120            etot(:,:,jk) =  ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 
    124121         END DO 
     
    130127         CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100  )  
    131128         ! 
    132          DO jk = 1, nksrp       
     129         DO jk = 1, nksr       
    133130            etot (:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
    134131            enano(:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 
     
    136133         END DO 
    137134         IF( ln_p5z ) THEN 
    138             DO jk = 1, nksrp       
     135            DO jk = 1, nksr       
    139136              epico(:,:,jk) =  1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
    140137            END DO 
     
    149146         ! 
    150147         etot3(:,:,1) =  qsr(:,:) * tmask(:,:,1) 
    151          DO jk = 2, nksrp + 1 
     148         DO jk = 2, nksr + 1 
    152149            etot3(:,:,jk) =  ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 
    153150         END DO 
     
    159156      heup_01(:,:) = gdepw(:,:,2,Kmm) 
    160157 
    161       DO_3D_11_11( 2, nksrp ) 
     158      DO_3D( 1, 1, 1, 1, 2, nksr ) 
    162159        IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >=  zqsr100(ji,jj) )  THEN 
    163160           neln(ji,jj) = jk+1                    ! Euphotic level : 1rst T-level strictly below Euphotic layer 
     
    177174      zetmp2 (:,:)   = 0.e0 
    178175 
    179       DO_3D_11_11( 1, nksrp ) 
     176      DO_3D( 1, 1, 1, 1, 1, nksr ) 
    180177         IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
    181178            zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot     (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! remineralisation 
     
    188185      zpar(:,:,:) = etot_ndcy(:,:,:)  ! diagnostic : PAR with no diurnal cycle  
    189186      ! 
    190       DO_3D_11_11( 1, nksrp ) 
     187      DO_3D( 1, 1, 1, 1, 1, nksr ) 
    191188         IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
    192189            z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 
     
    200197      zetmp4 (:,:)   = 0.e0 
    201198      ! 
    202       DO_3D_11_11( 1, nksrp ) 
     199      DO_3D( 1, 1, 1, 1, 1, nksr ) 
    203200         IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 
    204201            zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano    (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production 
     
    210207      ediatm(:,:,:) = ediat(:,:,:) 
    211208      ! 
    212       DO_3D_11_11( 1, nksrp ) 
     209      DO_3D( 1, 1, 1, 1, 1, nksr ) 
    213210         IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
    214211            z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 
     
    220217      IF( ln_p5z ) THEN 
    221218         ALLOCATE( zetmp5(jpi,jpj) )  ;   zetmp5 (:,:) = 0.e0 
    222          DO_3D_11_11( 1, nksrp ) 
     219         DO_3D( 1, 1, 1, 1, 1, nksr ) 
    223220            IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 
    224221               zetmp5(ji,jj)  = zetmp5 (ji,jj) + epico(ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production 
     
    228225         epicom(:,:,:) = epico(:,:,:) 
    229226         ! 
    230          DO_3D_11_11( 1, nksrp ) 
     227         DO_3D( 1, 1, 1, 1, 1, nksr ) 
    231228            IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
    232229               z1_dep = 1. / ( zdepmoy(ji,jj) + rtrn ) 
     
    282279         pe3(:,:,1) = zqsr(:,:) 
    283280         ! 
    284          DO jk = 2, nksrp + 1 
     281         DO jk = 2, nksr + 1 
    285282            DO jj = 1, jpj 
    286283               DO ji = 1, jpi 
     
    301298        pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekr(:,:,1) ) 
    302299        ! 
    303         DO_3D_11_11( 2, nksrp ) 
     300        DO_3D( 1, 1, 1, 1, 2, nksr ) 
    304301           pe1(ji,jj,jk) = pe1(ji,jj,jk-1) * EXP( -0.5 * ( ekb(ji,jj,jk-1) + ekb(ji,jj,jk) ) ) 
    305302           pe2(ji,jj,jk) = pe2(ji,jj,jk-1) * EXP( -0.5 * ( ekg(ji,jj,jk-1) + ekg(ji,jj,jk) ) ) 
     
    399396         ntimes_par = iom_getszuld( numpar )   ! get number of record in file 
    400397      ENDIF 
    401       ! 
    402       CALL trc_oce_rgb( xkrgb )                  ! tabulated attenuation coefficients 
    403       nksrp = trc_oce_ext_lev( r_si2, 0.33e2 )     ! max level of light extinction (Blue Chl=0.01) 
    404       ! 
    405       IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 
    406398      ! 
    407399                         ekr      (:,:,:) = 0._wp 
Note: See TracChangeset for help on using the changeset viewer.