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.
p4zrem.F90 in branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/2011/dev_LOCEAN_2011/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zrem.F90 @ 3028

Last change on this file since 3028 was 2977, checked in by cetlod, 13 years ago

Add in branch 2011/dev_LOCEAN_2011 changes from 2011/dev_r2787_PISCES_improvment, 2011/dev_r2787_LOCEAN_offline_fldread and 2011/dev_r2787_LOCEAN3_TRA_TRP branches, see ticket #877

  • Property svn:keywords set to Id
File size: 21.0 KB
Line 
1MODULE p4zrem
2   !!======================================================================
3   !!                         ***  MODULE p4zrem  ***
4   !! TOP :   PISCES Compute remineralization/scavenging 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   !!----------------------------------------------------------------------
10#if defined key_pisces
11   !!----------------------------------------------------------------------
12   !!   'key_top'       and                                      TOP models
13   !!   'key_pisces'                                       PISCES bio-model
14   !!----------------------------------------------------------------------
15   !!   p4z_rem       :  Compute remineralization/scavenging of organic compounds
16   !!   p4z_rem_init  :  Initialisation of parameters for remineralisation
17   !!   p4z_rem_alloc :  Allocate remineralisation variables
18   !!----------------------------------------------------------------------
19   USE oce_trc         !  shared variables between ocean and passive tracers
20   USE trc             !  passive tracers common variables
21   USE sms_pisces      !  PISCES Source Minus Sink variables
22   USE p4zopt          !  optical model
23   USE p4zche          !  chemical model
24   USE p4zprod         !  Growth rate of the 2 phyto groups
25   USE p4zmeso         !  Sources and sinks of mesozooplankton
26   USE p4zint          !  interpolation and computation of various fields
27   USE prtctl_trc      !  print control for debugging
28
29   IMPLICIT NONE
30   PRIVATE
31
32   PUBLIC   p4z_rem         ! called in p4zbio.F90
33   PUBLIC   p4z_rem_init    ! called in trcsms_pisces.F90
34   PUBLIC   p4z_rem_alloc
35
36   !! * Shared module variables
37   REAL(wp), PUBLIC ::  xremik    = 0.3_wp     !: remineralisation rate of POC
38   REAL(wp), PUBLIC ::  xremip    = 0.025_wp   !: remineralisation rate of DOC
39   REAL(wp), PUBLIC ::  nitrif    = 0.05_wp    !: NH4 nitrification rate
40   REAL(wp), PUBLIC ::  xsirem    = 0.003_wp   !: remineralisation rate of POC
41   REAL(wp), PUBLIC ::  xsiremlab = 0.025_wp   !: fast remineralisation rate of POC
42   REAL(wp), PUBLIC ::  xsilab    = 0.31_wp    !: fraction of labile biogenic silica
43   REAL(wp), PUBLIC ::  xlam1     = 0.005_wp   !: scavenging rate of Iron
44   REAL(wp), PUBLIC ::  oxymin    = 1.e-6_wp   !: halk saturation constant for anoxia
45   REAL(wp), PUBLIC ::  ligand    = 0.6E-9_wp  !: ligand concentration in the ocean
46
47
48   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitr     !: denitrification array
49   REAL(wp), PUBLIC, ALLOCATABLE, SAVE, DIMENSION(:,:,:) ::   denitnh4   !: -    -    -    -   -
50
51
52   !!* Substitution
53#  include "top_substitute.h90"
54   !!----------------------------------------------------------------------
55   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
56   !! $Id$
57   !! Software governed by the CeCILL licence     (NEMOGCM/NEMO_CeCILL.txt)
58   !!----------------------------------------------------------------------
59CONTAINS
60
61   SUBROUTINE p4z_rem( kt )
62      !!---------------------------------------------------------------------
63      !!                     ***  ROUTINE p4z_rem  ***
64      !!
65      !! ** Purpose :   Compute remineralization/scavenging of organic compounds
66      !!
67      !! ** Method  : - ???
68      !!---------------------------------------------------------------------
69      USE wrk_nemo, ONLY:   wrk_in_use, wrk_not_released
70      USE wrk_nemo, ONLY:   ztempbac => wrk_2d_1
71      USE wrk_nemo, ONLY:   zdepbac  => wrk_3d_2, zolimi => wrk_3d_3, zolimi2 => wrk_3d_4
72      !
73      INTEGER, INTENT(in) ::   kt ! ocean time step
74      !
75      INTEGER  ::   ji, jj, jk
76      REAL(wp) ::   zremip, zremik , zlam1b, zdepbac2
77      REAL(wp) ::   zkeq  , zfeequi, zsiremin, zfesatur
78      REAL(wp) ::   zsatur, zsatur2, znusil, zdep, zfactdep
79      REAL(wp) ::   zbactfer, zorem, zorem2, zofer
80      REAL(wp) ::   zosil, zdenom1, zscave, zaggdfe, zcoag
81#if ! defined key_kriest
82      REAL(wp) ::   zofer2, zdenom, zdenom2
83#endif
84      REAL(wp) ::   zlamfac, zonitr, zstep
85      CHARACTER (len=25) :: charout
86      !!---------------------------------------------------------------------
87
88      IF(  wrk_in_use(2, 1)  .OR.  wrk_in_use(3, 2,3,4)  ) THEN
89         CALL ctl_stop('p4z_rem: requested workspace arrays unavailable')   ;   RETURN
90      ENDIF
91
92       ! Initialisation of temprary arrys
93       zdepbac (:,:,:) = 0._wp
94       zolimi  (:,:,:) = 0._wp
95       zolimi2 (:,:,:) = 0._wp
96       ztempbac(:,:)   = 0._wp
97
98      !  Computation of the mean phytoplankton concentration as
99      !  a crude estimate of the bacterial biomass
100      !   --------------------------------------------------
101      DO jk = 1, jpkm1
102         DO jj = 1, jpj
103            DO ji = 1, jpi
104               zdep = MAX( hmld(ji,jj), heup(ji,jj) )
105               IF( fsdept(ji,jj,jk) < zdep ) THEN
106                  zdepbac(ji,jj,jk) = MIN( 0.7 * ( trn(ji,jj,jk,jpzoo) + 2.* trn(ji,jj,jk,jpmes) ), 4.e-6 )
107                  ztempbac(ji,jj)   = zdepbac(ji,jj,jk)
108               ELSE
109                  zdepbac(ji,jj,jk) = MIN( 1., zdep / fsdept(ji,jj,jk) ) * ztempbac(ji,jj)
110               ENDIF
111            END DO
112         END DO
113      END DO
114
115      DO jk = 1, jpkm1
116         DO jj = 1, jpj
117            DO ji = 1, jpi
118               ! denitrification factor computed from O2 levels
119               nitrfac(ji,jj,jk) = MAX(  0.e0, 0.4 * ( 6.e-6  - trn(ji,jj,jk,jpoxy) )    &
120                  &                                / ( oxymin + trn(ji,jj,jk,jpoxy) )  )
121               nitrfac(ji,jj,jk) = MIN( 1., nitrfac(ji,jj,jk) )
122            END DO
123         END DO
124      END DO
125
126      DO jk = 1, jpkm1
127         DO jj = 1, jpj
128            DO ji = 1, jpi
129               zstep   = xstep
130# if defined key_degrad
131               zstep = zstep * facvol(ji,jj,jk)
132# endif
133               ! DOC ammonification. Depends on depth, phytoplankton biomass
134               !     and a limitation term which is supposed to be a parameterization
135               !     of the bacterial activity.
136               zremik = xremik * zstep / 1.e-6 * xlimbac(ji,jj,jk) * zdepbac(ji,jj,jk) 
137               zremik = MAX( zremik, 2.e-4 * xstep )
138               !     Ammonification in oxic waters with oxygen consumption
139               !     -----------------------------------------------------
140               zolimi (ji,jj,jk) = zremik * ( 1.- nitrfac(ji,jj,jk) ) * trn(ji,jj,jk,jpdoc) 
141               zolimi2(ji,jj,jk) = MIN( ( trn(ji,jj,jk,jpoxy) - rtrn ) / o2ut, zolimi(ji,jj,jk) ) 
142               !     Ammonification in suboxic waters with denitrification
143               !     -------------------------------------------------------
144               denitr(ji,jj,jk)  = MIN(  ( trn(ji,jj,jk,jpno3) - rtrn ) / rdenit,   &
145                  &                     zremik * nitrfac(ji,jj,jk) * trn(ji,jj,jk,jpdoc)  )
146               !
147               zolimi (ji,jj,jk) = MAX( 0.e0, zolimi (ji,jj,jk) )
148               zolimi2(ji,jj,jk) = MAX( 0.e0, zolimi2(ji,jj,jk) )
149               denitr (ji,jj,jk) = MAX( 0.e0, denitr (ji,jj,jk) )
150               !
151            END DO
152         END DO
153      END DO
154
155
156      DO jk = 1, jpkm1
157         DO jj = 1, jpj
158            DO ji = 1, jpi
159               zstep   = xstep
160# if defined key_degrad
161               zstep = zstep * facvol(ji,jj,jk)
162# endif
163               !    NH4 nitrification to NO3. Ceased for oxygen concentrations
164               !    below 2 umol/L. Inhibited at strong light
165               !    ----------------------------------------------------------
166               zonitr  =nitrif * zstep * trn(ji,jj,jk,jpnh4) / ( 1.+ emoy(ji,jj,jk) ) * ( 1.- nitrfac(ji,jj,jk) ) 
167               denitnh4(ji,jj,jk) = nitrif * zstep * trn(ji,jj,jk,jpnh4) * nitrfac(ji,jj,jk) 
168               !   Update of the tracers trends
169               !   ----------------------------
170               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zonitr - denitnh4(ji,jj,jk)
171               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zonitr - rdenita * denitnh4(ji,jj,jk)
172               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2nit * zonitr
173               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2 * rno3 * zonitr + rno3 * ( rdenita - 1. ) * denitnh4(ji,jj,jk)
174            END DO
175         END DO
176      END DO
177
178       IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
179         WRITE(charout, FMT="('rem1')")
180         CALL prt_ctl_trc_info(charout)
181         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
182       ENDIF
183
184      DO jk = 1, jpkm1
185         DO jj = 1, jpj
186            DO ji = 1, jpi
187
188               !    Bacterial uptake of iron. No iron is available in DOC. So
189               !    Bacteries are obliged to take up iron from the water. Some
190               !    studies (especially at Papa) have shown this uptake to be significant
191               !    ----------------------------------------------------------
192               zdepbac2 = zdepbac(ji,jj,jk) * zdepbac(ji,jj,jk)
193               zbactfer = 20.e-6 * rfact2 * prmax(ji,jj,jk)                                 &
194                  &              * trn(ji,jj,jk,jpfer) / ( 5E-10 + trn(ji,jj,jk,jpfer) )    &
195                  &              * zdepbac2 / ( xkgraz2 + zdepbac(ji,jj,jk) )               &
196                  &              * ( 0.5 + SIGN( 0.5, trn(ji,jj,jk,jpfer) -2.e-11 )  )
197
198               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zbactfer
199#if defined key_kriest
200               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zbactfer
201#else
202               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zbactfer
203#endif
204            END DO
205         END DO
206      END DO
207
208       IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
209         WRITE(charout, FMT="('rem2')")
210         CALL prt_ctl_trc_info(charout)
211         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
212       ENDIF
213
214      DO jk = 1, jpkm1
215         DO jj = 1, jpj
216            DO ji = 1, jpi
217               zstep   = xstep
218# if defined key_degrad
219               zstep = zstep * facvol(ji,jj,jk)
220# endif
221               !    POC disaggregation by turbulence and bacterial activity.
222               !    -------------------------------------------------------------
223               zremip = xremip * zstep * tgfunc(ji,jj,jk) * ( 1.- 0.7 * nitrfac(ji,jj,jk) ) 
224
225               !    POC disaggregation rate is reduced in anoxic zone as shown by
226               !    sediment traps data. In oxic area, the exponent of the martin s
227               !    law is around -0.87. In anoxic zone, it is around -0.35. This
228               !    means a disaggregation constant about 0.5 the value in oxic zones
229               !    -----------------------------------------------------------------
230               zorem  = zremip * trn(ji,jj,jk,jppoc)
231               zofer  = zremip * trn(ji,jj,jk,jpsfe)
232#if ! defined key_kriest
233               zorem2 = zremip * trn(ji,jj,jk,jpgoc)
234               zofer2 = zremip * trn(ji,jj,jk,jpbfe)
235#else
236               zorem2 = zremip * trn(ji,jj,jk,jpnum)
237#endif
238
239               !  Update the appropriate tracers trends
240               !  -------------------------------------
241
242               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zorem
243               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zofer
244#if defined key_kriest
245               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zorem
246               tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zorem2
247               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zofer
248#else
249               tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zorem2 - zorem
250               tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) - zorem2
251               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zofer2 - zofer
252               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) - zofer2
253#endif
254
255            END DO
256         END DO
257      END DO
258
259       IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
260         WRITE(charout, FMT="('rem3')")
261         CALL prt_ctl_trc_info(charout)
262         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
263       ENDIF
264
265      DO jk = 1, jpkm1
266         DO jj = 1, jpj
267            DO ji = 1, jpi
268               zstep   = xstep
269# if defined key_degrad
270               zstep = zstep * facvol(ji,jj,jk)
271# endif
272               !     Remineralization rate of BSi depedant on T and saturation
273               !     ---------------------------------------------------------
274               zsatur   = ( sio3eq(ji,jj,jk) - trn(ji,jj,jk,jpsil) ) / ( sio3eq(ji,jj,jk) + rtrn )
275               zsatur   = MAX( rtrn, zsatur )
276               zsatur2  = zsatur * ( 1. + tsn(ji,jj,jk,jp_tem) / 400.)**4
277               znusil   = 0.225  * ( 1. + tsn(ji,jj,jk,jp_tem) / 15.) * zsatur + 0.775 * zsatur2**9.25
278               zdep     = MAX( hmld(ji,jj), heup(ji,jj) ) 
279               zdep     = MAX( 0., fsdept(ji,jj,jk) - zdep )
280               zfactdep = xsilab * EXP(-( xsiremlab - xsirem ) * zdep / wsbio2 )
281               zsiremin = ( xsiremlab * zfactdep + xsirem * ( 1. - zfactdep ) ) * zstep * znusil
282               zosil    = zsiremin * trn(ji,jj,jk,jpdsi)
283               !
284               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zosil
285               tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) + zosil
286               !
287            END DO
288         END DO
289      END DO
290
291      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
292         WRITE(charout, FMT="('rem4')")
293         CALL prt_ctl_trc_info(charout)
294         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
295       ENDIF
296
297      zfesatur = ligand
298!CDIR NOVERRCHK
299      DO jk = 1, jpkm1
300!CDIR NOVERRCHK
301         DO jj = 1, jpj
302!CDIR NOVERRCHK
303            DO ji = 1, jpi
304               zstep   = xstep
305# if defined key_degrad
306               zstep = zstep * facvol(ji,jj,jk)
307# endif
308               !  Compute de different ratios for scavenging of iron
309               !  --------------------------------------------------
310
311#if  defined key_kriest
312               zdenom1 = trn(ji,jj,jk,jppoc) / &
313           &           ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpdsi) + trn(ji,jj,jk,jpcal) + rtrn )
314#else
315               zdenom = 1. / ( trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc) + trn(ji,jj,jk,jpdsi) + trn(ji,jj,jk,jpcal) + rtrn )
316               zdenom1 = trn(ji,jj,jk,jppoc) * zdenom
317               zdenom2 = trn(ji,jj,jk,jpgoc) * zdenom
318#endif
319               !  scavenging rate of iron. this scavenging rate depends on the load in particles
320               !  on which they are adsorbed. The  parameterization has been taken from studies on Th
321               !     ------------------------------------------------------------
322               zkeq = fekeq(ji,jj,jk)
323               zfeequi = ( -( 1. + zfesatur * zkeq - zkeq * trn(ji,jj,jk,jpfer) )               &
324                  &        + SQRT( ( 1. + zfesatur * zkeq - zkeq * trn(ji,jj,jk,jpfer) )**2       &
325                  &               + 4. * trn(ji,jj,jk,jpfer) * zkeq) ) / ( 2. * zkeq )
326
327#if defined key_kriest
328               zlam1b = 3.e-5 + xlam1 * (  trn(ji,jj,jk,jppoc)                   &
329                  &                      + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi)  ) * 1.e6
330#else
331               zlam1b = 3.e-5 + xlam1 * (  trn(ji,jj,jk,jppoc) + trn(ji,jj,jk,jpgoc)   &
332                  &                      + trn(ji,jj,jk,jpcal) + trn(ji,jj,jk,jpdsi)  ) * 1.e6
333#endif
334               zscave = zfeequi * zlam1b * zstep
335
336               !  Increased scavenging for very high iron concentrations
337               !  found near the coasts due to increased lithogenic particles
338               !  and let say it is unknown processes (precipitation, ...)
339               !  -----------------------------------------------------------
340               zlam1b  = xlam1 * MAX( 0.e0, ( trn(ji,jj,jk,jpfer) * 1.e9 - 1. ) )
341               zcoag   = zfeequi * zlam1b * zstep
342               zlamfac = MAX( 0.e0, ( gphit(ji,jj) + 55.) / 30. )
343               zlamfac = MIN( 1.  , zlamfac )
344               zdep    =  MIN(1., 1000. / fsdept(ji,jj,jk) )
345#if ! defined key_kriest
346               zlam1b = (  80.* ( trn(ji,jj,jk,jpdoc) + 35.e-6 )                           &
347                  &     + 698.*   trn(ji,jj,jk,jppoc) + 1.05e4 * trn(ji,jj,jk,jpgoc)  )    &
348                  &   * xdiss(ji,jj,jk) + 1E-4 * ( 1. - zlamfac ) * zdep
349#else
350               zlam1b = (  80.* (trn(ji,jj,jk,jpdoc) + 35E-6)              &
351                  &     + 698.*  trn(ji,jj,jk,jppoc)  )                    &
352                  &   * xdiss(ji,jj,jk) + 1E-4 * ( 1. - zlamfac ) * zdep
353#endif
354               zaggdfe = zlam1b * zstep * 0.5 * ( trn(ji,jj,jk,jpfer) - zfeequi )
355               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) - zscave - zaggdfe - zcoag
356#if defined key_kriest
357               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1
358#else
359               tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + zscave * zdenom1
360               tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + zscave * zdenom2
361#endif
362            END DO
363         END DO
364      END DO
365      !
366
367      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
368         WRITE(charout, FMT="('rem5')")
369         CALL prt_ctl_trc_info(charout)
370         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
371      ENDIF
372
373      !     Update the arrays TRA which contain the biological sources and sinks
374      !     --------------------------------------------------------------------
375
376      DO jk = 1, jpkm1
377         tra(:,:,jk,jppo4) = tra(:,:,jk,jppo4) + zolimi (:,:,jk) + denitr(:,:,jk)
378         tra(:,:,jk,jpnh4) = tra(:,:,jk,jpnh4) + zolimi (:,:,jk) + denitr(:,:,jk)
379         tra(:,:,jk,jpno3) = tra(:,:,jk,jpno3) - denitr (:,:,jk) * rdenit
380         tra(:,:,jk,jpdoc) = tra(:,:,jk,jpdoc) - zolimi (:,:,jk) - denitr(:,:,jk)
381         tra(:,:,jk,jpoxy) = tra(:,:,jk,jpoxy) - zolimi2(:,:,jk) * o2ut
382         tra(:,:,jk,jpdic) = tra(:,:,jk,jpdic) + zolimi (:,:,jk) + denitr(:,:,jk)
383         tra(:,:,jk,jptal) = tra(:,:,jk,jptal) + rno3 * ( zolimi(:,:,jk) + ( rdenit + 1.) * denitr(:,:,jk) )
384      END DO
385
386      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
387         WRITE(charout, FMT="('rem6')")
388         CALL prt_ctl_trc_info(charout)
389         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
390      ENDIF
391      !
392      IF(  wrk_not_released(2, 1)     .OR.   &
393           wrk_not_released(3, 2,3,4)  )   CALL ctl_stop('p4z_rem: failed to release workspace arrays')
394      !
395   END SUBROUTINE p4z_rem
396
397
398   SUBROUTINE p4z_rem_init
399      !!----------------------------------------------------------------------
400      !!                  ***  ROUTINE p4z_rem_init  ***
401      !!
402      !! ** Purpose :   Initialization of remineralization parameters
403      !!
404      !! ** Method  :   Read the nampisrem namelist and check the parameters
405      !!      called at the first timestep
406      !!
407      !! ** input   :   Namelist nampisrem
408      !!
409      !!----------------------------------------------------------------------
410      NAMELIST/nampisrem/ xremik, xremip, nitrif, xsirem, xsiremlab, xsilab,   &
411      &                   xlam1, oxymin, ligand 
412
413      REWIND( numnatp )                     ! read numnatp
414      READ  ( numnatp, nampisrem )
415
416      IF(lwp) THEN                         ! control print
417         WRITE(numout,*) ' '
418         WRITE(numout,*) ' Namelist parameters for remineralization, nampisrem'
419         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
420         WRITE(numout,*) '    remineralisation rate of POC              xremip    =', xremip
421         WRITE(numout,*) '    remineralization rate of DOC              xremik    =', xremik
422         WRITE(numout,*) '    remineralization rate of Si               xsirem    =', xsirem
423         WRITE(numout,*) '    fast remineralization rate of Si          xsiremlab =', xsiremlab
424         WRITE(numout,*) '    fraction of labile biogenic silica        xsilab    =', xsilab
425         WRITE(numout,*) '    scavenging rate of Iron                   xlam1     =', xlam1
426         WRITE(numout,*) '    NH4 nitrification rate                    nitrif    =', nitrif
427         WRITE(numout,*) '    halk saturation constant for anoxia       oxymin    =', oxymin
428         WRITE(numout,*) '    ligand concentration in the ocean         ligand    =', ligand
429      ENDIF
430      !
431      nitrfac (:,:,:) = 0._wp
432      denitr  (:,:,:) = 0._wp
433      denitnh4(:,:,:) = 0._wp
434      !
435   END SUBROUTINE p4z_rem_init
436
437
438   INTEGER FUNCTION p4z_rem_alloc()
439      !!----------------------------------------------------------------------
440      !!                     ***  ROUTINE p4z_rem_alloc  ***
441      !!----------------------------------------------------------------------
442      ALLOCATE( denitr(jpi,jpj,jpk), denitnh4(jpi,jpj,jpk), STAT=p4z_rem_alloc )
443      !
444      IF( p4z_rem_alloc /= 0 )   CALL ctl_warn('p4z_rem_alloc: failed to allocate arrays')
445      !
446   END FUNCTION p4z_rem_alloc
447
448#else
449   !!======================================================================
450   !!  Dummy module :                                   No PISCES bio-model
451   !!======================================================================
452CONTAINS
453   SUBROUTINE p4z_rem                    ! Empty routine
454   END SUBROUTINE p4z_rem
455#endif 
456
457   !!======================================================================
458END MODULE p4zrem
Note: See TracBrowser for help on using the repository browser.