p4zfechem.F90 20 KB

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