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.
p5zrem.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/p5zrem.F90 @ 6231

Last change on this file since 6231 was 6231, checked in by aumont, 8 years ago

update PISCES QUOTA to its latest version

  • Property svn:executable set to *
File size: 21.3 KB
Line 
1MODULE p5zrem
2   !!======================================================================
3   !!                         ***  MODULE p5zrem  ***
4   !! TOP :   PISCES Compute remineralization/dissolution of organic compounds
5   !!=========================================================================
6   !! History :   1.0  !  2004     (O. Aumont) Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron
9   !!             3.6  !  2015-05  (O. Aumont) PISCES quota
10   !!----------------------------------------------------------------------
11#if defined key_pisces_quota
12   !!----------------------------------------------------------------------
13   !!   'key_top'       and                                      TOP models
14   !!   'key_pisces_quota'     PISCES bio-model with variable stoichiometry
15   !!----------------------------------------------------------------------
16   !!   p5z_rem       :  Compute remineralization/dissolution of organic compounds
17   !!   p5z_rem_init  :  Initialisation of parameters for remineralisation
18   !!   p5z_rem_alloc :  Allocate remineralisation variables
19   !!----------------------------------------------------------------------
20   USE oce_trc         !  shared variables between ocean and passive tracers
21   USE trc             !  passive tracers common variables
22   USE sms_pisces      !  PISCES Source Minus Sink variables
23   USE p4zopt          !  optical model
24   USE p4zche          !  chemical model
25   USE p5zprod         !  Growth rate of the 2 phyto groups
26   USE p5zmeso         !  Sources and sinks of mesozooplankton
27   USE p4zint          !  interpolation and computation of various fields
28   USE p5zlim
29   USE prtctl_trc      !  print control for debugging
30   USE iom             !  I/O manager
31
32
33   IMPLICIT NONE
34   PRIVATE
35
36   PUBLIC   p5z_rem         ! called in p4zbio.F90
37   PUBLIC   p5z_rem_init    ! called in trcsms_pisces.F90
38   PUBLIC   p5z_rem_alloc
39
40   !! * Shared module variables
41   REAL(wp), PUBLIC ::  xremikc    !: remineralisation rate of POC
42   REAL(wp), PUBLIC ::  xremikn    !: remineralisation rate of POC
43   REAL(wp), PUBLIC ::  xremikp    !: remineralisation rate of POC
44   REAL(wp), PUBLIC ::  xremipc    !: remineralisation rate of DOC
45   REAL(wp), PUBLIC ::  xremipn    !: remineralisation rate of DOC
46   REAL(wp), PUBLIC ::  xremipp    !: remineralisation rate of DOC
47   REAL(wp), PUBLIC ::  nitrif     !: NH4 nitrification rate
48   REAL(wp), PUBLIC ::  xsirem     !: remineralisation rate of POC
49   REAL(wp), PUBLIC ::  xsiremlab  !: fast remineralisation rate of POC
50   REAL(wp), PUBLIC ::  xsilab     !: fraction of labile biogenic silica
51   REAL(wp), PUBLIC ::  oxymin     !: half saturation constant for anoxia
52   REAL(wp), PUBLIC ::  oxymin2    !: Minimum O2 concentration for oxic remin.
53   REAL(wp), PUBLIC ::  feratb     !: Fe/C quota in bacteria
54   REAL(wp), PUBLIC ::  xkferb     !: Half-saturation constant for bacteria Fe/C
55
56
57   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitrc     !: denitrification array
58
59   !!* Substitution
60#  include "top_substitute.h90"
61   !!----------------------------------------------------------------------
62   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
63   !! $Id: p4zrem.F90 3160 2011-11-20 14:27:18Z cetlod $
64   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
65   !!----------------------------------------------------------------------
66CONTAINS
67
68   SUBROUTINE p5z_rem( kt, jnt )
69      !!---------------------------------------------------------------------
70      !!                     ***  ROUTINE p5z_rem  ***
71      !!
72      !! ** Purpose :   Compute remineralization/scavenging of organic compounds
73      !!
74      !! ** Method  : - ???
75      !!---------------------------------------------------------------------
76      !
77      INTEGER, INTENT(in) ::   kt, jnt ! ocean time step
78      !
79      INTEGER  ::   ji, jj, jk
80      REAL(wp) ::   zremip, zremik, zremikc, zremikn, zremikp, zsiremin 
81      REAL(wp) ::   zsatur, zsatur2, znusil, znusil2, zdep, zdepmin, zfactdep
82      REAL(wp) ::   zbactfer, zopoc, zopon, zopop, zopoc2, zopon2, zopop2, zofer, zolimit
83      REAL(wp) ::   zosil, ztem, zdenitnh4, zolimic, zolimin, zolimip, zdenitrn, zdenitrp
84#if ! defined key_kriest
85      REAL(wp) ::   zofer2
86#endif
87      REAL(wp) ::   zonitr, zstep, zrfact2
88      CHARACTER (len=25) :: charout
89      REAL(wp), POINTER, DIMENSION(:,:  ) :: ztempbac 
90      REAL(wp), POINTER, DIMENSION(:,:,:) :: zdepbac, zwork1, zdepprod
91      !!---------------------------------------------------------------------
92      !
93      IF( nn_timing == 1 )  CALL timing_start('p5z_rem')
94      !
95      ! Allocate temporary workspace
96      CALL wrk_alloc( jpi, jpj,      ztempbac                  )
97      CALL wrk_alloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1 )
98
99      ! Initialisation of temprary arrys
100      zdepprod(:,:,:) = 1._wp
101      ztempbac(:,:)   = 0._wp
102
103      ! Computation of the mean phytoplankton concentration as
104      ! a crude estimate of the bacterial biomass
105      ! this parameterization has been deduced from a model version
106      ! that was modeling explicitely bacteria
107      ! -------------------------------------------------------
108      DO jk = 1, jpkm1
109         DO jj = 1, jpj
110            DO ji = 1, jpi
111               zdep = MAX( hmld(ji,jj), heup(ji,jj) )
112               IF( fsdept(ji,jj,jk) < zdep ) THEN
113                  zdepbac(ji,jj,jk) = MIN( 0.7 * ( trn(ji,jj,jk,jpzoo) + 2.* trn(ji,jj,jk,jpmes) ), 4.e-6 )
114                  ztempbac(ji,jj)   = zdepbac(ji,jj,jk)
115               ELSE
116                  zdepmin = MIN( 1., zdep / fsdept(ji,jj,jk) )
117                  zdepbac (ji,jj,jk) = zdepmin**0.683 * ztempbac(ji,jj)
118                  zdepprod(ji,jj,jk) = zdepmin**0.273
119               ENDIF
120            END DO
121         END DO
122      END DO
123
124      DO jk = 1, jpkm1
125         DO jj = 1, jpj
126            DO ji = 1, jpi
127               ! denitrification factor computed from O2 levels
128               ! ----------------------------------------------
129               nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( oxymin2 - trn(ji,jj,jk,jpoxy) )    &
130                  &                                / ( oxymin + trn(ji,jj,jk,jpoxy) )  )
131               nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) )
132            END DO
133         END DO
134      END DO
135
136      DO jk = 1, jpkm1
137         DO jj = 1, jpj
138            DO ji = 1, jpi
139               zstep   = xstep
140# if defined key_degrad
141               zstep = zstep * facvol(ji,jj,jk)
142# endif
143               ! DOC ammonification. Depends on depth, phytoplankton biomass
144               ! and a limitation term which is supposed to be a parameterization
145               ! of the bacterial activity.
146               ! -----------------------------------------------------------------
147               zremik = zstep / 1.e-6 * MAX(0.01, xlimbac(ji,jj,jk)) * zdepbac(ji,jj,jk) 
148               zremik = MAX( zremik, 2.74e-4 * xstep / xremikc )
149
150               zremikc = xremikc * zremik
151               zremikn = xremikn / xremikc
152               zremikp = xremikp / xremikc
153
154               ! Ammonification in oxic waters with oxygen consumption
155               ! -----------------------------------------------------
156               zolimit = zremikc * ( 1.- nitrfac(ji,jj,jk) ) * trn(ji,jj,jk,jpdoc) 
157               zolimic = MAX( 0.e0, MIN( ( trn(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimit ) ) 
158               zwork1(ji,jj,jk) = zolimic
159               zolimin = zremikn * zolimic * trn(ji,jj,jk,jpdon) / ( trn(ji,jj,jk,jpdoc) + rtrn )
160               zolimip = zremikp * zolimic * trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdoc) + rtrn ) 
161
162               ! Ammonification in suboxic waters with denitrification
163               ! -------------------------------------------------------
164               zolimit = zremikc * nitrfac(ji,jj,jk) * trn(ji,jj,jk,jpdoc)
165               denitrc(ji,jj,jk)  = MIN(  ( trn(ji,jj,jk,jpno3) - rtrn ) / rdenit, zolimit )
166               denitrc (ji,jj,jk) = MAX( 0.e0, denitrc (ji,jj,jk) )
167               zdenitrn  = zremikn * denitrc(ji,jj,jk) * trn(ji,jj,jk,jpdon) / ( trn(ji,jj,jk,jpdoc) + rtrn )
168               zdenitrp  = zremikp * denitrc(ji,jj,jk) * trn(ji,jj,jk,jpdop) / ( trn(ji,jj,jk,jpdoc) + rtrn )
169
170               ! Update of trends TRA
171               ! --------------------
172               tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zolimip + zdenitrp
173               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zolimin + zdenitrn
174               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - denitrc(ji,jj,jk) * rdenit
175               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) - zolimic - denitrc(ji,jj,jk)
176               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) - zolimin - zdenitrn
177               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) - zolimip - zdenitrp
178               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - zolimic * o2ut
179               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zolimic + denitrc(ji,jj,jk)
180               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * ( zolimin + ( rdenit + 1.) * zdenitrn )
181
182            END DO
183         END DO
184      END DO
185
186
187      DO jk = 1, jpkm1
188         DO jj = 1, jpj
189            DO ji = 1, jpi
190               zstep   = xstep
191# if defined key_degrad
192               zstep = zstep * facvol(ji,jj,jk)
193# endif
194               ! NH4 nitrification to NO3. Ceased for oxygen concentrations
195               ! below 2 umol/L. Inhibited at strong light
196               ! ----------------------------------------------------------
197               zonitr   = nitrif * zstep * trn(ji,jj,jk,jpnh4) * (0.2 + 0.8 / ( 1.+ emoy(ji,jj,jk) ) ) &
198               &          * ( 1.- nitrfac(ji,jj,jk) ) 
199               zdenitnh4 = nitrif * zstep * trn(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 
200
201               ! Update of the tracers trends
202               ! ----------------------------
203               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - zdenitnh4
204               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * zdenitnh4
205               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr
206               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * zdenitnh4
207            END DO
208         END DO
209      END DO
210
211      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
212        WRITE(charout, FMT="('rem1')")
213        CALL prt_ctl_trc_info(charout)
214        CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
215      ENDIF
216
217      DO jk = 1, jpkm1
218         DO jj = 1, jpj
219            DO ji = 1, jpi
220
221               ! Bacterial uptake of iron. No iron is available in DOC. So
222               ! Bacteries are obliged to take up iron from the water. Some
223               ! studies (especially at Papa) have shown this uptake to be significant
224               ! ----------------------------------------------------------
225               zbactfer = feratb *  rfact2 * prmaxp(ji,jj,jk) * xlimbacl(ji,jj,jk)             &
226                  &              * biron(ji,jj,jk) / ( xkferb + biron(ji,jj,jk) )    &
227                  &              * zdepprod(ji,jj,jk) * zdepbac(ji,jj,jk)
228#if defined key_kriest
229               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.05
230               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.05
231#else
232               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer*0.16
233               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer*0.12
234               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer*0.04
235#endif
236            END DO
237         END DO
238      END DO
239
240      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
241        WRITE(charout, FMT="('rem2')")
242        CALL prt_ctl_trc_info(charout)
243        CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
244      ENDIF
245
246      DO jk = 1, jpkm1
247         DO jj = 1, jpj
248            DO ji = 1, jpi
249               zstep   = xstep
250# if defined key_degrad
251               zstep = zstep * facvol(ji,jj,jk)
252# endif
253               ! POC disaggregation by turbulence and bacterial activity.
254               ! --------------------------------------------------------
255               zremip = zstep * tgfunc(ji,jj,jk) * ( 1.- 0.55 * nitrfac(ji,jj,jk) ) 
256
257               ! POC disaggregation rate is reduced in anoxic zone as shown by
258               ! sediment traps data. In oxic area, the exponent of the martin s
259               ! law is around -0.87. In anoxic zone, it is around -0.35. This
260               ! means a disaggregation constant about 0.5 the value in oxic zones
261               ! -----------------------------------------------------------------
262               zopoc  = xremipc * zremip * trn(ji,jj,jk,jppoc)
263               zopon  = xremipn * zremip * trn(ji,jj,jk,jppon)
264               zopop  = xremipp * zremip * trn(ji,jj,jk,jppop)
265               zofer  = xremipn * zremip * trn(ji,jj,jk,jpsfe)
266#if ! defined key_kriest
267               zopoc2 = xremipc * zremip * trn(ji,jj,jk,jpgoc)
268               zopon2 = xremipn * zremip * trn(ji,jj,jk,jpgon)
269               zopop2 = xremipp * zremip * trn(ji,jj,jk,jpgop)
270               zofer2 = xremipn * zremip * trn(ji,jj,jk,jpbfe)
271#else
272               zopoc2 = xremipc * zremip * trn(ji,jj,jk,jpnum)
273#endif
274
275               ! Update the appropriate tracers trends
276               ! -------------------------------------
277#if defined key_kriest
278               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zopoc
279               tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zopon
280               tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zopop
281               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer
282               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zopoc
283               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zopon
284               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zopop
285               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer
286               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zopoc2
287#else
288               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zopoc + zopoc2
289               tra(ji,jj,jk,jppon) = tra(ji,jj,jk,jppon) - zopon + zopon2
290               tra(ji,jj,jk,jppop) = tra(ji,jj,jk,jppop) - zopop + zopop2
291               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer + zofer2
292               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zopoc 
293               tra(ji,jj,jk,jpdon) = tra(ji,jj,jk,jpdon) + zopon 
294               tra(ji,jj,jk,jpdop) = tra(ji,jj,jk,jpdop) + zopop 
295               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer 
296               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zopoc2
297               tra(ji,jj,jk,jpgon) = tra(ji,jj,jk,jpgon) - zopon2
298               tra(ji,jj,jk,jpgop) = tra(ji,jj,jk,jpgop) - zopop2
299               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2
300#endif
301            END DO
302         END DO
303      END DO
304
305      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
306        WRITE(charout, FMT="('rem3')")
307        CALL prt_ctl_trc_info(charout)
308        CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
309      ENDIF
310
311      DO jk = 1, jpkm1
312         DO jj = 1, jpj
313            DO ji = 1, jpi
314               zstep   = xstep
315# if defined key_degrad
316               zstep = zstep * facvol(ji,jj,jk)
317# endif
318               ! Remineralization rate of BSi depedant on T and saturation
319               ! ---------------------------------------------------------
320               zsatur   = ( sio3eq(ji,jj,jk) - trn(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn )
321               zsatur   = MAX( rtrn, zsatur )
322               zsatur2  = ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**37
323               znusil   = 0.225  * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2 * zsatur**9.25
324               znusil2  = 0.225  * ( 1. + tsn(ji,jj,1,jp_tem) / 15.) + 0.775 * zsatur2
325
326               ! Two classes of BSi are considered : a labile fraction and
327               ! a more refractory one. The ratio between both fractions is
328               ! constant and specified in the namelist.
329               ! ----------------------------------------------------------
330               zdep     = MAX( hmld(ji,jj), heup(ji,jj) ) 
331               zdep     = MAX( 0., fsdept(ji,jj,jk) - zdep )
332               ztem     = MAX( tsn(ji,jj,1,jp_tem), 0. )
333               zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * znusil2 * zdep / wsbio2 ) * ztem / ( ztem + 10. )
334               zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil
335               zosil    = zsiremin * trn(ji,jj,jk,jpgsi)
336               !
337               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) - zosil
338               tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil
339               !
340            END DO
341         END DO
342      END DO
343
344      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
345         WRITE(charout, FMT="('rem4')")
346         CALL prt_ctl_trc_info(charout)
347         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
348       ENDIF
349
350      IF( ln_diatrc .AND. lk_iomput .AND. jnt == nrdttrc ) THEN
351          zrfact2 = 1.e3 * rfact2r
352          CALL iom_put( "REMIN" , zwork1(:,:,:) * tmask(:,:,:) * zrfact2 )  ! Remineralisation rate
353          CALL iom_put( "DENIT" , denitrc(:,:,:) * rdenit * rno3 * tmask(:,:,:) * zrfact2  )  ! Denitrification
354      ENDIF
355
356      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
357         WRITE(charout, FMT="('rem6')")
358         CALL prt_ctl_trc_info(charout)
359         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
360      ENDIF
361      !
362      CALL wrk_dealloc( jpi, jpj,      ztempbac                  )
363      CALL wrk_dealloc( jpi, jpj, jpk, zdepbac, zdepprod, zwork1 )
364      !
365      IF( nn_timing == 1 )  CALL timing_stop('p5z_rem')
366      !
367   END SUBROUTINE p5z_rem
368
369
370   SUBROUTINE p5z_rem_init
371      !!----------------------------------------------------------------------
372      !!                  ***  ROUTINE p5z_rem_init  ***
373      !!
374      !! ** Purpose :   Initialization of remineralization parameters
375      !!
376      !! ** Method  :   Read the nampisrem namelist and check the parameters
377      !!      called at the first timestep
378      !!
379      !! ** input   :   Namelist nampisrem
380      !!
381      !!----------------------------------------------------------------------
382      NAMELIST/nampisrem/ xremikc, xremikn, xremikp, xremipc, xremipn, xremipp,   &
383      &                   nitrif, xsirem, xsiremlab, xsilab, oxymin, oxymin2,  &
384      &                   feratb, xkferb 
385      INTEGER :: ios                 ! Local integer output status for namelist read
386
387      REWIND( numnatp_ref )              ! Namelist nampisrem in reference namelist : Pisces remineralization
388      READ  ( numnatp_ref, nampisrem, IOSTAT = ios, ERR = 901)
389901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisrem in reference namelist', lwp )
390
391      REWIND( numnatp_cfg )              ! Namelist nampisrem in configuration namelist : Pisces remineralization
392      READ  ( numnatp_cfg, nampisrem, IOSTAT = ios, ERR = 902 )
393902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampisrem in configuration namelist', lwp )
394      IF(lwm) WRITE ( numonp, nampisrem )
395
396      IF(lwp) THEN                         ! control print
397         WRITE(numout,*) ' '
398         WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem'
399         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
400         WRITE(numout,*) '    remineralisation rate of POC              xremipc   =', xremipc
401         WRITE(numout,*) '    remineralisation rate of PON              xremipn   =', xremipn
402         WRITE(numout,*) '    remineralisation rate of POP              xremipp   =', xremipp
403         WRITE(numout,*) '    remineralization rate of DOC              xremikc   =', xremikc
404         WRITE(numout,*) '    remineralization rate of DON              xremikn   =', xremikn
405         WRITE(numout,*) '    remineralization rate of DOP              xremikp   =', xremikp
406         WRITE(numout,*) '    remineralization rate of Si               xsirem    =', xsirem
407         WRITE(numout,*) '    fast remineralization rate of Si          xsiremlab =', xsiremlab
408         WRITE(numout,*) '    fraction of labile biogenic silica        xsilab    =', xsilab
409         WRITE(numout,*) '    NH4 nitrification rate                    nitrif    =', nitrif
410         WRITE(numout,*) '    half saturation constant for anoxia       oxymin    =', oxymin
411         WRITE(numout,*) '    Minimum O2 concentration for oxic remin.  oxymin2   =', oxymin2
412         WRITE(numout,*) '    Bacterial Fe/C ratio                      feratb    =', feratb
413         WRITE(numout,*) '    Half-saturation constant for bact. Fe/C   xkferb    =', xkferb
414      ENDIF
415      !
416      nitrfac (:,:,:) = 0._wp
417      denitrc (:,:,:) = 0._wp
418      !
419   END SUBROUTINE p5z_rem_init
420
421
422   INTEGER FUNCTION p5z_rem_alloc()
423      !!----------------------------------------------------------------------
424      !!                     ***  ROUTINE p5z_rem_alloc  ***
425      !!----------------------------------------------------------------------
426      ALLOCATE( denitrc(jpi,jpj,jpk), STAT=p5z_rem_alloc )
427      !
428      IF( p5z_rem_alloc /= 0 )   CALL ctl_warn('p5z_rem_alloc: failed to allocate arrays')
429      !
430   END FUNCTION p5z_rem_alloc
431
432#else
433   !!======================================================================
434   !!  Dummy module :                                   No PISCES bio-model
435   !!======================================================================
436CONTAINS
437   SUBROUTINE p5z_rem                    ! Empty routine
438   END SUBROUTINE p5z_rem
439#endif 
440
441   !!======================================================================
442END MODULE p5zrem
Note: See TracBrowser for help on using the repository browser.