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.
p4zfechem.F90 in branches/UKMO/r6232_tracer_advection/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z – NEMO

source: branches/UKMO/r6232_tracer_advection/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 @ 9295

Last change on this file since 9295 was 9295, checked in by jcastill, 6 years ago

Remove svn keywords

File size: 19.9 KB
RevLine 
[3443]1MODULE p4zfechem
2   !!======================================================================
3   !!                         ***  MODULE p4zfechem  ***
4   !! TOP :   PISCES Compute iron chemistry and scavenging
5   !!======================================================================
[3461]6   !! History :   3.5  !  2012-07 (O. Aumont, A. Tagliabue, C. Ethe) Original code
[3443]7   !!----------------------------------------------------------------------
8#if defined key_pisces
9   !!----------------------------------------------------------------------
10   !!   'key_top'       and                                      TOP models
11   !!   'key_pisces'                                       PISCES bio-model
12   !!----------------------------------------------------------------------
13   !!   p4z_fechem       :  Compute remineralization/scavenging of iron
14   !!   p4z_fechem_init  :  Initialisation of parameters for remineralisation
15   !!   p4z_fechem_alloc :  Allocate remineralisation variables
16   !!----------------------------------------------------------------------
17   USE oce_trc         !  shared variables between ocean and passive tracers
18   USE trc             !  passive tracers common variables
19   USE sms_pisces      !  PISCES Source Minus Sink variables
20   USE p4zopt          !  optical model
21   USE p4zche          !  chemical model
22   USE p4zsbc          !  Boundary conditions from sediments
23   USE prtctl_trc      !  print control for debugging
24   USE iom             !  I/O manager
25
26   IMPLICIT NONE
27   PRIVATE
28
29   PUBLIC   p4z_fechem      ! called in p4zbio.F90
30   PUBLIC   p4z_fechem_init ! called in trcsms_pisces.F90
31
32   !! * Shared module variables
[4147]33   LOGICAL          ::  ln_fechem    !: boolean for complex iron chemistry following Tagliabue and voelker
34   LOGICAL          ::  ln_ligvar    !: boolean for variable ligand concentration following Tagliabue and voelker
35   REAL(wp), PUBLIC ::  xlam1        !: scavenging rate of Iron
36   REAL(wp), PUBLIC ::  xlamdust     !: scavenging rate of Iron by dust
37   REAL(wp), PUBLIC ::  ligand       !: ligand concentration in the ocean
[3443]38
[3446]39   REAL(wp) :: kl1, kl2, kb1, kb2, ks, kpr, spd, con, kth
[3443]40
41   !!* Substitution
42#  include "top_substitute.h90"
43   !!----------------------------------------------------------------------
44   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
[9295]45   !! $Id$
[3443]46   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
47   !!----------------------------------------------------------------------
48CONTAINS
49
[5385]50   SUBROUTINE p4z_fechem( kt, knt )
[3443]51      !!---------------------------------------------------------------------
52      !!                     ***  ROUTINE p4z_fechem  ***
53      !!
54      !! ** Purpose :   Compute remineralization/scavenging of iron
55      !!
56      !! ** Method  :   2 different chemistry models are available for iron
57      !!                (1) The simple chemistry model of Aumont and Bopp (2006)
58      !!                    based on one ligand and one inorganic form
59      !!                (2) The complex chemistry model of Tagliabue and
60      !!                    Voelker (2009) based on 2 ligands, 2 inorganic forms
61      !!                    and one particulate form (ln_fechem)
62      !!---------------------------------------------------------------------
63      !
[5385]64      INTEGER, INTENT(in) ::   kt, knt ! ocean time step
[3443]65      !
66      INTEGER  ::   ji, jj, jk, jic
[3446]67      REAL(wp) ::   zdep, zlam1a, zlam1b, zlamfac
68      REAL(wp) ::   zkeq, zfeequi, zfesatur, zfecoll
69      REAL(wp) ::   zdenom1, zscave, zaggdfea, zaggdfeb, zcoag
[3443]70      REAL(wp) ::   ztrc, zdust
71#if ! defined key_kriest
72      REAL(wp) ::   zdenom, zdenom2
73#endif
74      REAL(wp), POINTER, DIMENSION(:,:,:) :: zTL1, zFe3, ztotlig
75      REAL(wp), POINTER, DIMENSION(:,:,:) :: zFeL1, zFeL2, zTL2, zFe2, zFeP
[3446]76      REAL(wp) :: zkox, zkph1, zkph2, zph, zionic, ztligand
[3443]77      REAL(wp) :: za, zb, zc, zkappa1, zkappa2, za0, za1, za2
78      REAL(wp) :: zxs, zfunc, zp, zq, zd, zr, zphi, zfff, zp3, zq2
79      REAL(wp) :: ztfe, zoxy
80      REAL(wp) :: zstep
81      CHARACTER (len=25) :: charout
82      !!---------------------------------------------------------------------
83      !
84      IF( nn_timing == 1 )  CALL timing_start('p4z_fechem')
85      !
86      ! Allocate temporary workspace
[3531]87      CALL wrk_alloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig )
88      zFe3 (:,:,:) = 0.
89      zFeL1(:,:,:) = 0.
90      zTL1 (:,:,:) = 0.
91      IF( ln_fechem ) THEN
92         CALL wrk_alloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP )
93         zFe2 (:,:,:) = 0.
94         zFeL2(:,:,:) = 0.
95         zTL2 (:,:,:) = 0.
96         zFeP (:,:,:) = 0.
97      ENDIF
[3461]98
[3443]99      ! Total ligand concentration : Ligands can be chosen to be constant or variable
100      ! Parameterization from Tagliabue and Voelker (2011)
101      ! -------------------------------------------------
102      IF( ln_ligvar ) THEN
[5385]103         ztotlig(:,:,:) =  0.09 * trb(:,:,:,jpdoc) * 1E6 + ligand * 1E9
[3446]104         ztotlig(:,:,:) =  MIN( ztotlig(:,:,:), 10. )
[3443]105      ELSE
106         ztotlig(:,:,:) = ligand * 1E9
107      ENDIF
108
109      IF( ln_fechem ) THEN
110         ! ------------------------------------------------------------
111         ! NEW FE CHEMISTRY ROUTINE from Tagliabue and Volker (2009)
112         ! This model is based on two ligands, Fe2+, Fe3+ and Fep
113         ! Chemistry is supposed to be fast enough to be at equilibrium
114         ! ------------------------------------------------------------
[3531]115!CDIR NOVERRCHK
[3443]116         DO jk = 1, jpkm1
[3531]117!CDIR NOVERRCHK
[3443]118            DO jj = 1, jpj
[3531]119!CDIR NOVERRCHK
[3443]120               DO ji = 1, jpi
[3461]121                  ! Calculate ligand concentrations : assume 2/3rd of excess goes to
122                  ! strong ligands (L1) and 1/3rd to weak ligands (L2)
[3446]123                  ztligand       = ztotlig(ji,jj,jk) - ligand * 1E9
[3461]124                  zTL1(ji,jj,jk) =                0.000001 + 0.67 * ztligand
125                  zTL2(ji,jj,jk) = ligand * 1E9 - 0.000001 + 0.33 * ztligand
[3443]126                  ! ionic strength from Millero et al. 1987
127                  zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn )
128                  zph    = -LOG10( MAX( hi(ji,jj,jk), rtrn) )
[5385]129                  zoxy   = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 )
[3461]130                  ! Fe2+ oxydation rate from Santana-Casiano et al. (2005)
[4153]131                  zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,jk,jp_tem) + 273.15 )  &
[3461]132                    &    - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal)
133                  zkox   = ( 10.** zkox ) * spd
134                  zkox   = zkox * MAX( 1.e-6, zoxy) / ( chemo2(ji,jj,jk) + rtrn )
[3443]135                  ! PHOTOREDUCTION of complexed iron : Tagliabue and Arrigo (2006)
[3461]136                  zkph2 = MAX( 0., 15. * etot(ji,jj,jk) / ( etot(ji,jj,jk) + 2. ) )
137                  zkph1 = zkph2 / 5.
[3443]138                  ! pass the dfe concentration from PISCES
[5385]139                  ztfe = trb(ji,jj,jk,jpfer) * 1e9
[3443]140                  ! ----------------------------------------------------------
141                  ! ANALYTICAL SOLUTION OF ROOTS OF THE FE3+ EQUATION
142                  ! As shown in Tagliabue and Voelker (2009), Fe3+ is the root of a 3rd order polynom.
143                  ! ----------------------------------------------------------
144                  ! calculate some parameters
145                  za = 1 + ks / kpr
[3446]146                  zb = 1 + ( zkph1 + kth ) / ( zkox + rtrn )
[3443]147                  zc = 1 + zkph2 / ( zkox + rtrn )
[3446]148                  zkappa1 = ( kb1 + zkph1 + kth ) / kl1
149                  zkappa2 = ( kb2 + zkph2 ) / kl2
[3443]150                  za2 = zTL1(ji,jj,jk) * zb / za + zTL2(ji,jj,jk) * zc / za + zkappa1 + zkappa2 - ztfe / za
151                  za1 = zkappa2 * zTL1(ji,jj,jk) * zb / za + zkappa1 * zTL2(ji,jj,jk) * zc / za &
152                      & + zkappa1 * zkappa2 - ( zkappa1 + zkappa2 ) * ztfe / za
153                  za0 = -zkappa1 * zkappa2 * ztfe / za
154                  zp  = za1 - za2 * za2 / 3.
155                  zq  = za2 * za2 * za2 * 2. / 27. - za2 * za1 / 3. + za0
156                  zp3 = zp / 3.
157                  zq2 = zq / 2.
158                  zd  = zp3 * zp3 * zp3 + zq2 * zq2
159                  zr  = zq / ABS( zq ) * SQRT( ABS( zp ) / 3. )
160                  ! compute the roots
161                  IF( zp > 0.) THEN
[3450]162                     ! zphi = ASINH( zq / ( 2. * zr * zr * zr ) )
163                     zphi =  zq / ( 2. * zr * zr * zr ) 
[3461]164                     zphi = LOG( zphi + SQRT( zphi * zphi + 1 ) )  ! asinh(x) = log(x + sqrt(x^2+1))
[3443]165                     zxs  = -2. * zr * SINH( zphi / 3. ) - za1 / 3.
166                  ELSE
167                     IF( zd > 0. ) THEN
168                        zfff = MAX( 1., zq / ( 2. * zr * zr * zr ) )
[3461]169                        ! zphi = ACOSH( zfff )
170                        zphi = LOG( zfff + SQRT( zfff * zfff - 1 ) )  ! acosh(x) = log(x + sqrt(x^2-1))
[3443]171                        zxs = -2. * zr * COSH( zphi / 3. ) - za1 / 3.
172                     ELSE
[3461]173                        zfff = MIN( 1., zq / ( 2. * zr * zr * zr ) )
[3456]174                        zphi = ACOS( zfff )
[3443]175                        DO jic = 1, 3
176                           zfunc = -2 * zr * COS( zphi / 3. + 2. * FLOAT( jic - 1 ) * rpi / 3. ) - za2 / 3.
177                           IF( zfunc > 0. .AND. zfunc <= ztfe)  zxs = zfunc
178                        END DO
179                     ENDIF
180                  ENDIF
181                  ! solve for the other Fe species
182                  zFe3(ji,jj,jk) = MAX( 0., zxs ) 
183                  zFep(ji,jj,jk) = MAX( 0., ( ks * zFe3(ji,jj,jk) / kpr ) )
[3448]184                  zkappa2 = ( kb2 + zkph2 ) / kl2
185                  zFeL2(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * zTL2(ji,jj,jk) ) / ( zkappa2 + zFe3(ji,jj,jk) ) )
186                  zFeL1(ji,jj,jk) = MAX( 0., ( ztfe / zb - za / zb * zFe3(ji,jj,jk) - zc / zb * zFeL2(ji,jj,jk) ) )
187                  zFe2 (ji,jj,jk) = MAX( 0., ( ( zkph1 * zFeL1(ji,jj,jk) + zkph2 * zFeL2(ji,jj,jk) ) / zkox ) )
[3443]188               END DO
189            END DO
190         END DO
191      ELSE
192         ! ------------------------------------------------------------
193         ! OLD FE CHEMISTRY ROUTINE from Aumont and Bopp (2006)
194         ! This model is based on one ligand and Fe'
195         ! Chemistry is supposed to be fast enough to be at equilibrium
196         ! ------------------------------------------------------------
[3531]197!CDIR NOVERRCHK
[3443]198         DO jk = 1, jpkm1
[3531]199!CDIR NOVERRCHK
[3443]200            DO jj = 1, jpj
[3531]201!CDIR NOVERRCHK
[3443]202               DO ji = 1, jpi
203                  zTL1(ji,jj,jk) = ztotlig(ji,jj,jk)
204                  zkeq           = fekeq(ji,jj,jk)
205                  zfesatur       = zTL1(ji,jj,jk) * 1E-9
[5385]206                  ztfe           = trb(ji,jj,jk,jpfer) 
[3443]207                  ! Fe' is the root of a 2nd order polynom
[3448]208                  zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe )               &
[3443]209                     &             + SQRT( ( 1. + zfesatur * zkeq - zkeq * ztfe )**2       &
210                     &               + 4. * ztfe * zkeq) ) / ( 2. * zkeq )
[3448]211                  zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9
[5385]212                  zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) )
[3443]213              END DO
214            END DO
215         END DO
216         !
217      ENDIF
218
[3531]219      zdust = 0.         ! if no dust available
[3443]220!CDIR NOVERRCHK
221      DO jk = 1, jpkm1
222!CDIR NOVERRCHK
223         DO jj = 1, jpj
224!CDIR NOVERRCHK
225            DO ji = 1, jpi
226               zstep = xstep
227# if defined key_degrad
228               zstep = zstep * facvol(ji,jj,jk)
229# endif
230               ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water.
231               ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]).
232               ! Scavenging onto dust is also included as evidenced from the DUNE experiments.
233               ! --------------------------------------------------------------------------------------
[3446]234               IF( ln_fechem ) THEN
[4521]235                  zfeequi = ( zFe3(ji,jj,jk) + zFe2(ji,jj,jk) + zFeP(ji,jj,jk) ) * 1E-9
[3446]236                  zfecoll = ( 0.3 * zFeL1(ji,jj,jk) + 0.5 * zFeL2(ji,jj,jk) ) * 1E-9
237               ELSE
238                  zfeequi = zFe3(ji,jj,jk) * 1E-9 
239                  zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9
240               ENDIF
[3443]241#if defined key_kriest
[5385]242               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 
[3443]243#else
[5385]244               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 
[3443]245#endif
[4800]246               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s
[3443]247               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc
248               zscave = zfeequi * zlam1b * zstep
249
250               ! Compute the different ratios for scavenging of iron
251               ! to later allocate scavenged iron to the different organic pools
252               ! ---------------------------------------------------------
[5385]253               zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b
[3780]254#if ! defined key_kriest
[5385]255               zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b
[3443]256#endif
257
258               !  Increased scavenging for very high iron concentrations found near the coasts
259               !  due to increased lithogenic particles and let say it is unknown processes (precipitation, ...)
260               !  -----------------------------------------------------------
[3475]261               zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. )
262               zlamfac = MIN( 1.  , zlamfac )
263               zdep    = MIN( 1., 1000. / fsdept(ji,jj,jk) )
[5385]264               zlam1b  = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) )
265               zcoag   = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer)
[3443]266
267               !  Compute the coagulation of colloidal iron. This parameterization
268               !  could be thought as an equivalent of colloidal pumping.
269               !  It requires certainly some more work as it is very poorly constrained.
270               !  ----------------------------------------------------------------
[5385]271               zlam1a  = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    &
272                   &   + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) )
[3475]273               zaggdfea = zlam1a * zstep * zfecoll
[3443]274#if defined key_kriest
[3446]275               zaggdfeb = 0.
276               !
277               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag
278               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb
[3443]279#else
[5385]280               zlam1b = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)
[3446]281               zaggdfeb = zlam1b * zstep * zfecoll
282               !
283               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag
284               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea
285               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb
[3443]286#endif
287            END DO
288         END DO
289      END DO
290      !
[3446]291      !  Define the bioavailable fraction of iron
292      !  ----------------------------------------
293      IF( ln_fechem ) THEN
[5385]294          biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 )
[3446]295      ELSE
[5385]296          biron(:,:,:) = trb(:,:,:,jpfer) 
[3446]297      ENDIF
[3443]298
299      !  Output of some diagnostics variables
300      !     ---------------------------------
[5385]301      IF( lk_iomput .AND. knt == nrdttrc ) THEN
[4996]302         IF( iom_use("Fe3")    )  CALL iom_put("Fe3"    , zFe3   (:,:,:)       * tmask(:,:,:) )   ! Fe3+
303         IF( iom_use("FeL1")   )  CALL iom_put("FeL1"   , zFeL1  (:,:,:)       * tmask(:,:,:) )   ! FeL1
304         IF( iom_use("TL1")    )  CALL iom_put("TL1"    , zTL1   (:,:,:)       * tmask(:,:,:) )   ! TL1
305         IF( iom_use("Totlig") )  CALL iom_put("Totlig" , ztotlig(:,:,:)       * tmask(:,:,:) )   ! TL
306         IF( iom_use("Biron")  )  CALL iom_put("Biron"  , biron  (:,:,:) * 1e9 * tmask(:,:,:) )   ! biron
307         IF( ln_fechem ) THEN
308            IF( iom_use("Fe2")  ) CALL iom_put("Fe2"    , zFe2   (:,:,:)       * tmask(:,:,:) )   ! Fe2+
309            IF( iom_use("FeL2") ) CALL iom_put("FeL2"   , zFeL2  (:,:,:)       * tmask(:,:,:) )   ! FeL2
310            IF( iom_use("FeP")  ) CALL iom_put("FeP"    , zFeP   (:,:,:)       * tmask(:,:,:) )   ! FeP
311            IF( iom_use("TL2")  ) CALL iom_put("TL2"    , zTL2   (:,:,:)       * tmask(:,:,:) )   ! TL2
[3443]312         ENDIF
313      ENDIF
314
315      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
[3449]316         WRITE(charout, FMT="('fechem')")
[3443]317         CALL prt_ctl_trc_info(charout)
318         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
319      ENDIF
320      !
[3448]321                       CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig )
322      IF( ln_fechem )  CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP )
[3443]323      !
324      IF( nn_timing == 1 )  CALL timing_stop('p4z_fechem')
325      !
326   END SUBROUTINE p4z_fechem
327
328
329   SUBROUTINE p4z_fechem_init
330      !!----------------------------------------------------------------------
331      !!                  ***  ROUTINE p4z_fechem_init  ***
332      !!
333      !! ** Purpose :   Initialization of iron chemistry parameters
334      !!
335      !! ** Method  :   Read the nampisfer namelist and check the parameters
336      !!      called at the first timestep
337      !!
338      !! ** input   :   Namelist nampisfer
339      !!
340      !!----------------------------------------------------------------------
341      NAMELIST/nampisfer/ ln_fechem, ln_ligvar, xlam1, xlamdust, ligand 
[4147]342      INTEGER :: ios                 ! Local integer output status for namelist read
[3443]343
[4147]344      REWIND( numnatp_ref )              ! Namelist nampisfer in reference namelist : Pisces iron chemistry
345      READ  ( numnatp_ref, nampisfer, IOSTAT = ios, ERR = 901)
346901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in reference namelist', lwp )
[3443]347
[4147]348      REWIND( numnatp_cfg )              ! Namelist nampisfer in configuration namelist : Pisces iron chemistry
349      READ  ( numnatp_cfg, nampisfer, IOSTAT = ios, ERR = 902 )
350902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in configuration namelist', lwp )
[4624]351      IF(lwm) WRITE ( numonp, nampisfer )
[4147]352
[3443]353      IF(lwp) THEN                         ! control print
354         WRITE(numout,*) ' '
355         WRITE(numout,*) ' Namelist parameters for Iron chemistry, nampisfer'
356         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
357         WRITE(numout,*) '    enable complex iron chemistry scheme      ln_fechem =', ln_fechem
358         WRITE(numout,*) '    variable concentration of ligand          ln_ligvar =', ln_ligvar
359         WRITE(numout,*) '    scavenging rate of Iron                   xlam1     =', xlam1
360         WRITE(numout,*) '    scavenging rate of Iron by dust           xlamdust  =', xlamdust
361         WRITE(numout,*) '    ligand concentration in the ocean         ligand    =', ligand
362      ENDIF
363      !
364      IF( ln_fechem ) THEN
365         ! initialization of some constants used by the complexe chemistry scheme
366         ! ----------------------------------------------------------------------
[3446]367         spd = 3600. * 24.
[3443]368         con = 1.E9
369         ! LIGAND KINETICS (values from Witter et al. 2000)
[3461]370         ! Weak (L2) ligands
371         ! Phaeophytin
372         kl2 = 12.2E5  * spd / con
373         kb2 = 12.3E-6 * spd
374         ! Strong (L1) ligands
375         ! Saccharides
376         ! kl1 = 12.2E5  * spd / con
377         ! kb1 = 12.3E-6 * spd
378         ! DFOB-
379         kl1 = 19.6e5  * spd / con
380         kb1 = 1.5e-6  * spd
[3443]381         ! pcp and remin of Fe3p
382         ks  = 0.075
383         kpr = 0.05
[3446]384         ! thermal reduction of Fe3
385         kth = 0.0048 * 24.
[3461]386         !
[3443]387      ENDIF
388      !
389   END SUBROUTINE p4z_fechem_init
390
391#else
392   !!======================================================================
393   !!  Dummy module :                                   No PISCES bio-model
394   !!======================================================================
395CONTAINS
396   SUBROUTINE p4z_fechem                    ! Empty routine
397   END SUBROUTINE p4z_fechem
398#endif 
399
400   !!======================================================================
401END MODULE p4zfechem
Note: See TracBrowser for help on using the repository browser.