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 @ 9124

Last change on this file since 9124 was 9124, checked in by gm, 6 years ago

dev_merge_2017: ln_timing instead of nn_timing + restricted timing to nemo_init and routine called by step in OPA_SRC

  • Property svn:keywords set to Id
File size: 24.3 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( ln_timing )   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( ln_timing )  CALL timing_stop('p2z_bio')
385      !
386   END SUBROUTINE p2z_bio
387
388
389   SUBROUTINE p2z_bio_init
390      !!----------------------------------------------------------------------
391      !!                  ***  ROUTINE p2z_bio_init  ***
392      !!
393      !! ** Purpose :  biological parameters
394      !!
395      !! ** Method  :   Read namelist and check the parameters
396      !!
397      !!----------------------------------------------------------------------
398      NAMELIST/namlobphy/ tmumax, rgamma, fphylab, tmminp, aki
399      NAMELIST/namlobnut/ akno3, aknh4, taunn, psinut
400      NAMELIST/namlobzoo/ rppz, taus, aks, rpnaz, rdnaz, tauzn, fzoolab, fdbod, tmminz
401      NAMELIST/namlobdet/  taudn, fdetlab
402      NAMELIST/namlobdom/ taudomn
403      INTEGER :: ios                 ! Local integer output status for namelist read
404      !!----------------------------------------------------------------------
405
406      REWIND( numnatp_ref )              ! Namelist namlobphy in reference namelist : Lobster biological parameters
407      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901)
408901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in reference namelist', lwp )
409
410      REWIND( numnatp_cfg )              ! Namelist namlobphy in configuration namelist : Lobster biological parameters
411      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 )
412902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobphy in configuration namelist', lwp )
413      IF(lwm) WRITE ( numonp, namlobphy )
414
415      IF(lwp) THEN
416          WRITE(numout,*) ' Namelist namlobphy'
417          WRITE(numout,*) '    phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
418          WRITE(numout,*) '    phytoplankton exudation fraction                     rgamma    =', rgamma
419          WRITE(numout,*) '    NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
420          WRITE(numout,*) '    minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
421          WRITE(numout,*) '    light hlaf saturation constant                       aki       =', aki
422          WRITE(numout,*) ' '
423      ENDIF
424
425      REWIND( numnatp_ref )              ! Namelist namlobnut in reference namelist : Lobster nutriments parameters
426      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903)
427903   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in reference namelist', lwp )
428
429      REWIND( numnatp_cfg )              ! Namelist namlobnut in configuration namelist : Lobster nutriments parameters
430      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 )
431904   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobnut in configuration namelist', lwp )
432      IF(lwm) WRITE ( numonp, namlobnut )
433
434      IF(lwp) THEN
435          WRITE(numout,*) ' Namelist namlobnut'
436          WRITE(numout,*) '    half-saturation nutrient for no3 uptake              akno3     =', akno3
437          WRITE(numout,*) '    half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
438          WRITE(numout,*) '    nitrification rate                                   taunn     =', taunn
439          WRITE(numout,*) '    inhibition of no3 uptake by nh4                      psinut    =', psinut
440          WRITE(numout,*) ' '
441      ENDIF
442
443      REWIND( numnatp_ref )              ! Namelist namlobzoo in reference namelist : Lobster zooplankton parameters
444      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905)
445905   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in reference namelist', lwp )
446
447      REWIND( numnatp_cfg )              ! Namelist namlobzoo in configuration namelist : Lobster zooplankton parameters
448      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 )
449906   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobzoo in configuration namelist', lwp )
450      IF(lwm) WRITE ( numonp, namlobzoo )
451
452      IF(lwp) THEN
453          WRITE(numout,*) ' Namelist namlobzoo'
454          WRITE(numout,*) '    zoo preference for phyto                             rppz      =', rppz
455          WRITE(numout,*) '    maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
456          WRITE(numout,*) '    half saturation constant for zoo food                aks       =', aks
457          WRITE(numout,*) '    non-assimilated phyto by zoo                         rpnaz     =', rpnaz
458          WRITE(numout,*) '    non-assimilated detritus by zoo                      rdnaz     =', rdnaz
459          WRITE(numout,*) '    zoo specific excretion rate                          tauzn     =', 86400 * tauzn
460          WRITE(numout,*) '    minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
461          WRITE(numout,*) '    NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
462          WRITE(numout,*) '    Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
463          WRITE(numout,*) ' '
464      ENDIF
465
466      REWIND( numnatp_ref )              ! Namelist namlobdet in reference namelist : Lobster detritus parameters
467      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907)
468907   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in reference namelist', lwp )
469
470      REWIND( numnatp_cfg )              ! Namelist namlobdet in configuration namelist : Lobster detritus parameters
471      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 )
472908   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdet in configuration namelist', lwp )
473      IF(lwm) WRITE ( numonp, namlobdet )
474
475      IF(lwp) THEN
476          WRITE(numout,*) ' Namelist namlobdet'
477          WRITE(numout,*) '    detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
478          WRITE(numout,*) '    NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
479          WRITE(numout,*) ' '
480      ENDIF
481
482      REWIND( numnatp_ref )              ! Namelist namlobdom in reference namelist : Lobster DOM breakdown rate
483      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909)
484909   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in reference namelist', lwp )
485
486      REWIND( numnatp_cfg )              ! Namelist namlobdom in configuration namelist : Lobster DOM breakdown rate
487      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 )
488910   IF( ios /= 0 ) CALL ctl_nam ( ios , 'namlobdom in configuration namelist', lwp )
489      IF(lwm) WRITE ( numonp, namlobdom )
490
491      IF(lwp) THEN
492          WRITE(numout,*) ' Namelist namlobdom'
493          WRITE(numout,*) '    DOM breakdown rate                                 taudomn     =', 86400 * taudn , ' d'
494          WRITE(numout,*) ' '
495      ENDIF
496      !
497   END SUBROUTINE p2z_bio_init
498
499   !!======================================================================
500END MODULE p2zbio
Note: See TracBrowser for help on using the repository browser.