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

Ignore:
Timestamp:
2016-11-03T16:41:10+01:00 (8 years ago)
Author:
aumont
Message:

various bug fixes on iron chemistry

File:
1 edited

Legend:

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

    r6966 r7180  
    8181      REAL(wp) ::   zprod, zproreg, zproreg2, zprochln, zprochld 
    8282      REAL(wp) ::   zmaxday, zdocprod, zpislopen, zpisloped 
    83       REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup 
     83      REAL(wp) ::   zmxltst, zmxlday 
     84      REAL(wp) ::   zrum, zcodel, zargu, zval, zfeup, chlcnm_n, chlcdm_n 
    8485      REAL(wp) ::   zfact 
    8586      CHARACTER (len=25) :: charout 
    86       REAL(wp), POINTER, DIMENSION(:,:  ) :: zstrn, zw2d 
     87      REAL(wp), POINTER, DIMENSION(:,:  ) :: zstrn, zw2d, zmixnano, zmixdiat 
    8788      REAL(wp), POINTER, DIMENSION(:,:,:) :: zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt, zw3d    
    8889      REAL(wp), POINTER, DIMENSION(:,:,:) :: zprorcan, zprorcad, zprofed, zprofen, zpronewn, zpronewd 
     
    9394      ! 
    9495      !  Allocate temporary workspace 
    95       CALL wrk_alloc( jpi, jpj,      zstrn ) 
     96      CALL wrk_alloc( jpi, jpj,      zmixnano, zmixdiat, zstrn ) 
    9697      CALL wrk_alloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt )  
    9798      CALL wrk_alloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 
     
    104105 
    105106      ! Computation of the optimal production 
    106       prmax(:,:,:) = 0.6_wp * r1_rday * tgfunc(:,:,:)  
     107      prmax(:,:,:) = 0.8_wp * r1_rday * tgfunc(:,:,:)  
    107108      IF( lk_degrad )  prmax(:,:,:) = prmax(:,:,:) * facvol(:,:,:)  
    108109 
     
    127128               IF( etot_ndcy(ji,jj,jk) > 1.E-3 ) THEN 
    128129                  zval = MAX( 1., zstrn(ji,jj) ) 
    129                   zmxl_fac(ji,jj,jk) = zval 
     130                  IF( fsdept(ji,jj,jk) <= hmld(ji,jj) ) THEN 
     131                     zval = zval * MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
     132                  ENDIF 
    130133                  zmxl_chl(ji,jj,jk) = zval / 24. 
    131                   IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN 
    132                      zval = MIN(1., heup_01(ji,jj) / ( hmld(ji,jj) + rtrn )) 
    133                      zmxl_fac(ji,jj,jk) = zmxl_fac(ji,jj,jk) * zval 
    134                      zmxl_chl(ji,jj,jk) = zmxl_chl(ji,jj,jk) * zval 
    135                   ENDIF 
    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) 
     134                  zmxl_fac(ji,jj,jk) = 1.5 * zval / ( 12. + zval ) 
    138135               ENDIF 
    139136            END DO 
     
    143140      zprbio(:,:,:) = prmax(:,:,:) * zmxl_fac(:,:,:) 
    144141      zprdia(:,:,:) = zprbio(:,:,:) 
     142 
     143      ! Maximum light intensity 
     144      WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
    145145 
    146146      ! Computation of the P-I slope for nanos and diatoms 
     
    253253      END DO 
    254254 
     255      !  Mixed-layer effect on production  
    255256      !  Sea-ice effect on production 
    256257 
    257258      DO jk = 1, jpkm1 
    258          zprbio(:,:,jk) = zprbio(:,:,jk) * ( 1. - fr_i(:,:) ) 
    259          zprdia(:,:,jk) = zprdia(:,:,jk) * ( 1. - fr_i(:,:) ) 
    260       END DO 
    261  
     259         DO jj = 1, jpj 
     260            DO ji = 1, jpi 
     261               zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
     262               zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * ( 1. - fr_i(ji,jj) ) 
     263            END DO 
     264         END DO 
     265      END DO 
    262266 
    263267      ! Computation of the various production terms  
     
    303307                  zprod    = rday * zprorcan(ji,jj,jk) * zprnch(ji,jj,jk) * xlimphy(ji,jj,jk) 
    304308                  zprochln = chlcmin * 12. * zprorcan (ji,jj,jk) 
    305                   zprochln = zprochln + (chlcnm-chlcmin) * 12. * zprod / & 
     309                  chlcnm_n   = MIN ( chlcnm, ( chlcnm / (1. - 1.14 / 43.4 *tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 
     310                  zprochln = zprochln + (chlcnm_n-chlcmin) * 12. * zprod / & 
    306311                                        & (  zpislopeadn(ji,jj,jk) * znanotot +rtrn) 
    307312                  !  production terms for diatoms ( chlorophyll ) 
     
    309314                  zprod    = rday * zprorcad(ji,jj,jk) * zprdch(ji,jj,jk) * xlimdia(ji,jj,jk) 
    310315                  zprochld = chlcmin * 12. * zprorcad(ji,jj,jk) 
    311                   zprochld = zprochld + (chlcdm-chlcmin) * 12. * zprod / & 
     316                  chlcdm_n   = MIN ( chlcdm, ( chlcdm / (1. - 1.14 / 43.4 * tsn(ji,jj,jk,jp_tem))) * (1. - 1.14 / 43.4 * 20.)) 
     317                  zprochld = zprochld + (chlcdm_n-chlcmin) * 12. * zprod / & 
    312318                                        & ( zpislopeadd(ji,jj,jk) * zdiattot +rtrn ) 
    313319                  !   Update the arrays TRA which contain the Chla sources and sinks 
     
    485491     ENDIF 
    486492     ! 
    487      CALL wrk_dealloc( jpi, jpj,      zstrn ) 
     493     CALL wrk_dealloc( jpi, jpj,  zmixnano, zmixdiat,    zstrn ) 
    488494     CALL wrk_dealloc( jpi, jpj, jpk, zpislopeadn, zpislopeadd, zprdia, zprbio, zprdch, zprnch, zysopt )  
    489495     CALL wrk_dealloc( jpi, jpj, jpk, zmxl_fac, zmxl_chl ) 
Note: See TracChangeset for help on using the changeset viewer.