source: NEMO/branches/2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles/src/TOP/PISCES/P2Z/p2zbio.F90 @ 11671

Last change on this file since 11671 was 11671, checked in by acc, 2 years ago

Branch 2019/dev_r11613_ENHANCE-04_namelists_as_internalfiles. Final, non-substantive changes to complete this branch. These changes remove all REWIND statements on the old namelist fortran units (now character variables for internal files). These changes have been left until last since they are easily repeated via a script and it may be preferable to use the previous revision for merge purposes and reapply these last changes separately. This branch has been fully SETTE tested.

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