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

source: branches/UKMO/dev_r10171_test_crs_AMM7/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zfechem.F90 @ 10207

Last change on this file since 10207 was 10207, checked in by cmao, 6 years ago

remove svn keyword

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