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 NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P2Z – NEMO

source: NEMO/branches/2019/dev_r11943_MERGE_2019/src/TOP/PISCES/P2Z/p2zbio.F90 @ 12236

Last change on this file since 12236 was 12236, checked in by acc, 4 years ago

Branch 2019/dev_r11943_MERGE_2019. Merge in changes from 2019/fix_sn_cfctl_ticket2328. Fully SETTE tested

  • Property svn:keywords set to Id
File size: 23.5 KB
Line 
1MODULE p2zbio
2   !!======================================================================
3   !!                         ***  MODULE p2zbio  ***
4   !! TOP :   LOBSTER
5   !!======================================================================
6   !! History :    -   !  1999-07  (M. Levy) Original code
7   !!              -   !  2000-12  (E. Kestenare) assign a parameter to name individual tracers
8   !!              -   !  2001-03  (M. Levy)  LNO3 + dia2d
9   !!             2.0  !  2007-12  (C. Deltel, G. Madec)  F90
10   !!----------------------------------------------------------------------
11   !!   p2z_bio        : 
12   !!----------------------------------------------------------------------
13   USE oce_trc         !
14   USE trc             !
15   USE sms_pisces      !
16   USE p2zopt          !
17   USE trd_oce         !
18   USE trdtrc          !
19   !
20   USE lbclnk          !
21   USE prtctl_trc      ! Print control for debbuging
22   USE iom             !
23   
24   IMPLICIT NONE
25   PRIVATE
26
27   PUBLIC   p2z_bio         ! called in ???
28   PUBLIC   p2z_bio_init    ! called in ???
29
30   REAL(wp) ::   tmumax     ! maximal phytoplankton growth rate            [s-1]
31   REAL(wp) ::   rgamma     ! phytoplankton exudation fraction             [%]
32   REAL(wp) ::   fphylab    ! NH4 fraction of phytoplankton exsudation
33   REAL(wp) ::   tmminp     ! minimal phytoplancton mortality rate         [0.05/86400 s-1=20 days]
34   REAL(wp) ::   aki        ! light photosynthesis half saturation constant[W/m2]
35   !
36   REAL(wp) ::   akno3      ! nitrate limitation half-saturation value     [mmol/m3]
37   REAL(wp) ::   aknh4      ! ammonium limitation half-saturation value    [mmol/m3]
38   REAL(wp) ::   taunn      ! nitrification rate                           [s-1]
39   REAL(wp) ::   psinut     ! inhibition of nitrate uptake by ammonium
40   !
41   REAL(wp) ::   taudn      ! detritus breakdown rate                        [0.1/86400 s-1=10 days]
42   REAL(wp) ::   fdetlab    ! NH4 fraction of detritus dissolution
43   !
44   REAL(wp) ::   taudomn    ! DOM breakdown rate                             [s-1]
45   !                        ! slow remineralization rate of semi-labile dom to nh4 (1 month)
46   !
47   REAL(wp) ::   rppz       ! ivlev coeff for zoo mortality
48   REAL(wp) ::   taus       ! specific zooplankton maximal grazing rate              [s-1]
49   !                                     ! 0.75/86400 s-1=8.680555E-6    1/86400 = 1.15e-5
50   REAL(wp) ::   aks        ! half-saturation constant for total zooplankton grazing [mmolN.m-3]
51   REAL(wp) ::   rpnaz      ! non-assimilated phytoplankton by zooplancton           [%]
52   REAL(wp) ::   rdnaz      ! non-assimilated detritus by zooplankton                [%]
53   REAL(wp) ::   tauzn      ! zooplancton specific excretion rate                    [0.1/86400 s-1=10 days]
54   REAL(wp) ::   tmminz     ! minimal zooplankton mortality rate                     [(mmolN/m3)-1 d-1]
55   REAL(wp) ::   fzoolab    ! NH4 fraction of zooplankton excretion
56   REAL(wp) ::   fdbod      ! zooplankton mortality fraction that goes to detritus
57
58   !! * Substitutions
59#  include "vectopt_loop_substitute.h90"
60   !!----------------------------------------------------------------------
61   !! NEMO/TOP 4.0 , NEMO Consortium (2018)
62   !! $Id$
63   !! Software governed by the CeCILL license (see ./LICENSE)
64   !!----------------------------------------------------------------------
65CONTAINS
66
67   SUBROUTINE p2z_bio( kt, Kmm, Krhs )
68      !!---------------------------------------------------------------------
69      !!                     ***  ROUTINE p2z_bio  ***
70      !!
71      !! ** Purpose :   compute the now trend due to biogeochemical processes
72      !!              and add it to the general trend of passive tracers equations
73      !!
74      !! ** Method  :   each now biological flux is calculated in function of now
75      !!              concentrations of tracers.
76      !!              depending on the tracer, these fluxes are sources or sinks.
77      !!              the total of the sources and sinks for each tracer
78      !!              is added to the general trend.
79      !!       
80      !!                      tr(Krhs) = tr(Krhs) + zf...tr(Krhs) - zftra...
81      !!                                     |         |
82      !!                                     |         |
83      !!                                  source      sink
84      !!       
85      !!---------------------------------------------------------------------
86      INTEGER, INTENT( in ) ::   kt             ! ocean time-step index     
87      INTEGER, INTENT( in ) ::   Kmm, Krhs      ! time level indices
88      !
89      INTEGER  ::   ji, jj, jk, jl
90      REAL(wp) ::   zdet, zzoo, zphy, zno3, znh4, zdom      ! now concentrations
91      REAL(wp) ::   zlno3, zlnh4, zle, zlt                  ! limitation terms for phyto
92      REAL(wp) ::   zno3phy, znh4phy, zphynh4, zphydom
93      REAL(wp) ::   zphydet, zphyzoo, zdetzoo
94      REAL(wp) ::   zzoonh4, zzoodom, zzoodet, zdetnh4, zdetdom
95      REAL(wp) ::   znh4no3, zdomnh4, zppz, zpdz, zpppz, zppdz, zfood
96      REAL(wp) ::   zfilpz, zfildz, zphya, zzooa, zno3a
97      REAL(wp) ::   znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju
98      REAL(wp) ::   ze3t
99      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:)   ::   zw2d
100      REAL(wp), ALLOCATABLE, DIMENSION(:,:,:,:) ::   zw3d
101      CHARACTER (len=25) :: charout
102      !!---------------------------------------------------------------------
103      !
104      IF( ln_timing )   CALL timing_start('p2z_bio')
105      !
106      IF( lk_iomput )   ALLOCATE( zw2d(jpi,jpj,17), zw3d(jpi,jpj,jpk,3) )
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._wp
117         zw3d(:,:,:,:) = 0._wp
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, tr(ji,jj,jk,jpdet,Kmm) )
130               zzoo = MAX( 0.e0, tr(ji,jj,jk,jpzoo,Kmm) )
131               zphy = MAX( 0.e0, tr(ji,jj,jk,jpphy,Kmm) )
132               zno3 = MAX( 0.e0, tr(ji,jj,jk,jpno3,Kmm) )
133               znh4 = MAX( 0.e0, tr(ji,jj,jk,jpnh4,Kmm) )
134               zdom = MAX( 0.e0, tr(ji,jj,jk,jpdom,Kmm) )
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(ji,jj,jk,Kmm)
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               tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + zdeta
206               tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zzooa
207               tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zphya
208               tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zno3a
209               tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + znh4a
210               tr(ji,jj,jk,jpdom,Krhs) = tr(ji,jj,jk,jpdom,Krhs) + zdoma
211
212                IF( lk_iomput ) THEN
213                  ! convert fluxes in per day
214                  ze3t = e3t(ji,jj,jk,Kmm) * 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, tr(ji,jj,jk,jpdet,Kmm) )
252               zzoo = MAX( 0.e0, tr(ji,jj,jk,jpzoo,Kmm) )
253               zphy = MAX( 0.e0, tr(ji,jj,jk,jpphy,Kmm) )
254               zno3 = MAX( 0.e0, tr(ji,jj,jk,jpno3,Kmm) )
255               znh4 = MAX( 0.e0, tr(ji,jj,jk,jpnh4,Kmm) )
256               zdom = MAX( 0.e0, tr(ji,jj,jk,jpdom,Kmm) )
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               tr(ji,jj,jk,jpdet,Krhs) = tr(ji,jj,jk,jpdet,Krhs) + zdeta
308               tr(ji,jj,jk,jpzoo,Krhs) = tr(ji,jj,jk,jpzoo,Krhs) + zzooa
309               tr(ji,jj,jk,jpphy,Krhs) = tr(ji,jj,jk,jpphy,Krhs) + zphya
310               tr(ji,jj,jk,jpno3,Krhs) = tr(ji,jj,jk,jpno3,Krhs) + zno3a
311               tr(ji,jj,jk,jpnh4,Krhs) = tr(ji,jj,jk,jpnh4,Krhs) + znh4a
312               tr(ji,jj,jk,jpdom,Krhs) = tr(ji,jj,jk,jpdom,Krhs) + zdoma
313               !
314                IF( lk_iomput ) THEN                  ! convert fluxes in per day
315                  ze3t = e3t(ji,jj,jk,Kmm) * 86400._wp
316                  zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t
317                  zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t
318                  zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t
319                  zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t
320                  zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t
321                  zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t
322                  zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t
323                  zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t
324                  zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t
325                  zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t
326                  zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t
327                  zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t
328                  zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t
329                  zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t
330                  zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t
331                  zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t
332                  zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t
333                  !   
334                  zw3d(ji,jj,jk,1) = zno3phy * 86400._wp
335                  zw3d(ji,jj,jk,2) = znh4phy * 86400._wp
336                  zw3d(ji,jj,jk,3) = znh4no3 * 86400._wp
337                  !
338               ENDIF
339            END DO
340         END DO
341      END DO
342      !
343      IF( lk_iomput ) THEN
344         CALL lbc_lnk( 'p2zbio', zw2d(:,:,:),'T', 1. )
345         CALL lbc_lnk_multi( 'p2zbio', zw3d(:,:,:,1),'T', 1., zw3d(:,:,:,2),'T', 1., zw3d(:,:,:,3),'T', 1. )
346         ! Save diagnostics
347         CALL iom_put( "TNO3PHY", zw2d(:,:,1) )
348         CALL iom_put( "TNH4PHY", zw2d(:,:,2) )
349         CALL iom_put( "TPHYDOM", zw2d(:,:,3) )
350         CALL iom_put( "TPHYNH4", zw2d(:,:,4) )
351         CALL iom_put( "TPHYZOO", zw2d(:,:,5) )
352         CALL iom_put( "TPHYDET", zw2d(:,:,6) )
353         CALL iom_put( "TDETZOO", zw2d(:,:,7) )
354         CALL iom_put( "TZOODET", zw2d(:,:,8) )
355         CALL iom_put( "TZOOBOD", zw2d(:,:,9) )
356         CALL iom_put( "TZOONH4", zw2d(:,:,10) )
357         CALL iom_put( "TZOODOM", zw2d(:,:,11) )
358         CALL iom_put( "TNH4NO3", zw2d(:,:,12) )
359         CALL iom_put( "TDOMNH4", zw2d(:,:,13) )
360         CALL iom_put( "TDETNH4", zw2d(:,:,14) )
361         CALL iom_put( "TPHYTOT", zw2d(:,:,15) )
362         CALL iom_put( "TZOOTOT", zw2d(:,:,16) )
363         !
364         CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) )
365         CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) )
366         CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) )
367         !
368      ENDIF
369
370      IF(sn_cfctl%l_prttrc)   THEN  ! print mean trends (used for debugging)
371         WRITE(charout, FMT="('bio')")
372         CALL prt_ctl_trc_info(charout)
373         CALL prt_ctl_trc(tab4d=tr(:,:,:,:,Krhs), mask=tmask, clinfo=ctrcnm)
374      ENDIF
375      !
376      IF( lk_iomput )   DEALLOCATE( zw2d, zw3d )
377      !
378      IF( ln_timing )  CALL timing_stop('p2z_bio')
379      !
380   END SUBROUTINE p2z_bio
381
382
383   SUBROUTINE p2z_bio_init
384      !!----------------------------------------------------------------------
385      !!                  ***  ROUTINE p2z_bio_init  ***
386      !!
387      !! ** Purpose :  biological parameters
388      !!
389      !! ** Method  :   Read namelist and check the parameters
390      !!
391      !!----------------------------------------------------------------------
392      INTEGER ::   ios   ! Local integer
393      !!
394      NAMELIST/namlobphy/ tmumax, rgamma, fphylab, tmminp, aki
395      NAMELIST/namlobnut/ akno3, aknh4, taunn, psinut
396      NAMELIST/namlobzoo/ rppz, taus, aks, rpnaz, rdnaz, tauzn, fzoolab, fdbod, tmminz
397      NAMELIST/namlobdet/ taudn, fdetlab
398      NAMELIST/namlobdom/ taudomn
399      !!----------------------------------------------------------------------
400      !
401      IF(lwp) WRITE(numout,*)
402      IF(lwp) WRITE(numout,*) ' p2z_bio_init : LOBSTER bio-model initialization'
403      IF(lwp) WRITE(numout,*) ' ~~~~~~~~~~~~'
404      !
405      READ  ( numnatp_ref, namlobphy, IOSTAT = ios, ERR = 901)
406901   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobphy in reference namelist' )
407      READ  ( numnatp_cfg, namlobphy, IOSTAT = ios, ERR = 902 )
408902   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobphy in configuration namelist' )
409      IF(lwm) WRITE ( numonp, namlobphy )
410      !
411      IF(lwp) THEN
412         WRITE(numout,*) '   Namelist namlobphy'
413         WRITE(numout,*) '      phyto max growth rate                                tmumax    =', 86400 * tmumax, ' d'
414         WRITE(numout,*) '      phytoplankton exudation fraction                     rgamma    =', rgamma
415         WRITE(numout,*) '      NH4 fraction of phytoplankton exsudation             fphylab   =', fphylab
416         WRITE(numout,*) '      minimal phyto mortality rate                         tmminp    =', 86400 * tmminp
417         WRITE(numout,*) '      light hlaf saturation constant                       aki       =', aki
418      ENDIF
419
420      READ  ( numnatp_ref, namlobnut, IOSTAT = ios, ERR = 903)
421903   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobnut in reference namelist' )
422      READ  ( numnatp_cfg, namlobnut, IOSTAT = ios, ERR = 904 )
423904   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobnut in configuration namelist' )
424      IF(lwm) WRITE ( numonp, namlobnut )
425
426      IF(lwp) THEN
427         WRITE(numout,*) 
428         WRITE(numout,*) '   Namelist namlobnut'
429         WRITE(numout,*) '      half-saturation nutrient for no3 uptake              akno3     =', akno3
430         WRITE(numout,*) '      half-saturation nutrient for nh4 uptake              aknh4     =', aknh4
431         WRITE(numout,*) '      nitrification rate                                   taunn     =', taunn
432         WRITE(numout,*) '      inhibition of no3 uptake by nh4                      psinut    =', psinut
433      ENDIF
434
435      READ  ( numnatp_ref, namlobzoo, IOSTAT = ios, ERR = 905)
436905   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobzoo in reference namelist' )
437      READ  ( numnatp_cfg, namlobzoo, IOSTAT = ios, ERR = 906 )
438906   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobzoo in configuration namelist' )
439      IF(lwm) WRITE ( numonp, namlobzoo )
440
441      IF(lwp) THEN
442         WRITE(numout,*) 
443         WRITE(numout,*) '   Namelist namlobzoo'
444         WRITE(numout,*) '      zoo preference for phyto                             rppz      =', rppz
445         WRITE(numout,*) '      maximal zoo grazing rate                             taus      =', 86400 * taus, ' d'
446         WRITE(numout,*) '      half saturation constant for zoo food                aks       =', aks
447         WRITE(numout,*) '      non-assimilated phyto by zoo                         rpnaz     =', rpnaz
448         WRITE(numout,*) '      non-assimilated detritus by zoo                      rdnaz     =', rdnaz
449         WRITE(numout,*) '      zoo specific excretion rate                          tauzn     =', 86400 * tauzn
450         WRITE(numout,*) '      minimal zoo mortality rate                           tmminz    =', 86400 * tmminz
451         WRITE(numout,*) '      NH4 fraction of zooplankton excretion                fzoolab   =', fzoolab
452         WRITE(numout,*) '      Zooplankton mortality fraction that goes to detritus fdbod     =', fdbod
453      ENDIF
454
455      READ  ( numnatp_ref, namlobdet, IOSTAT = ios, ERR = 907)
456907   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdet in reference namelist' )
457      READ  ( numnatp_cfg, namlobdet, IOSTAT = ios, ERR = 908 )
458908   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdet in configuration namelist' )
459      IF(lwm) WRITE ( numonp, namlobdet )
460
461      IF(lwp) THEN
462          WRITE(numout,*) 
463          WRITE(numout,*) '   Namelist namlobdet'
464          WRITE(numout,*) '      detrital breakdown rate                              taudn     =', 86400 * taudn , ' d'
465          WRITE(numout,*) '      NH4 fraction of detritus dissolution                 fdetlab   =', fdetlab
466      ENDIF
467
468      READ  ( numnatp_ref, namlobdom, IOSTAT = ios, ERR = 909)
469909   IF( ios /= 0 )   CALL ctl_nam ( ios , 'namlobdom in reference namelist' )
470      READ  ( numnatp_cfg, namlobdom, IOSTAT = ios, ERR = 910 )
471910   IF( ios >  0 )   CALL ctl_nam ( ios , 'namlobdom in configuration namelist' )
472      IF(lwm) WRITE ( numonp, namlobdom )
473
474      IF(lwp) THEN
475          WRITE(numout,*) 
476          WRITE(numout,*) '   Namelist namlobdom'
477          WRITE(numout,*) '      DOM breakdown rate                                 taudomn     =', 86400 * taudn , ' d'
478      ENDIF
479      !
480   END SUBROUTINE p2z_bio_init
481
482   !!======================================================================
483END MODULE p2zbio
Note: See TracBrowser for help on using the repository browser.