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

Changeset 6966 for branches


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

various bug fixes and updates on carbon chemistry

Location:
branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES
Files:
13 edited

Legend:

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

    r6453 r6966  
    2727   USE p4zpoc          !  Remineralization of organic particles 
    2828   USE p4zagg          !  Aggregation of particles 
    29    USE p4zlys          !  Dissolution of calcite 
    3029   USE p4zfechem       !  Iron chemistry 
    3130   USE p4zligand 
     
    8281      CALL p4z_opt   ( kt, knt )     ! Optic: PAR in the water column 
    8382      CALL p4z_sink  ( kt, knt )     ! vertical flux of particulate organic matter 
    84       CALL p4z_lys   (kt, knt )      ! Dissolution of calcite 
    8583      CALL p4z_fechem(kt, knt )      ! Iron chemistry/scavenging 
    8684      CALL p4z_lim   ( kt, knt )     ! co-limitations by the various nutrients 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zche.F90

    r6931 r6966  
    2323   USE sms_pisces    !  PISCES Source Minus Sink variables 
    2424   USE lib_mpp       !  MPP library 
     25   USE eosbn2, ONLY : nn_eos 
    2526 
    2627   IMPLICIT NONE 
     
    3738   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)   :: chemo2    ! Solubilities of O2 and CO2 
    3839   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:,:) :: fesol    ! solubility of Fe 
     40   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   tempis   ! In situ temperature 
     41   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   salinprac  ! Practical salinity 
    3942 
    4043   REAL(wp), ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   akb3       !: ??? 
     
    154157      REAL(wp) ::   zpres, ztc  , zcl   , zcpexp, zoxy  , zcpexp2 
    155158      REAL(wp) ::   zsqrt, ztr  , zlogt , zcek1, zc1, zplat 
    156       REAL(wp) ::   zis  , zis2 , zsal15, zisqrt 
     159      REAL(wp) ::   zis  , zis2 , zsal15, zisqrt, za1, za2 
    157160      REAL(wp) ::   zckb , zck1 , zck2  , zckw  , zak1 , zak2  , zakb , zaksp0, zakw 
    158161      REAL(wp) ::   zck1p, zck2p, zck3p, zcksi, zak1p, zak2p, zak3p, zaksi 
     
    163166      ! 
    164167      IF( nn_timing == 1 )  CALL timing_start('p4z_che') 
     168      ! 
     169      ! Computation of chemical constants require practical salinity 
     170      ! Thus, when TEOS08 is used, absolute salinity is converted to  
     171      ! practical salinity 
     172      ! ------------------------------------------------------------- 
     173      IF (nn_eos == -1) THEN 
     174         salinprac(:,:,:) = tsn(:,:,:,jp_sal) * 35.0 / 35.16504 
     175      ELSE 
     176         salinprac(:,:,:) = tsn(:,:,:,jp_sal) 
     177      ENDIF 
     178 
     179      ! 
     180      ! Computations of chemical constants require in situ temperature 
     181      ! Here a quite simple formulation is used to convert  
     182      ! potential temperature to in situ temperature. The errors is less than  
     183      ! 0.04°C relative to an exact computation 
     184      ! --------------------------------------------------------------------- 
     185      DO jk = 1, jpk 
     186         DO jj = 1, jpj 
     187            DO ji = 1, jpi 
     188               zpres = fsdept(ji,jj,jk) / 1000. 
     189               za1 = 0.04 * ( 1.0 + 0.185 * tsn(ji,jj,jk,jp_tem) + 0.035 * (salinprac(ji,jj,jk) - 35.0) ) 
     190               za2 = 0.0075 * ( 1.0 - tsn(ji,jj,jk,jp_tem) / 30.0 ) 
     191               tempis(ji,jj,jk) = tsn(ji,jj,jk,jp_tem) - za1 * zpres + za2 * zpres**2 
     192            END DO 
     193         END DO 
     194      END DO 
    165195      ! 
    166196      ! CHEMICAL CONSTANTS - SURFACE LAYER 
     
    171201         DO ji = 1, jpi 
    172202            !                             ! SET ABSOLUTE TEMPERATURE 
    173             ztkel = tsn(ji,jj,1,jp_tem) + 273.15 
     203            ztkel = tempis(ji,jj,1) + 273.15 
    174204            zt    = ztkel * 0.01 
    175             zsal  = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35. 
     205            zsal  = salinprac(ji,jj,1) + ( 1.- tmask(ji,jj,1) ) * 35. 
    176206            !                             ! LN(K0) OF SOLUBILITY OF CO2 (EQ. 12, WEISS, 1980) 
    177207            !                             !     AND FOR THE ATMOSPHERE FOR NON IDEAL GAS 
     
    193223!CDIR NOVERRCHK 
    194224            DO ji = 1, jpi 
    195               ztkel = tsn(ji,jj,jk,jp_tem) + 273.15 
    196               zsal  = tsn(ji,jj,jk,jp_sal) + ( 1.- tmask(ji,jj,jk) ) * 35. 
     225              ztkel = tempis(ji,jj,jk) + 273.15 
     226              zsal  = salinprac(ji,jj,jk) + ( 1.- tmask(ji,jj,jk) ) * 35. 
    197227              zsal2 = zsal * zsal 
    198               ztgg  = LOG( ( 298.15 - tsn(ji,jj,jk,jp_tem) ) / ztkel )  ! Set the GORDON & GARCIA scaled temperature 
     228              ztgg  = LOG( ( 298.15 - tempis(ji,jj,jk) ) / ztkel )  ! Set the GORDON & GARCIA scaled temperature 
    199229              ztgg2 = ztgg  * ztgg 
    200230              ztgg3 = ztgg2 * ztgg 
     
    229259 
    230260               ! SET ABSOLUTE TEMPERATURE 
    231                ztkel   = tsn(ji,jj,jk,jp_tem) + 273.15 
    232                zsal    = tsn(ji,jj,jk,jp_sal) + ( 1.-tmask(ji,jj,jk) ) * 35. 
     261               ztkel   = tempis(ji,jj,jk) + 273.15 
     262               zsal    = salinprac(ji,jj,jk) + ( 1.-tmask(ji,jj,jk) ) * 35. 
    233263               zsqrt  = SQRT( zsal ) 
    234264               zsal15  = zsqrt * zsal 
     
    238268               zis2   = zis * zis 
    239269               zisqrt = SQRT( zis ) 
    240                ztc     = tsn(ji,jj,jk,jp_tem) + ( 1.- tmask(ji,jj,jk) ) * 20. 
     270               ztc     = tempis(ji,jj,jk) + ( 1.- tmask(ji,jj,jk) ) * 20. 
    241271 
    242272               ! CHLORINITY (WOOSTER ET AL., 1969) 
     
    414444 
    415445               ! Liu and Millero (1999) only valid 5 - 50 degC 
    416                ztkel1 = MAX( 5. , tsn(ji,jj,jk,jp_tem) ) + 273.16 
    417                fesol(ji,jj,jk,1) = 10**((-13.486) - (0.1856* (zis**0.5)) + (0.3073*zis) + (5254/ztkel1)) 
    418                fesol(ji,jj,jk,2) = 10**(2.517 - (0.885*(zis**0.5)) + (0.2139 * zis) - (1320/ztkel1) ) 
    419                fesol(ji,jj,jk,3) = 10**(0.4511 - (0.3305*(ZIS**0.5)) - (1996/ztkel1) ) 
    420                fesol(ji,jj,jk,4) = 10**(-0.2965 - (0.7881*(zis**0.5)) - (4086/ztkel1) ) 
    421                fesol(ji,jj,jk,5) = 10**(4.4466 - (0.8505*(zis**0.5)) - (7980/ztkel1) ) 
     446               ztkel1 = MAX( 5. , tempis(ji,jj,jk) ) + 273.16 
     447               fesol(ji,jj,jk,1) = 10**((-13.486) - (0.1856* (zis**0.5)) + (0.3073*zis) + (5254.0/ztkel1)) 
     448               fesol(ji,jj,jk,2) = 10**(2.517 - (0.885*(zis**0.5)) + (0.2139 * zis) - (1320.0/ztkel1) ) 
     449               fesol(ji,jj,jk,3) = 10**(0.4511 - (0.3305*(zis**0.5)) - (1996.0/ztkel1) ) 
     450               fesol(ji,jj,jk,4) = 10**(-0.2965 - (0.7881*(zis**0.5)) - (4086.0/ztkel1) ) 
     451               fesol(ji,jj,jk,5) = 10**(4.4466 - (0.8505*(zis**0.5)) - (7980.0/ztkel1) ) 
    422452            END DO 
    423453         END DO 
     
    794824      ALLOCATE( sio3eq(jpi,jpj,jpk), fekeq(jpi,jpj,jpk), chemc(jpi,jpj,3), chemo2(jpi,jpj,jpk), STAT=ierr(1) ) 
    795825 
    796       ALLOCATE( akb3(jpi,jpj,jpk)    ,                             & 
    797          &      akw3(jpi,jpj,jpk)    , borat (jpi,jpj,jpk) ,       & 
    798          &      aks3(jpi,jpj,jpk)    , akf3(jpi,jpj,jpk)   ,       & 
    799          &      ak1p3(jpi,jpj,jpk)   , ak2p3(jpi,jpj,jpk)  ,       & 
    800          &      ak3p3(jpi,jpj,jpk)   , aksi3(jpi,jpj,jpk)  ,       & 
    801          &      fluorid(jpi,jpj,jpk) , sulfat(jpi,jpj,jpk) ,     STAT=ierr(2) ) 
     826      ALLOCATE( akb3(jpi,jpj,jpk)     , tempis(jpi, jpj, jpk),       & 
     827         &      akw3(jpi,jpj,jpk)     , borat (jpi,jpj,jpk)  ,       & 
     828         &      aks3(jpi,jpj,jpk)     , akf3(jpi,jpj,jpk)    ,       & 
     829         &      ak1p3(jpi,jpj,jpk)    , ak2p3(jpi,jpj,jpk)   ,       & 
     830         &      ak3p3(jpi,jpj,jpk)    , aksi3(jpi,jpj,jpk)   ,       & 
     831         &      fluorid(jpi,jpj,jpk)  , sulfat(jpi,jpj,jpk)  ,       & 
     832         &      salinprac(jpi,jpj,jpk),                 STAT=ierr(2) ) 
    802833 
    803834      ALLOCATE( fesol(jpi,jpj,jpk,5), STAT=ierr(3) ) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r6841 r6966  
    163163                  zTL2(ji,jj,jk) = ligand * 1E9 - 0.000001 + 0.33 * ztligand 
    164164                  ! ionic strength from Millero et al. 1987 
    165                   zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn ) 
    166165                  zph    = -LOG10( MAX( hi(ji,jj,jk), rtrn) ) 
    167                   zoxy   = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 ) 
     166                  zoxy   = trb(ji,jj,jk,jpoxy) 
    168167                  ! Fe2+ oxydation rate from Santana-Casiano et al. (2005) 
    169                   zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,jk,jp_tem) + 273.15 )  & 
    170                     &    - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal) 
     168                  zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tempis(ji,jj,jk) + 273.15 )  & 
     169                    &    - 0.04406 * SQRT( salinprac(ji,jj,jk) ) - 0.002847 * salinprac(ji,jj,jk) 
    171170                  zkox   = ( 10.** zkox ) * spd 
    172171                  zkox   = zkox * MAX( 1.e-6, zoxy) / ( chemo2(ji,jj,jk) + rtrn ) 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zflx.F90

    r6931 r6966  
    128128            ! DUMMY VARIABLES FOR DIC, H+, AND BORATE 
    129129            zfact = rhop(ji,jj,1) / 1000. + rtrn 
    130             zdic  = trb(ji,jj,1,jpdic) / zfact 
     130            zdic  = trb(ji,jj,1,jpdic)  
    131131            zph   = MAX( hi(ji,jj,1), 1.e-10 ) / zfact 
    132132            ! CALCULATE [H2CO3] 
    133             zh2co3(ji,jj) = zdic/(1. + ak13(ji,jj,1)/zph + ak13(ji,jj,1)*ak23(ji,jj,1)/zph**2)*zfact 
     133            zh2co3(ji,jj) = zdic/(1. + ak13(ji,jj,1)/zph + ak13(ji,jj,1)*ak23(ji,jj,1)/zph**2) 
    134134         END DO 
    135135      END DO 
     
    146146!CDIR NOVERRCHK 
    147147         DO ji = 1, jpi 
    148             ztc  = MIN( 35., tsn(ji,jj,1,jp_tem) ) 
     148            ztc  = MIN( 35., tempis(ji,jj,1) ) 
    149149            ztc2 = ztc * ztc 
    150150            ztc3 = ztc * ztc2  
     
    169169      DO jj = 1, jpj 
    170170         DO ji = 1, jpi 
    171             ztkel = tsn(ji,jj,1,jp_tem) + 273.15 
    172             zsal  = tsn(ji,jj,1,jp_sal) + ( 1.- tmask(ji,jj,1) ) * 35. 
     171            ztkel = tempis(ji,jj,1) + 273.15 
     172            zsal  = salinprac(ji,jj,1) + ( 1.- tmask(ji,jj,1) ) * 35. 
    173173            zvapsw = exp(24.4543 - 67.4509*(100.0/ztkel) - 4.8489*log(ztkel/100) - 0.000544*zsal) 
    174174            zpco2atm(ji,jj) = satmco2(ji,jj) * ( patm(ji,jj) - zvapsw ) 
     
    232232            trc2d(:,:,jp_pcs0_2d + 1) = zoflx(:,:) * 1000 * tmask(:,:,1) 
    233233            trc2d(:,:,jp_pcs0_2d + 2) = zkgco2(:,:) * tmask(:,:,1) 
    234             trc2d(:,:,jp_pcs0_2d + 3) = ( satmco2(:,:) * patm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 
     234            trc2d(:,:,jp_pcs0_2d + 3) = ( zpco2atm(:,:) - zh2co3(:,:) / ( chemc(:,:,1) + rtrn ) ) * tmask(:,:,1) 
    235235         ENDIF 
    236236      ENDIF 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zlys.F90

    r6841 r6966  
    6666      REAL(wp) ::   zomegaca, zexcess, zexcess0 
    6767      CHARACTER (len=25) :: charout 
    68       REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi 
     68      REAL(wp), POINTER, DIMENSION(:,:,:) :: zco3, zcaldiss, zhinit, zhi, zco3sat 
    6969      !!--------------------------------------------------------------------- 
    7070      ! 
    7171      IF( nn_timing == 1 )  CALL timing_start('p4z_lys') 
    7272      ! 
    73       CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi ) 
     73      CALL wrk_alloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 
    7474      ! 
    7575      zco3    (:,:,:) = 0. 
     
    8585         DO jj = 1, jpj 
    8686            DO ji = 1, jpi 
    87                zfact = rhop(ji,jj,jk) / 1000. + rtrn 
    8887               zco3(ji,jj,jk) = trb(ji,jj,jk,jpdic) * ak13(ji,jj,jk) * ak23(ji,jj,jk) / (zhi(ji,jj,jk)**2   & 
    8988               &                + ak13(ji,jj,jk) * zhi(ji,jj,jk) + ak13(ji,jj,jk) * ak23(ji,jj,jk) + rtrn ) 
    90                hi(ji,jj,jk)   = zhi(ji,jj,jk) * zfact 
     89               hi(ji,jj,jk)   = zhi(ji,jj,jk) * rhop(ji,jj,jk) / 1000. 
    9190            END DO 
    9291         END DO 
     
    105104               ! DEVIATION OF [CO3--] FROM SATURATION VALUE 
    106105               ! Salinity dependance in zomegaca and divide by rhop/1000 to have good units 
    107                zcalcon  = calcon * ( tsn(ji,jj,jk,jp_sal) / 35._wp ) 
     106               zcalcon  = calcon * ( salinprac(ji,jj,jk) / 35._wp ) 
    108107               zfact    = rhop(ji,jj,jk) / 1000._wp 
    109                zomegaca = ( zcalcon * zco3(ji,jj,jk) * zfact ) / aksp(ji,jj,jk)  
     108               zomegaca = ( zcalcon * zco3(ji,jj,jk) ) / ( aksp(ji,jj,jk) * zfact + rtrn ) 
     109               zco3sat(ji,jj,jk) = aksp(ji,jj,jk) * zfact / ( zcalcon + rtrn ) 
    110110 
    111111               ! SET DEGREE OF UNDER-/SUPERSATURATION 
     
    135135         IF( iom_use( "PH"     ) ) CALL iom_put( "PH"    , -1. * LOG10( hi(:,:,:) )          * tmask(:,:,:) ) 
    136136         IF( iom_use( "CO3"    ) ) CALL iom_put( "CO3"   , zco3(:,:,:) * 1.e+3               * tmask(:,:,:) ) 
    137          IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", aksp(:,:,:) * 1.e+3 / calcon      * tmask(:,:,:) ) 
    138          IF( iom_use( "DCAL"   ) ) CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * 1.e+3 * rfact2r   * tmask(:,:,:) ) 
     137         IF( iom_use( "CO3sat" ) ) CALL iom_put( "CO3sat", zco3sat(:,:,:) * 1.e+3            * tmask(:,:,:) ) 
     138         IF( iom_use( "DCAL"   ) ) CALL iom_put( "DCAL"  , zcaldiss(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:) ) 
    139139 
    140140      ELSE 
     
    142142            trc3d(:,:,:,jp_pcs0_3d    ) = -1. * LOG10( hi(:,:,:) ) * tmask(:,:,:) 
    143143            trc3d(:,:,:,jp_pcs0_3d + 1) = zco3(:,:,:)              * tmask(:,:,:) 
    144             trc3d(:,:,:,jp_pcs0_3d + 2) = aksp(:,:,:) / calcon     * tmask(:,:,:) 
     144            trc3d(:,:,:,jp_pcs0_3d + 2) = zco3sat(:,:,:)           * tmask(:,:,:) 
    145145         ENDIF 
    146146      ENDIF 
     
    153153      ENDIF 
    154154      ! 
    155       CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi ) 
     155      CALL wrk_dealloc( jpi, jpj, jpk, zco3, zcaldiss, zhinit, zhi, zco3sat ) 
    156156      ! 
    157157      IF( nn_timing == 1 )  CALL timing_stop('p4z_lys') 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zopt.F90

    r6841 r6966  
    125125      !                                        !  -------------------------------------- 
    126126      IF( l_trcdm2dc ) THEN                     !  diurnal cycle 
    127          ! 1% of qsr to compute euphotic layer 
    128          zqsr100(:,:) = 0.01 * qsr_mean(:,:)     !  daily mean qsr 
    129127         ! 
    130128         zqsr_corr(:,:) = qsr_mean(:,:) / ( 1. - fr_i(:,:) + rtrn ) 
    131          CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3 ) 
     129         CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3, pe100 = zqsr100 ) 
    132130         ! 
    133131         DO jk = 1, nksrp       
     
    148146         ! 
    149147      ELSE 
    150          ! 1% of qsr to compute euphotic layer 
    151          zqsr100(:,:) = 0.01 * qsr(:,:) 
    152148         ! 
    153149         zqsr_corr(:,:) = qsr(:,:) / ( 1. - fr_i(:,:) + rtrn ) 
    154          CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3 ) 
     150         CALL p4z_opt_par( kt, zqsr_corr, ze1, ze2, ze3, pe100 = zqsr100 ) 
    155151         ! 
    156152         DO jk = 1, nksrp       
     
    184180         DO jj = 1, jpj 
    185181           DO ji = 1, jpi 
    186               IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.43 * zqsr100(ji,jj) )  THEN 
     182              IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= zqsr100(ji,jj) )  THEN 
    187183                 neln(ji,jj) = jk+1                    ! Euphotic level : 1rst T-level strictly below Euphotic layer 
    188184                 !                                     ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 
     
    190186              ENDIF 
    191187              IF( etot_ndcy(ji,jj,jk) * tmask(ji,jj,jk) >= 0.50 )  THEN 
    192                  !                                     ! nb: ensure the compatibility with nmld_trc definition in trd_mld_trc_zint 
    193                  heup_01(ji,jj) = fsdepw(ji,jj,jk+1)      ! Euphotic layer depth 
     188                 heup_01(ji,jj) = fsdepw(ji,jj,jk+1)      ! Euphotic layer depth (light level definition) 
    194189              ENDIF 
    195190           END DO 
     
    273268   END SUBROUTINE p4z_opt 
    274269 
    275    SUBROUTINE p4z_opt_par( kt, pqsr, pe1, pe2, pe3, pe0 )  
     270   SUBROUTINE p4z_opt_par( kt, pqsr, pe1, pe2, pe3, pe0, pe100 )  
    276271      !!---------------------------------------------------------------------- 
    277272      !!                  ***  routine p4z_opt_par  *** 
     
    285280      REAL(wp), DIMENSION(jpi,jpj)    , INTENT(in)              ::  pqsr          !   shortwave 
    286281      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout)           ::  pe1 , pe2 , pe3   !  PAR ( R-G-B) 
    287       REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout), OPTIONAL ::  pe0   
     282      REAL(wp), DIMENSION(jpi,jpj,jpk), INTENT(inout), OPTIONAL ::  pe0 
     283      REAL(wp), DIMENSION(jpi,jpj),     INTENT(inout), OPTIONAL ::  pe100 
    288284      !! * local variables 
    289285      INTEGER    ::   ji, jj, jk     ! dummy loop indices 
     
    294290      IF( ln_varpar ) THEN  ;  zqsr(:,:) = par_varsw(:,:) * pqsr(:,:) 
    295291      ELSE                  ;  zqsr(:,:) = xparsw         * pqsr(:,:) 
     292      ENDIF 
     293      ! 
     294      IF( PRESENT( pe100 ) ) THEN 
     295         pe100(:,:) = 3. * 0.01 * zqsr(:,:) 
    296296      ENDIF 
    297297      ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zpoc.F90

    r6931 r6966  
    6363      ! 
    6464      INTEGER  ::   ji, jj, jk, jn 
    65       REAL(wp) ::   zremip, zremig, zdep, zorem2, zofer 
     65      REAL(wp) ::   zremip, zremig, zdep, zorem, zorem2, zofer 
    6666      REAL(wp) ::   zsizek, zsizek1, alphat, remint 
    6767      REAL(wp) ::   solgoc, zpoc 
     
    220220               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2 - zofer3 
    221221               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem2 
     222               orem(ji,jj,jk)      = zorem2 
    222223               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer2 
    223224            END DO 
     
    389390                 ! -------------------------------------------------------- 
    390391                 zremip          = zremipoc(ji,jj,jk) * zstep * tgfunc(ji,jj,jk) 
    391                  orem(ji,jj,jk)  = zremip * trb(ji,jj,jk,jppoc) 
     392                 zorem           = zremip * trb(ji,jj,jk,jppoc) 
    392393                 zofer           = zremip * trb(ji,jj,jk,jpsfe) 
    393394#if defined key_kriest 
     
    398399                 ! ------------------------------------- 
    399400 
    400                  tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + orem(ji,jj,jk) 
     401                 tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem 
     402                 orem(ji,jj,jk)      = orem(ji,jj,jk) + zorem 
    401403                 tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 
    402                  tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - orem(ji,jj,jk) 
     404                 tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem 
    403405#if defined key_kriest 
    404406                 tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zorem2 
  • 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      ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zsms.F90

    r6841 r6966  
    1919   USE p4zbio          !  Biological model 
    2020   USE p4zche          !  Chemical model 
     21   USE p4zlys          !  Calcite saturation 
    2122   USE p4zflx          !  Gas exchange 
    2223   USE p4zsbc          !  External source of nutrients 
     
    132133         ! 
    133134         CALL p4z_bio( kt, jnt )   ! Biology 
     135         CALL p4z_lys( kt, jnt )   ! Compute CaCO3 saturation 
    134136         CALL p4z_flx( kt, jnt )   ! Compute surface fluxes 
    135137         CALL p4z_sed( kt, jnt )   ! Sedimentation 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zbio.F90

    r6453 r6966  
    2828   USE p5zpoc          !  Remineralisation of organic particles 
    2929   USE p5zagg          !  Aggregation of particles 
    30    USE p4zlys          !  Dissolution of calcite 
    31    USE p4zfechem       !  Iron chemistry 
    3230   USE p4zligand       !  Remineralization of ligands 
    3331   USE prtctl_trc      !  print control for debugging 
     
    8280      CALL p4z_opt  ( kt, knt )     ! Optic: PAR in the water column 
    8381      CALL p5z_sink ( kt, knt )     ! vertical flux of particulate organic matter 
    84       CALL p4z_lys   (kt, knt )     ! Dissolution of calcite 
    8582      CALL p4z_fechem(kt, knt )     ! Iron chemistry/scavenging 
    8683      CALL p5z_lim  ( kt, knt )     ! co-limitations by the various nutrients 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zpoc.F90

    r6841 r6966  
    6767      INTEGER  ::   ji, jj, jk, jn 
    6868      REAL(wp) ::   zremip, zremig, zdep, zstep 
    69       REAL(wp) ::   zopon, zopop, zopoc2, zopon2, zopop2, zofer 
     69      REAL(wp) ::   zopon, zopop, zopoc, zopoc2, zopon2, zopop2, zofer 
    7070      REAL(wp) ::   zsizek, zsizek1, alphat, remint 
    7171      REAL(wp) ::   solgoc, zpoc 
     
    211211               zremig = zremigoc(ji,jj,jk) * zstep * tgfunc(ji,jj,jk) 
    212212               zopoc2 = zremig  * trb(ji,jj,jk,jpgoc) 
     213               orem(ji,jj,jk) = zopoc2 
    213214               zopon2 = xremipn / xremipc * zremig * trb(ji,jj,jk,jpgon) 
    214215               zopop2 = xremipp / xremipc * zremig * trb(ji,jj,jk,jpgop) 
     
    396397               ! -------------------------------------------------------- 
    397398               zremip = zremipoc(ji,jj,jk) * zstep * tgfunc(ji,jj,jk) 
    398  
    399                orem(ji,jj,jk)  = zremip * trb(ji,jj,jk,jppoc) 
     399               zopoc  = zremip * trb(ji,jj,jk,jppoc) 
     400               orem(ji,jj,jk)  = orem(ji,jj,jk) + zopoc 
    400401               zopon  = xremipn / xremipc * zremip * trb(ji,jj,jk,jppon) 
    401402               zopop  = xremipp / xremipc * zremip * trb(ji,jj,jk,jppop) 
     
    407408               ! Update the appropriate tracers trends 
    408409               ! ------------------------------------- 
    409                tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - orem(ji,jj,jk) 
     410               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zopoc 
    410411               tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zopon 
    411412               tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zopop 
    412413               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer 
    413                tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + orem(ji,jj,jk) 
     414               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zopoc 
    414415               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zopon  
    415416               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zopop  
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zprod.F90

    r6841 r6966  
    3333 
    3434   !! * Shared module variables 
    35    REAL(wp), PUBLIC ::  pislope         !: 
     35   REAL(wp), PUBLIC ::  pislopen        !: 
    3636   REAL(wp), PUBLIC ::  pislopep        !: 
    37    REAL(wp), PUBLIC ::  pislope2        !: 
     37   REAL(wp), PUBLIC ::  pisloped        !: 
    3838   REAL(wp), PUBLIC ::  xadap           !: 
    39    REAL(wp), PUBLIC ::  excret          !: 
     39   REAL(wp), PUBLIC ::  excretn         !: 
    4040   REAL(wp), PUBLIC ::  excretp         !: 
    41    REAL(wp), PUBLIC ::  excret2         !: 
     41   REAL(wp), PUBLIC ::  excretd         !: 
    4242   REAL(wp), PUBLIC ::  bresp           !: 
    4343   REAL(wp), PUBLIC ::  thetanpm        !: 
     
    5656    
    5757   REAL(wp) :: r1_rday                !: 1 / rday 
    58    REAL(wp) :: texcret                !: 1 - excret  
     58   REAL(wp) :: texcretn               !: 1 - excret  
    5959   REAL(wp) :: texcretp               !: 1 - excretp  
    60    REAL(wp) :: texcret2               !: 1 - excret2         
     60   REAL(wp) :: texcretd               !: 1 - excret2         
    6161 
    6262 
     
    8787      REAL(wp) ::   zpronmax, zpropmax, zprofmax, zrat 
    8888      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zprontot, zproptot, zprodtot 
    89       REAL(wp) ::   zmxltst, zmxlday, zprnutmax, zdocprod 
    90       REAL(wp) ::   zpislopen, zpislopep, zpislope2n 
     89      REAL(wp) ::   zprnutmax, zdocprod, zprochln, zprochld, zprochlp 
     90      REAL(wp) ::   zpislopen, zpislopep, zpisloped 
    9191      REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup 
    9292      REAL(wp) ::   zrfact2 
    9393      CHARACTER (len=25) :: charout 
    9494      REAL(wp), POINTER, DIMENSION(:,:  ) :: zmixnano, zmixpico, zmixdiat, zstrn 
    95       REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopead, zpislopeadp, zpislopead2 
     95      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadp, zpislopead 
    9696      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprbio, zprpic, zprdia, zysopt 
    9797      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprchln, zprchlp, zprchld 
    9898      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcap, zprorcad  
    9999      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprofed, zprofep, zprofen 
    100       REAL(wp), POINTER, DIMENSION(:,:,:) :: zprochln, zprochlp, zprochld 
    101100      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpronewn, zpronewp, zpronewd 
    102101      REAL(wp), POINTER, DIMENSION(:,:,:) :: zproregn, zproregp, zproregd 
     
    105104      REAL(wp), POINTER, DIMENSION(:,:,:) :: zrespn, zrespp, zrespd, zprnut 
    106105      REAL(wp), POINTER, DIMENSION(:,:,:) :: zcroissn, zcroissp, zcroissd 
     106      REAL(wp), POINTER, DIMENSION(:,:,:) :: zmxl_fac, zmxl_chl 
    107107      !!--------------------------------------------------------------------- 
    108108      ! 
     
    111111      !  Allocate temporary workspace 
    112112      CALL wrk_alloc( jpi, jpj,      zmixnano, zmixpico, zmixdiat, zstrn ) 
    113       CALL wrk_alloc( jpi, jpj, jpk, zpislopead, zpislopeadp, zpislopead2, zysopt )  
     113      CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 
     114      CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadp, zpislopead, zysopt )  
    114115      CALL wrk_alloc( jpi, jpj, jpk, zprdia, zprpic, zprbio, zprorcan, zprorcap, zprorcad ) 
    115       CALL wrk_alloc( jpi, jpj, jpk, zprofed, zprofep, zprofen, zprochln, zprochlp, zprochld ) 
     116      CALL wrk_alloc( jpi, jpj, jpk, zprofed, zprofep, zprofen ) 
    116117      CALL wrk_alloc( jpi, jpj, jpk, zpronewn, zpronewp, zpronewd, zproregn, zproregp, zproregd ) 
    117118      CALL wrk_alloc( jpi, jpj, jpk, zpropo4n, zpropo4p, zpropo4d, zrespn, zrespp, zrespd, zprnut ) 
     
    121122      zprorcan(:,:,:) = 0._wp ; zprorcap(:,:,:) = 0._wp ; zprorcad(:,:,:) = 0._wp 
    122123      zprofed (:,:,:) = 0._wp ; zprofep (:,:,:) = 0._wp ; zprofen (:,:,:) = 0._wp 
    123       zprochln(:,:,:) = 0._wp ; zprochlp(:,:,:) = 0._wp ; zprochld(:,:,:) = 0._wp 
    124124      zpronewn(:,:,:) = 0._wp ; zpronewp(:,:,:) = 0._wp ; zpronewd(:,:,:) = 0._wp 
    125125      zproregn(:,:,:) = 0._wp ; zproregp(:,:,:) = 0._wp ; zproregd(:,:,:) = 0._wp  
     
    159159         DO jj = 1 ,jpj 
    160160            DO ji = 1, jpi 
    161                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     161               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    162162                  zval = MAX( 1., zstrn(ji,jj) ) 
    163                   zval = 1.5 * zval / (12. + zval) * (1. - fr_i(ji,jj)) 
    164                   zprbio(ji,jj,jk) = prmaxn(ji,jj,jk) * zval 
    165                   zprpic(ji,jj,jk) = prmaxp(ji,jj,jk) * zval 
    166                   zprdia(ji,jj,jk) = prmaxd(ji,jj,jk) * zval 
     163                  zmxl_fac(ji,jj,jk) = zval 
     164                  zmxl_chl(ji,jj,jk) = zval / 24. 
     165                  IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
     166                     zval = MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
     167                     zmxl_fac(ji,jj,jk) = zmxl_fac(ji,jj,jk) * zval 
     168                     zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * zval 
     169                  ENDIF 
     170                  zmxl_fac(ji,jj,jk) = ( 1. - exp( -0.2 * zmxl_fac(ji,jj,jk) ) ) 
     171                  zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) 
    167172               ENDIF 
    168173            END DO 
    169174         END DO 
    170175      END DO 
     176 
     177      zprbio(:,:,:) = prmaxn(:,:,:) * zmxl_fac(:,:,:) 
     178      zprdia(:,:,:) = prmaxd(:,:,:) * zmxl_fac(:,:,:) 
     179      zprpic(:,:,:) = prmaxp(:,:,:) * zmxl_fac(:,:,:) 
     180 
    171181 
    172182      ! Maximum light intensity 
     
    180190!CDIR NOVERRCHK 
    181191            DO ji = 1, jpi 
     192               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    182193                  ! Computation of the P-I slope for nanos and diatoms 
    183                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
    184194                  ztn         = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. ) 
    185195                  zadap       = xadap * ztn / ( 2.+ ztn ) 
    186                   znanotot    = enano(ji,jj,jk) * zstrn(ji,jj) 
    187                   zpicotot    = epico(ji,jj,jk) * zstrn(ji,jj) 
    188                   zdiattot    = ediat(ji,jj,jk) * zstrn(ji,jj) 
    189196                  ! 
    190                   zpislopead (ji,jj,jk) = pislope * trb(ji,jj,jk,jpnch)    & 
     197                  zpislopeadn(ji,jj,jk) = pislopen * trb(ji,jj,jk,jpnch)    & 
    191198                  &                       /( trb(ji,jj,jk,jpphy) * 12. + rtrn) 
    192                   zpislopeadp(ji,jj,jk) = pislopep * ( 1. + zadap * EXP( -0.5 * zpicotot ) )   & 
     199                  zpislopeadp(ji,jj,jk) = pislopep * ( 1. + zadap * EXP( -0.25 * epico(ji,jj,jk) ) )   & 
    193200                  &                       * trb(ji,jj,jk,jppch) /( trb(ji,jj,jk,jppic) * 12. + rtrn) 
    194                   zpislopead2(ji,jj,jk) = pislope2 * trb(ji,jj,jk,jpdch)    & 
     201                  zpislopeadd(ji,jj,jk) = pisloped * trb(ji,jj,jk,jpdch)    & 
    195202                     &                    /( trb(ji,jj,jk,jpdia) * 12. + rtrn) 
    196                   zpislopen   = zpislopead (ji,jj,jk) / ( prmaxn(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
    197                   zpislopep   = zpislopeadp(ji,jj,jk) / ( prmaxp(ji,jj,jk) * rday * xlimpic(ji,jj,jk) + rtrn ) 
    198                   zpislope2n  = zpislopead2(ji,jj,jk) / ( prmaxd(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
     203                  ! 
     204                  zpislopen = zpislopeadn(ji,jj,jk) / ( prmaxn(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn ) 
     205                  zpislopep = zpislopeadp(ji,jj,jk) / ( prmaxp(ji,jj,jk) * rday * xlimpic(ji,jj,jk) + rtrn ) 
     206                  zpisloped = zpislopeadd(ji,jj,jk) / ( prmaxd(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn ) 
    199207 
    200208                  ! Computation of production function for Carbon 
    201209                  !  --------------------------------------------- 
    202                   zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen  * znanotot )  ) 
    203                   zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep  * zpicotot )  ) 
    204                   zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpislope2n * zdiattot )  ) 
     210                  zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) )  ) 
     211                  zprpic(ji,jj,jk) = zprpic(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) )  ) 
     212                  zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) )  ) 
    205213 
    206214                  ! Computation of production function for Chlorophyll 
    207215                  !  ------------------------------------------------- 
    208                   zprchln(ji,jj,jk) = prmaxn(ji,jj,jk) * ( 1.- EXP( -zpislopen  * enano(ji,jj,jk) )  ) 
    209                   zprchlp(ji,jj,jk) = prmaxp(ji,jj,jk) * ( 1.- EXP( -zpislopep  * epico(ji,jj,jk) )  ) 
    210                   zprchld(ji,jj,jk) = prmaxd(ji,jj,jk) * ( 1.- EXP( -zpislope2n * ediat(ji,jj,jk) )  ) 
     216                  zpislopen = zpislopen * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
     217                  zpisloped = zpisloped * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
     218                  zpislopep = zpislopep * zmxl_fac(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
     219                  zprchln(ji,jj,jk) = prmaxn(ji,jj,jk) * ( 1.- EXP( -zpislopen * enano(ji,jj,jk) )  ) 
     220                  zprchlp(ji,jj,jk) = prmaxp(ji,jj,jk) * ( 1.- EXP( -zpislopep * epico(ji,jj,jk) )  ) 
     221                  zprchld(ji,jj,jk) = prmaxd(ji,jj,jk) * ( 1.- EXP( -zpisloped * ediat(ji,jj,jk) )  ) 
    211222               ENDIF 
    212223            END DO 
     
    217228         DO jj = 1, jpj 
    218229            DO ji = 1, jpi 
    219               IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     230 
     231                IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    220232                  !    Si/C of diatoms 
    221233                  !    ------------------------ 
     
    238250      END DO 
    239251 
    240       !  Computation of the limitation term due to a mixed layer deeper than the euphotic depth 
    241       DO jj = 1, jpj 
    242          DO ji = 1, jpi 
    243             zmxltst = MAX( 0.e0, hmld(ji,jj) - heup_01(ji,jj) ) 
    244             zmxlday = zmxltst * zmxltst * r1_rday 
    245             zmixnano(ji,jj) = 1. - zmxlday / ( zlimmxln + zmxlday ) 
    246             zmixpico(ji,jj) = 1. - zmxlday / ( zlimmxlp + zmxlday ) 
    247             zmixdiat(ji,jj) = 1. - zmxlday / ( zlimmxld + zmxlday ) 
    248          END DO 
    249       END DO 
    250   
    251       !  Mixed-layer effect on production                                                                                
    252       DO jk = 1, jpkm1 
    253          DO jj = 1, jpj 
    254             DO ji = 1, jpi 
    255                IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    256                   zprbio(ji,jj,jk)  = zprbio(ji,jj,jk) * zmixnano(ji,jj) 
    257                   zprpic(ji,jj,jk)  = zprpic(ji,jj,jk) * zmixpico(ji,jj) 
    258                   zprdia(ji,jj,jk)  = zprdia(ji,jj,jk) * zmixdiat(ji,jj) 
    259                   zprchln(ji,jj,jk) = zprchln(ji,jj,jk) * zmixnano(ji,jj) 
    260                   zprchlp(ji,jj,jk) = zprchlp(ji,jj,jk) * zmixpico(ji,jj) 
    261                   zprchld(ji,jj,jk) = zprchld(ji,jj,jk) * zmixdiat(ji,jj) 
    262                ENDIF 
     252      !  Sea-ice effect on production                                                                                
     253      DO jk = 1, jpkm1 
     254         DO jj = 1, jpj 
     255            DO ji = 1, jpi 
     256               zprbio(ji,jj,jk)  = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
     257               zprpic(ji,jj,jk)  = zprpic(ji,jj,jk) * ( 1. - fr_i(ji,jj) )  
     258               zprdia(ji,jj,jk)  = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) )  
     259               zprnut(ji,jj,jk)  = zprnut(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
    263260            END DO 
    264261         END DO 
     
    269266         DO jj = 1, jpj 
    270267            DO ji = 1, jpi 
    271                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     268               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    272269                  !  production terms for nanophyto. 
    273270                  zprorcan(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trb(ji,jj,jk,jpphy) * rfact2 
     
    306303         DO jj = 1, jpj 
    307304            DO ji = 1, jpi 
    308                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     305               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    309306                  !  production terms for picophyto. 
    310307                  zprorcap(ji,jj,jk) = zprpic(ji,jj,jk)  * xlimpic(ji,jj,jk) * trb(ji,jj,jk,jppic) * rfact2 
     
    343340         DO jj = 1, jpj 
    344341            DO ji = 1, jpi 
    345                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     342               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    346343                  !  production terms for diatomees 
    347344                  zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trb(ji,jj,jk,jpdia) * rfact2 
     
    381378         DO jj = 1, jpj 
    382379            DO ji = 1, jpi 
    383                IF( etot(ji,jj,jk) > 1.E-3 ) THEN 
     380               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    384381                     !  production terms for nanophyto. ( chlorophyll ) 
     382                  znanotot = enano(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    385383                  zprod = rday * (zpronewn(ji,jj,jk) + zproregn(ji,jj,jk)) * zprchln(ji,jj,jk) * xlimphy(ji,jj,jk) 
    386                   zprochln(ji,jj,jk) = thetannm * zprod / ( zpislopead(ji,jj,jk) * enano(ji,jj,jk) +rtrn ) 
    387                   zprochln(ji,jj,jk) = MAX(zprochln(ji,jj,jk), chlcmin * 12. * zprorcan (ji,jj,jk) ) 
     384                  zprochln = thetannm * zprod / ( zpislopeadn(ji,jj,jk) * znanotot + rtrn ) 
     385                  zprochln = MAX(zprochln, chlcmin * 12. * zprorcan (ji,jj,jk) ) 
    388386                     !  production terms for picophyto. ( chlorophyll ) 
     387                  zpicotot = epico(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    389388                  zprod = rday * (zpronewp(ji,jj,jk) + zproregp(ji,jj,jk)) * zprchlp(ji,jj,jk) * xlimpic(ji,jj,jk) 
    390                   zprochlp(ji,jj,jk) = thetanpm * zprod / ( zpislopeadp(ji,jj,jk) * epico(ji,jj,jk) +rtrn ) 
    391                   zprochlp(ji,jj,jk) = MAX(zprochlp(ji,jj,jk), chlcmin * 12. * zprorcap(ji,jj,jk) ) 
     389                  zprochlp = thetanpm * zprod / ( zpislopeadp(ji,jj,jk) * zpicotot + rtrn ) 
     390                  zprochlp = MAX(zprochlp, chlcmin * 12. * zprorcap(ji,jj,jk) ) 
    392391                  !  production terms for diatomees ( chlorophyll ) 
     392                  zdiattot = ediat(ji,jj,jk) / ( zmxl_chl(ji,jj,jk) + rtrn ) 
    393393                  zprod = rday * (zpronewd(ji,jj,jk) + zproregd(ji,jj,jk)) * zprchld(ji,jj,jk) * xlimdia(ji,jj,jk) 
    394                   zprochld(ji,jj,jk) = thetandm * zprod / ( zpislopead2(ji,jj,jk) * ediat(ji,jj,jk) +rtrn ) 
    395                   zprochld(ji,jj,jk) = MAX(zprochld(ji,jj,jk), chlcmin * 12. * zprorcad(ji,jj,jk) ) 
     394                  zprochld = thetandm * zprod / ( zpislopeadd(ji,jj,jk) * zdiattot + rtrn ) 
     395                  zprochld = MAX(zprochld, chlcmin * 12. * zprorcad(ji,jj,jk) ) 
     396                  !   Update the arrays TRA which contain the Chla sources and sinks 
     397                  tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln * texcretn 
     398                  tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld * texcretd 
     399                  tra(ji,jj,jk,jppch) = tra(ji,jj,jk,jppch) + zprochlp * texcretp 
    396400               ENDIF 
    397401            END DO 
     
    406410              zproptot = zpronewp(ji,jj,jk) + zproregp(ji,jj,jk) 
    407411              zprodtot = zpronewd(ji,jj,jk) + zproregd(ji,jj,jk) 
    408               zdocprod = excret2 * zprorcad(ji,jj,jk) + excret * zprorcan(ji,jj,jk)  & 
     412              zdocprod = excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk)  & 
    409413              &          + excretp * zprorcap(ji,jj,jk) 
    410414              tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zpropo4n(ji,jj,jk) - zpropo4d(ji,jj,jk)  & 
     
    414418              tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproregn(ji,jj,jk) - zproregd(ji,jj,jk)  & 
    415419              &                     - zproregp(ji,jj,jk) 
    416               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcret     & 
     420              tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorcan(ji,jj,jk) * texcretn    & 
    417421                 &                  - zpsino3 * zpronewn(ji,jj,jk) - zpsinh4 * zproregn(ji,jj,jk)   & 
    418422                 &                  - zrespn(ji,jj,jk)  
    419423              zcroissn(ji,jj,jk) = tra(ji,jj,jk,jpphy) / rfact2/ (trb(ji,jj,jk,jpphy) + rtrn) 
    420               tra(ji,jj,jk,jpnph) = tra(ji,jj,jk,jpnph) + zprontot * texcret 
    421               tra(ji,jj,jk,jppph) = tra(ji,jj,jk,jppph) + zpropo4n(ji,jj,jk) * texcret   & 
    422               &                     + zprodopn(ji,jj,jk) * texcret 
    423               tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * texcret 
    424               tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcret 
     424              tra(ji,jj,jk,jpnph) = tra(ji,jj,jk,jpnph) + zprontot * texcretn 
     425              tra(ji,jj,jk,jppph) = tra(ji,jj,jk,jppph) + zpropo4n(ji,jj,jk) * texcretn   & 
     426              &                     + zprodopn(ji,jj,jk) * texcretn 
     427              tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcretn 
    425428              tra(ji,jj,jk,jppic) = tra(ji,jj,jk,jppic) + zprorcap(ji,jj,jk) * texcretp     & 
    426429                 &                  - zpsino3 * zpronewp(ji,jj,jk) - zpsinh4 * zproregp(ji,jj,jk)   & 
     
    430433              tra(ji,jj,jk,jpppi) = tra(ji,jj,jk,jpppi) + zpropo4p(ji,jj,jk) * texcretp   & 
    431434              &                     + zprodopp(ji,jj,jk) * texcretp 
    432               tra(ji,jj,jk,jppch) = tra(ji,jj,jk,jppch) + zprochlp(ji,jj,jk) * texcretp 
    433435              tra(ji,jj,jk,jppfe) = tra(ji,jj,jk,jppfe) + zprofep(ji,jj,jk) * texcretp 
    434               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcret2   & 
     436              tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcretd   & 
    435437                 &                  - zpsino3 * zpronewd(ji,jj,jk) - zpsinh4 * zproregd(ji,jj,jk)   & 
    436438                 &                  - zrespd(ji,jj,jk)  
    437439              zcroissd(ji,jj,jk) = tra(ji,jj,jk,jpdia) / rfact2 / (trb(ji,jj,jk,jpdia) + rtrn) 
    438               tra(ji,jj,jk,jpndi) = tra(ji,jj,jk,jpndi) + zprodtot * texcret2 
    439               tra(ji,jj,jk,jppdi) = tra(ji,jj,jk,jppdi) + zpropo4d(ji,jj,jk) * texcret2   & 
    440               &                     + zprodopd(ji,jj,jk) * texcret2 
    441               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2 
    442               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2 
    443               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2 
    444               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excret2 * zprorcad(ji,jj,jk) + excret * zprorcan(ji,jj,jk)  & 
     440              tra(ji,jj,jk,jpndi) = tra(ji,jj,jk,jpndi) + zprodtot * texcretd 
     441              tra(ji,jj,jk,jppdi) = tra(ji,jj,jk,jppdi) + zpropo4d(ji,jj,jk) * texcretd   & 
     442              &                     + zprodopd(ji,jj,jk) * texcretd 
     443              tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcretd 
     444              tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcretd 
     445              tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + excretd * zprorcad(ji,jj,jk) + excretn * zprorcan(ji,jj,jk)  & 
    445446              &                     + excretp * zprorcap(ji,jj,jk) 
    446               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + excret2 * zprodtot + excret * zprontot   & 
     447              tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + excretd * zprodtot + excretn * zprontot   & 
    447448              &                     + excretp * zproptot 
    448               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + excret2 * zpropo4d(ji,jj,jk) + excret * zpropo4n(ji,jj,jk)   & 
    449               &    - texcret * zprodopn(ji,jj,jk) - texcret2 * zprodopd(ji,jj,jk) + excretp * zpropo4p(ji,jj,jk)     & 
     449              tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + excretd * zpropo4d(ji,jj,jk) + excretn * zpropo4n(ji,jj,jk)   & 
     450              &    - texcretn * zprodopn(ji,jj,jk) - texcretd * zprodopd(ji,jj,jk) + excretp * zpropo4p(ji,jj,jk)     & 
    450451              &    - texcretp * zprodopp(ji,jj,jk) 
    451452              tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproregn(ji,jj,jk) + zproregd(ji,jj,jk)   & 
     
    453454                 &                + zpronewd(ji,jj,jk) + zpronewp(ji,jj,jk) )   & 
    454455                 &                - o2ut * ( zrespn(ji,jj,jk) + zrespp(ji,jj,jk) + zrespd(ji,jj,jk) ) 
    455               zfeup    = texcret * zprofen(ji,jj,jk) + texcret2 * zprofed(ji,jj,jk)  & 
     456              zfeup    = texcretn * zprofen(ji,jj,jk) + texcretd * zprofed(ji,jj,jk)  & 
    456457              &          + texcretp * zprofep(ji,jj,jk) 
    457458              tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zfeup 
    458               tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
     459              tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) - texcretd * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) 
    459460              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorcan(ji,jj,jk) - zprorcad(ji,jj,jk) - zprorcap(ji,jj,jk)  & 
    460461              &                     + zpsino3 * zpronewn(ji,jj,jk) + zpsinh4 * zproregn(ji,jj,jk)   & 
     
    522523      ! 
    523524      CALL wrk_dealloc( jpi, jpj,      zmixnano, zmixpico, zmixdiat, zstrn ) 
    524       CALL wrk_dealloc( jpi, jpj, jpk, zpislopead, zpislopeadp, zpislopead2, zysopt )                            
     525      CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 
     526      CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadp, zpislopeadd, zysopt )                            
    525527      CALL wrk_dealloc( jpi, jpj, jpk, zprdia, zprpic, zprbio, zprorcan, zprorcap, zprorcad ) 
    526       CALL wrk_dealloc( jpi, jpj, jpk, zprofed, zprofep, zprofen, zprochln, zprochlp, zprochld )  
     528      CALL wrk_dealloc( jpi, jpj, jpk, zprofed, zprofep, zprofen )  
    527529      CALL wrk_dealloc( jpi, jpj, jpk, zpronewn, zpronewp, zpronewd, zproregn, zproregp, zproregd ) 
    528530      CALL wrk_dealloc( jpi, jpj, jpk, zpropo4n, zpropo4p, zpropo4d, zrespn, zrespp, zrespd, zprnut ) 
     
    547549      !!---------------------------------------------------------------------- 
    548550      ! 
    549       NAMELIST/nampisprod/ pislope, pislopep, pislope2, xadap, bresp, excret, excretp, excret2,  & 
     551      NAMELIST/nampisprod/ pislopen, pislopep, pisloped, xadap, bresp, excretn, excretp, excretd,  & 
    550552         &                 thetannm, thetanpm, thetandm, chlcmin, grosip, zlimmxln,           & 
    551553         &                 zlimmxlp, zlimmxld 
     
    568570         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    569571         WRITE(numout,*) '    mean Si/C ratio                           grosip       =', grosip 
    570          WRITE(numout,*) '    P-I slope                                 pislope      =', pislope 
    571          WRITE(numout,*) '    Acclimation factor to low light           xadap       =', xadap 
    572          WRITE(numout,*) '    excretion ratio of nanophytoplankton      excret       =', excret 
     572         WRITE(numout,*) '    P-I slope                                 pislopen     =', pislopen 
     573         WRITE(numout,*) '    Acclimation factor to low light           xadap        =', xadap 
     574         WRITE(numout,*) '    excretion ratio of nanophytoplankton      excretn      =', excretn 
    573575         WRITE(numout,*) '    excretion ratio of picophytoplankton      excretp      =', excretp 
    574          WRITE(numout,*) '    excretion ratio of diatoms                excret2      =', excret2 
     576         WRITE(numout,*) '    excretion ratio of diatoms                excretd      =', excretd 
    575577         WRITE(numout,*) '    basal respiration in phytoplankton        bresp        =', bresp 
    576578         WRITE(numout,*) '    Maximum Chl/C in phytoplankton            chlcmin      =', chlcmin 
    577          WRITE(numout,*) '    P-I slope  for diatoms                    pislope2     =', pislope2 
     579         WRITE(numout,*) '    P-I slope  for diatoms                    pisloped     =', pisloped 
    578580         WRITE(numout,*) '    P-I slope  for picophytoplankton          pislopep     =', pislopep 
    579581         WRITE(numout,*) '    Minimum Chl/N in nanophytoplankton        thetannm     =', thetannm 
     
    586588      ! 
    587589      r1_rday   = 1._wp / rday  
    588       texcret   = 1._wp - excret 
     590      texcretn  = 1._wp - excretn 
    589591      texcretp  = 1._wp - excretp 
    590       texcret2  = 1._wp - excret2 
     592      texcretd  = 1._wp - excretd 
    591593      tpp       = 0._wp 
    592594      ! 
  • branches/CNRS/dev_r6270_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P5Z/p5zsms.F90

    r6841 r6966  
    2020   USE p5zbio          !  Biological model 
    2121   USE p4zche          !  Chemical model 
     22   USE p4zlys          !  Calcite saturation 
    2223   USE p4zflx          !  Gas exchange 
    2324   USE p4zsbc          !  External source of nutrients 
     
    132133         ! 
    133134         CALL p5z_bio (kt, knt)    ! Biology 
     135         CALL p4z_lys( kt, jnt )   ! Compute CaCO3 saturation 
    134136         CALL p4z_flx( kt, knt )   ! Compute surface fluxes 
    135137         CALL p5z_sed (kt, knt)    ! Sedimentation 
Note: See TracChangeset for help on using the changeset viewer.