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 13331 for NEMO – NEMO

Changeset 13331 for NEMO


Ignore:
Timestamp:
2020-07-22T16:00:04+02:00 (4 years ago)
Author:
cetlod
Message:

r4.0-HEAD : bugfix in the heat content trend when activating bio-model light penetration, see ticket #2499

Location:
NEMO/releases/r4.0/r4.0-HEAD/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • NEMO/releases/r4.0/r4.0-HEAD/src/OCE/TRA/traqsr.F90

    r11536 r13331  
    6363   REAL(wp) ::   xsi1r   ! inverse of rn_si1 
    6464   ! 
    65    REAL(wp) , DIMENSION(3,61)           ::   rkrgb    ! tabulated attenuation coefficients for RGB absorption 
     65   REAL(wp) , PUBLIC, DIMENSION(3,61)   ::   rkrgb    ! tabulated attenuation coefficients for RGB absorption 
    6666   TYPE(FLD), ALLOCATABLE, DIMENSION(:) ::   sf_chl   ! structure of input Chl (file informations, fields read) 
    6767 
     
    416416         IF(lwp) WRITE(numout,*) '   ==>>>   bio-model light penetration' 
    417417         IF( .NOT.lk_top )   CALL ctl_stop( 'No bio model : ln_qsr_bio = true impossible ' ) 
     418         !                                    
     419         CALL trc_oce_rgb( rkrgb )                 ! tabulated attenuation coef. 
     420         !                                    
     421         nksr = trc_oce_ext_lev( r_si2, 33._wp )   ! level of light extinction 
     422         ! 
     423         IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksr, ' ref depth = ', gdepw_1d(nksr+1), ' m' 
    418424         ! 
    419425      END SELECT 
  • NEMO/releases/r4.0/r4.0-HEAD/src/TOP/PISCES/P4Z/p4zopt.F90

    r12276 r13331  
    3838   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   ekb, ekg, ekr  ! wavelength (Red-Green-Blue) 
    3939 
    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 
    43     
    4440   !!---------------------------------------------------------------------- 
    4541   !! NEMO/TOP 4.0 , NEMO Consortium (2018) 
     
    9288               irgb = NINT( 41 + 20.* LOG10( zchl ) + rtrn ) 
    9389               !                                                          
    94                ekb(ji,jj,jk) = xkrgb(1,irgb) * e3t_n(ji,jj,jk) 
    95                ekg(ji,jj,jk) = xkrgb(2,irgb) * e3t_n(ji,jj,jk) 
    96                ekr(ji,jj,jk) = xkrgb(3,irgb) * e3t_n(ji,jj,jk) 
     90               ekb(ji,jj,jk) = rkrgb(1,irgb) * e3t_n(ji,jj,jk) 
     91               ekg(ji,jj,jk) = rkrgb(2,irgb) * e3t_n(ji,jj,jk) 
     92               ekr(ji,jj,jk) = rkrgb(3,irgb) * e3t_n(ji,jj,jk) 
    9793            END DO 
    9894         END DO 
     
    106102         CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100 )  
    107103         ! 
    108          DO jk = 1, nksrp       
     104         DO jk = 1, nksr       
    109105            etot_ndcy(:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
    110106            enano    (:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 
     
    112108         END DO 
    113109         IF( ln_p5z ) THEN 
    114             DO jk = 1, nksrp       
     110            DO jk = 1, nksr       
    115111              epico  (:,:,jk) =  1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
    116112            END DO 
     
    121117         CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3 )  
    122118         ! 
    123          DO jk = 1, nksrp       
     119         DO jk = 1, nksr       
    124120            etot(:,:,jk) =  ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 
    125121         END DO 
     
    131127         CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100  )  
    132128         ! 
    133          DO jk = 1, nksrp       
     129         DO jk = 1, nksr       
    134130            etot (:,:,jk) =         ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
    135131            enano(:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 
     
    137133         END DO 
    138134         IF( ln_p5z ) THEN 
    139             DO jk = 1, nksrp       
     135            DO jk = 1, nksr       
    140136              epico(:,:,jk) =  1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
    141137            END DO 
     
    150146         ! 
    151147         etot3(:,:,1) =  qsr(:,:) * tmask(:,:,1) 
    152          DO jk = 2, nksrp + 1 
     148         DO jk = 2, nksr + 1 
    153149            etot3(:,:,jk) =  ( ze0(:,:,jk) + ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) ) * tmask(:,:,jk) 
    154150         END DO 
     
    160156      heup_01(:,:) = gdepw_n(:,:,2) 
    161157 
    162       DO jk = 2, nksrp 
     158      DO jk = 2, nksr 
    163159         DO jj = 1, jpj 
    164160           DO ji = 1, jpi 
     
    182178      zetmp2 (:,:)   = 0.e0 
    183179 
    184       DO jk = 1, nksrp 
     180      DO jk = 1, nksr 
    185181         DO jj = 1, jpj 
    186182            DO ji = 1, jpi 
     
    197193      zpar(:,:,:) = etot_ndcy(:,:,:)  ! diagnostic : PAR with no diurnal cycle  
    198194      ! 
    199       DO jk = 1, nksrp 
     195      DO jk = 1, nksr 
    200196         DO jj = 1, jpj 
    201197            DO ji = 1, jpi 
     
    213209      zetmp4 (:,:)   = 0.e0 
    214210      ! 
    215       DO jk = 1, nksrp 
     211      DO jk = 1, nksr 
    216212         DO jj = 1, jpj 
    217213            DO ji = 1, jpi 
     
    227223      ediatm(:,:,:) = ediat(:,:,:) 
    228224      ! 
    229       DO jk = 1, nksrp 
     225      DO jk = 1, nksr 
    230226         DO jj = 1, jpj 
    231227            DO ji = 1, jpi 
     
    241237      IF( ln_p5z ) THEN 
    242238         ALLOCATE( zetmp5(jpi,jpj) )  ;   zetmp5 (:,:) = 0.e0 
    243          DO jk = 1, nksrp 
     239         DO jk = 1, nksr 
    244240            DO jj = 1, jpj 
    245241               DO ji = 1, jpi 
     
    253249         epicom(:,:,:) = epico(:,:,:) 
    254250         ! 
    255          DO jk = 1, nksrp 
     251         DO jk = 1, nksr 
    256252            DO jj = 1, jpj 
    257253               DO ji = 1, jpi 
     
    310306         pe3(:,:,1) = zqsr(:,:) 
    311307         ! 
    312          DO jk = 2, nksrp + 1 
     308         DO jk = 2, nksr + 1 
    313309            DO jj = 1, jpj 
    314310               DO ji = 1, jpi 
     
    329325        pe3(:,:,1) = zqsr(:,:) * EXP( -0.5 * ekr(:,:,1) ) 
    330326        ! 
    331         DO jk = 2, nksrp       
     327        DO jk = 2, nksr       
    332328           DO jj = 1, jpj 
    333329              DO ji = 1, jpi 
     
    435431         ntimes_par = iom_getszuld( numpar )   ! get number of record in file 
    436432      ENDIF 
    437       ! 
    438       CALL trc_oce_rgb( xkrgb )                  ! tabulated attenuation coefficients 
    439       nksrp = trc_oce_ext_lev( r_si2, 0.33e2 )     ! max level of light extinction (Blue Chl=0.01) 
    440       ! 
    441       IF(lwp) WRITE(numout,*) '        level of light extinction = ', nksrp, ' ref depth = ', gdepw_1d(nksrp+1), ' m' 
    442433      ! 
    443434                         ekr      (:,:,:) = 0._wp 
  • NEMO/releases/r4.0/r4.0-HEAD/src/TOP/oce_trc.F90

    r10351 r13331  
    6565   USE traqsr  , ONLY :   rn_abs     =>    rn_abs     !: fraction absorbed in the very near surface 
    6666   USE traqsr  , ONLY :   rn_si0     =>    rn_si0     !: very near surface depth of extinction 
     67   USE traqsr  , ONLY :   nksr       =>    nksr       !: levels below which the light cannot penetrate (depth larger than 391 m) 
     68   USE traqsr  , ONLY :   rkrgb      =>    rkrgb      !: tabulated attenuation coefficients for RGB absorption 
    6769   USE traqsr  , ONLY :   ln_qsr_bio =>    ln_qsr_bio !: flag to use or not the biological fluxes for light 
    6870   USE sbcrnf  , ONLY :   rnfmsk     =>    rnfmsk     !: mixed adv scheme in runoffs vicinity (hori.)  
Note: See TracChangeset for help on using the changeset viewer.