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/2015/dev_r5776_UKMO2_OBS_efficiency_improvs/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z – NEMO

source: branches/2015/dev_r5776_UKMO2_OBS_efficiency_improvs/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 @ 6041

Last change on this file since 6041 was 6041, checked in by timgraham, 8 years ago

Merged head of trunk into branch

File size: 19.8 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
[6041]41   !! * Substitutions
42#  include "domzgr_substitute.h90"
[3443]43   !!----------------------------------------------------------------------
44   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
45   !! $Id: p4zrem.F90 3160 2011-11-20 14:27:18Z cetlod $
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         ! ------------------------------------------------------------
115         DO jk = 1, jpkm1
116            DO jj = 1, jpj
117               DO ji = 1, jpi
[3461]118                  ! Calculate ligand concentrations : assume 2/3rd of excess goes to
119                  ! strong ligands (L1) and 1/3rd to weak ligands (L2)
[3446]120                  ztligand       = ztotlig(ji,jj,jk) - ligand * 1E9
[3461]121                  zTL1(ji,jj,jk) =                0.000001 + 0.67 * ztligand
122                  zTL2(ji,jj,jk) = ligand * 1E9 - 0.000001 + 0.33 * ztligand
[3443]123                  ! ionic strength from Millero et al. 1987
124                  zionic = 19.9201 * tsn(ji,jj,jk,jp_sal) / ( 1000. - 1.00488 * tsn(ji,jj,jk,jp_sal) + rtrn )
125                  zph    = -LOG10( MAX( hi(ji,jj,jk), rtrn) )
[5385]126                  zoxy   = trb(ji,jj,jk,jpoxy) * ( rhop(ji,jj,jk) / 1.e3 )
[3461]127                  ! Fe2+ oxydation rate from Santana-Casiano et al. (2005)
[4153]128                  zkox   = 35.407 - 6.7109 * zph + 0.5342 * zph * zph - 5362.6 / ( tsn(ji,jj,jk,jp_tem) + 273.15 )  &
[3461]129                    &    - 0.04406 * SQRT( tsn(ji,jj,jk,jp_sal) ) - 0.002847 * tsn(ji,jj,jk,jp_sal)
130                  zkox   = ( 10.** zkox ) * spd
131                  zkox   = zkox * MAX( 1.e-6, zoxy) / ( chemo2(ji,jj,jk) + rtrn )
[3443]132                  ! PHOTOREDUCTION of complexed iron : Tagliabue and Arrigo (2006)
[3461]133                  zkph2 = MAX( 0., 15. * etot(ji,jj,jk) / ( etot(ji,jj,jk) + 2. ) )
134                  zkph1 = zkph2 / 5.
[3443]135                  ! pass the dfe concentration from PISCES
[5385]136                  ztfe = trb(ji,jj,jk,jpfer) * 1e9
[3443]137                  ! ----------------------------------------------------------
138                  ! ANALYTICAL SOLUTION OF ROOTS OF THE FE3+ EQUATION
139                  ! As shown in Tagliabue and Voelker (2009), Fe3+ is the root of a 3rd order polynom.
140                  ! ----------------------------------------------------------
141                  ! calculate some parameters
142                  za = 1 + ks / kpr
[3446]143                  zb = 1 + ( zkph1 + kth ) / ( zkox + rtrn )
[3443]144                  zc = 1 + zkph2 / ( zkox + rtrn )
[3446]145                  zkappa1 = ( kb1 + zkph1 + kth ) / kl1
146                  zkappa2 = ( kb2 + zkph2 ) / kl2
[3443]147                  za2 = zTL1(ji,jj,jk) * zb / za + zTL2(ji,jj,jk) * zc / za + zkappa1 + zkappa2 - ztfe / za
148                  za1 = zkappa2 * zTL1(ji,jj,jk) * zb / za + zkappa1 * zTL2(ji,jj,jk) * zc / za &
149                      & + zkappa1 * zkappa2 - ( zkappa1 + zkappa2 ) * ztfe / za
150                  za0 = -zkappa1 * zkappa2 * ztfe / za
151                  zp  = za1 - za2 * za2 / 3.
152                  zq  = za2 * za2 * za2 * 2. / 27. - za2 * za1 / 3. + za0
153                  zp3 = zp / 3.
154                  zq2 = zq / 2.
155                  zd  = zp3 * zp3 * zp3 + zq2 * zq2
156                  zr  = zq / ABS( zq ) * SQRT( ABS( zp ) / 3. )
157                  ! compute the roots
158                  IF( zp > 0.) THEN
[3450]159                     ! zphi = ASINH( zq / ( 2. * zr * zr * zr ) )
160                     zphi =  zq / ( 2. * zr * zr * zr ) 
[3461]161                     zphi = LOG( zphi + SQRT( zphi * zphi + 1 ) )  ! asinh(x) = log(x + sqrt(x^2+1))
[3443]162                     zxs  = -2. * zr * SINH( zphi / 3. ) - za1 / 3.
163                  ELSE
164                     IF( zd > 0. ) THEN
165                        zfff = MAX( 1., zq / ( 2. * zr * zr * zr ) )
[3461]166                        ! zphi = ACOSH( zfff )
167                        zphi = LOG( zfff + SQRT( zfff * zfff - 1 ) )  ! acosh(x) = log(x + sqrt(x^2-1))
[3443]168                        zxs = -2. * zr * COSH( zphi / 3. ) - za1 / 3.
169                     ELSE
[3461]170                        zfff = MIN( 1., zq / ( 2. * zr * zr * zr ) )
[3456]171                        zphi = ACOS( zfff )
[3443]172                        DO jic = 1, 3
173                           zfunc = -2 * zr * COS( zphi / 3. + 2. * FLOAT( jic - 1 ) * rpi / 3. ) - za2 / 3.
174                           IF( zfunc > 0. .AND. zfunc <= ztfe)  zxs = zfunc
175                        END DO
176                     ENDIF
177                  ENDIF
178                  ! solve for the other Fe species
179                  zFe3(ji,jj,jk) = MAX( 0., zxs ) 
180                  zFep(ji,jj,jk) = MAX( 0., ( ks * zFe3(ji,jj,jk) / kpr ) )
[3448]181                  zkappa2 = ( kb2 + zkph2 ) / kl2
182                  zFeL2(ji,jj,jk) = MAX( 0., ( zFe3(ji,jj,jk) * zTL2(ji,jj,jk) ) / ( zkappa2 + zFe3(ji,jj,jk) ) )
183                  zFeL1(ji,jj,jk) = MAX( 0., ( ztfe / zb - za / zb * zFe3(ji,jj,jk) - zc / zb * zFeL2(ji,jj,jk) ) )
184                  zFe2 (ji,jj,jk) = MAX( 0., ( ( zkph1 * zFeL1(ji,jj,jk) + zkph2 * zFeL2(ji,jj,jk) ) / zkox ) )
[3443]185               END DO
186            END DO
187         END DO
188      ELSE
189         ! ------------------------------------------------------------
190         ! OLD FE CHEMISTRY ROUTINE from Aumont and Bopp (2006)
191         ! This model is based on one ligand and Fe'
192         ! Chemistry is supposed to be fast enough to be at equilibrium
193         ! ------------------------------------------------------------
194         DO jk = 1, jpkm1
195            DO jj = 1, jpj
196               DO ji = 1, jpi
197                  zTL1(ji,jj,jk) = ztotlig(ji,jj,jk)
198                  zkeq           = fekeq(ji,jj,jk)
199                  zfesatur       = zTL1(ji,jj,jk) * 1E-9
[5385]200                  ztfe           = trb(ji,jj,jk,jpfer) 
[3443]201                  ! Fe' is the root of a 2nd order polynom
[3448]202                  zFe3 (ji,jj,jk) = ( -( 1. + zfesatur * zkeq - zkeq * ztfe )               &
[3443]203                     &             + SQRT( ( 1. + zfesatur * zkeq - zkeq * ztfe )**2       &
204                     &               + 4. * ztfe * zkeq) ) / ( 2. * zkeq )
[3448]205                  zFe3 (ji,jj,jk) = zFe3(ji,jj,jk) * 1E9
[5385]206                  zFeL1(ji,jj,jk) = MAX( 0., trb(ji,jj,jk,jpfer) * 1E9 - zFe3(ji,jj,jk) )
[3443]207              END DO
208            END DO
209         END DO
210         !
211      ENDIF
[6041]212      !
[3531]213      zdust = 0.         ! if no dust available
[6041]214      !
[3443]215      DO jk = 1, jpkm1
216         DO jj = 1, jpj
217            DO ji = 1, jpi
218               zstep = xstep
219# if defined key_degrad
220               zstep = zstep * facvol(ji,jj,jk)
221# endif
222               ! Scavenging rate of iron. This scavenging rate depends on the load of particles of sea water.
223               ! This parameterization assumes a simple second order kinetics (k[Particles][Fe]).
224               ! Scavenging onto dust is also included as evidenced from the DUNE experiments.
225               ! --------------------------------------------------------------------------------------
[3446]226               IF( ln_fechem ) THEN
[4521]227                  zfeequi = ( zFe3(ji,jj,jk) + zFe2(ji,jj,jk) + zFeP(ji,jj,jk) ) * 1E-9
[3446]228                  zfecoll = ( 0.3 * zFeL1(ji,jj,jk) + 0.5 * zFeL2(ji,jj,jk) ) * 1E-9
229               ELSE
230                  zfeequi = zFe3(ji,jj,jk) * 1E-9 
231                  zfecoll = 0.5 * zFeL1(ji,jj,jk) * 1E-9
232               ENDIF
[3443]233#if defined key_kriest
[5385]234               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 
[3443]235#else
[5385]236               ztrc   = ( trb(ji,jj,jk,jppoc) + trb(ji,jj,jk,jpgoc) + trb(ji,jj,jk,jpcal) + trb(ji,jj,jk,jpgsi) ) * 1.e6 
[3443]237#endif
[4800]238               IF( ln_dust )  zdust  = dust(ji,jj) / ( wdust / rday ) * tmask(ji,jj,jk) ! dust in kg/m2/s
[3443]239               zlam1b = 3.e-5 + xlamdust * zdust + xlam1 * ztrc
240               zscave = zfeequi * zlam1b * zstep
241
242               ! Compute the different ratios for scavenging of iron
243               ! to later allocate scavenged iron to the different organic pools
244               ! ---------------------------------------------------------
[5385]245               zdenom1 = xlam1 * trb(ji,jj,jk,jppoc) / zlam1b
[3780]246#if ! defined key_kriest
[5385]247               zdenom2 = xlam1 * trb(ji,jj,jk,jpgoc) / zlam1b
[3443]248#endif
249
250               !  Increased scavenging for very high iron concentrations found near the coasts
251               !  due to increased lithogenic particles and let say it is unknown processes (precipitation, ...)
252               !  -----------------------------------------------------------
[3475]253               zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. )
254               zlamfac = MIN( 1.  , zlamfac )
255               zdep    = MIN( 1., 1000. / fsdept(ji,jj,jk) )
[5385]256               zlam1b  = xlam1 * MAX( 0.e0, ( trb(ji,jj,jk,jpfer) * 1.e9 - ztotlig(ji,jj,jk) ) )
257               zcoag   = zfeequi * zlam1b * zstep + 1E-4 * ( 1. - zlamfac ) * zdep * zstep * trb(ji,jj,jk,jpfer)
[3443]258
259               !  Compute the coagulation of colloidal iron. This parameterization
260               !  could be thought as an equivalent of colloidal pumping.
261               !  It requires certainly some more work as it is very poorly constrained.
262               !  ----------------------------------------------------------------
[5385]263               zlam1a  = ( 0.369  * 0.3 * trb(ji,jj,jk,jpdoc) + 102.4  * trb(ji,jj,jk,jppoc) ) * xdiss(ji,jj,jk)    &
264                   &   + ( 114.   * 0.3 * trb(ji,jj,jk,jpdoc) + 5.09E3 * trb(ji,jj,jk,jppoc) )
[3475]265               zaggdfea = zlam1a * zstep * zfecoll
[3443]266#if defined key_kriest
[3446]267               zaggdfeb = 0.
268               !
269               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag
270               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea + zaggdfeb
[3443]271#else
[5385]272               zlam1b = 3.53E3 *   trb(ji,jj,jk,jpgoc) * xdiss(ji,jj,jk)
[3446]273               zaggdfeb = zlam1b * zstep * zfecoll
274               !
275               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfea - zaggdfeb - zcoag
276               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1 + zaggdfea
277               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2 + zaggdfeb
[3443]278#endif
279            END DO
280         END DO
281      END DO
282      !
[3446]283      !  Define the bioavailable fraction of iron
284      !  ----------------------------------------
285      IF( ln_fechem ) THEN
[5385]286          biron(:,:,:) = MAX( 0., trb(:,:,:,jpfer) - zFeP(:,:,:) * 1E-9 )
[3446]287      ELSE
[5385]288          biron(:,:,:) = trb(:,:,:,jpfer) 
[3446]289      ENDIF
[3443]290
291      !  Output of some diagnostics variables
292      !     ---------------------------------
[5385]293      IF( lk_iomput .AND. knt == nrdttrc ) THEN
[4996]294         IF( iom_use("Fe3")    )  CALL iom_put("Fe3"    , zFe3   (:,:,:)       * tmask(:,:,:) )   ! Fe3+
295         IF( iom_use("FeL1")   )  CALL iom_put("FeL1"   , zFeL1  (:,:,:)       * tmask(:,:,:) )   ! FeL1
296         IF( iom_use("TL1")    )  CALL iom_put("TL1"    , zTL1   (:,:,:)       * tmask(:,:,:) )   ! TL1
297         IF( iom_use("Totlig") )  CALL iom_put("Totlig" , ztotlig(:,:,:)       * tmask(:,:,:) )   ! TL
298         IF( iom_use("Biron")  )  CALL iom_put("Biron"  , biron  (:,:,:) * 1e9 * tmask(:,:,:) )   ! biron
299         IF( ln_fechem ) THEN
300            IF( iom_use("Fe2")  ) CALL iom_put("Fe2"    , zFe2   (:,:,:)       * tmask(:,:,:) )   ! Fe2+
301            IF( iom_use("FeL2") ) CALL iom_put("FeL2"   , zFeL2  (:,:,:)       * tmask(:,:,:) )   ! FeL2
302            IF( iom_use("FeP")  ) CALL iom_put("FeP"    , zFeP   (:,:,:)       * tmask(:,:,:) )   ! FeP
303            IF( iom_use("TL2")  ) CALL iom_put("TL2"    , zTL2   (:,:,:)       * tmask(:,:,:) )   ! TL2
[3443]304         ENDIF
305      ENDIF
306
307      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
[3449]308         WRITE(charout, FMT="('fechem')")
[3443]309         CALL prt_ctl_trc_info(charout)
310         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
311      ENDIF
312      !
[3448]313                       CALL wrk_dealloc( jpi, jpj, jpk, zFe3, zFeL1, zTL1, ztotlig )
314      IF( ln_fechem )  CALL wrk_dealloc( jpi, jpj, jpk, zFe2, zFeL2, zTL2, zFeP )
[3443]315      !
316      IF( nn_timing == 1 )  CALL timing_stop('p4z_fechem')
317      !
318   END SUBROUTINE p4z_fechem
319
320
321   SUBROUTINE p4z_fechem_init
322      !!----------------------------------------------------------------------
323      !!                  ***  ROUTINE p4z_fechem_init  ***
324      !!
325      !! ** Purpose :   Initialization of iron chemistry parameters
326      !!
327      !! ** Method  :   Read the nampisfer namelist and check the parameters
328      !!      called at the first timestep
329      !!
330      !! ** input   :   Namelist nampisfer
331      !!
332      !!----------------------------------------------------------------------
333      NAMELIST/nampisfer/ ln_fechem, ln_ligvar, xlam1, xlamdust, ligand 
[4147]334      INTEGER :: ios                 ! Local integer output status for namelist read
[3443]335
[4147]336      REWIND( numnatp_ref )              ! Namelist nampisfer in reference namelist : Pisces iron chemistry
337      READ  ( numnatp_ref, nampisfer, IOSTAT = ios, ERR = 901)
338901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in reference namelist', lwp )
[3443]339
[4147]340      REWIND( numnatp_cfg )              ! Namelist nampisfer in configuration namelist : Pisces iron chemistry
341      READ  ( numnatp_cfg, nampisfer, IOSTAT = ios, ERR = 902 )
342902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisfer in configuration namelist', lwp )
[4624]343      IF(lwm) WRITE ( numonp, nampisfer )
[4147]344
[3443]345      IF(lwp) THEN                         ! control print
346         WRITE(numout,*) ' '
347         WRITE(numout,*) ' Namelist parameters for Iron chemistry, nampisfer'
348         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
349         WRITE(numout,*) '    enable complex iron chemistry scheme      ln_fechem =', ln_fechem
350         WRITE(numout,*) '    variable concentration of ligand          ln_ligvar =', ln_ligvar
351         WRITE(numout,*) '    scavenging rate of Iron                   xlam1     =', xlam1
352         WRITE(numout,*) '    scavenging rate of Iron by dust           xlamdust  =', xlamdust
353         WRITE(numout,*) '    ligand concentration in the ocean         ligand    =', ligand
354      ENDIF
355      !
356      IF( ln_fechem ) THEN
357         ! initialization of some constants used by the complexe chemistry scheme
358         ! ----------------------------------------------------------------------
[3446]359         spd = 3600. * 24.
[3443]360         con = 1.E9
361         ! LIGAND KINETICS (values from Witter et al. 2000)
[3461]362         ! Weak (L2) ligands
363         ! Phaeophytin
364         kl2 = 12.2E5  * spd / con
365         kb2 = 12.3E-6 * spd
366         ! Strong (L1) ligands
367         ! Saccharides
368         ! kl1 = 12.2E5  * spd / con
369         ! kb1 = 12.3E-6 * spd
370         ! DFOB-
371         kl1 = 19.6e5  * spd / con
372         kb1 = 1.5e-6  * spd
[3443]373         ! pcp and remin of Fe3p
374         ks  = 0.075
375         kpr = 0.05
[3446]376         ! thermal reduction of Fe3
377         kth = 0.0048 * 24.
[3461]378         !
[3443]379      ENDIF
380      !
381   END SUBROUTINE p4z_fechem_init
382
383#else
384   !!======================================================================
385   !!  Dummy module :                                   No PISCES bio-model
386   !!======================================================================
387CONTAINS
388   SUBROUTINE p4z_fechem                    ! Empty routine
389   END SUBROUTINE p4z_fechem
390#endif 
391
392   !!======================================================================
393END MODULE p4zfechem
Note: See TracBrowser for help on using the repository browser.