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/P5Z/p5zrem.F90 – NEMO

Ignore:
Timestamp:
2016-11-03T16:41:10+01:00 (7 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/P5Z/p5zrem.F90

    r6841 r7180  
    7575      REAL(wp) ::   zremik, zremikc, zremikn, zremikp, zsiremin  
    7676      REAL(wp) ::   zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep 
    77       REAL(wp) ::   zbactfer, zolimit 
     77      REAL(wp) ::   zbactfer, zolimit, zonitr, zstep, zrfact2 
    7878      REAL(wp) ::   zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp 
    79       REAL(wp) ::   zonitr, zstep, zrfact2 
    8079      CHARACTER (len=25) :: charout 
    8180      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac  
    82       REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod 
     81      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod, zfacsi, zfacsib 
    8382      !!--------------------------------------------------------------------- 
    8483      ! 
     
    8786      ! Allocate temporary workspace 
    8887      CALL wrk_alloc( jpi, jpj,      ztempbac                  ) 
    89       CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1 ) 
     88      CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib ) 
    9089 
    9190      ! Initialisation of temprary arrys 
    9291      zdepprod(:,:,:) = 1._wp 
    9392      ztempbac(:,:)   = 0._wp 
     93      zfacsib(:,:,:)  = xsilab / ( 1.0 - xsilab ) 
     94      zfacsi(:,:,:)   = xsilab 
    9495 
    9596      ! Computation of the mean phytoplankton concentration as 
     
    236237      ENDIF 
    237238 
     239      ! Initialization of the array which contains the labile fraction 
     240      ! of bSi. Set to a constant in the upper ocean 
     241      ! --------------------------------------------------------------- 
     242 
    238243      DO jk = 1, jpkm1 
    239244         DO jj = 1, jpj 
     
    243248               zstep = zstep * facvol(ji,jj,jk) 
    244249# endif 
     250               zdep     = MAX( hmld(ji,jj), heup_01(ji,jj) ) 
     251               zsatur   = MAX( rtrn, ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) ) 
     252               zsatur2  = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 
     253               znusil   = 0.225  * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 
     254 
    245255               ! Remineralization rate of BSi depedant on T and saturation 
    246256               ! --------------------------------------------------------- 
    247                zsatur   = ( sio3eq(ji,jj,jk) - trb(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn ) 
    248                zsatur   = MAX( rtrn, zsatur ) 
    249                zsatur2  = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37 
    250                znusil   = 0.225  * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25 
    251                znusil2  = 0.225  * ( 1. + tsn(ji,jj,1,jp_tem) / 15.) + 0.775 * zsatur2 
    252  
    253                ! Two classes of BSi are considered : a labile fraction and  
    254                ! a more refractory one. The ratio between both fractions is 
    255                ! constant and specified in the namelist. 
    256                ! ---------------------------------------------------------- 
    257                zdep     = MAX( hmld(ji,jj), heup_01(ji,jj) )  
    258                zdep     = MAX( 0., fsdept(ji,jj,jk) - zdep ) 
    259                ztem     = MAX( tsn(ji,jj,1,jp_tem), 0. ) 
    260                zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. ) 
    261                zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil 
     257               IF ( fsdept(ji,jj,jk) > zdep ) THEN 
     258                  zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk-1) * EXP( -0.5 * ( xsiremlab - xsirem )  & 
     259                  &                   * znusil * fse3t(ji,jj,jk) / wsbio4(ji,jj,jk) ) 
     260                  zfacsi(ji,jj,jk)  = zfacsib(ji,jj,jk) / ( 1.0 + zfacsib(ji,jj,jk) ) 
     261                  zfacsib(ji,jj,jk) = zfacsib(ji,jj,jk) * EXP( -0.5 * ( xsiremlab - xsirem )    & 
     262                  &                   * znusil * fse3t(ji,jj,jk) / wsbio4(ji,jj,jk) ) 
     263               ENDIF 
     264               zsiremin = ( xsiremlab * zfacsi(ji,jj,jk) + xsirem * ( 1. - zfacsi(ji,jj,jk) ) ) * zstep * znusil 
    262265               zosil    = zsiremin * trb(ji,jj,jk,jpgsi) 
    263266               ! 
    264267               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) - zosil 
    265268               tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil 
    266                ! 
     269               ENDIF 
    267270            END DO 
    268271         END DO 
     
    280283          CALL iom_put( "DENIT" , denitrc(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2  )  ! Denitrification 
    281284      ENDIF 
    282  
    283       IF(ln_ctl)   THEN  ! print mean trends (used for debugging) 
    284          WRITE(charout, FMT="('rem4')") 
    285          CALL prt_ctl_trc_info(charout) 
    286          CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm) 
    287       ENDIF 
    288285      ! 
    289286      CALL wrk_dealloc( jpi, jpj,      ztempbac                  ) 
    290       CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1 ) 
     287      CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1, zfacsi, zfacsib ) 
    291288      ! 
    292289      IF( nn_timing == 1 )  CALL timing_stop('p5z_rem') 
Note: See TracChangeset for help on using the changeset viewer.