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 15157 for NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traqsr.F90 – NEMO

Ignore:
Timestamp:
2021-07-29T10:28:32+02:00 (3 years ago)
Author:
techene
Message:

#2695 isf+qco OK in both ISOMIP+ and WED025 (pass sette with and without key_qco)

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14318_RK3_stage1/src/OCE/TRA/traqsr.F90

    r15083 r15157  
    786786      zcoef    =  zprec * rho0_rcp / ( rDt * zQmax * pfr) 
    787787      ! 
    788       klev = jpkm1      ! Level of light extinction 
    789       DO jk = jpkm1, 1, -1 
    790          IF( SUM( tmask(:,:,jk) ) > 0 ) THEN    ! ocean point at that level 
    791             zdw  = MAXVAL( gdepw_0(:,:,jk+1) *       wmask(:,:,jk)         )    ! max w-depth at jk+1 level 
    792             ze3t = MINVAL(   e3t_0(:,:,jk  ) , mask=(wmask(:,:,jk+1)==1)   )    ! minimum e3t at jk   level 
    793             zhext =  - pL * LOG( zcoef * ze3t )                                 ! extinction depth 
    794             IF( zdw >= zhext )   klev = jk                                      ! last T-level reached by Qsr 
    795          ELSE                                   ! only land point at level jk 
    796             klev = jk                                                           ! local domain sea-bed level  
    797          ENDIF 
    798       END DO 
     788      IF( ln_zco .OR. ln_zps ) THEN      ! z- or zps coordinate (use 1D ref vertcial coordinate) 
     789         klev = jpkm1                              ! Level of light extinction zco / zps 
     790         DO jk = jpkm1, 1, -1 
     791            zdw  = gdepw_1d(jk+1)                  ! max w-depth at jk+1 level 
     792            ze3t =   e3t_1d(jk  )                  ! minimum e3t at jk   level 
     793            zhext =  - pL * LOG( zcoef * ze3t )    ! extinction depth 
     794            IF( zdw >= zhext )   klev = jk         ! last T-level reached by Qsr 
     795         END DO 
     796      ELSE                               ! s- or s-z- coordinate (use 3D vertical coordinate) 
     797         klev = jpkm1                              ! Level of light extinction  
     798         DO jk = jpkm1, 1, -1    !  
     799            IF( SUM( tmask(:,:,jk) ) > 0 ) THEN    ! ocean point at that level 
     800               zdw  = MAXVAL( gdepw_0(:,:,jk+1) *       wmask(:,:,jk)         )    ! max w-depth at jk+1 level 
     801               ze3t = MINVAL(   e3t_0(:,:,jk  ) , mask=(wmask(:,:,jk+1)==1)   )    ! minimum e3t at jk   level 
     802               zhext =  - pL * LOG( zcoef * ze3t )                                 ! extinction depth 
     803               IF( zdw >= zhext )   klev = jk                                      ! last T-level reached by Qsr 
     804            ELSE                                   ! only land point at level jk 
     805               klev = jk                                                           ! local domain sea-bed level  
     806            ENDIF 
     807         END DO 
     808         CALL mpp_max('tra_qsr', klev)             ! needed for reproducibility   !!st may be modified to avoid this comm. 
     809         !                                                                        !!st use ssmask to remove the comm ? 
     810      ENDIF 
    799811      ! 
    800812!!st      IF(lwp) WRITE(numout,*) '                level of e3t light extinction = ', klev, ' ref depth = ', gdepw_1d(klev+1), ' m' 
    801 !!st      ! 
    802 !!st      klev = jpkm1      ! Level of light extinction 
    803 !!st      DO jk = jpkm1, 1, -1 
    804 !!st         IF( SUM( tmask(:,:,jk) ) > 0 ) THEN    ! ocean point at that level 
    805 !!st            zdw  = MAXVAL( gdepw_0(:,:,jk+1) * wmask(:,:,jk) )    ! max w-depth at jk+1 level 
    806 !!st            ze3t = MINVAL(   e3t_0(:,:,jk  )                 )    ! minimum e3t at jk   level 
    807 !!st            zhext =  - pL * LOG( zcoef * pL )                   ! extinction depth 
    808 !!st            IF( zdw >= zhext )   klev = jk                        ! last T-level reached by Qsr 
    809 !!st         ELSE                                   ! only land point at level jk 
    810 !!st            klev = jk                                             ! local domain sea-bed level  
    811 !!st         ENDIF 
    812 !!st      END DO 
    813 !!st      ! 
    814 !!st      IF(lwp) WRITE(numout,*) '                level of pL light extinction = ', klev, ' ref depth = ', gdepw_1d(klev+1), ' m' 
    815       ! 
    816813   END FUNCTION qsr_ext_lev 
    817814 
Note: See TracChangeset for help on using the changeset viewer.