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/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z – NEMO

source: branches/2017/dev_merge_2017/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90 @ 9085

Last change on this file since 9085 was 9085, checked in by cetlod, 6 years ago

dev_merge_2017 : use of lbclnk_multi

  • 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        CALL lbc_lnk( zw2d(:,:,:),'T', 1. )
348        CALL lbc_lnk_multi( zw3d(:,:,:,1),'T', 1., zw3d(:,:,:,2),'T', 1., zw3d(:,:,:,3),'T', 1. )
349        ! Save diagnostics
350        CALL iom_put( "TNO3PHY", zw2d(:,:,1) )
351        CALL iom_put( "TNH4PHY", zw2d(:,:,2) )
352        CALL iom_put( "TPHYDOM", zw2d(:,:,3) )
353        CALL iom_put( "TPHYNH4", zw2d(:,:,4) )
354        CALL iom_put( "TPHYZOO", zw2d(:,:,5) )
355        CALL iom_put( "TPHYDET", zw2d(:,:,6) )
356        CALL iom_put( "TDETZOO", zw2d(:,:,7) )
357        CALL iom_put( "TZOODET", zw2d(:,:,8) )
358        CALL iom_put( "TZOOBOD", zw2d(:,:,9) )
359        CALL iom_put( "TZOONH4", zw2d(:,:,10) )
360        CALL iom_put( "TZOODOM", zw2d(:,:,11) )
361        CALL iom_put( "TNH4NO3", zw2d(:,:,12) )
362        CALL iom_put( "TDOMNH4", zw2d(:,:,13) )
363        CALL iom_put( "TDETNH4", zw2d(:,:,14) )
364        CALL iom_put( "TPHYTOT", zw2d(:,:,15) )
365        CALL iom_put( "TZOOTOT", zw2d(:,:,16) )
366         !
367        CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) )
368        CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) )
369        CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) )
370         !
371      ENDIF
372
373      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
374         WRITE(charout, FMT="('bio')")
375         CALL prt_ctl_trc_info(charout)
376         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
377      ENDIF
378      !
379      IF( lk_iomput ) THEN
380         CALL wrk_dealloc( jpi, jpj,     17, zw2d )
381         CALL wrk_dealloc( jpi, jpj, jpk, 3, zw3d )
382      ENDIF
383      !
384      IF( nn_timing == 1 )  CALL timing_stop('p2z_bio')
385      !
386   END SUBROUTINE p2z_bio
387
388   SUBROUTINE p2z_bio_init
389      !!----------------------------------------------------------------------
390      !!                  ***  ROUTINE p2z_bio_init  ***
391      !!
392      !! ** Purpose :  biological parameters
393      !!
394      !! ** Method  :   Read namelist and check the parameters
395      !!
396      !!----------------------------------------------------------------------
397      NAMELIST/namlobphy/ tmumax, rgamma, fphylab, tmminp, aki
398      NAMELIST/namlobnut/ akno3, aknh4, taunn, psinut
399      NAMELIST/namlobzoo/ rppz, taus, aks, rpnaz, rdnaz, tauzn, fzoolab, fdbod, tmminz
400      NAMELIST/namlobdet/  taudn, fdetlab
401      NAMELIST/namlobdom/ taudomn
402      INTEGER :: ios                 ! Local integer output status for namelist read
403      !!----------------------------------------------------------------------
404
405      REWIND( numnatp_ref )              ! Namelist namlobphy in reference namelist : Lobster biological parameters
406      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901)
407901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in reference namelist', lwp )
408
409      REWIND( numnatp_cfg )              ! Namelist namlobphy in configuration namelist : Lobster biological parameters
410      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 )
411902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in configuration namelist', lwp )
412      IF(lwm) WRITE ( numonp, namlobphy )
413
414      IF(lwp) THEN
415          WRITE(numout,*) ' Namelist namlobphy'
416          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
417          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
418          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
419          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
420          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
421          WRITE(numout,*) ' '
422      ENDIF
423
424      REWIND( numnatp_ref )              ! Namelist namlobnut in reference namelist : Lobster nutriments parameters
425      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903)
426903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in reference namelist', lwp )
427
428      REWIND( numnatp_cfg )              ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters
429      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 )
430904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in configuration namelist', lwp )
431      IF(lwm) WRITE ( numonp, namlobnut )
432
433      IF(lwp) THEN
434          WRITE(numout,*) ' Namelist namlobnut'
435          WRITE(numout,*) '    half-saturation nutrient for no3 uptake              akno3     =', akno3
436          WRITE(numout,*) '    half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
437          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
438          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
439          WRITE(numout,*) ' '
440      ENDIF
441
442      REWIND( numnatp_ref )              ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters
443      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905)
444905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in reference namelist', lwp )
445
446      REWIND( numnatp_cfg )              ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters
447      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 )
448906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in configuration namelist', lwp )
449      IF(lwm) WRITE ( numonp, namlobzoo )
450
451      IF(lwp) THEN
452          WRITE(numout,*) ' Namelist namlobzoo'
453          WRITE(numout,*) '    zoo preference for phyto                             rppz      =', rppz
454          WRITE(numout,*) '    maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
455          WRITE(numout,*) '    half saturation constant for zoo food                aks       =', aks
456          WRITE(numout,*) '    non-assimilated phyto by zoo                         rpnaz     =', rpnaz
457          WRITE(numout,*) '    non-assimilated detritus by zoo                      rdnaz     =', rdnaz
458          WRITE(numout,*) '    zoo specific excretion rate                          tauzn     =', 86400 * tauzn
459          WRITE(numout,*) '    minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
460          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
461          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
462          WRITE(numout,*) ' '
463      ENDIF
464
465      REWIND( numnatp_ref )              ! Namelist namlobdet in reference namelist : Lobster detritus parameters
466      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907)
467907   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in reference namelist', lwp )
468
469      REWIND( numnatp_cfg )              ! Namelist namlobdet in configuration namelist : Lobster detritus parameters
470      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 )
471908   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in configuration namelist', lwp )
472      IF(lwm) WRITE ( numonp, namlobdet )
473
474      IF(lwp) THEN
475          WRITE(numout,*) ' Namelist namlobdet'
476          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
477          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
478          WRITE(numout,*) ' '
479      ENDIF
480
481      REWIND( numnatp_ref )              ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate
482      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909)
483909   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in reference namelist', lwp )
484
485      REWIND( numnatp_cfg )              ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate
486      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 )
487910   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in configuration namelist', lwp )
488      IF(lwm) WRITE ( numonp, namlobdom )
489
490      IF(lwp) THEN
491          WRITE(numout,*) ' Namelist namlobdom'
492          WRITE(numout,*) '    DOM breakdown rate                                 taudomn     =', 86400 * taudn , ' d'
493          WRITE(numout,*) ' '
494      ENDIF
495      !
496   END SUBROUTINE p2z_bio_init
497
498   !!======================================================================
499END MODULE p2zbio
Note: See TracBrowser for help on using the repository browser.