source: NEMO/branches/2019/dev_r10984_HPC-13_IRRMANN_BDY_optimization/src/TOP/PISCES/P2Z/p2zbio.F90 @ 11317

Last change on this file since 11317 was 11317, checked in by smasson, 14 months ago

dev_r10984_HPC-13 : improve error handling, see #2307 and #2285

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