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.
p4zlim.F90 in NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z – NEMO

source: NEMO/branches/2019/dev_r11708_aumont_PISCES_QUOTA/src/TOP/PISCES/P4Z/p4zlim.F90 @ 14276

Last change on this file since 14276 was 14276, checked in by aumont, 3 years ago

numerous updates to PISCES, PISCES-QUOTA and the sediment module

File size: 22.2 KB
Line 
1MODULE p4zlim
2   !!======================================================================
3   !!                         ***  MODULE p4zlim  ***
4   !! TOP :   Computes the nutrient limitation terms of phytoplankton
5   !!======================================================================
6   !! History :   1.0  !  2004     (O. Aumont) Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!             3.4  !  2011-04  (O. Aumont, C. Ethe) Limitation for iron modelled in quota
9   !!----------------------------------------------------------------------
10   !!   p4z_lim        :   Compute the nutrients limitation terms
11   !!   p4z_lim_init   :   Read the namelist
12   !!----------------------------------------------------------------------
13   USE oce_trc         ! Shared ocean-passive tracers variables
14   USE trc             ! Tracers defined
15   USE sms_pisces      ! PISCES variables
16   USE iom             ! I/O manager
17
18   IMPLICIT NONE
19   PRIVATE
20
21   PUBLIC p4z_lim           ! called in p4zbio.F90
22   PUBLIC p4z_lim_init      ! called in trcsms_pisces.F90
23   PUBLIC p4z_lim_alloc     ! called in trcini_pisces.F90
24
25   !! * Shared module variables
26   REAL(wp), PUBLIC ::  concnno3    !:  NO3, PO4 half saturation   
27   REAL(wp), PUBLIC ::  concdno3    !:  Phosphate half saturation for diatoms 
28   REAL(wp), PUBLIC ::  concnnh4    !:  NH4 half saturation for nanophyto 
29   REAL(wp), PUBLIC ::  concdnh4    !:  NH4 half saturation for diatoms
30   REAL(wp), PUBLIC ::  concnfer    !:  Iron half saturation for nanophyto
31   REAL(wp), PUBLIC ::  concdfer    !:  Iron half saturation for diatoms 
32   REAL(wp), PUBLIC ::  concbno3    !:  NO3 half saturation  for bacteria
33   REAL(wp), PUBLIC ::  concbnh4    !:  NH4 half saturation for bacteria
34   REAL(wp), PUBLIC ::  xsizedia    !:  Minimum size criteria for diatoms
35   REAL(wp), PUBLIC ::  xsizephy    !:  Minimum size criteria for nanophyto
36   REAL(wp), PUBLIC ::  xsizern     !:  Size ratio for nanophytoplankton
37   REAL(wp), PUBLIC ::  xsizerd     !:  Size ratio for diatoms
38   REAL(wp), PUBLIC ::  xksi1       !:  half saturation constant for Si uptake
39   REAL(wp), PUBLIC ::  xksi2       !:  half saturation constant for Si/C
40   REAL(wp), PUBLIC ::  xkdoc       !:  2nd half-sat. of DOC remineralization 
41   REAL(wp), PUBLIC ::  concbfe     !:  Fe half saturation for bacteria
42   REAL(wp), PUBLIC ::  oxymin      !:  half saturation constant for anoxia
43   REAL(wp), PUBLIC ::  qnfelim     !:  optimal Fe quota for nanophyto
44   REAL(wp), PUBLIC ::  qdfelim     !:  optimal Fe quota for diatoms
45   REAL(wp), PUBLIC ::  caco3r      !:  mean rainratio
46
47   !!* Phytoplankton limitation terms
48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanono3   !: Nanophyto limitation by NO3
49   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatno3   !: Diatoms limitation by NO3
50   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanonh4   !: Nanophyto limitation by NH4
51   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatnh4   !:  Diatoms limitation by NH4
52   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanopo4   !: Nanophyto limitation by PO4
53   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatpo4   !: Diatoms limitation by PO4
54   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimphy    !: Nutrient limitation term of nanophytoplankton
55   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdia    !: Nutrient limitation term of diatoms
56   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimnfe    !: Nanophyto limitation by Iron
57   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimdfe    !: Diatoms limitation by iron
58   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimsi     !: Diatoms limitation by Si
59   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimbac    !: Bacterial limitation term
60   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xlimbacl   !: Bacterial limitation term
61   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concdfe    !: Limitation of diatoms uptake of Fe
62   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   concnfe    !: Limitation of Nano uptake of Fe
63   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xnanofer   !: Limitation of Fe uptake by nanophyto
64   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xdiatfer   !: Limitation of Fe uptake by diatoms
65   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:)  ::   xqfuncfecd, xqfuncfecn
66
67   ! Coefficient for iron limitation following Flynn and Hipkin (1999)
68   REAL(wp) ::  xcoef1   = 0.0016  / 55.85 
69   REAL(wp) ::  xcoef2   = 1.21E-5 * 14. / 55.85 / 7.625 * 0.5 * 1.5
70   REAL(wp) ::  xcoef3   = 1.15E-4 * 14. / 55.85 / 7.625 * 0.5 
71
72   !!----------------------------------------------------------------------
73   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
74   !! $Id: p4zlim.F90 10069 2018-08-28 14:12:24Z nicolasmartin $
75   !! Software governed by the CeCILL license (see ./LICENSE)
76   !!----------------------------------------------------------------------
77CONTAINS
78
79   SUBROUTINE p4z_lim( kt, knt )
80      !!---------------------------------------------------------------------
81      !!                     ***  ROUTINE p4z_lim  ***
82      !!
83      !! ** Purpose :   Compute the co-limitations by the various nutrients
84      !!                for the various phytoplankton species
85      !!
86      !! ** Method  : - Limitation follows the Liebieg law of the minimum
87      !!              - Monod approach for N, P and Si. Quota approach
88      !!                for Iron
89      !!---------------------------------------------------------------------
90      INTEGER, INTENT(in)  :: kt, knt
91      !
92      INTEGER  ::   ji, jj, jk
93      REAL(wp) ::   zlim1, zlim2, zlim3, zlim4, zcoef
94      REAL(wp) ::   z1_trbdia, z1_trbphy, ztem1, ztem2, zetot1, zetot2
95      REAL(wp) ::   zdenom, zratio, zironmin, zbactno3, zbactnh4
96      REAL(wp) ::   zconc1d, zconc1dnh4, zconc0n, zconc0nnh4   
97      REAL(wp) ::   fananof, fadiatf, znutlim, zfalim
98      REAL(wp) ::   znutlimtot, zlimno3, zlimnh4, zbiron
99      !!---------------------------------------------------------------------
100      !
101      IF( ln_timing )   CALL timing_start('p4z_lim')
102      !
103      sizena(:,:,:) = 1.0  ;  sizeda(:,:,:) = 1.0
104      !
105      DO jk = 1, jpkm1
106         DO jj = 1, jpj
107            DO ji = 1, jpi
108               ! Computation of a variable Ks of diatoms taking into account
109               ! that increasing biomass is made of generally bigger cells
110               ! The allometric relationship is classical.
111               !------------------------------------------------------------
112               z1_trbphy   = 1. / ( trb(ji,jj,jk,jpphy) + rtrn )
113               z1_trbdia   = 1. / ( trb(ji,jj,jk,jpdia) + rtrn )
114
115               concnfe(ji,jj,jk) = concnfer * sizen(ji,jj,jk)**0.81
116               zconc0n           = concnno3 * sizen(ji,jj,jk)**0.81
117               zconc0nnh4        = concnnh4 * sizen(ji,jj,jk)**0.81
118
119               concdfe(ji,jj,jk) = concdfer * sized(ji,jj,jk)**0.81 
120               zconc1d           = concdno3 * sized(ji,jj,jk)**0.81 
121               zconc1dnh4        = concdnh4 * sized(ji,jj,jk)**0.81 
122
123               ! Computation of the optimal allocation parameters
124               ! Based on the different papers by Pahlow et al., and
125               ! Smith et al.
126               ! ---------------------------------------------------
127
128               ! Nanophytoplankton
129               zbiron = ( 75.0 * ( 1.0 - plig(ji,jj,jk) ) + plig(ji,jj,jk) ) * biron(ji,jj,jk)
130               znutlim = zbiron / concnfe(ji,jj,jk)
131               fananof = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) )
132
133               ! Diatoms
134               znutlim = zbiron / concdfe(ji,jj,jk)
135               fadiatf = MAX(0.01, MIN(0.99, 1. / ( SQRT(znutlim) + 1.) ) )
136
137               ! Michaelis-Menten Limitation term by nutrients of
138               ! heterotrophic bacteria
139               ! -------------------------------------------------
140               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( concbno3 + trb(ji,jj,jk,jpnh4) )
141               zlimno3 = trb(ji,jj,jk,jpno3) / ( concbno3 + trb(ji,jj,jk,jpno3) )
142               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( concbno3 + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )
143               zbactnh4 = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )
144               zbactno3 = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )
145               !
146               zlim1    = zbactno3 + zbactnh4
147               zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concbnh4 )
148               zlim3    = trb(ji,jj,jk,jpfer) / ( concbfe + trb(ji,jj,jk,jpfer) )
149               zlim4    = trb(ji,jj,jk,jpdoc) / ( xkdoc   + trb(ji,jj,jk,jpdoc) )
150               ! Xlimbac is used for DOC solubilization whereas xlimbacl
151               ! is used for all the other bacterial-dependent terms
152               ! -------------------------------------------------------
153               xlimbacl(ji,jj,jk) = MIN( zlim1, zlim2, zlim3 )
154               xlimbac (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 ) * zlim4
155
156               ! Michaelis-Menten Limitation term by nutrients: Nanophyto
157               ! Optimal parameterization by Smith and Pahlow series of
158               ! papers is used. Optimal allocation is supposed independant
159               ! for all nutrients.
160               ! --------------------------------------------------------
161
162               ! Limitation of Fe uptake (Quota formalism)
163               zfalim = (1.-fananof) / fananof
164               xnanofer(ji,jj,jk) = (1. - fananof) * zbiron / ( zbiron + zfalim * concnfe(ji,jj,jk) )
165
166               ! Limitation of nanophytoplankton growth
167               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc0n + trb(ji,jj,jk,jpnh4) )
168               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc0n + trb(ji,jj,jk,jpno3) )
169               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zconc0n + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )
170               xnanonh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )
171               xnanono3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )
172               !
173               zlim1    = xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk)
174               zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc0nnh4 )
175               zratio   = trb(ji,jj,jk,jpnfe) * z1_trbphy 
176
177               ! The minimum iron quota depends on the size of PSU, respiration
178               ! and the reduction of nitrate following the parameterization
179               ! proposed by Flynn and Hipkin (1999)
180               zironmin = xcoef1 * trb(ji,jj,jk,jpnch) * z1_trbphy + xcoef2 * zlim1 + xcoef3 * xnanono3(ji,jj,jk)
181               xqfuncfecn(ji,jj,jk) = zironmin + qnfelim
182               zlim3    = MAX( 0.,( zratio - zironmin ) / qnfelim )
183               xnanopo4(ji,jj,jk) = zlim2
184               xlimnfe (ji,jj,jk) = MIN( 1., zlim3 )
185               xlimphy (ji,jj,jk) = MIN( zlim1, zlim2, zlim3 )
186               
187               !   Michaelis-Menten Limitation term by nutrients : Diatoms
188               !   -------------------------------------------------------
189               ! Limitation of Fe uptake (Quota formalism)
190               zfalim = (1.-fadiatf) / fadiatf
191               xdiatfer(ji,jj,jk) = (1. - fadiatf) * zbiron / ( zbiron + zfalim * concdfe(ji,jj,jk) )
192
193               ! Limitation of diatoms growth
194               zlimnh4 = trb(ji,jj,jk,jpnh4) / ( zconc1d + trb(ji,jj,jk,jpnh4) )
195               zlimno3 = trb(ji,jj,jk,jpno3) / ( zconc1d + trb(ji,jj,jk,jpno3) )
196               znutlimtot = ( trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) ) / ( zconc1d + trb(ji,jj,jk,jpnh4) + trb(ji,jj,jk,jpno3) )
197               xdiatnh4(ji,jj,jk) = znutlimtot * 5.0 * zlimnh4 / ( zlimno3 + 5.0 * zlimnh4 + rtrn ) 
198               xdiatno3(ji,jj,jk) = znutlimtot * zlimno3 / ( zlimno3 + 5.0 * zlimnh4 + rtrn )
199               !
200               zlim1    = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk)
201               zlim2    = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + zconc1dnh4  )
202               zlim3    = trb(ji,jj,jk,jpsil) / ( trb(ji,jj,jk,jpsil) + xksi(ji,jj) )
203               zratio   = trb(ji,jj,jk,jpdfe) * z1_trbdia
204
205               ! The minimum iron quota depends on the size of PSU, respiration
206               ! and the reduction of nitrate following the parameterization
207               ! proposed by Flynn and Hipkin (1999)
208               zironmin = xcoef1 * trb(ji,jj,jk,jpdch) * z1_trbdia + xcoef2 * zlim1 + xcoef3 * xdiatno3(ji,jj,jk)
209               xqfuncfecd(ji,jj,jk) = zironmin + qdfelim
210               zlim4    = MAX( 0., ( zratio - zironmin ) / qdfelim )
211               xdiatpo4(ji,jj,jk) = zlim2
212               xlimdfe (ji,jj,jk) = MIN( 1., zlim4 )
213               xlimdia (ji,jj,jk) = MIN( zlim1, zlim2, zlim3, zlim4 )
214               xlimsi  (ji,jj,jk) = MIN( zlim1, zlim2, zlim4 )
215           END DO
216         END DO
217      END DO
218
219      ! Size estimation of phytoplankton based on total biomass
220      ! Assumes that larger biomass implies addition of larger cells
221      ! ------------------------------------------------------------
222      DO jk = 1, jpkm1
223         DO jj = 1, jpj
224            DO ji = 1, jpi
225               zcoef = trb(ji,jj,jk,jpphy) - MIN(xsizephy, trb(ji,jj,jk,jpphy) )
226               sizena(ji,jj,jk) = 1. + ( xsizern -1.0 ) * zcoef / ( xsizephy + zcoef )
227               zcoef = trb(ji,jj,jk,jpdia) - MIN(xsizedia, trb(ji,jj,jk,jpdia) )
228               sizeda(ji,jj,jk) = 1. + ( xsizerd - 1.0 ) * zcoef / ( xsizedia + zcoef )
229
230            END DO
231         END DO
232      END DO
233
234
235      ! Compute the fraction of nanophytoplankton that is made of calcifiers
236      ! This is a purely adhoc formulation described in Aumont et al. (2015)
237      ! This fraction depends on nutrient limitation, light, temperature
238      ! --------------------------------------------------------------------
239      DO jk = 1, jpkm1
240         DO jj = 1, jpj
241            DO ji = 1, jpi
242               zlim1  = xnanonh4(ji,jj,jk) + xnanono3(ji,jj,jk) 
243               zlim2  = trb(ji,jj,jk,jppo4) / ( trb(ji,jj,jk,jppo4) + concnnh4 )
244               zlim3  = trb(ji,jj,jk,jpfer) / ( trb(ji,jj,jk,jpfer) +  6.E-11   )
245               ztem1  = MAX( 0., tsn(ji,jj,jk,jp_tem) + 1.8)
246               ztem2  = tsn(ji,jj,jk,jp_tem) - 10.
247               zetot1 = MAX( 0., etot_ndcy(ji,jj,jk) - 1.) / ( 4. + etot_ndcy(ji,jj,jk) ) 
248               zetot2 = 30. / ( 30.0 + etot_ndcy(ji,jj,jk) )
249
250               xfracal(ji,jj,jk) = caco3r * MIN( zlim1, zlim2, zlim3 )                  &
251                  &                       * ztem1 / ( 0.1 + ztem1 )                     &
252                  &                       * MAX( 1., trb(ji,jj,jk,jpphy) * 1.e6 / 2. )  &
253                  &                       * zetot1 * zetot2               &
254                  &                       * ( 1. + EXP(-ztem2 * ztem2 / 25. ) )         &
255                  &                       * MIN( 1., 50. / ( hmld(ji,jj) + rtrn ) )
256               xfracal(ji,jj,jk) = MIN( 0.8 , xfracal(ji,jj,jk) )
257               xfracal(ji,jj,jk) = MAX( 0.02, xfracal(ji,jj,jk) )
258            END DO
259         END DO
260      END DO
261      !
262      DO jk = 1, jpkm1
263         DO jj = 1, jpj
264            DO ji = 1, jpi
265               ! denitrification factor computed from O2 levels
266               ! This factor diagnoses below which level of O2 denitrification
267               ! is active
268               nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6  - trb(ji,jj,jk,jpoxy) )    &
269                  &                                / ( oxymin + trb(ji,jj,jk,jpoxy) )  )
270               nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) )
271               !
272               ! redox factor computed from NO3 levels
273               ! This factor diagnoses below which level of NO3 additional redox
274               ! reactions are taking place.
275               nitrfac2(ji,jj,jk) = MAX( 0.e0,       ( 1.E-6 - trb(ji,jj,jk,jpno3) )  &
276                  &                                / ( 1.E-6 + trb(ji,jj,jk,jpno3) ) )
277               nitrfac2(ji,jj,jk) = MIN( 1., nitrfac2(ji,jj,jk) )
278            END DO
279         END DO
280      END DO
281      !
282      IF( lk_iomput .AND. knt == nrdttrc ) THEN        ! save output diagnostics
283        IF( iom_use( "xfracal" ) )   CALL iom_put( "xfracal", xfracal(:,:,:) * tmask(:,:,:) )  ! Faction of nanophytoplankton that is calcifiers
284        IF( iom_use( "LNnut"   ) )   CALL iom_put( "LNnut"  , xlimphy(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term
285        IF( iom_use( "LDnut"   ) )   CALL iom_put( "LDnut"  , xlimdia(:,:,:) * tmask(:,:,:) )  ! Nutrient limitation term
286        IF( iom_use( "LNFe"    ) )   CALL iom_put( "LNFe"   , xlimnfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term
287        IF( iom_use( "LDFe"    ) )   CALL iom_put( "LDFe"   , xlimdfe(:,:,:) * tmask(:,:,:) )  ! Iron limitation term
288        IF( iom_use( "SIZEN"   ) )   CALL iom_put( "SIZEN"  , sizen(:,:,:) * tmask(:,:,:) )  ! Iron limitation term
289        IF( iom_use( "SIZED"   ) )   CALL iom_put( "SIZED"  , sized(:,:,:) * tmask(:,:,:) )  ! Iron limitation term
290      ENDIF
291      !
292      IF( ln_timing )   CALL timing_stop('p4z_lim')
293      !
294   END SUBROUTINE p4z_lim
295
296
297   SUBROUTINE p4z_lim_init
298      !!----------------------------------------------------------------------
299      !!                  ***  ROUTINE p4z_lim_init  ***
300      !!
301      !! ** Purpose :   Initialization of the nutrient limitation parameters
302      !!
303      !! ** Method  :   Read the namp4zlim namelist and check the parameters
304      !!      called at the first timestep (nittrc000)
305      !!
306      !! ** input   :   Namelist namp4zlim
307      !!
308      !!----------------------------------------------------------------------
309      INTEGER ::   ios   ! Local integer
310
311      ! Namelist block
312      NAMELIST/namp4zlim/ concnno3, concdno3, concnnh4, concdnh4, concnfer, concdfer, concbfe,   &
313         &                concbno3, concbnh4, xsizedia, xsizephy, xsizern, xsizerd,          & 
314         &                xksi1, xksi2, xkdoc, qnfelim, qdfelim, caco3r, oxymin
315      !!----------------------------------------------------------------------
316      !
317      IF(lwp) THEN
318         WRITE(numout,*)
319         WRITE(numout,*) 'p4z_lim_init : initialization of nutrient limitations'
320         WRITE(numout,*) '~~~~~~~~~~~~'
321      ENDIF
322      !
323      REWIND( numnatp_ref )              ! Namelist namp4zlim in reference namelist : Pisces nutrient limitation parameters
324      READ  ( numnatp_ref, namp4zlim, IOSTAT = ios, ERR = 901)
325901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namp4zlim in reference namelist' )
326      REWIND( numnatp_cfg )              ! Namelist namp4zlim in configuration namelist : Pisces nutrient limitation parameters
327      READ  ( numnatp_cfg, namp4zlim, IOSTAT = ios, ERR = 902 )
328902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namp4zlim in configuration namelist' )
329      IF(lwm) WRITE( numonp, namp4zlim )
330      !
331      IF(lwp) THEN                         ! control print
332         WRITE(numout,*) '   Namelist : namp4zlim'
333         WRITE(numout,*) '      mean rainratio                           caco3r    = ', caco3r
334         WRITE(numout,*) '      NO3 half saturation of nanophyto         concnno3  = ', concnno3
335         WRITE(numout,*) '      NO3 half saturation of diatoms           concdno3  = ', concdno3
336         WRITE(numout,*) '      NH4 half saturation for phyto            concnnh4  = ', concnnh4
337         WRITE(numout,*) '      NH4 half saturation for diatoms          concdnh4  = ', concdnh4
338         WRITE(numout,*) '      half saturation constant for Si uptake   xksi1     = ', xksi1
339         WRITE(numout,*) '      half saturation constant for Si/C        xksi2     = ', xksi2
340         WRITE(numout,*) '      half-sat. of DOC remineralization        xkdoc     = ', xkdoc
341         WRITE(numout,*) '      Iron half saturation for nanophyto       concnfer  = ', concnfer
342         WRITE(numout,*) '      Iron half saturation for diatoms         concdfer  = ', concdfer
343         WRITE(numout,*) '      size ratio for nanophytoplankton         xsizern   = ', xsizern
344         WRITE(numout,*) '      size ratio for diatoms                   xsizerd   = ', xsizerd
345         WRITE(numout,*) '      NO3 half saturation of bacteria          concbno3  = ', concbno3
346         WRITE(numout,*) '      NH4 half saturation for bacteria         concbnh4  = ', concbnh4
347         WRITE(numout,*) '      Minimum size criteria for diatoms        xsizedia  = ', xsizedia
348         WRITE(numout,*) '      Minimum size criteria for nanophyto      xsizephy  = ', xsizephy
349         WRITE(numout,*) '      Fe half saturation for bacteria          concbfe   = ', concbfe
350         WRITE(numout,*) '      halk saturation constant for anoxia       oxymin   =' , oxymin
351         WRITE(numout,*) '      optimal Fe quota for nano.               qnfelim   = ', qnfelim
352         WRITE(numout,*) '      Optimal Fe quota for diatoms             qdfelim   = ', qdfelim
353      ENDIF
354      !
355      nitrfac (:,:,:) = 0._wp
356      !
357   END SUBROUTINE p4z_lim_init
358
359
360   INTEGER FUNCTION p4z_lim_alloc()
361      !!----------------------------------------------------------------------
362      !!                     ***  ROUTINE p5z_lim_alloc  ***
363      !!
364      !            Allocation of the arrays used in this module
365      !!----------------------------------------------------------------------
366      USE lib_mpp , ONLY: ctl_stop
367      !!----------------------------------------------------------------------
368
369      !*  Biological arrays for phytoplankton growth
370      ALLOCATE( xnanono3(jpi,jpj,jpk), xdiatno3(jpi,jpj,jpk),       &
371         &      xnanonh4(jpi,jpj,jpk), xdiatnh4(jpi,jpj,jpk),       &
372         &      xnanopo4(jpi,jpj,jpk), xdiatpo4(jpi,jpj,jpk),       &
373         &      xnanofer(jpi,jpj,jpk), xdiatfer(jpi,jpj,jpk),       &
374         &      xlimphy (jpi,jpj,jpk), xlimdia (jpi,jpj,jpk),       &
375         &      xlimnfe (jpi,jpj,jpk), xlimdfe (jpi,jpj,jpk),       &
376         &      xlimbac (jpi,jpj,jpk), xlimbacl(jpi,jpj,jpk),       &
377         &      concnfe (jpi,jpj,jpk), concdfe (jpi,jpj,jpk),       &
378         &      xqfuncfecn(jpi,jpj,jpk), xqfuncfecd(jpi,jpj,jpk),   &
379         &      xlimsi  (jpi,jpj,jpk), STAT=p4z_lim_alloc )
380      !
381      IF( p4z_lim_alloc /= 0 ) CALL ctl_stop( 'STOP', 'p4z_lim_alloc : failed to allocate arrays.' )
382      !
383   END FUNCTION p4z_lim_alloc
384
385   !!======================================================================
386END MODULE p4zlim
Note: See TracBrowser for help on using the repository browser.