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 6966 for branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90 – NEMO

Ignore:
Timestamp:
2016-09-30T16:56:23+02:00 (8 years ago)
Author:
aumont
Message:

various bug fixes and updates on carbon chemistry

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zprod.F90

    r6848 r6966  
    3333   !! * Shared module variables 
    3434   LOGICAL , PUBLIC ::  ln_newprod      !: 
    35    REAL(wp), PUBLIC ::  pislope         !: 
    36    REAL(wp), PUBLIC ::  pislope2        !: 
     35   REAL(wp), PUBLIC ::  pislopen         !: 
     36   REAL(wp), PUBLIC ::  pisloped        !: 
    3737   REAL(wp), PUBLIC ::  xadap           !: 
    38    REAL(wp), PUBLIC ::  excret          !: 
    39    REAL(wp), PUBLIC ::  excret2         !: 
     38   REAL(wp), PUBLIC ::  excretn          !: 
     39   REAL(wp), PUBLIC ::  excretd         !: 
    4040   REAL(wp), PUBLIC ::  bresp           !: 
    4141   REAL(wp), PUBLIC ::  chlcnm          !: 
     
    5151    
    5252   REAL(wp) :: r1_rday                !: 1 / rday 
    53    REAL(wp) :: texcret                !: 1 - excret  
    54    REAL(wp) :: texcret2               !: 1 - excret2         
     53   REAL(wp) :: texcretn               !: 1 - excretn  
     54   REAL(wp) :: texcretd               !: 1 - excretd         
    5555 
    5656 
     
    7878      INTEGER  ::   ji, jj, jk 
    7979      REAL(wp) ::   zsilfac, znanotot, zdiattot, zconctemp, zconctemp2 
    80       REAL(wp) ::   zratio, zmax, zsilim, ztn, zadap 
    81       REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zproreg, zproreg2 
    82       REAL(wp) ::   zmxltst, zmxlday, zmaxday, zdocprod 
    83       REAL(wp) ::   zpislopen  , zpislope2n 
     80      REAL(wp) ::   zratio, zmax, zsilim, ztn, zadap, zlim, zsilfac2, zsiborn 
     81      REAL(wp) ::   zprod, zproreg, zproreg2, zprochln, zprochld 
     82      REAL(wp) ::   zmaxday, zdocprod, zpislopen, zpisloped 
    8483      REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup 
    8584      REAL(wp) ::   zfact 
    8685      CHARACTER (len=25) :: charout 
    8786      REAL(wp), POINTER, DIMENSION(:,:  ) :: zstrn, zw2d 
    88       REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d    
    89       REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd 
     87      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d    
     88      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd 
    9089      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl 
    9190      !!--------------------------------------------------------------------- 
     
    9594      !  Allocate temporary workspace 
    9695      CALL wrk_alloc( jpi, jpj,      zstrn ) 
    97       CALL wrk_alloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt )  
     96      CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt )  
    9897      CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 
    99       CALL wrk_alloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
    100       ! 
    101       zprorca (:,:,:) = 0._wp 
    102       zprorcad(:,:,:) = 0._wp 
    103       zprofed (:,:,:) = 0._wp 
    104       zprofen (:,:,:) = 0._wp 
    105       zprochln(:,:,:) = 0._wp 
    106       zprochld(:,:,:) = 0._wp 
    107       zpronew (:,:,:) = 0._wp 
    108       zpronewd(:,:,:) = 0._wp 
    109       zprdia  (:,:,:) = 0._wp 
    110       zprbio  (:,:,:) = 0._wp 
    111       zprdch  (:,:,:) = 0._wp 
    112       zprnch  (:,:,:) = 0._wp 
    113       zysopt  (:,:,:) = 0._wp 
     98      CALL wrk_alloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 
     99      ! 
     100      zprorcan(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp ; zprofed (:,:,:) = 0._wp 
     101      zprofen (:,:,:) = 0._wp ; zysopt  (:,:,:) = 0._wp 
     102      zpronewn(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp ; zprdia  (:,:,:) = 0._wp 
     103      zprbio  (:,:,:) = 0._wp ; zprdch  (:,:,:) = 0._wp ; zprnch  (:,:,:) = 0._wp  
    114104 
    115105      ! Computation of the optimal production 
     
    144134                     zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * zval 
    145135                  ENDIF 
    146                   zmxl_fac(ji,jj,jk) = ( 1. - exp( -0.2 * zmxl_fac(ji,jj,jk) ) ) * ( 1. - fr_i(ji,jj) ) 
    147                   zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
     136                  zmxl_fac(ji,jj,jk) = ( 1. - exp( -0.2 * zmxl_fac(ji,jj,jk) ) ) 
     137                  zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) 
    148138               ENDIF 
    149139            END DO 
     
    166156                  zconctemp2  = trb(ji,jj,jk,jpdia) - zconctemp 
    167157                  ! 
    168                   zpislopead (ji,jj,jk) = pislope * ( 1.+ zadap  * EXP( -0.25 * enano(ji,jj,jk) ) )  & 
     158                  zpislopeadn(ji,jj,jk) = pislopen * ( 1.+ zadap  * EXP( -0.25 * enano(ji,jj,jk) ) )  & 
    169159                  &                   * trb(ji,jj,jk,jpnch) /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 
    170160                  ! 
    171                   zpislopead2(ji,jj,jk) = (pislope * zconctemp2 + pislope2 * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn )   & 
     161                  zpislopeadd(ji,jj,jk) = (pislopen * zconctemp2 + pisloped * zconctemp) / ( trb(ji,jj,jk,jpdia) + rtrn )   & 
    172162                  &                   * trb(ji,jj,jk,jpdch) /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 
    173163               ENDIF 
     
    183173                      ! Computation of production function for Carbon 
    184174                      !  --------------------------------------------- 
    185                       zpislopen  = zpislopead (ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 
     175                      zpislopen = zpislopeadn(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 
    186176                      &            * zmxl_fac(ji,jj,jk) * rday + rtrn) 
    187                       zpislope2n = zpislopead2(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 
     177                      zpisloped = zpislopeadd(ji,jj,jk) / ( ( r1_rday + bresp * r1_rday ) & 
    188178                      &            * zmxl_fac(ji,jj,jk) * rday + rtrn) 
    189                       zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) )  ) 
    190                       zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) )  ) 
     179                      zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) )  ) 
     180                      zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) )  ) 
    191181                      !  Computation of production function for Chlorophyll 
    192182                      !-------------------------------------------------- 
    193                       zpislopen  = zpislopead (ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 
    194                       zpislope2n = zpislopead2(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 
    195                       zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) ) ) 
    196                       zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 
     183                      zpislopen = zpislopeadn(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 
     184                      zpisloped = zpislopeadd(ji,jj,jk) / ( prmax(ji,jj,jk) * zmxl_chl(ji,jj,jk) * rday + rtrn ) 
     185                      zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 
     186                      zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 
    197187                  ENDIF 
    198188               END DO 
     
    206196                      ! Computation of production function for Carbon 
    207197                      !  --------------------------------------------- 
    208                       zpislopen =  zpislopead(ji,jj,jk)  / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
    209                       zpislope2n = zpislopead2(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
    210                       zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) ) ) 
    211                       zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 
     198                      zpislopen = zpislopeadn(ji,jj,jk)  / ( zprbio(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
     199                      zpisloped = zpislopeadd(ji,jj,jk) / ( zprdia(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
     200                      zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 
     201                      zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 
    212202                      !  Computation of production function for Chlorophyll 
    213203                      !-------------------------------------------------- 
    214                       zpislopen = zpislopen   * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    215                       zpislope2n = zpislope2n * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    216                       zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) ) ) 
    217                       zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) ) ) 
     204                      zpislopen = zpislopen * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
     205                      zpisloped = zpisloped * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
     206                      zprnch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) ) ) 
     207                      zprdch(ji,jj,jk) = prmax(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) ) ) 
    218208                  ENDIF 
    219209               END DO 
     
    221211         END DO 
    222212      ENDIF 
    223  
    224213 
    225214      !  Computation of a proxy of the N/C ratio 
     
    264253      END DO 
    265254 
     255      !  Sea-ice effect on production 
     256 
     257      DO jk = 1, jpkm1 
     258         zprbio(:,:,jk) = zprbio(:,:,jk) * ( 1. - fr_i(:,:) ) 
     259         zprdia(:,:,jk) = zprdia(:,:,jk) * ( 1. - fr_i(:,:) ) 
     260      END DO 
     261 
     262 
    266263      ! Computation of the various production terms  
    267264!CDIR NOVERRCHK 
     
    272269            DO ji = 1, jpi 
    273270               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    274                   !  production terms for nanophyto. 
    275                   zprorca(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 
    276                   zpronew(ji,jj,jk) = zprorca(ji,jj,jk) * xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 
     271                  !  production terms for nanophyto. (C) 
     272                  zprorcan(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 
     273                  zpronewn(ji,jj,jk)  = zprorcan(ji,jj,jk)* xnanono3(ji,jj,jk) / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn ) 
    277274                  ! 
    278                   zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn ) 
    279                   zratio = zratio / fecnm  
     275                  zratio = trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) * fecnm + rtrn ) 
    280276                  zmax   = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) )  
    281                   zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) & 
     277                  zprofen(ji,jj,jk) = fecnm * prmax(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 
    282278                  &             * ( 4. - 4.5 * xlimnfe(ji,jj,jk) / ( xlimnfe(ji,jj,jk) + 0.5 ) )    & 
    283279                  &             * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concnfe(ji,jj,jk) )  & 
    284280                  &             * zmax * trb(ji,jj,jk,jpphy) * rfact2 
    285                   !  production terms for diatomees 
     281                  !  production terms for diatoms (C) 
    286282                  zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 
    287283                  zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk) / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn ) 
    288284                  ! 
    289                   zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn ) 
    290                   zratio = zratio / fecdm  
     285                  zratio = trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) * fecdm + rtrn ) 
    291286                  zmax   = MAX( 0., ( 1. - zratio ) / ABS( 1.05 - zratio ) )  
    292                   zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) & 
     287                  zprofed(ji,jj,jk) = fecdm * prmax(ji,jj,jk) * ( 1.0 - fr_i(ji,jj) ) & 
    293288                  &             * ( 4. - 4.5 * xlimdfe(ji,jj,jk) / ( xlimdfe(ji,jj,jk) + 0.5 ) )    & 
    294289                  &             * biron(ji,jj,jk) / ( biron(ji,jj,jk) + concdfe(ji,jj,jk) )  & 
     
    299294      END DO 
    300295 
     296      ! Computation of the chlorophyll production terms 
    301297      DO jk = 1, jpkm1 
    302298         DO jj = 1, jpj 
     
    305301                  !  production terms for nanophyto. ( chlorophyll ) 
    306302                  znanotot = enano(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    307                   zprod    = rday * zprorca(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 
    308                   zprochln(ji,jj,jk) = chlcmin * 12. * zprorca (ji,jj,jk) 
    309                   zprochln(ji,jj,jk) = zprochln(ji,jj,jk) + (chlcnm-chlcmin) * 12. * zprod / & 
    310                                         & (  zpislopead(ji,jj,jk) * znanotot +rtrn) 
    311                   !  production terms for diatomees ( chlorophyll ) 
     303                  zprod    = rday * zprorcan(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 
     304                  zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 
     305                  zprochln = zprochln + (chlcnm-chlcmin) * 12. * zprod / & 
     306                                        & (  zpislopeadn(ji,jj,jk) * znanotot +rtrn) 
     307                  !  production terms for diatoms ( chlorophyll ) 
    312308                  zdiattot = ediat(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    313309                  zprod    = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 
    314                   zprochld(ji,jj,jk) = chlcmin * 12. * zprorcad(ji,jj,jk) 
    315                   zprochld(ji,jj,jk) = zprochld(ji,jj,jk) + (chlcdm-chlcmin) * 12. * zprod / & 
    316                   & ( zpislopead2(ji,jj,jk) * zdiattot +rtrn ) 
     310                  zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 
     311                  zprochld = zprochld + (chlcdm-chlcmin) * 12. * zprod / & 
     312                                        & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 
     313                  !   Update the arrays TRA which contain the Chla sources and sinks 
     314                  tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln * texcretn 
     315                  tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld * texcretd 
    317316               ENDIF 
    318317            END DO 
     
    324323         DO jj = 1, jpj 
    325324           DO ji =1 ,jpi 
    326               zproreg  = zprorca(ji,jj,jk) - zpronew(ji,jj,jk) 
    327               zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 
    328               zdocprod = excret2 * zprorcad(ji,jj,jk) + excret * zprorca(ji,jj,jk) 
    329               tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 
    330               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk) 
    331               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 
    332               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorca(ji,jj,jk) * texcret 
    333               tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * texcret 
    334               tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcret 
    335               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcret2 
    336               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2 
    337               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2 
    338               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2 
    339               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod 
    340               zfeup = texcret * zprofen(ji,jj,jk) + texcret2 * zprofed(ji,jj,jk) 
     325              IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
     326                 zproreg  = zprorcan(ji,jj,jk) - zpronewn(ji,jj,jk) 
     327                 zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk) 
     328                 zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk) 
     329                 tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 
     330                 tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronewn(ji,jj,jk) - zpronewd(ji,jj,jk) 
     331                 tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2 
     332                 tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcretn 
     333                 tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcretn 
     334                 tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd 
     335                 tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 
     336                 tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 
     337                 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zdocprod 
     338                 zfeup = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk) 
    341339#if defined key_ligand 
    342               tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp  - zfeup * plig(ji,jj,jk) * lthet 
     340                 tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) + zdocprod * ldocp  - zfeup * plig(ji,jj,jk) * lthet 
    343341#endif 
    344               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & 
    345                  &                + ( o2ut + o2nit ) * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) 
    346               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 
    347               tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
    348               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk) 
    349               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 
    350                  &                                      - rno3 * ( zproreg + zproreg2 ) 
    351           END DO 
     342                 tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) & 
     343                 &                   + ( o2ut + o2nit ) * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) 
     344                 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 
     345                 tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
     346                 tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) 
     347                 tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zpronewn(ji,jj,jk) + zpronewd(ji,jj,jk) ) & 
     348                 &                                         - rno3 * ( zproreg + zproreg2 ) 
     349              ENDIF 
     350           END DO 
    352351        END DO 
    353352     END DO 
     
    356355    ! Total primary production per year 
    357356    IF( iom_use( "tintpp" ) .OR. ( ln_check_mass .AND. kt == nitend .AND. knt == nrdttrc )  )  & 
    358          & tpp = glob_sum( ( zprorca(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 
     357         & tpp = glob_sum( ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * cvol(:,:,:) ) 
    359358 
    360359    IF( lk_iomput ) THEN 
     
    365364          ! 
    366365          IF( iom_use( "PPPHY" ) .OR. iom_use( "PPPHY2" ) )  THEN 
    367               zw3d(:,:,:) = zprorca (:,:,:) * zfact * tmask(:,:,:)  ! primary production by nanophyto 
     366              zw3d(:,:,:) = zprorcan(:,:,:) * zfact * tmask(:,:,:)  ! primary production by nanophyto 
    368367              CALL iom_put( "PPPHY"  , zw3d ) 
    369368              ! 
     
    372371          ENDIF 
    373372          IF( iom_use( "PPNEWN" ) .OR. iom_use( "PPNEWD" ) )  THEN 
    374               zw3d(:,:,:) = zpronew (:,:,:) * zfact * tmask(:,:,:)  ! new primary production by nanophyto 
     373              zw3d(:,:,:) = zpronewn(:,:,:) * zfact * tmask(:,:,:)  ! new primary production by nanophyto 
    375374              CALL iom_put( "PPNEWN"  , zw3d ) 
    376375              ! 
     
    408407          ENDIF 
    409408          IF( iom_use( "TPP" ) )  THEN 
    410               zw3d(:,:,:) = ( zprorca(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  ! total primary production 
     409              zw3d(:,:,:) = ( zprorcan(:,:,:) + zprorcad(:,:,:) ) * zfact * tmask(:,:,:)  ! total primary production 
    411410              CALL iom_put( "TPP"  , zw3d ) 
    412411          ENDIF 
    413412          IF( iom_use( "TPNEW" ) )  THEN 
    414               zw3d(:,:,:) = ( zpronew(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ! total new production 
     413              zw3d(:,:,:) = ( zpronewn(:,:,:) + zpronewd(:,:,:) ) * zfact * tmask(:,:,:)  ! total new production 
    415414              CALL iom_put( "TPNEW"  , zw3d ) 
    416415          ENDIF 
     
    422421             zw2d(:,:) = 0. 
    423422             DO jk = 1, jpkm1 
    424                zw2d(:,:) = zw2d(:,:) + zprorca (:,:,jk) * fse3t(:,:,jk) * zfact * tmask(:,:,jk)  ! vert. integrated  primary produc. by nano 
     423               zw2d(:,:) = zw2d(:,:) + zprorcan(:,:,jk) * fse3t(:,:,jk) * zfact * tmask(:,:,jk)  ! vert. integrated  primary produc. by nano 
    425424             ENDDO 
    426425             CALL iom_put( "INTPPPHY" , zw2d ) 
     
    435434             zw2d(:,:) = 0. 
    436435             DO jk = 1, jpkm1 
    437                 zw2d(:,:) = zw2d(:,:) + ( zprorca(:,:,jk) + zprorcad(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 
     436                zw2d(:,:) = zw2d(:,:) + ( zprorcan(:,:,jk) + zprorcad(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk) ! vert. integrated pp 
    438437             ENDDO 
    439438             CALL iom_put( "INTPP" , zw2d ) 
     
    442441             zw2d(:,:) = 0. 
    443442             DO jk = 1, jpkm1 
    444                 zw2d(:,:) = zw2d(:,:) + ( zpronew(:,:,jk) + zpronewd(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk)  ! vert. integrated new prod 
     443                zw2d(:,:) = zw2d(:,:) + ( zpronewn(:,:,jk) + zpronewd(:,:,jk) ) * fse3t(:,:,jk) * zfact * tmask(:,:,jk)  ! vert. integrated new prod 
    445444             ENDDO 
    446445             CALL iom_put( "INTPNEW" , zw2d ) 
     
    468467        IF( ln_diatrc ) THEN 
    469468           zfact = 1.e+3 * rfact2r 
    470            trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorca (:,:,:) * zfact * tmask(:,:,:) 
     469           trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorcan(:,:,:) * zfact * tmask(:,:,:) 
    471470           trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) 
    472            trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronew (:,:,:) * zfact * tmask(:,:,:) 
     471           trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronewn(:,:,:) * zfact * tmask(:,:,:) 
    473472           trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zfact * tmask(:,:,:) 
    474473           trc3d(:,:,:,jp_pcs0_3d + 8)  = zprorcad(:,:,:) * zfact * tmask(:,:,:) * zysopt(:,:,:) 
     
    487486     ! 
    488487     CALL wrk_dealloc( jpi, jpj,      zstrn ) 
    489      CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopead2, zprdia, zprbio, zprdch, zprnch, zysopt )  
     488     CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt )  
    490489     CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 
    491      CALL wrk_dealloc( jpi, jpj, jpk, zprorca, zprorcad, zprofed, zprofen, zprochln, zprochld, zpronew, zpronewd ) 
     490     CALL wrk_dealloc( jpi, jpj, jpk, zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd ) 
    492491     ! 
    493492     IF( nn_timing == 1 )  CALL timing_stop('p4z_prod') 
     
    508507      !!---------------------------------------------------------------------- 
    509508      ! 
    510       NAMELIST/nampisprod/ pislope, pislope2, xadap, ln_newprod, bresp, excret, excret2,  & 
     509      NAMELIST/nampisprod/ pislopen, pisloped, xadap, ln_newprod, bresp, excretn, excretd,  & 
    511510         &                 chlcnm, chlcdm, chlcmin, fecnm, fecdm, grosip 
    512511      INTEGER :: ios                 ! Local integer output status for namelist read 
     
    526525         WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod' 
    527526         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    528          WRITE(numout,*) '    Enable new parame. of production (T/F)   ln_newprod   =', ln_newprod 
     527         WRITE(numout,*) '    Enable new parame. of production (T/F)   ln_newprod    =', ln_newprod 
    529528         WRITE(numout,*) '    mean Si/C ratio                           grosip       =', grosip 
    530          WRITE(numout,*) '    P-I slope                                 pislope      =', pislope 
    531          WRITE(numout,*) '    Acclimation factor to low light           xadap       =', xadap 
    532          WRITE(numout,*) '    excretion ratio of nanophytoplankton      excret       =', excret 
    533          WRITE(numout,*) '    excretion ratio of diatoms                excret2      =', excret2 
     529         WRITE(numout,*) '    P-I slope                                 pislopen     =', pislopen 
     530         WRITE(numout,*) '    Acclimation factor to low light           xadap        =', xadap 
     531         WRITE(numout,*) '    excretion ratio of nanophytoplankton      excretn      =', excretn 
     532         WRITE(numout,*) '    excretion ratio of diatoms                excretd      =', excretd 
    534533         IF( ln_newprod )  THEN 
    535534            WRITE(numout,*) '    basal respiration in phytoplankton        bresp        =', bresp 
    536535            WRITE(numout,*) '    Maximum Chl/C in phytoplankton            chlcmin      =', chlcmin 
    537536         ENDIF 
    538          WRITE(numout,*) '    P-I slope  for diatoms                    pislope2     =', pislope2 
     537         WRITE(numout,*) '    P-I slope  for diatoms                    pisloped     =', pisloped 
    539538         WRITE(numout,*) '    Minimum Chl/C in nanophytoplankton        chlcnm       =', chlcnm 
    540539         WRITE(numout,*) '    Minimum Chl/C in diatoms                  chlcdm       =', chlcdm 
     
    544543      ! 
    545544      r1_rday   = 1._wp / rday  
    546       texcret   = 1._wp - excret 
    547       texcret2  = 1._wp - excret2 
     545      texcretn  = 1._wp - excretn 
     546      texcretd  = 1._wp - excretd 
    548547      tpp       = 0._wp 
    549548      ! 
Note: See TracChangeset for help on using the changeset viewer.