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 @ 7525

Last change on this file since 7525 was 7525, checked in by mocavero, 7 years ago

changes after review

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