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 7646 for trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 – NEMO

Ignore:
Timestamp:
2017-02-06T10:25:03+01:00 (7 years ago)
Author:
timgraham
Message:

Merge of dev_merge_2016 into trunk. UPDATE TO ARCHFILES NEEDED for XIOS2.
LIM_SRC_s/limrhg.F90 to follow in next commit due to change of kind (I'm unable to do it in this commit).
Merged using the following steps:

1) svn merge --reintegrate svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk .
2) Resolve minor conflicts in sette.sh and namelist_cfg for ORCA2LIM3 (due to a change in trunk after branch was created)
3) svn commit
4) svn switch svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/trunk
5) svn merge svn+ssh://forge.ipsl.jussieu.fr/ipsl/forge/projets/nemo/svn/branches/2016/dev_merge_2016 .
6) At this stage I checked out a clean copy of the branch to compare against what is about to be committed to the trunk.
6) svn commit #Commit code to the trunk

In this commit I have also reverted a change to Fcheck_archfile.sh which was causing problems on the Paris machine.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90

    r6140 r7646  
    55   !!====================================================================== 
    66   !! History :   3.5  !  2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code 
    7    !!---------------------------------------------------------------------- 
    8 #if defined key_pisces 
    9    !!---------------------------------------------------------------------- 
    10    !!   'key_top'       and                                      TOP models 
    11    !!   'key_pisces'                                       PISCES bio-model 
     7   !!             3.6  !  2015-05  (O. Aumont) PISCES quota 
    128   !!---------------------------------------------------------------------- 
    139   !!   p4z_fechem       :  Compute remineralization/scavenging of iron 
     
    1814   USE trc             !  passive tracers common variables  
    1915   USE sms_pisces      !  PISCES Source Minus Sink variables 
    20    USE p4zopt          !  optical model 
    2116   USE p4zche          !  chemical model 
    2217   USE p4zsbc          !  Boundary conditions from sediments 
     
    3025   PUBLIC   p4z_fechem_init ! called in trcsms_pisces.F90 
    3126 
    32    LOGICAL          ::   ln_fechem    !: boolean for complex iron chemistry following Tagliabue and voelker 
    33    LOGICAL          ::   ln_ligvar    !: boolean for variable ligand concentration following Tagliabue and voelker 
    34    REAL(wp), PUBLIC ::   xlam1        !: scavenging rate of Iron  
    35    REAL(wp), PUBLIC ::   xlamdust     !: scavenging rate of Iron by dust  
    36    REAL(wp), PUBLIC ::   ligand       !: ligand concentration in the ocean  
    37  
    38 !!gm Not DOCTOR norm !!! 
     27   !! * Shared module variables 
     28   LOGICAL          ::  ln_fechem    !: boolean for complex iron chemistry following Tagliabue and voelker 
     29   LOGICAL          ::  ln_ligvar    !: boolean for variable ligand concentration following Tagliabue and voelker 
     30   LOGICAL          ::  ln_fecolloid !: boolean for variable colloidal fraction 
     31   REAL(wp), PUBLIC ::  xlam1        !: scavenging rate of Iron  
     32   REAL(wp), PUBLIC ::  xlamdust     !: scavenging rate of Iron by dust  
     33   REAL(wp), PUBLIC ::  ligand       !: ligand concentration in the ocean  
     34   REAL(wp), PUBLIC ::  kfep         !: rate constant for nanoparticle formation 
     35 
    3936   REAL(wp) :: kl1, kl2, kb1, kb2, ks, kpr, spd, con, kth 
    4037 
     
    5956      !!                    and one particulate form (ln_fechem) 
    6057      !!--------------------------------------------------------------------- 
    61       INTEGER, INTENT(in) ::   kt, knt   ! ocean time step 
    62       ! 
    63       INTEGER  ::   ji, jj, jk, jic 
    64       CHARACTER (len=25) :: charout 
     58      ! 
     59      INTEGER, INTENT(in) ::   kt, knt ! ocean time step 
     60      ! 
     61      INTEGER  ::   ji, jj, jk, jic, jn 
    6562      REAL(wp) ::   zdep, zlam1a, zlam1b, zlamfac 
    66       REAL(wp) ::   zkeq, zfeequi, zfesatur, zfecoll 
     63      REAL(wp) ::   zkeq, zfeequi, zfesatur, zfecoll, fe3sol 
    6764      REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag 
    6865      REAL(wp) ::   ztrc, zdust 
    69 #if ! defined key_kriest 
    70       REAL(wp) ::   zdenom, zdenom2 
    71 #endif 
    72       REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig 
    73       REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 
     66      REAL(wp) ::   zdenom2 
     67      REAL(wp) ::   zzFeL1, zzFeL2, zzFe2, zzFeP, zzFe3, zzstrn2 
     68      REAL(wp) ::   zrum, zcodel, zargu, zlight 
    7469      REAL(wp) :: zkox, zkph1, zkph2, zph, zionic, ztligand 
    7570      REAL(wp) :: za, zb, zc, zkappa1, zkappa2, za0, za1, za2 
    7671      REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2 
    77       REAL(wp) :: ztfe, zoxy 
    78       REAL(wp) :: zstep 
     72      REAL(wp) :: ztfe, zoxy, zhplus 
     73      REAL(wp) :: zaggliga, zaggligb 
     74      REAL(wp) :: dissol, zligco 
     75      CHARACTER (len=25) :: charout 
     76      REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig, precip 
     77      REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP 
     78      REAL(wp), POINTER, DIMENSION(:,:  ) :: zstrn, zstrn2 
    7979      !!--------------------------------------------------------------------- 
    8080      ! 
    8181      IF( nn_timing == 1 )  CALL timing_start('p4z_fechem') 
    8282      ! 
    83       CALL wrk_alloc( jpi,jpj,jpk,   zFe3, zFeL1, zTL1, ztotlig ) 
     83      ! Allocate temporary workspace 
     84      CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 
    8485      zFe3 (:,:,:) = 0. 
    8586      zFeL1(:,:,:) = 0. 
    8687      zTL1 (:,:,:) = 0. 
    8788      IF( ln_fechem ) THEN 
    88          CALL wrk_alloc( jpi,jpj,jpk,   zFe2, zFeL2, zTL2, zFeP ) 
     89         CALL wrk_alloc( jpi, jpj,      zstrn, zstrn2 ) 
     90         CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 
    8991         zFe2 (:,:,:) = 0. 
    9092         zFeL2(:,:,:) = 0. 
     
    100102         ztotlig(:,:,:) =  MIN( ztotlig(:,:,:), 10. ) 
    101103      ELSE 
    102          ztotlig(:,:,:) = ligand * 1E9 
     104        IF( ln_ligand ) THEN  ;   ztotlig(:,:,:) = trb(:,:,:,jplgw) * 1E9 
     105        ELSE                  ;   ztotlig(:,:,:) = ligand * 1E9 
     106        ENDIF 
    103107      ENDIF 
    104108 
    105109      IF( ln_fechem ) THEN 
     110         ! compute the day length depending on latitude and the day 
     111         zrum = REAL( nday_year - 80, wp ) / REAL( nyear_len(1), wp ) 
     112         zcodel = ASIN(  SIN( zrum * rpi * 2._wp ) * SIN( rad * 23.5_wp )  ) 
     113 
     114         ! day length in hours 
     115         zstrn(:,:) = 0. 
     116         DO jj = 1, jpj 
     117            DO ji = 1, jpi 
     118               zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad ) 
     119               zargu = MAX( -1., MIN(  1., zargu ) ) 
     120               zstrn(ji,jj) = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. ) 
     121            END DO 
     122         END DO 
     123 
     124         ! Maximum light intensity 
     125         zstrn2(:,:) = zstrn(:,:) / 24. 
     126         WHERE( zstrn(:,:) < 1.e0 ) zstrn(:,:) = 24. 
     127         zstrn(:,:) = 24. / zstrn(:,:) 
     128 
    106129         ! ------------------------------------------------------------ 
    107130         ! NEW FE CHEMISTRY ROUTINE from Tagliabue and Volker (2009) 
     
    109132         ! Chemistry is supposed to be fast enough to be at equilibrium 
    110133         ! ------------------------------------------------------------ 
    111          DO jk = 1, jpkm1 
     134         DO jn = 1, 2 
     135          DO jk = 1, jpkm1 
    112136            DO jj = 1, jpj 
    113137               DO ji = 1, jpi 
     138                  zlight = etot(ji,jj,jk) * zstrn(ji,jj) * REAL( 2-jn, wp ) 
     139                  zzstrn2 = zstrn2(ji,jj) * REAL( 2-jn, wp ) + (1. - zstrn2(ji,jj) ) * REAL( jn-1, wp ) 
    114140                  ! Calculate ligand concentrations : assume 2/3rd of excess goes to 
    115141                  ! strong ligands (L1) and 1/3rd to weak ligands (L2) 
     
    118144                  zTL2(ji,jj,jk) = ligand * 1E9 - 0.000001 + 0.33 * ztligand 
    119145                  ! ionic strength from Millero et al. 1987 
    120                   zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn ) 
    121146                  zph    = -LOG10( MAX( hi(ji,jj,jk), rtrn) ) 
    122                   zoxy   = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 ) 
     147                  zoxy   = trb(ji,jj,jk,jpoxy) 
    123148                  ! Fe2+ oxydation rate from Santana-Casiano et al. (2005) 
    124                   zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,jk,jp_tem) + 273.15 )  & 
    125                     &    - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal) 
     149                  zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tempis(ji,jj,jk) + 273.15 )  & 
     150                    &    - 0.04406 * SQRT( salinprac(ji,jj,jk) ) - 0.002847 * salinprac(ji,jj,jk) 
    126151                  zkox   = ( 10.** zkox ) * spd 
    127152                  zkox   = zkox * MAX( 1.e-6, zoxy) / ( chemo2(ji,jj,jk) + rtrn ) 
    128153                  ! PHOTOREDUCTION of complexed iron : Tagliabue and Arrigo (2006) 
    129                   zkph2 = MAX( 0., 15. * etot(ji,jj,jk) / ( etot(ji,jj,jk) + 2. ) ) 
     154                  zkph2 = MAX( 0., 15. * zlight / ( zlight + 2. ) ) * (1. - fr_i(ji,jj)) 
    130155                  zkph1 = zkph2 / 5. 
    131156                  ! pass the dfe concentration from PISCES 
     
    167192                        zphi = ACOS( zfff ) 
    168193                        DO jic = 1, 3 
    169                            zfunc = -2 * zr * COS( zphi / 3. + 2. * FLOAT( jic - 1 ) * rpi / 3. ) - za2 / 3. 
     194                           zfunc = -2 * zr * COS( zphi / 3. + 2. * REAL( jic - 1, wp ) * rpi / 3. ) - za2 / 3. 
    170195                           IF( zfunc > 0. .AND. zfunc <= ztfe)  zxs = zfunc 
    171196                        END DO 
     
    173198                  ENDIF 
    174199                  ! solve for the other Fe species 
    175                   zFe3(ji,jj,jk) = MAX( 0., zxs )  
    176                   zFep(ji,jj,jk) = MAX( 0., ( ks * zFe3(ji,jj,jk) / kpr ) ) 
     200                  zzFe3 = MAX( 0., zxs ) 
     201                  zzFep = MAX( 0., ( ks * zzFe3 / kpr ) ) 
    177202                  zkappa2 = ( kb2 + zkph2 ) / kl2 
    178                   zFeL2(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * zTL2(ji,jj,jk) ) / ( zkappa2 + zFe3(ji,jj,jk) ) ) 
    179                   zFeL1(ji,jj,jk) = MAX( 0., ( ztfe / zb - za / zb * zFe3(ji,jj,jk) - zc / zb * zFeL2(ji,jj,jk) ) ) 
    180                   zFe2 (ji,jj,jk) = MAX( 0., ( ( zkph1 * zFeL1(ji,jj,jk) + zkph2 * zFeL2(ji,jj,jk) ) / zkox ) ) 
     203                  zzFeL2 = MAX( 0., ( zzFe3 * zTL2(ji,jj,jk) ) / ( zkappa2 + zzFe3 ) ) 
     204                  zzFeL1 = MAX( 0., ( ztfe / zb - za / zb * zzFe3 - zc / zb * zzFeL2 ) ) 
     205                  zzFe2  = MAX( 0., ( ( zkph1 * zzFeL1 + zkph2 * zzFeL2 ) / zkox ) ) 
     206                  zFe3(ji,jj,jk)  = zFe3(ji,jj,jk)  + zzFe3 * zzstrn2 
     207                  zFe2(ji,jj,jk)  = zFe2(ji,jj,jk)  + zzFe2 * zzstrn2 
     208                  zFeL2(ji,jj,jk) = zFeL2(ji,jj,jk) + zzFeL2 * zzstrn2 
     209                  zFeL1(ji,jj,jk) = zFeL1(ji,jj,jk) + zzFeL1 * zzstrn2 
     210                  zFeP(ji,jj,jk)  = zFeP(ji,jj,jk)  + zzFeP * zzstrn2 
    181211               END DO 
    182212            END DO 
     213         END DO 
    183214         END DO 
    184215      ELSE 
     
    206237         ! 
    207238      ENDIF 
    208       ! 
     239 
    209240      zdust = 0.         ! if no dust available 
    210       ! 
    211241      DO jk = 1, jpkm1 
    212242         DO jj = 1, jpj 
    213243            DO ji = 1, jpi 
    214                zstep = xstep 
    215 # if defined key_degrad 
    216                zstep = zstep * facvol(ji,jj,jk) 
    217 # endif 
    218244               ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water.  
    219245               ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]). 
     
    224250                  zfecoll = ( 0.3 * zFeL1(ji,jj,jk) + 0.5 * zFeL2(ji,jj,jk) ) * 1E-9 
    225251               ELSE 
    226                   zfeequi = zFe3(ji,jj,jk) * 1E-9  
    227                   zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 
     252                  zfeequi = zFe3(ji,jj,jk) * 1E-9 
     253                  IF (ln_fecolloid) THEN 
     254                     zhplus   = max( rtrn, hi(ji,jj,jk) ) 
     255                     fe3sol  = fesol(ji,jj,jk,1) * ( zhplus**3 + fesol(ji,jj,jk,2) * zhplus**2  & 
     256                     &         + fesol(ji,jj,jk,3) * zhplus + fesol(ji,jj,jk,4)     & 
     257                     &         + fesol(ji,jj,jk,5) / zhplus ) 
     258                     zfecoll = max( ( 0.1 * zFeL1(ji,jj,jk) * 1E-9 ), ( zFeL1(ji,jj,jk) * 1E-9 -fe3sol ) ) 
     259                  ELSE 
     260                     zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9 
     261                     fe3sol  = 0. 
     262                  ENDIF 
    228263               ENDIF 
    229 #if defined key_kriest 
    230                ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    231 #else 
     264               ! 
    232265               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6  
    233 #endif 
    234266               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s 
    235267               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc 
    236                zscave = zfeequi * zlam1b * zstep 
     268               zscave = zfeequi * zlam1b * xstep 
    237269 
    238270               ! Compute the different ratios for scavenging of iron 
     
    240272               ! --------------------------------------------------------- 
    241273               zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b 
    242 #if ! defined key_kriest 
    243274               zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b 
    244 #endif 
    245275 
    246276               !  Increased scavenging for very high iron concentrations found near the coasts  
     
    249279               zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. ) 
    250280               zlamfac = MIN( 1.  , zlamfac ) 
    251 !!gm very small BUG :  it is unlikely but possible that gdept_n = 0  ..... 
    252281               zdep    = MIN( 1., 1000. / gdept_n(ji,jj,jk) ) 
    253282               zlam1b  = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) ) 
    254                zcoag   = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer) 
     283               zcoag   = zfeequi * zlam1b * xstep + 1E-4 * ( 1. - zlamfac ) * zdep * xstep * trb(ji,jj,jk,jpfer) 
    255284 
    256285               !  Compute the coagulation of colloidal iron. This parameterization  
     
    259288               !  ---------------------------------------------------------------- 
    260289               zlam1a  = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
    261                    &   + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) ) 
    262                zaggdfea = zlam1a * zstep * zfecoll 
    263 #if defined key_kriest 
    264                zaggdfeb = 0. 
     290                   &   + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     291               zaggdfea = zlam1a * xstep * zfecoll 
    265292               ! 
    266                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag 
    267                tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb 
    268 #else 
    269293               zlam1b = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
    270                zaggdfeb = zlam1b * zstep * zfecoll 
     294               zaggdfeb = zlam1b * xstep * zfecoll 
    271295               ! 
    272                tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag 
     296               ! precipitation of Fe3+, creation of nanoparticles 
     297               precip(ji,jj,jk) = MAX( 0., ( zfeequi - fe3sol ) ) * kfep * xstep 
     298               ! 
     299               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb & 
     300               &                     - zcoag - precip(ji,jj,jk) 
    273301               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea 
    274302               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb 
    275 #endif 
     303               ! 
    276304            END DO 
    277305         END DO 
     
    280308      !  Define the bioavailable fraction of iron 
    281309      !  ---------------------------------------- 
    282       IF( ln_fechem ) THEN 
    283           biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 
    284       ELSE 
    285           biron(:,:,:) = trb(:,:,:,jpfer)  
    286       ENDIF 
    287  
     310      IF( ln_fechem ) THEN  ;  biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 ) 
     311      ELSE                  ;  biron(:,:,:) = trb(:,:,:,jpfer)  
     312      ENDIF 
     313      ! 
     314      IF( ln_ligand ) THEN 
     315         ! 
     316         DO jk = 1, jpkm1 
     317            DO jj = 1, jpj 
     318               DO ji = 1, jpi 
     319                  zlam1a   = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    & 
     320                      &    + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) ) 
     321                  ! 
     322                  zlam1b   = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk) 
     323                  zligco   = MAX( ( 0.1 * trb(ji,jj,jk,jplgw) ), ( trb(ji,jj,jk,jplgw) - fe3sol ) ) 
     324                  zaggliga = zlam1a * xstep * zligco 
     325                  zaggligb = zlam1b * xstep * zligco 
     326                  tra(ji,jj,jk,jpfep) = tra(ji,jj,jk,jpfep) + precip(ji,jj,jk) 
     327                  tra(ji,jj,jk,jplgw) = tra(ji,jj,jk,jplgw) - zaggliga - zaggligb 
     328               END DO 
     329            END DO 
     330         END DO 
     331         ! 
     332         IF( .NOT.ln_fechem) THEN 
     333            plig(:,:,:) =  MAX( 0., ( ( zFeL1(:,:,:) * 1E-9 ) / ( trb(:,:,:,jpfer) +rtrn ) ) ) 
     334            plig(:,:,:) =  MAX( 0. , plig(:,:,:) ) 
     335         ENDIF 
     336         ! 
     337      ENDIF 
    288338      !  Output of some diagnostics variables 
    289339      !     --------------------------------- 
    290       IF( lk_iomput .AND. knt == nrdttrc ) THEN 
     340      IF( lk_iomput ) THEN 
     341         IF( knt == nrdttrc ) THEN 
    291342         IF( iom_use("Fe3")    )  CALL iom_put("Fe3"    , zFe3   (:,:,:)       * tmask(:,:,:) )   ! Fe3+ 
    292343         IF( iom_use("FeL1")   )  CALL iom_put("FeL1"   , zFeL1  (:,:,:)       * tmask(:,:,:) )   ! FeL1 
     
    300351            IF( iom_use("TL2")  ) CALL iom_put("TL2"    , zTL2   (:,:,:)       * tmask(:,:,:) )   ! TL2 
    301352         ENDIF 
     353         ENDIF 
    302354      ENDIF 
    303355 
     
    308360      ENDIF 
    309361      ! 
    310                        CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig ) 
    311       IF( ln_fechem )  CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 
     362      CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig, precip ) 
     363      IF( ln_fechem )  THEN 
     364         CALL wrk_dealloc( jpi, jpj,      zstrn, zstrn2 ) 
     365         CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP ) 
     366      ENDIF 
    312367      ! 
    313368      IF( nn_timing == 1 )  CALL timing_stop('p4z_fechem') 
     
    328383      !! 
    329384      !!---------------------------------------------------------------------- 
    330       NAMELIST/nampisfer/ ln_fechem, ln_ligvar, xlam1, xlamdust, ligand  
     385      NAMELIST/nampisfer/ ln_fechem, ln_ligvar, ln_fecolloid, xlam1, xlamdust, ligand, kfep  
    331386      INTEGER :: ios                 ! Local integer output status for namelist read 
    332387 
     
    344399         WRITE(numout,*) ' Namelist parameters for Iron chemistry, nampisfer' 
    345400         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~' 
    346          WRITE(numout,*) '    enable complex iron chemistry scheme      ln_fechem =', ln_fechem 
    347          WRITE(numout,*) '    variable concentration of ligand          ln_ligvar =', ln_ligvar 
    348          WRITE(numout,*) '    scavenging rate of Iron                   xlam1     =', xlam1 
    349          WRITE(numout,*) '    scavenging rate of Iron by dust           xlamdust  =', xlamdust 
    350          WRITE(numout,*) '    ligand concentration in the ocean         ligand    =', ligand 
     401         WRITE(numout,*) '    enable complex iron chemistry scheme      ln_fechem    =', ln_fechem 
     402         WRITE(numout,*) '    variable concentration of ligand          ln_ligvar    =', ln_ligvar 
     403         WRITE(numout,*) '    Variable colloidal fraction of Fe3+       ln_fecolloid =', ln_fecolloid 
     404         WRITE(numout,*) '    scavenging rate of Iron                   xlam1        =', xlam1 
     405         WRITE(numout,*) '    scavenging rate of Iron by dust           xlamdust     =', xlamdust 
     406         WRITE(numout,*) '    ligand concentration in the ocean         ligand       =', ligand 
     407         WRITE(numout,*) '    rate constant for nanoparticle formation  kfep         =', kfep 
    351408      ENDIF 
    352409      ! 
     
    377434      ! 
    378435   END SUBROUTINE p4z_fechem_init 
    379  
    380 #else 
    381    !!====================================================================== 
    382    !!  Dummy module :                                   No PISCES bio-model 
    383    !!====================================================================== 
    384 CONTAINS 
    385    SUBROUTINE p4z_fechem                    ! Empty routine 
    386    END SUBROUTINE p4z_fechem 
    387 #endif  
    388  
    389436   !!====================================================================== 
    390437END MODULE p4zfechem 
Note: See TracChangeset for help on using the changeset viewer.