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 7195 for branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO – NEMO

Ignore:
Timestamp:
2016-11-04T17:04:48+01:00 (8 years ago)
Author:
cetlod
Message:

new top interface : bugfix in p5zprod

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p5zprod.F90

    r7162 r7195  
    4141   REAL(wp), PUBLIC ::  chlcmin         !: 
    4242   REAL(wp), PUBLIC ::  grosip          !: 
    43    REAL(wp), PUBLIC ::  xlimmxln        !: 
    44    REAL(wp), PUBLIC ::  xlimmxlp        !: 
    45    REAL(wp), PUBLIC ::  xlimmxld        !: 
    4643 
    4744   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   prmaxn   !: optimal production = f(temperature) 
     
    149146               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    150147                  zval = MAX( 1., zstrn(ji,jj) ) 
    151                   zmxl_fac(ji,jj,jk) = zval 
     148                  IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
     149                     zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
     150                  ENDIF 
    152151                  zmxl_chl(ji,jj,jk) = zval / 24. 
    153                   IF( gdepw_n(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    154                      zval = MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
    155                      zmxl_fac(ji,jj,jk) = zmxl_fac(ji,jj,jk) * zval 
    156                      zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * zval 
    157                   ENDIF 
    158                   zmxl_fac(ji,jj,jk) = ( 1. - exp( -0.2 * zmxl_fac(ji,jj,jk) ) ) 
    159                   zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) 
     152                  zmxl_fac(ji,jj,jk) = 1.5 * zval / ( 12. + zval ) 
    160153               ENDIF 
    161154            END DO 
     
    171164      zdaylen(:,:) = MAX(1., zstrn(:,:)) / 24. 
    172165      WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
    173       zstrn(:,:) = 24. / zstrn(:,:) 
    174166 
    175167      DO jk = 1, jpkm1 
     
    188180                     &                    /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 
    189181                  ! 
    190                   zpislopen = zpislopeadn(ji,jj,jk) / ( prmaxn(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
    191                   zpislopep = zpislopeadp(ji,jj,jk) / ( prmaxp(ji,jj,jk) * rday * xlimpic(ji,jj,jk) + rtrn ) 
    192                   zpisloped = zpislopeadd(ji,jj,jk) / ( prmaxd(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
     182                  zpislopen = zpislopeadn(ji,jj,jk) / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
     183                  zpislopep = zpislopeadp(ji,jj,jk) / ( zprpic(ji,jj,jk) * rday * xlimpic(ji,jj,jk) + rtrn ) 
     184                  zpisloped = zpislopeadd(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
    193185 
    194186                  ! Computation of production function for Carbon 
     
    264256                  zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    265257                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpnmin(ji,jj,jk) )   & 
    266                   &          / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) ), xlimnfe(ji,jj,jk) ) ) 
     258                  &          / ( xqpnmax(ji,jj,jk) - xqpnmin(ji,jj,jk) + rtrn ), xlimnfe(ji,jj,jk) ) ) 
    267259                  zpronewn(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xnanono3(ji,jj,jk) 
    268260                  zproregn(ji,jj,jk) = zpronmax * xnanonh4(ji,jj,jk) 
     
    301293                  zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05)) 
    302294                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqppmin(ji,jj,jk) )   & 
    303                   &          / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) ), xlimpfe(ji,jj,jk) ) ) 
     295                  &          / ( xqppmax(ji,jj,jk) - xqppmin(ji,jj,jk) + rtrn ), xlimpfe(ji,jj,jk) ) ) 
    304296                  zpronewp(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xpicono3(ji,jj,jk)  
    305297                  zproregp(ji,jj,jk) = zpronmax * xpiconh4(ji,jj,jk) 
     
    340332                  zmax = MAX(0., MIN(1., (1. - zrat)/ (1.05 - zrat) * 1.05))  
    341333                  zpronmax = zprnutmax * zmax * MAX(0., MIN(1., ( zratiop - xqpdmin(ji,jj,jk) )   & 
    342                   &          / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) ), xlimdfe(ji,jj,jk) ) ) 
     334                  &          / ( xqpdmax(ji,jj,jk) - xqpdmin(ji,jj,jk) + rtrn ), xlimdfe(ji,jj,jk) ) ) 
    343335                  zpronewd(ji,jj,jk) = zpronmax * zdaylen(ji,jj) * xdiatno3(ji,jj,jk) 
    344336                  zproregd(ji,jj,jk) = zpronmax * xdiatnh4(ji,jj,jk) 
     
    597589      ! 
    598590      NAMELIST/namp5zprod/ pislopen, pislopep, pisloped, excretn, excretp, excretd,     & 
    599          &                 thetannm, thetanpm, thetandm, chlcmin, grosip, bresp, xadap, & 
    600          &                 xlimmxln, xlimmxlp, xlimmxld 
     591         &                 thetannm, thetanpm, thetandm, chlcmin, grosip, bresp, xadap 
    601592 
    602593      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    629620         WRITE(numout,*) '    Minimum Chl/N in picophytoplankton        thetanpm     =', thetanpm 
    630621         WRITE(numout,*) '    Minimum Chl/N in diatoms                  thetandm     =', thetandm 
    631          WRITE(numout,*) '    Critical time scale for mixing (nano)     xlimmxln     =', xlimmxln 
    632          WRITE(numout,*) '    Critical time scale for mixing (pico)     xlimmxlp     =', xlimmxlp 
    633          WRITE(numout,*) '    Critical time scale for mixing (diatoms)  xlimmxld     =', xlimmxld 
    634622      ENDIF 
    635623      ! 
Note: See TracChangeset for help on using the changeset viewer.