source: branches/2016/dev_r7012_ROBUST5_CNRS/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90 @ 7041

Last change on this file since 7041 was 7041, checked in by cetlod, 4 years ago

ROBUST5_CNRS : implementation of part I of new TOP interface - 1st step -, see ticket #1782

  • Property svn:keywords set to Id
File size: 25.1 KB
Line 
1MODULE p2zbio
2   !!======================================================================
3   !!                         ***  MODULE p2zbio  ***
4   !! TOP :   LOBSTER
5   !!======================================================================
6   !! History :    -   !  1999-07  (M. Levy) Original code
7   !!              -   !  2000-12  (E. Kestenare) assign a parameter to name individual tracers
8   !!              -   !  2001-03  (M. Levy)  LNO3 + dia2d
9   !!             2.0  !  2007-12  (C. Deltel, G. Madec)  F90
10   !!----------------------------------------------------------------------
11#if defined key_pisces
12   !!----------------------------------------------------------------------
13   !!   'key_pisces'                                     LOBSTER bio-model
14   !!----------------------------------------------------------------------
15   !!   p2z_bio        : 
16   !!----------------------------------------------------------------------
17   USE oce_trc         !
18   USE trc             !
19   USE sms_pisces
20   USE p2zopt
21   USE lbclnk          !
22   USE prtctl_trc      ! Print control for debbuging
23   USE trd_oce
24   USE trdtrc
25   USE iom
26   
27   IMPLICIT NONE
28   PRIVATE
29
30   PUBLIC   p2z_bio         ! called in ???
31   PUBLIC   p2z_bio_init    ! called in ???
32
33   REAL(wp) ::   tmumax     ! maximal phytoplankton growth rate            [s-1]
34   REAL(wp) ::   rgamma     ! phytoplankton exudation fraction             [%]
35   REAL(wp) ::   fphylab    ! NH4 fraction of phytoplankton exsudation
36   REAL(wp) ::   tmminp     ! minimal phytoplancton mortality rate         [0.05/86400 s-1=20 days]
37   REAL(wp) ::   aki        ! light photosynthesis half saturation constant[W/m2]
38   !
39   REAL(wp) ::   akno3      ! nitrate limitation half-saturation value     [mmol/m3]
40   REAL(wp) ::   aknh4      ! ammonium limitation half-saturation value    [mmol/m3]
41   REAL(wp) ::   taunn      ! nitrification rate                           [s-1]
42   REAL(wp) ::   psinut     ! inhibition of nitrate uptake by ammonium
43   !
44   REAL(wp) ::   taudn      ! detritus breakdown rate                        [0.1/86400 s-1=10 days]
45   REAL(wp) ::   fdetlab    ! NH4 fraction of detritus dissolution
46   !
47   REAL(wp) ::   taudomn    ! DOM breakdown rate                             [s-1]
48   !                        ! slow remineralization rate of semi-labile dom to nh4 (1 month)
49   !
50   REAL(wp) ::   rppz       ! ivlev coeff for zoo mortality
51   REAL(wp) ::   taus       ! specific zooplankton maximal grazing rate              [s-1]
52   !                                     ! 0.75/86400 s-1=8.680555E-6    1/86400 = 1.15e-5
53   REAL(wp) ::   aks        ! half-saturation constant for total zooplankton grazing [mmolN.m-3]
54   REAL(wp) ::   rpnaz      ! non-assimilated phytoplankton by zooplancton           [%]
55   REAL(wp) ::   rdnaz      ! non-assimilated detritus by zooplankton                [%]
56   REAL(wp) ::   tauzn      ! zooplancton specific excretion rate                    [0.1/86400 s-1=10 days]
57   REAL(wp) ::   tmminz     ! minimal zooplankton mortality rate                     [(mmolN/m3)-1 d-1]
58   REAL(wp) ::   fzoolab    ! NH4 fraction of zooplankton excretion
59   REAL(wp) ::   fdbod      ! zooplankton mortality fraction that goes to detritus
60
61   !! * Substitutions
62#  include "vectopt_loop_substitute.h90"
63   !!----------------------------------------------------------------------
64   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
65   !! $Id$
66   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
67   !!----------------------------------------------------------------------
68CONTAINS
69
70   SUBROUTINE p2z_bio( kt )
71      !!---------------------------------------------------------------------
72      !!                     ***  ROUTINE p2z_bio  ***
73      !!
74      !! ** Purpose :   compute the now trend due to biogeochemical processes
75      !!              and add it to the general trend of passive tracers equations
76      !!
77      !! ** Method  :   each now biological flux is calculated in function of now
78      !!              concentrations of tracers.
79      !!              depending on the tracer, these fluxes are sources or sinks.
80      !!              the total of the sources and sinks for each tracer
81      !!              is added to the general trend.
82      !!       
83      !!                      tra = tra + zf...tra - zftra...
84      !!                                     |         |
85      !!                                     |         |
86      !!                                  source      sink
87      !!       
88      !!---------------------------------------------------------------------
89      !!
90      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index     
91      !!
92      INTEGER  ::   ji, jj, jk, jl
93      REAL(wp) ::   zdet, zzoo, zphy, zno3, znh4, zdom      ! now concentrations
94      REAL(wp) ::   zlno3, zlnh4, zle, zlt                  ! limitation terms for phyto
95      REAL(wp) ::   zno3phy, znh4phy, zphynh4, zphydom
96      REAL(wp) ::   zphydet, zphyzoo, zdetzoo
97      REAL(wp) ::   zzoonh4, zzoodom, zzoodet, zdetnh4, zdetdom
98      REAL(wp) ::   znh4no3, zdomnh4, zppz, zpdz, zpppz, zppdz, zfood
99      REAL(wp) ::   zfilpz, zfildz, zphya, zzooa, zno3a
100      REAL(wp) ::   znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju
101      REAL(wp) ::   ze3t
102      REAL(wp), POINTER,   DIMENSION(:,:,:) :: zw2d
103      REAL(wp), POINTER, DIMENSION(:,:,:,:) :: zw3d
104      CHARACTER (len=25) :: charout
105      !!---------------------------------------------------------------------
106      !
107      IF( nn_timing == 1 )  CALL timing_start('p2z_bio')
108      !
109      IF( lk_iomput ) THEN
110         CALL wrk_alloc( jpi, jpj,     17, zw2d )
111         CALL wrk_alloc( jpi, jpj, jpk, 3, zw3d )
112      ENDIF
113
114      IF( kt == nittrc000 ) THEN
115         IF(lwp) WRITE(numout,*)
116         IF(lwp) WRITE(numout,*) ' p2z_bio: LOBSTER bio-model'
117         IF(lwp) WRITE(numout,*) ' ~~~~~~~'
118      ENDIF
119
120      xksi(:,:) = 0.e0        ! zooplakton closure ( fbod)
121      IF( lk_iomput ) THEN
122         zw2d  (:,:,:) = 0.e0
123         zw3d(:,:,:,:) = 0.e0
124      ENDIF
125
126      !                                      ! -------------------------- !
127      DO jk = 1, jpkbm1                      !  Upper ocean (bio-layers)  !
128         !                                   ! -------------------------- !
129         DO jj = 2, jpjm1
130            DO ji = fs_2, fs_jpim1 
131               ! trophic variables( det, zoo, phy, no3, nh4, dom)
132               ! ------------------------------------------------
133
134               ! negative trophic variables DO not contribute to the fluxes
135               zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) )
136               zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) )
137               zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) )
138               zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) )
139               znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) )
140               zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) )
141
142               ! Limitations
143               zlt   = 1.
144               zle   = 1. - EXP( -etot(ji,jj,jk) / aki / zlt )
145               ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03
146               zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 )
147               zlnh4 = znh4 / (znh4+aknh4) 
148
149               ! sinks and sources
150               !    phytoplankton production and exsudation
151               zno3phy = tmumax * zle * zlt * zlno3 * zphy
152               znh4phy = tmumax * zle * zlt * zlnh4 * zphy
153
154               !    fphylab added by asklod AS Kremeur 2005-03
155               zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy)
156               zphynh4 = rgamma * fphylab * (zno3phy + znh4phy)
157               ! zooplankton production
158               !    preferences
159               zppz = rppz
160               zpdz = 1. - rppz
161               zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
162               zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
163               zfood = zpppz * zphy + zppdz * zdet
164               !    filtration
165               zfilpz = taus * zpppz / (aks + zfood)
166               zfildz = taus * zppdz / (aks + zfood)
167               !    grazing
168               zphyzoo = zfilpz * zphy * zzoo
169               zdetzoo = zfildz * zdet * zzoo
170
171               ! fecal pellets production
172               zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo
173
174               ! zooplankton liquide excretion
175               zzoonh4 = tauzn * fzoolab * zzoo 
176               zzoodom = tauzn * (1 - fzoolab) * zzoo
177
178               ! mortality
179               !    phytoplankton mortality
180               zphydet = tmminp * zphy
181
182               !    zooplankton mortality
183               !    closure : flux grazing is redistributed below level jpkbio
184               zzoobod = tmminz * zzoo * zzoo
185               xksi(ji,jj) = xksi(ji,jj) + (1-fdbod) * zzoobod * e3t_n(ji,jj,jk)
186               zboddet = fdbod * zzoobod
187
188               ! detritus and dom breakdown
189               zdetnh4 = taudn * fdetlab * zdet
190               zdetdom = taudn * (1 - fdetlab) * zdet
191
192               zdomnh4 = taudomn * zdom
193
194               ! flux added to express how the excess of nitrogen from
195               ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment)
196               zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
197
198               ! Nitrification
199               znh4no3 = taunn * znh4
200
201               ! determination of trends
202               !    total trend for each biological tracer
203               zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet
204               zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod
205               zno3a = - zno3phy + znh4no3
206               znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju
207               zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet
208               zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
209
210               ! tracer flux at totox-point added to the general trend
211               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
212               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
213               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
214               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a
215               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a
216               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
217
218                IF( lk_iomput ) THEN
219                  ! convert fluxes in per day
220                  ze3t = e3t_n(ji,jj,jk) * 86400._wp
221                  zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t
222                  zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t
223                  zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t
224                  zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t
225                  zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t
226                  zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t
227                  zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t
228                  zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t
229                  zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t
230                  zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t
231                  zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t
232                  zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t
233                  zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t
234                  zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t
235                  zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t
236                  zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t
237                  zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t
238                  !   
239                  zw3d(ji,jj,jk,1) = zno3phy * 86400
240                  zw3d(ji,jj,jk,2) = znh4phy * 86400     
241                  zw3d(ji,jj,jk,3) = znh4no3 * 86400   
242                   !
243                ENDIF
244            END DO
245         END DO
246      END DO
247
248      !                                      ! -------------------------- !
249      DO jk = jpkb, jpkm1                    !  Upper ocean (bio-layers)  !
250         !                                   ! -------------------------- !
251         DO jj = 2, jpjm1
252            DO ji = fs_2, fs_jpim1 
253               ! remineralisation of all quantities towards nitrate
254
255               !    trophic variables( det, zoo, phy, no3, nh4, dom)
256               !       negative trophic variables DO not contribute to the fluxes
257               zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) )
258               zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) )
259               zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) )
260               zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) )
261               znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) )
262               zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) )
263
264               !    Limitations
265               zlt   = 0.e0
266               zle   = 0.e0
267               zlno3 = 0.e0
268               zlnh4 = 0.e0
269
270               !    sinks and sources
271               !       phytoplankton production and exsudation
272               zno3phy = 0.e0
273               znh4phy = 0.e0
274               zphydom = 0.e0
275               zphynh4 = 0.e0
276
277               !    zooplankton production
278               zphyzoo = 0.e0      ! grazing
279               zdetzoo = 0.e0
280
281               zzoodet = 0.e0      ! fecal pellets production
282
283               zzoonh4 = tauzn * fzoolab * zzoo         ! zooplankton liquide excretion
284               zzoodom = tauzn * (1 - fzoolab) * zzoo
285
286               !    mortality
287               zphydet = tmminp * zphy      ! phytoplankton mortality
288
289               zzoobod = 0.e0               ! zooplankton mortality
290               zboddet = 0.e0               ! closure : flux fbod is redistributed below level jpkbio
291
292               !    detritus and dom breakdown
293               zdetnh4 = taudn * fdetlab * zdet
294               zdetdom = taudn * (1 - fdetlab) * zdet
295
296               zdomnh4 = taudomn * zdom
297               zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
298
299               !    Nitrification
300               znh4no3 = taunn * znh4
301
302
303               ! determination of trends
304               !     total trend for each biological tracer
305               zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet
306               zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod
307               zno3a = - zno3phy + znh4no3 
308               znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju
309               zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + zboddet
310               zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
311
312               ! tracer flux at totox-point added to the general trend
313               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
314               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
315               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
316               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a
317               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a
318               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
319               !
320                IF( lk_iomput ) THEN
321                  ! convert fluxes in per day
322                  ze3t = e3t_n(ji,jj,jk) * 86400._wp
323                  zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t
324                  zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t
325                  zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t
326                  zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t
327                  zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t
328                  zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t
329                  zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t
330                  zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t
331                  zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t
332                  zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t
333                  zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t
334                  zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t
335                  zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t
336                  zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t
337                  zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t
338                  zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t
339                  zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t
340                  !   
341                  zw3d(ji,jj,jk,1) = zno3phy * 86400._wp
342                  zw3d(ji,jj,jk,2) = znh4phy * 86400._wp
343                  zw3d(ji,jj,jk,3) = znh4no3 * 86400._wp
344                   !
345                ENDIF
346            END DO
347         END DO
348      END DO
349
350      IF( lk_iomput ) THEN
351         DO jl = 1, 17 
352            CALL lbc_lnk( zw2d(:,:,jl),'T', 1. )
353         END DO
354         DO jl = 1, 3
355            CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. )
356         END DO
357      ENDIF
358      IF( lk_iomput ) THEN
359            ! Save diagnostics
360        CALL iom_put( "TNO3PHY", zw2d(:,:,1) )
361        CALL iom_put( "TNH4PHY", zw2d(:,:,2) )
362        CALL iom_put( "TPHYDOM", zw2d(:,:,3) )
363        CALL iom_put( "TPHYNH4", zw2d(:,:,4) )
364        CALL iom_put( "TPHYZOO", zw2d(:,:,5) )
365        CALL iom_put( "TPHYDET", zw2d(:,:,6) )
366        CALL iom_put( "TDETZOO", zw2d(:,:,7) )
367        CALL iom_put( "TZOODET", zw2d(:,:,8) )
368        CALL iom_put( "TZOOBOD", zw2d(:,:,9) )
369        CALL iom_put( "TZOONH4", zw2d(:,:,10) )
370        CALL iom_put( "TZOODOM", zw2d(:,:,11) )
371        CALL iom_put( "TNH4NO3", zw2d(:,:,12) )
372        CALL iom_put( "TDOMNH4", zw2d(:,:,13) )
373        CALL iom_put( "TDETNH4", zw2d(:,:,14) )
374        CALL iom_put( "TPHYTOT", zw2d(:,:,15) )
375        CALL iom_put( "TZOOTOT", zw2d(:,:,16) )
376         !
377        CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) )
378        CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) )
379        CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) )
380         !
381      ENDIF
382
383      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
384         WRITE(charout, FMT="('bio')")
385         CALL prt_ctl_trc_info(charout)
386         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
387      ENDIF
388      !
389      IF( lk_iomput ) THEN
390         CALL wrk_dealloc( jpi, jpj,     17, zw2d )
391         CALL wrk_dealloc( jpi, jpj, jpk, 3, zw3d )
392      ENDIF
393      !
394      IF( nn_timing == 1 )  CALL timing_stop('p2z_bio')
395      !
396   END SUBROUTINE p2z_bio
397
398   SUBROUTINE p2z_bio_init
399      !!----------------------------------------------------------------------
400      !!                  ***  ROUTINE p2z_bio_init  ***
401      !!
402      !! ** Purpose :  biological parameters
403      !!
404      !! ** Method  :   Read namelist and check the parameters
405      !!
406      !!----------------------------------------------------------------------
407      NAMELIST/namlobphy/ tmumax, rgamma, fphylab, tmminp, aki
408      NAMELIST/namlobnut/ akno3, aknh4, taunn, psinut
409      NAMELIST/namlobzoo/ rppz, taus, aks, rpnaz, rdnaz, tauzn, fzoolab, fdbod, tmminz
410      NAMELIST/namlobdet/  taudn, fdetlab
411      NAMELIST/namlobdom/ taudomn
412      INTEGER :: ios                 ! Local integer output status for namelist read
413      !!----------------------------------------------------------------------
414
415      REWIND( numnatp_ref )              ! Namelist namlobphy in reference namelist : Lobster biological parameters
416      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901)
417901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in reference namelist', lwp )
418
419      REWIND( numnatp_cfg )              ! Namelist namlobphy in configuration namelist : Lobster biological parameters
420      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 )
421902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in configuration namelist', lwp )
422      IF(lwm) WRITE ( numonp, namlobphy )
423
424      IF(lwp) THEN
425          WRITE(numout,*) ' Namelist namlobphy'
426          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
427          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
428          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
429          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
430          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
431          WRITE(numout,*) ' '
432      ENDIF
433
434      REWIND( numnatp_ref )              ! Namelist namlobnut in reference namelist : Lobster nutriments parameters
435      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903)
436903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in reference namelist', lwp )
437
438      REWIND( numnatp_cfg )              ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters
439      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 )
440904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in configuration namelist', lwp )
441      IF(lwm) WRITE ( numonp, namlobnut )
442
443      IF(lwp) THEN
444          WRITE(numout,*) ' Namelist namlobnut'
445          WRITE(numout,*) '    half-saturation nutrient for no3 uptake              akno3     =', akno3
446          WRITE(numout,*) '    half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
447          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
448          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
449          WRITE(numout,*) ' '
450      ENDIF
451
452      REWIND( numnatp_ref )              ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters
453      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905)
454905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in reference namelist', lwp )
455
456      REWIND( numnatp_cfg )              ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters
457      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 )
458906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in configuration namelist', lwp )
459      IF(lwm) WRITE ( numonp, namlobzoo )
460
461      IF(lwp) THEN
462          WRITE(numout,*) ' Namelist namlobzoo'
463          WRITE(numout,*) '    zoo preference for phyto                             rppz      =', rppz
464          WRITE(numout,*) '    maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
465          WRITE(numout,*) '    half saturation constant for zoo food                aks       =', aks
466          WRITE(numout,*) '    non-assimilated phyto by zoo                         rpnaz     =', rpnaz
467          WRITE(numout,*) '    non-assimilated detritus by zoo                      rdnaz     =', rdnaz
468          WRITE(numout,*) '    zoo specific excretion rate                          tauzn     =', 86400 * tauzn
469          WRITE(numout,*) '    minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
470          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
471          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
472          WRITE(numout,*) ' '
473      ENDIF
474
475      REWIND( numnatp_ref )              ! Namelist namlobdet in reference namelist : Lobster detritus parameters
476      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907)
477907   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in reference namelist', lwp )
478
479      REWIND( numnatp_cfg )              ! Namelist namlobdet in configuration namelist : Lobster detritus parameters
480      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 )
481908   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in configuration namelist', lwp )
482      IF(lwm) WRITE ( numonp, namlobdet )
483
484      IF(lwp) THEN
485          WRITE(numout,*) ' Namelist namlobdet'
486          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
487          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
488          WRITE(numout,*) ' '
489      ENDIF
490
491      REWIND( numnatp_ref )              ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate
492      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909)
493909   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in reference namelist', lwp )
494
495      REWIND( numnatp_cfg )              ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate
496      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 )
497910   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in configuration namelist', lwp )
498      IF(lwm) WRITE ( numonp, namlobdom )
499
500      IF(lwp) THEN
501          WRITE(numout,*) ' Namelist namlobdom'
502          WRITE(numout,*) '    DOM breakdown rate                                 taudomn     =', 86400 * taudn , ' d'
503          WRITE(numout,*) ' '
504      ENDIF
505      !
506   END SUBROUTINE p2z_bio_init
507
508#else
509   !!======================================================================
510   !!  Dummy module :                                   No PISCES bio-model
511   !!======================================================================
512CONTAINS
513   SUBROUTINE p2z_bio( kt )                   ! Empty routine
514      INTEGER, INTENT( in ) ::   kt
515      WRITE(*,*) 'p2z_bio: You should not have seen this print! error?', kt
516   END SUBROUTINE p2z_bio
517#endif 
518
519   !!======================================================================
520END MODULE p2zbio
Note: See TracBrowser for help on using the repository browser.