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 14072 for NEMO/trunk/src/OCE/TRA/traqsr.F90 – NEMO

Ignore:
Timestamp:
2020-12-04T08:48:38+01:00 (3 years ago)
Author:
laurent
Message:

Merging branch "2020/dev_r13648_ASINTER-04_laurent_bulk_ice", ticket #2369

File:
1 edited

Legend:

Unmodified
Added
Removed
  • NEMO/trunk/src/OCE/TRA/traqsr.F90

    r14053 r14072  
    99   !!   NEMO     1.0  !  2002-06  (G. Madec)  F90: Free form and module 
    1010   !!             -   !  2005-11  (G. Madec) zco, zps, sco coordinate 
    11    !!            3.2  !  2009-04  (G. Madec & NEMO team)  
    12    !!            3.6  !  2012-05  (C. Rousset) store attenuation coef for use in ice model  
     11   !!            3.2  !  2009-04  (G. Madec & NEMO team) 
     12   !!            3.6  !  2012-05  (C. Rousset) store attenuation coef for use in ice model 
    1313   !!            3.6  !  2015-12  (O. Aumont, J. Jouanno, C. Ethe) use vertical profile of chlorophyll 
    14    !!            3.7  !  2015-11  (G. Madec, A. Coward)  remove optimisation for fix volume  
     14   !!            3.7  !  2015-11  (G. Madec, A. Coward)  remove optimisation for fix volume 
    1515   !!---------------------------------------------------------------------- 
    1616 
    1717   !!---------------------------------------------------------------------- 
    18    !!   tra_qsr       : temperature trend due to the penetration of solar radiation  
    19    !!   tra_qsr_init  : initialization of the qsr penetration  
     18   !!   tra_qsr       : temperature trend due to the penetration of solar radiation 
     19   !!   tra_qsr_init  : initialization of the qsr penetration 
    2020   !!---------------------------------------------------------------------- 
    2121   USE oce            ! ocean dynamics and active tracers 
     
    4545   !                                 !!* Namelist namtra_qsr: penetrative solar radiation 
    4646   LOGICAL , PUBLIC ::   ln_traqsr    !: light absorption (qsr) flag 
    47    LOGICAL , PUBLIC ::   ln_qsr_rgb   !: Red-Green-Blue light absorption flag   
     47   LOGICAL , PUBLIC ::   ln_qsr_rgb   !: Red-Green-Blue light absorption flag 
    4848   LOGICAL , PUBLIC ::   ln_qsr_2bd   !: 2 band         light absorption flag 
    4949   LOGICAL , PUBLIC ::   ln_qsr_bio   !: bio-model      light absorption flag 
     
    5454   ! 
    5555   INTEGER , PUBLIC ::   nksr         !: levels below which the light cannot penetrate (depth larger than 391 m) 
    56   
     56 
    5757   INTEGER, PARAMETER ::   np_RGB  = 1   ! R-G-B     light penetration with constant Chlorophyll 
    5858   INTEGER, PARAMETER ::   np_RGBc = 2   ! R-G-B     light penetration with Chlorophyll data 
     
    8888      !!      Considering the 2 wavebands case: 
    8989      !!         I(k) = Qsr*( rn_abs*EXP(z(k)/rn_si0) + (1.-rn_abs)*EXP(z(k)/rn_si1) ) 
    90       !!         The temperature trend associated with the solar radiation penetration  
     90      !!         The temperature trend associated with the solar radiation penetration 
    9191      !!         is given by : zta = 1/e3t dk[ I ] / (rho0*Cp) 
    9292      !!         At the bottom, boudary condition for the radiation is no flux : 
    9393      !!      all heat which has not been absorbed in the above levels is put 
    9494      !!      in the last ocean level. 
    95       !!         The computation is only done down to the level where  
    96       !!      I(k) < 1.e-15 W/m2 (i.e. over the top nksr levels) .  
     95      !!         The computation is only done down to the level where 
     96      !!      I(k) < 1.e-15 W/m2 (i.e. over the top nksr levels) . 
    9797      !! 
    9898      !! ** Action  : - update ta with the penetrative solar radiation trend 
     
    193193            DO_2D( isj, iej, isi, iei ) 
    194194                       ! zlogc = log(zchl) 
    195                zlogc = LOG ( MIN( 10. , MAX( 0.03, sf_chl(1)%fnow(ji,jj,1) ) ) )      
     195               zlogc = LOG ( MIN( 10. , MAX( 0.03, sf_chl(1)%fnow(ji,jj,1) ) ) ) 
    196196                       ! zc1 : log(zCze)  = log (1.12  * zchl**0.803) 
    197                zc1   = 0.113328685307 + 0.803 * zlogc                          
     197               zc1   = 0.113328685307 + 0.803 * zlogc 
    198198                       ! zc2 : log(zCtot) = log(40.6  * zchl**0.459) 
    199                zc2   = 3.703768066608 + 0.459 * zlogc                            
     199               zc2   = 3.703768066608 + 0.459 * zlogc 
    200200                       ! zc3 : log(zze)   = log(568.2 * zCtot**(-0.746)) 
    201                zc3   = 6.34247346942  - 0.746 * zc2                            
     201               zc3   = 6.34247346942  - 0.746 * zc2 
    202202                       ! IF( log(zze) > log(102.) ) log(zze) = log(200.0 * zCtot**(-0.293)) 
    203                IF( zc3 > 4.62497281328 ) zc3 = 5.298317366548 - 0.293 * zc2         
    204                !    
     203               IF( zc3 > 4.62497281328 ) zc3 = 5.298317366548 - 0.293 * zc2 
     204               ! 
    205205               ze0(ji,jj) = zlogc                                                 ! ze0 = log(zchl) 
    206206               ze1(ji,jj) = EXP( zc1 )                                            ! ze1 = zCze 
     
    208208               ze3(ji,jj) = EXP( - zc3 )                                          ! ze3 = 1/zze 
    209209            END_2D 
    210              
     210 
    211211! 
    212212            DO_3D( isj, iej, isi, iei, 1, nksr + 1 ) 
     
    230230         ELSE                                !* constant chlorophyll 
    231231            zchl = 0.05 
    232             ! NB. make sure constant value is such that:  
     232            ! NB. make sure constant value is such that: 
    233233            zchl = MIN( 10. , MAX( 0.03, zchl ) ) 
    234234            ! Convert chlorophyll value to attenuation coefficient look-up table index 
     
    245245            ze2(ji,jj) = zcoef  * qsr(ji,jj) 
    246246            ze3(ji,jj) = zcoef  * qsr(ji,jj) 
    247             ! store the surface SW radiation; re-use the surface ztmp3d array  
     247            ! store the surface SW radiation; re-use the surface ztmp3d array 
    248248            ! since the surface attenuation coefficient is not used 
    249249            ztmp3d(ji,jj,1) =       qsr(ji,jj) 
     
    269269         END_3D 
    270270         ! 
    271          DEALLOCATE( ze0 , ze1 , ze2 , ze3 , ztmp3d )  
     271         DEALLOCATE( ze0 , ze1 , ze2 , ze3 , ztmp3d ) 
    272272         ! 
    273273      CASE( np_2BD  )            !==  2-bands fluxes  ==! 
     
    278278            zc0 = zz0 * EXP( -gdepw(ji,jj,jk  ,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk  ,Kmm)*xsi1r ) 
    279279            zc1 = zz0 * EXP( -gdepw(ji,jj,jk+1,Kmm)*xsi0r ) + zz1 * EXP( -gdepw(ji,jj,jk+1,Kmm)*xsi1r ) 
    280             qsr_hc(ji,jj,jk) = qsr(ji,jj) * ( zc0 * wmask(ji,jj,jk) - zc1 * wmask(ji,jj,jk+1) )  
     280            qsr_hc(ji,jj,jk) = qsr(ji,jj) * ( zc0 * wmask(ji,jj,jk) - zc1 * wmask(ji,jj,jk+1) ) 
    281281         END_3D 
    282282         ! 
     
    341341      !!      from two length scale of penetration (rn_si0,rn_si1) and a ratio 
    342342      !!      (rn_abs). These parameters are read in the namtra_qsr namelist. The 
    343       !!      default values correspond to clear water (type I in Jerlov'  
     343      !!      default values correspond to clear water (type I in Jerlov' 
    344344      !!      (1968) classification. 
    345345      !!         called by tra_qsr at the first timestep (nit000) 
     
    391391         &                               ' 2 bands, 3 RGB bands or bio-model light penetration' ) 
    392392      ! 
    393       IF( ln_qsr_rgb .AND. nn_chldta == 0 )   nqsr = np_RGB  
     393      IF( ln_qsr_rgb .AND. nn_chldta == 0 )   nqsr = np_RGB 
    394394      IF( ln_qsr_rgb .AND. nn_chldta == 1 )   nqsr = np_RGBc 
    395395      IF( ln_qsr_2bd                      )   nqsr = np_2BD 
     
    401401      ! 
    402402      SELECT CASE( nqsr ) 
    403       !                                
     403      ! 
    404404      CASE( np_RGB , np_RGBc )         !==  Red-Green-Blue light penetration  ==! 
    405          !                              
     405         ! 
    406406         IF(lwp)   WRITE(numout,*) '   ==>>>   R-G-B   light penetration ' 
    407407         ! 
    408408         CALL trc_oce_rgb( rkrgb )                 ! tabulated attenuation coef. 
    409          !                                    
     409         ! 
    410410         nksr = trc_oce_ext_lev( r_si2, 33._wp )   ! level of light extinction 
    411411         ! 
     
    441441         ! 
    442442         CALL trc_oce_rgb( rkrgb )                 ! tabulated attenuation coef. 
    443          !                                    
     443         ! 
    444444         nksr = trc_oce_ext_lev( r_si2, 33._wp )   ! level of light extinction 
    445445         ! 
Note: See TracChangeset for help on using the changeset viewer.