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

source: branches/2017/dev_r7881_no_wrk_alloc/NEMOGCM/NEMO/TOP_SRC/PISCES/P2Z/p2zbio.F90 @ 7910

Last change on this file since 7910 was 7910, checked in by timgraham, 7 years ago

All wrk_alloc removed

  • Property svn:keywords set to Id
File size: 24.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 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),   DIMENSION(jpi,jpj,17) :: zw2d
99      REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: 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      ENDIF
107
108      IF( kt == nittrc000 ) THEN
109         IF(lwp) WRITE(numout,*)
110         IF(lwp) WRITE(numout,*) ' p2z_bio: LOBSTER bio-model'
111         IF(lwp) WRITE(numout,*) ' ~~~~~~~'
112      ENDIF
113
114      xksi(:,:) = 0.e0        ! zooplakton closure ( fbod)
115      IF( lk_iomput ) THEN
116         zw2d  (:,:,:) = 0.e0
117         zw3d(:,:,:,:) = 0.e0
118      ENDIF
119
120      !                                      ! -------------------------- !
121      DO jk = 1, jpkbm1                      !  Upper ocean (bio-layers)  !
122         !                                   ! -------------------------- !
123         DO jj = 2, jpjm1
124            DO ji = fs_2, fs_jpim1 
125               ! trophic variables( det, zoo, phy, no3, nh4, dom)
126               ! ------------------------------------------------
127
128               ! negative trophic variables DO not contribute to the fluxes
129               zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) )
130               zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) )
131               zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) )
132               zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) )
133               znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) )
134               zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) )
135
136               ! Limitations
137               zlt   = 1.
138               zle   = 1. - EXP( -etot(ji,jj,jk) / aki / zlt )
139               ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03
140               zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 )
141               zlnh4 = znh4 / (znh4+aknh4) 
142
143               ! sinks and sources
144               !    phytoplankton production and exsudation
145               zno3phy = tmumax * zle * zlt * zlno3 * zphy
146               znh4phy = tmumax * zle * zlt * zlnh4 * zphy
147
148               !    fphylab added by asklod AS Kremeur 2005-03
149               zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy)
150               zphynh4 = rgamma * fphylab * (zno3phy + znh4phy)
151               ! zooplankton production
152               !    preferences
153               zppz = rppz
154               zpdz = 1. - rppz
155               zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
156               zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
157               zfood = zpppz * zphy + zppdz * zdet
158               !    filtration
159               zfilpz = taus * zpppz / (aks + zfood)
160               zfildz = taus * zppdz / (aks + zfood)
161               !    grazing
162               zphyzoo = zfilpz * zphy * zzoo
163               zdetzoo = zfildz * zdet * zzoo
164
165               ! fecal pellets production
166               zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo
167
168               ! zooplankton liquide excretion
169               zzoonh4 = tauzn * fzoolab * zzoo 
170               zzoodom = tauzn * (1 - fzoolab) * zzoo
171
172               ! mortality
173               !    phytoplankton mortality
174               zphydet = tmminp * zphy
175
176               !    zooplankton mortality
177               !    closure : flux grazing is redistributed below level jpkbio
178               zzoobod = tmminz * zzoo * zzoo
179               xksi(ji,jj) = xksi(ji,jj) + (1-fdbod) * zzoobod * e3t_n(ji,jj,jk)
180               zboddet = fdbod * zzoobod
181
182               ! detritus and dom breakdown
183               zdetnh4 = taudn * fdetlab * zdet
184               zdetdom = taudn * (1 - fdetlab) * zdet
185
186               zdomnh4 = taudomn * zdom
187
188               ! flux added to express how the excess of nitrogen from
189               ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment)
190               zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
191
192               ! Nitrification
193               znh4no3 = taunn * znh4
194
195               ! determination of trends
196               !    total trend for each biological tracer
197               zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet
198               zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod
199               zno3a = - zno3phy + znh4no3
200               znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju
201               zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet
202               zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
203
204               ! tracer flux at totox-point added to the general trend
205               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
206               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
207               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
208               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a
209               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a
210               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
211
212                IF( lk_iomput ) THEN
213                  ! convert fluxes in per day
214                  ze3t = e3t_n(ji,jj,jk) * 86400._wp
215                  zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t
216                  zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t
217                  zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t
218                  zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t
219                  zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t
220                  zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t
221                  zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t
222                  zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t
223                  zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t
224                  zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t
225                  zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t
226                  zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t
227                  zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t
228                  zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t
229                  zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t
230                  zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t
231                  zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t
232                  !   
233                  zw3d(ji,jj,jk,1) = zno3phy * 86400
234                  zw3d(ji,jj,jk,2) = znh4phy * 86400     
235                  zw3d(ji,jj,jk,3) = znh4no3 * 86400   
236                   !
237                ENDIF
238            END DO
239         END DO
240      END DO
241
242      !                                      ! -------------------------- !
243      DO jk = jpkb, jpkm1                    !  Upper ocean (bio-layers)  !
244         !                                   ! -------------------------- !
245         DO jj = 2, jpjm1
246            DO ji = fs_2, fs_jpim1 
247               ! remineralisation of all quantities towards nitrate
248
249               !    trophic variables( det, zoo, phy, no3, nh4, dom)
250               !       negative trophic variables DO not contribute to the fluxes
251               zdet = MAX( 0.e0, trn(ji,jj,jk,jpdet) )
252               zzoo = MAX( 0.e0, trn(ji,jj,jk,jpzoo) )
253               zphy = MAX( 0.e0, trn(ji,jj,jk,jpphy) )
254               zno3 = MAX( 0.e0, trn(ji,jj,jk,jpno3) )
255               znh4 = MAX( 0.e0, trn(ji,jj,jk,jpnh4) )
256               zdom = MAX( 0.e0, trn(ji,jj,jk,jpdom) )
257
258               !    Limitations
259               zlt   = 0.e0
260               zle   = 0.e0
261               zlno3 = 0.e0
262               zlnh4 = 0.e0
263
264               !    sinks and sources
265               !       phytoplankton production and exsudation
266               zno3phy = 0.e0
267               znh4phy = 0.e0
268               zphydom = 0.e0
269               zphynh4 = 0.e0
270
271               !    zooplankton production
272               zphyzoo = 0.e0      ! grazing
273               zdetzoo = 0.e0
274
275               zzoodet = 0.e0      ! fecal pellets production
276
277               zzoonh4 = tauzn * fzoolab * zzoo         ! zooplankton liquide excretion
278               zzoodom = tauzn * (1 - fzoolab) * zzoo
279
280               !    mortality
281               zphydet = tmminp * zphy      ! phytoplankton mortality
282
283               zzoobod = 0.e0               ! zooplankton mortality
284               zboddet = 0.e0               ! closure : flux fbod is redistributed below level jpkbio
285
286               !    detritus and dom breakdown
287               zdetnh4 = taudn * fdetlab * zdet
288               zdetdom = taudn * (1 - fdetlab) * zdet
289
290               zdomnh4 = taudomn * zdom
291               zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
292
293               !    Nitrification
294               znh4no3 = taunn * znh4
295
296
297               ! determination of trends
298               !     total trend for each biological tracer
299               zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet
300               zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod
301               zno3a = - zno3phy + znh4no3 
302               znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju
303               zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + zboddet
304               zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
305
306               ! tracer flux at totox-point added to the general trend
307               tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
308               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
309               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
310               tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a
311               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a
312               tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
313               !
314                IF( lk_iomput ) THEN
315                  ! convert fluxes in per day
316                  ze3t = e3t_n(ji,jj,jk) * 86400._wp
317                  zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t
318                  zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t
319                  zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t
320                  zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t
321                  zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t
322                  zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t
323                  zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t
324                  zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t
325                  zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t
326                  zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t
327                  zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t
328                  zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t
329                  zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t
330                  zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t
331                  zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t
332                  zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t
333                  zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t
334                  !   
335                  zw3d(ji,jj,jk,1) = zno3phy * 86400._wp
336                  zw3d(ji,jj,jk,2) = znh4phy * 86400._wp
337                  zw3d(ji,jj,jk,3) = znh4no3 * 86400._wp
338                   !
339                ENDIF
340            END DO
341         END DO
342      END DO
343
344      IF( lk_iomput ) THEN
345         DO jl = 1, 17 
346            CALL lbc_lnk( zw2d(:,:,jl),'T', 1. )
347         END DO
348         DO jl = 1, 3
349            CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. )
350         END DO
351      ENDIF
352      IF( lk_iomput ) THEN
353            ! Save diagnostics
354        CALL iom_put( "TNO3PHY", zw2d(:,:,1) )
355        CALL iom_put( "TNH4PHY", zw2d(:,:,2) )
356        CALL iom_put( "TPHYDOM", zw2d(:,:,3) )
357        CALL iom_put( "TPHYNH4", zw2d(:,:,4) )
358        CALL iom_put( "TPHYZOO", zw2d(:,:,5) )
359        CALL iom_put( "TPHYDET", zw2d(:,:,6) )
360        CALL iom_put( "TDETZOO", zw2d(:,:,7) )
361        CALL iom_put( "TZOODET", zw2d(:,:,8) )
362        CALL iom_put( "TZOOBOD", zw2d(:,:,9) )
363        CALL iom_put( "TZOONH4", zw2d(:,:,10) )
364        CALL iom_put( "TZOODOM", zw2d(:,:,11) )
365        CALL iom_put( "TNH4NO3", zw2d(:,:,12) )
366        CALL iom_put( "TDOMNH4", zw2d(:,:,13) )
367        CALL iom_put( "TDETNH4", zw2d(:,:,14) )
368        CALL iom_put( "TPHYTOT", zw2d(:,:,15) )
369        CALL iom_put( "TZOOTOT", zw2d(:,:,16) )
370         !
371        CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) )
372        CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) )
373        CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) )
374         !
375      ENDIF
376
377      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
378         WRITE(charout, FMT="('bio')")
379         CALL prt_ctl_trc_info(charout)
380         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
381      ENDIF
382      !
383      IF( lk_iomput ) THEN
384      ENDIF
385      !
386      IF( nn_timing == 1 )  CALL timing_stop('p2z_bio')
387      !
388   END SUBROUTINE p2z_bio
389
390   SUBROUTINE p2z_bio_init
391      !!----------------------------------------------------------------------
392      !!                  ***  ROUTINE p2z_bio_init  ***
393      !!
394      !! ** Purpose :  biological parameters
395      !!
396      !! ** Method  :   Read namelist and check the parameters
397      !!
398      !!----------------------------------------------------------------------
399      NAMELIST/namlobphy/ tmumax, rgamma, fphylab, tmminp, aki
400      NAMELIST/namlobnut/ akno3, aknh4, taunn, psinut
401      NAMELIST/namlobzoo/ rppz, taus, aks, rpnaz, rdnaz, tauzn, fzoolab, fdbod, tmminz
402      NAMELIST/namlobdet/  taudn, fdetlab
403      NAMELIST/namlobdom/ taudomn
404      INTEGER :: ios                 ! Local integer output status for namelist read
405      !!----------------------------------------------------------------------
406
407      REWIND( numnatp_ref )              ! Namelist namlobphy in reference namelist : Lobster biological parameters
408      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901)
409901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in reference namelist', lwp )
410
411      REWIND( numnatp_cfg )              ! Namelist namlobphy in configuration namelist : Lobster biological parameters
412      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 )
413902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in configuration namelist', lwp )
414      IF(lwm) WRITE ( numonp, namlobphy )
415
416      IF(lwp) THEN
417          WRITE(numout,*) ' Namelist namlobphy'
418          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
419          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
420          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
421          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
422          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
423          WRITE(numout,*) ' '
424      ENDIF
425
426      REWIND( numnatp_ref )              ! Namelist namlobnut in reference namelist : Lobster nutriments parameters
427      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903)
428903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in reference namelist', lwp )
429
430      REWIND( numnatp_cfg )              ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters
431      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 )
432904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in configuration namelist', lwp )
433      IF(lwm) WRITE ( numonp, namlobnut )
434
435      IF(lwp) THEN
436          WRITE(numout,*) ' Namelist namlobnut'
437          WRITE(numout,*) '    half-saturation nutrient for no3 uptake              akno3     =', akno3
438          WRITE(numout,*) '    half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
439          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
440          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
441          WRITE(numout,*) ' '
442      ENDIF
443
444      REWIND( numnatp_ref )              ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters
445      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905)
446905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in reference namelist', lwp )
447
448      REWIND( numnatp_cfg )              ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters
449      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 )
450906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in configuration namelist', lwp )
451      IF(lwm) WRITE ( numonp, namlobzoo )
452
453      IF(lwp) THEN
454          WRITE(numout,*) ' Namelist namlobzoo'
455          WRITE(numout,*) '    zoo preference for phyto                             rppz      =', rppz
456          WRITE(numout,*) '    maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
457          WRITE(numout,*) '    half saturation constant for zoo food                aks       =', aks
458          WRITE(numout,*) '    non-assimilated phyto by zoo                         rpnaz     =', rpnaz
459          WRITE(numout,*) '    non-assimilated detritus by zoo                      rdnaz     =', rdnaz
460          WRITE(numout,*) '    zoo specific excretion rate                          tauzn     =', 86400 * tauzn
461          WRITE(numout,*) '    minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
462          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
463          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
464          WRITE(numout,*) ' '
465      ENDIF
466
467      REWIND( numnatp_ref )              ! Namelist namlobdet in reference namelist : Lobster detritus parameters
468      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907)
469907   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in reference namelist', lwp )
470
471      REWIND( numnatp_cfg )              ! Namelist namlobdet in configuration namelist : Lobster detritus parameters
472      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 )
473908   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in configuration namelist', lwp )
474      IF(lwm) WRITE ( numonp, namlobdet )
475
476      IF(lwp) THEN
477          WRITE(numout,*) ' Namelist namlobdet'
478          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
479          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
480          WRITE(numout,*) ' '
481      ENDIF
482
483      REWIND( numnatp_ref )              ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate
484      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909)
485909   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in reference namelist', lwp )
486
487      REWIND( numnatp_cfg )              ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate
488      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 )
489910   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in configuration namelist', lwp )
490      IF(lwm) WRITE ( numonp, namlobdom )
491
492      IF(lwp) THEN
493          WRITE(numout,*) ' Namelist namlobdom'
494          WRITE(numout,*) '    DOM breakdown rate                                 taudomn     =', 86400 * taudn , ' d'
495          WRITE(numout,*) ' '
496      ENDIF
497      !
498   END SUBROUTINE p2z_bio_init
499
500   !!======================================================================
501END MODULE p2zbio
Note: See TracBrowser for help on using the repository browser.