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/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z – NEMO

source: branches/2016/dev_r6519_HPC_4/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 @ 7037

Last change on this file since 7037 was 7037, checked in by mocavero, 8 years ago

ORCA2_LIM_PISCES hybrid version update

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