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 14385 for NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zopt.F90 – NEMO

Ignore:
Timestamp:
2021-02-03T16:03:34+01:00 (3 years ago)
Author:
cetlod
Message:

dev_r11708_aumont_PISCES_QUOTA : merge with the trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/branches/2021/dev_r14383_PISCES_NEWDEV_PISCO/src/TOP/PISCES/P4Z/p4zopt.F90

    r14213 r14385  
    8080      ze3(:,:,:) = 0._wp 
    8181      ! 
    82       !                                        !* attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 
    83       !                                        !  -------------------------------------------------------- 
     82      ! Attenuation coef. function of Chlorophyll and wavelength (Red-Green-Blue) 
     83      ! Thus the light penetration scheme is based on a decomposition of PAR 
     84      ! into three wave length domains. This was first officially published 
     85      ! in Lengaigne et al. (2007). 
     86      ! -------------------------------------------------------- 
    8487                     zchl3d(:,:,:) = tr(:,:,:,jpnch,Kbb) + tr(:,:,:,jpdch,Kbb) 
    85       IF( ln_p5z )   zchl3d(:,:,:) = zchl3d(:,:,:)    + tr(:,:,:,jppch,Kbb) 
    86       ! 
     88      IF( ln_p5z )   zchl3d(:,:,:) = zchl3d(:,:,:)       + tr(:,:,:,jppch,Kbb) 
     89      ! 
     90      ! Computation of the light attenuation parameters based on a  
     91      ! look-up table 
    8792      DO_3D( 1, 1, 1, 1, 1, jpkm1 ) 
    8893         zchl = ( zchl3d(ji,jj,jk) + rtrn ) * 1.e6 
     
    9499         ekr(ji,jj,jk) = rkrgb(3,irgb) * e3t(ji,jj,jk,Kmm) 
    95100      END_3D 
    96       !                                        !* Photosynthetically Available Radiation (PAR) 
    97       !                                        !  -------------------------------------- 
     101 
     102      ! Photosynthetically Available Radiation (PAR) 
     103      ! Two cases are considered in the following :  
     104      ! (1) An explicit diunal cycle is activated. In that case, mean  
     105      ! QSR is used as PISCES in its current state has not been parameterized 
     106      ! for an explicit diurnal cycle 
     107      ! (2) no diurnal cycle of SW is active and in that case, QSR is used. 
     108      ! -------------------------------------------- 
    98109      IF( l_trcdm2dc ) THEN                     !  diurnal cycle 
    99110         ! 
     111          ! 
     112         ! SW over the ice free zone of the grid cell. This assumes that 
     113         ! SW is zero below sea ice which is a very crude assumption that is  
     114         ! not fully correct with LIM3 and SI3 but no information is  
     115         ! currently available to do a better job. SHould be improved in the  
     116         ! (near) future. 
    100117         zqsr_corr(:,:) = qsr_mean(:,:) / ( 1.-fr_i(:,:) + rtrn ) 
    101118         ! 
    102119         CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100 )  
    103120         ! 
     121         ! Used PAR is computed for each phytoplankton species 
     122         ! etot_ndcy is PAR at level jk averaged over 24h. 
     123         ! Due to their size, they have different light absorption characteristics 
    104124         DO jk = 1, nksr       
    105125            etot_ndcy(:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
     
    113133         ENDIF 
    114134         ! 
     135         ! SW over the ice free zone of the grid cell. This assumes that 
     136         ! SW is zero below sea ice which is a very crude assumption that is  
     137         ! not fully correct with LIM3 and SI3 but no information is  
     138         ! currently available to do a better job. SHould be improved in the  
     139         ! (near) future. 
     140 
    115141         zqsr_corr(:,:) = qsr(:,:) / ( 1.-fr_i(:,:) + rtrn ) 
    116142         ! 
    117143         CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3 )  
    118144         ! 
     145         ! Total PAR computation at level jk that includes the diurnal cycle 
    119146         DO jk = 1, nksr       
    120147            etot(:,:,jk) =  ze1(:,:,jk) + ze2(:,:,jk) + ze3(:,:,jk) 
    121148         END DO 
    122149         ! 
    123       ELSE 
    124          ! 
     150      ELSE   ! no diurnal cycle 
     151         ! 
     152         ! 
     153         ! SW over the ice free zone of the grid cell. This assumes that 
     154         ! SW is zero below sea ice which is a very crude assumption that is  
     155         ! not fully correct with LIM3 and SI3 but no information is  
     156         ! currently available to do a better job. SHould be improved in the  
     157         ! (near) future. 
    125158         zqsr_corr(:,:) = qsr(:,:) / ( 1.-fr_i(:,:) + rtrn ) 
    126159         ! 
    127160         CALL p4z_opt_par( kt, Kmm, zqsr_corr, ze1, ze2, ze3, pqsr100 = zqsr100  )  
    128161         ! 
     162 
     163         ! Used PAR is computed for each phytoplankton species 
     164         ! Due to their size, they have different light absorption characteristics 
    129165         DO jk = 1, nksr       
    130             etot (:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk) 
    131             enano(:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk) 
    132             ediat(:,:,jk) =  1.62 * ze1(:,:,jk) + 0.74 * ze2(:,:,jk) + 0.63 * ze3(:,:,jk) 
     166            etot (:,:,jk) =        ze1(:,:,jk) +        ze2(:,:,jk) +       ze3(:,:,jk)    ! Total PAR 
     167            enano(:,:,jk) =  1.85 * ze1(:,:,jk) + 0.69 * ze2(:,:,jk) + 0.46 * ze3(:,:,jk)  ! Nanophytoplankton 
     168            ediat(:,:,jk) =  1.62 * ze1(:,:,jk) + 0.74 * ze2(:,:,jk) + 0.63 * ze3(:,:,jk)  ! Diatoms 
    133169         END DO 
    134170         IF( ln_p5z ) THEN 
    135171            DO jk = 1, nksr       
    136               epico(:,:,jk) =  1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk) 
     172              epico(:,:,jk) =  1.94 * ze1(:,:,jk) + 0.66 * ze2(:,:,jk) + 0.4 * ze3(:,:,jk)  ! Picophytoplankton (PISCES-QUOTA) 
    137173            END DO 
    138174         ENDIF 
     
    141177 
    142178 
     179      ! Biophysical feedback part (computation of vertical penetration of SW) 
    143180      IF( ln_qsr_bio ) THEN                    !* heat flux accros w-level (used in the dynamics) 
    144181         !                                     !  ------------------------ 
     
    151188         !                                     !  ------------------------ 
    152189      ENDIF 
    153       !                                        !* Euphotic depth and level 
    154       neln   (:,:) = 1                            !  ------------------------ 
     190       
     191      ! Euphotic depth and level 
     192      ! Two definitions of the euphotic zone are used here.  
     193      ! (1) The classical definition based on the relative threshold value 
     194      ! (2) An alternative definition based on a absolute threshold value. 
     195      ! ------------------------------------------------------------------- 
     196      neln(:,:) = 1 
    155197      heup   (:,:) = gdepw(:,:,2,Kmm) 
    156198      heup_01(:,:) = gdepw(:,:,2,Kmm) 
     
    162204           heup(ji,jj) = gdepw(ji,jj,jk+1,Kmm)     ! Euphotic layer depth 
    163205        ENDIF 
    164         IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.50 )  THEN 
     206        IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.10 )  THEN 
    165207           heup_01(ji,jj) = gdepw(ji,jj,jk+1,Kmm)  ! Euphotic layer depth (light level definition) 
    166208        ENDIF 
    167209      END_3D 
    168210      ! 
     211      ! The euphotic depth can not exceed 300 meters. 
    169212      heup   (:,:) = MIN( 300., heup   (:,:) ) 
    170213      heup_01(:,:) = MIN( 300., heup_01(:,:) ) 
    171       !                                        !* mean light over the mixed layer 
    172       zdepmoy(:,:)   = 0.e0                    !  ------------------------------- 
     214       
     215      ! Mean PAR over the mixed layer 
     216      ! ----------------------------- 
     217      zdepmoy(:,:)   = 0.e0              
    173218      zetmp1 (:,:)   = 0.e0 
    174219      zetmp2 (:,:)   = 0.e0 
     
    176221      DO_3D( 1, 1, 1, 1, 1, nksr ) 
    177222         IF( gdepw(ji,jj,jk+1,Kmm) <= hmld(ji,jj) ) THEN 
    178             zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot     (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! remineralisation 
    179             zetmp2 (ji,jj) = zetmp2 (ji,jj) + etot_ndcy(ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production 
     223            zetmp1 (ji,jj) = zetmp1 (ji,jj) + etot     (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! Actual PAR for remineralisation 
     224            zetmp2 (ji,jj) = zetmp2 (ji,jj) + etot_ndcy(ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! Par averaged over 24h for production 
    180225            zdepmoy(ji,jj) = zdepmoy(ji,jj) +                       e3t(ji,jj,jk,Kmm) 
    181226         ENDIF 
     
    192237         ENDIF 
    193238      END_3D 
    194       ! 
     239 
     240      ! Computation of the mean usable light for the different phytoplankton 
     241      ! groups based on their absorption characteristics. 
    195242      zdepmoy(:,:)   = 0.e0 
    196243      zetmp3 (:,:)   = 0.e0 
     
    199246      DO_3D( 1, 1, 1, 1, 1, nksr ) 
    200247         IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 
    201             zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano    (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production 
    202             zetmp4 (ji,jj) = zetmp4 (ji,jj) + ediat    (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production 
     248            zetmp3 (ji,jj) = zetmp3 (ji,jj) + enano    (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! Nanophytoplankton 
     249            zetmp4 (ji,jj) = zetmp4 (ji,jj) + ediat    (ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! Diatoms 
    203250            zdepmoy(ji,jj) = zdepmoy(ji,jj) +                       e3t(ji,jj,jk,Kmm) 
    204251         ENDIF 
     
    216263      ! 
    217264      IF( ln_p5z ) THEN 
     265         ! Picophytoplankton when using PISCES-QUOTA 
    218266         ALLOCATE( zetmp5(jpi,jpj) )  ;   zetmp5 (:,:) = 0.e0 
    219267         DO_3D( 1, 1, 1, 1, 1, nksr ) 
    220268            IF( gdepw(ji,jj,jk+1,Kmm) <= MIN(hmld(ji,jj), heup_01(ji,jj)) ) THEN 
    221                zetmp5(ji,jj)  = zetmp5 (ji,jj) + epico(ji,jj,jk) * e3t(ji,jj,jk,Kmm) ! production 
     269               zetmp5(ji,jj)  = zetmp5 (ji,jj) + epico(ji,jj,jk) * e3t(ji,jj,jk,Kmm) 
    222270            ENDIF 
    223271         END_3D 
Note: See TracChangeset for help on using the changeset viewer.