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/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z – NEMO

source: branches/CNRS/dev_r4826_PISCES_QUOTA/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 @ 5288

Last change on this file since 5288 was 5288, checked in by aumont, 9 years ago

various bug fixes and updates of PISCES quota

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