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.
p2zbio.F90 in branches/2016/dev_INGV_METO_merge_2016/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z – NEMO

source: branches/2016/dev_INGV_METO_merge_2016/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90 @ 7391

Last change on this file since 7391 was 7391, checked in by timgraham, 8 years ago

Merged in dev_r7012_ROBUST5_CNRS

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