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/trunk/src/TOP/PISCES/P4Z – NEMO

source: NEMO/trunk/src/TOP/PISCES/P4Z/p4zlim.F90

Last change on this file was 15459, checked in by cetlod, 2 years ago

Various bug fixes and more comments in PISCES routines ; sette test OK in debug mode, nn_hls=1/2, with tiling ; run.stat unchanged ; of course tracer.stat different

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