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.
p4zprod.F90 in branches/nemo_v3_3_beta/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/nemo_v3_3_beta/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90 @ 2287

Last change on this file since 2287 was 2287, checked in by smasson, 14 years ago

update licence of all NEMO files...

  • Property svn:keywords set to Id
File size: 18.5 KB
Line 
1MODULE p4zprod
2   !!======================================================================
3   !!                         ***  MODULE p4zprod  ***
4   !! TOP :   PISCES
5   !!======================================================================
6   !! History :   1.0  !  2004     (O. Aumont) Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!----------------------------------------------------------------------
9#if defined key_pisces
10   !!----------------------------------------------------------------------
11   !!   'key_pisces'                                       PISCES bio-model
12   !!----------------------------------------------------------------------
13   !!   p4z_prod       : 
14   !!----------------------------------------------------------------------
15   USE trc
16   USE oce_trc         !
17   USE sms_pisces      !
18   USE prtctl_trc
19   USE p4zopt
20   USE p4zint
21   USE p4zlim
22   USE iom
23
24   USE lib_mpp
25
26   IMPLICIT NONE
27   PRIVATE
28
29   PUBLIC   p4z_prod         ! called in p4zbio.F90
30   PUBLIC   p4z_prod_init    ! called in trcsms_pisces.F90
31
32   !! * Shared module variables
33   REAL(wp), PUBLIC ::   &
34     pislope   = 3.0_wp          ,  &  !:
35     pislope2  = 3.0_wp          ,  &  !:
36     excret    = 10.e-5_wp       , &   !:
37     excret2   = 0.05_wp         , &   !:
38     chlcnm    = 0.033_wp        , &   !:
39     chlcdm    = 0.05_wp         , &   !:
40     fecnm     = 10.E-6_wp       , &   !:
41     fecdm     = 15.E-6_wp       , &   !:
42     grosip    = 0.151_wp
43
44   REAL(wp), PUBLIC, DIMENSION(jpi,jpj,jpk)  ::        &
45     &                   prmax
46   
47   REAL(wp) ::   &
48      texcret                    ,  &  !: 1 - excret
49      texcret2                   ,  &  !: 1 - excret2       
50      tpp                              !: Total primary production
51
52   INTEGER  ::  nspyr                  !: number of timesteps per year
53
54   !!* Substitution
55#  include "top_substitute.h90"
56   !!----------------------------------------------------------------------
57   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
58   !! $Id$
59   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
60   !!----------------------------------------------------------------------
61
62CONTAINS
63
64   SUBROUTINE p4z_prod( kt , jnt )
65      !!---------------------------------------------------------------------
66      !!                     ***  ROUTINE p4z_prod  ***
67      !!
68      !! ** Purpose :   Compute the phytoplankton production depending on
69      !!              light, temperature and nutrient availability
70      !!
71      !! ** Method  : - ???
72      !!---------------------------------------------------------------------
73      INTEGER, INTENT(in) :: kt, jnt
74      INTEGER  ::   ji, jj, jk
75      REAL(wp) ::   zsilfac, zfact
76      REAL(wp) ::   zprdiachl, zprbiochl, zsilim, ztn, zadap, zadap2
77      REAL(wp) ::   zlim, zsilfac2, zsiborn, zprod, zetot2, zmax, zproreg, zproreg2
78      REAL(wp) ::   zmxltst, zmxlday, zlim1
79      REAL(wp) ::   zpislopen  , zpislope2n
80      REAL(wp) ::   zrum, zcodel, zargu, zval, zvol
81#if defined key_diatrc
82      REAL(wp) ::   zrfact2
83#endif
84      REAL(wp), DIMENSION(jpi,jpj)     ::   zmixnano   , zmixdiat, zstrn
85      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpislopead , zpislopead2
86      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zprdia     , zprbio, zysopt
87      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zprorca    , zprorcad, zprofed
88      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zprofen   , zprochln, zprochld
89      REAL(wp), DIMENSION(jpi,jpj,jpk) ::   zpronew    , zpronewd
90      CHARACTER (len=25) :: charout
91      !!---------------------------------------------------------------------
92
93      zprorca (:,:,:) = 0.0
94      zprorcad(:,:,:) = 0.0
95      zprofed(:,:,:) = 0.0
96      zprofen(:,:,:) = 0.0
97      zprochln(:,:,:) = 0.0
98      zprochld(:,:,:) = 0.0
99      zpronew (:,:,:) = 0.0
100      zpronewd(:,:,:) = 0.0
101      zprdia  (:,:,:) = 0.0
102      zprbio  (:,:,:) = 0.0
103      zysopt  (:,:,:) = 0.0
104
105      ! Computation of the optimal production
106
107# if defined key_degrad
108      prmax(:,:,:) = 0.6 / rday * tgfunc(:,:,:) * facvol(:,:,:)
109# else
110      prmax(:,:,:) = 0.6 / rday * tgfunc(:,:,:)
111# endif
112
113      ! compute the day length depending on latitude and the day
114      IF(lwp) write(numout,*)
115      IF(lwp) write(numout,*) 'p4zday : - Julian day ', nday_year
116      IF(lwp) write(numout,*) '~~~~~~'
117
118      IF( nleapy == 1 .AND. MOD( nyear, 4 ) == 0 ) THEN
119         zrum = FLOAT( nday_year - 80 ) / 366.
120      ELSE
121         zrum = FLOAT( nday_year - 80 ) / 365.
122      ENDIF
123      zcodel = ASIN(  SIN( zrum * rpi * 2. ) * SIN( rad * 23.5 )  )
124
125      ! day length in hours
126      zstrn(:,:) = 0.
127      DO jj = 1, jpj
128         DO ji = 1, jpi
129            zargu = TAN( zcodel ) * TAN( gphit(ji,jj) * rad )
130            zargu = MAX( -1., MIN(  1., zargu ) )
131            zval  = MAX( 0.0, 24. - 2. * ACOS( zargu ) / rad / 15. )
132            IF( zval < 1.e0 )   zval = 24.
133            zstrn(ji,jj) = 24. / zval
134         END DO
135      END DO
136
137
138!CDIR NOVERRCHK
139      DO jk = 1, jpkm1
140!CDIR NOVERRCHK
141         DO jj = 1, jpj
142!CDIR NOVERRCHK
143            DO ji = 1, jpi
144
145               ! Computation of the P-I slope for nanos and diatoms
146               IF( etot(ji,jj,jk) > 1.E-3 ) THEN
147                   ztn    = MAX( 0., tsn(ji,jj,jk,jp_tem) - 15. )
148                   zadap  = 0.+ 1.* ztn / ( 2.+ ztn )
149                   zadap2 = 0.e0
150
151                   zfact  = EXP( -0.21 * emoy(ji,jj,jk) )
152
153                   zpislopead (ji,jj,jk) = pislope  * ( 1.+ zadap  * zfact )
154                   zpislopead2(ji,jj,jk) = pislope2 * ( 1.+ zadap2 * zfact )
155
156                   zpislopen = zpislopead(ji,jj,jk) * trn(ji,jj,jk,jpnch)                 &
157                     &         / ( trn(ji,jj,jk,jpphy) * 12.                   + rtrn )   &
158                     &         / ( prmax(ji,jj,jk) * rday * xlimphy(ji,jj,jk) + rtrn )
159
160                   zpislope2n = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch)                &
161                     &          / ( trn(ji,jj,jk,jpdia) * 12.                   + rtrn )   &
162                     &          / ( prmax(ji,jj,jk) * rday * xlimdia(ji,jj,jk) + rtrn )
163
164                   ! Computation of production function
165                   zprbio(ji,jj,jk) = prmax(ji,jj,jk) * &
166                     &                (  1.- EXP( -zpislopen * enano(ji,jj,jk) )  )
167                   zprdia(ji,jj,jk) = prmax(ji,jj,jk) * &
168                     &                (  1.- EXP( -zpislope2n * ediat(ji,jj,jk) )  )
169               ENDIF
170            END DO
171         END DO
172      END DO
173
174
175      DO jk = 1, jpkm1
176         DO jj = 1, jpj
177            DO ji = 1, jpi
178
179                IF( etot(ji,jj,jk) > 1.E-3 ) THEN
180                   !    Si/C of diatoms
181                   !    ------------------------
182                   !    Si/C increases with iron stress and silicate availability
183                   !    Si/C is arbitrariliy increased for very high Si concentrations
184                   !    to mimic the very high ratios observed in the Southern Ocean (silpot2)
185
186                  zlim1  = trn(ji,jj,jk,jpsil) / ( trn(ji,jj,jk,jpsil) + xksi1 )
187                  zlim   = xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk)
188
189                  zsilim = MIN( zprdia(ji,jj,jk)    / ( rtrn + prmax(ji,jj,jk) ),                 &
190                  &          trn(ji,jj,jk,jpfer) / ( concdfe(ji,jj,jk) + trn(ji,jj,jk,jpfer) ),   &
191                  &          trn(ji,jj,jk,jppo4) / ( concdnh4 + trn(ji,jj,jk,jppo4) ),            &
192                  &          zlim )
193                  zsilfac = 5.4 * EXP( -4.23 * zsilim ) * MAX( 0.e0, MIN( 1., 2.2 * ( zlim1 - 0.5 ) )  ) + 1.e0
194                  zsiborn = MAX( 0.e0, ( trn(ji,jj,jk,jpsil) - 15.e-6 ) )
195                  zsilfac2 = 1.+ 3.* zsiborn / ( zsiborn + xksi2 )
196                  zsilfac = MIN( 6.4,zsilfac * zsilfac2)
197                  zysopt(ji,jj,jk) = grosip * zlim1 * zsilfac
198
199              ENDIF
200            END DO
201         END DO
202      END DO
203
204      !  Computation of the limitation term due to
205      !  A mixed layer deeper than the euphotic depth
206      DO jj = 1, jpj
207         DO ji = 1, jpi
208            zmxltst = MAX( 0.e0, hmld(ji,jj) - heup(ji,jj) )
209            zmxlday = zmxltst**2 / rday
210            zmixnano(ji,jj) = 1.- zmxlday / ( 1.+ zmxlday )
211            zmixdiat(ji,jj) = 1.- zmxlday / ( 3.+ zmxlday )
212         END DO
213      END DO
214 
215      !  Mixed-layer effect on production                                                                               
216      DO jk = 1, jpkm1
217         DO jj = 1, jpj
218            DO ji = 1, jpi
219               IF( fsdepw(ji,jj,jk+1) <= hmld(ji,jj) ) THEN
220                  zprbio(ji,jj,jk) = zprbio(ji,jj,jk) * zmixnano(ji,jj)
221                  zprdia(ji,jj,jk) = zprdia(ji,jj,jk) * zmixdiat(ji,jj)
222               ENDIF
223            END DO
224         END DO
225      END DO
226
227
228!CDIR NOVERRCHK
229      DO jk = 1, jpkm1
230!CDIR NOVERRCHK
231         DO jj = 1, jpj
232!CDIR NOVERRCHK
233            DO ji = 1, jpi
234
235               IF( etot(ji,jj,jk) > 1.E-3 ) THEN
236                  !     Computation of the various production terms for nanophyto.
237                  zetot2 = enano(ji,jj,jk) * zstrn(ji,jj)
238                  zmax = MAX( 0.1, xlimphy(ji,jj,jk) )
239                  zpislopen = zpislopead(ji,jj,jk)          &
240                  &         * trn(ji,jj,jk,jpnch) / ( rtrn + trn(ji,jj,jk,jpphy) * 12.)         &
241                  &         / ( prmax(ji,jj,jk) * rday * zmax + rtrn )
242
243                  zprbiochl = prmax(ji,jj,jk) * (  1.- EXP( -zpislopen * zetot2 )  )
244
245                  zprorca(ji,jj,jk) = zprbio(ji,jj,jk)  * xlimphy(ji,jj,jk) * trn(ji,jj,jk,jpphy) * rfact2
246
247                  zpronew(ji,jj,jk) = zprorca(ji,jj,jk) * xnanono3(ji,jj,jk)    &
248                  &             / ( xnanono3(ji,jj,jk) + xnanonh4(ji,jj,jk) + rtrn )
249                  zprod = rday * zprorca(ji,jj,jk) * zprbiochl * trn(ji,jj,jk,jpphy) *zmax
250
251                  zprofen(ji,jj,jk) = (fecnm)**2 * zprod / chlcnm            &
252                  &              / (  zpislopead(ji,jj,jk) * zetot2 * trn(ji,jj,jk,jpnfe) + rtrn  )
253
254                  zprochln(ji,jj,jk) = chlcnm * 144. * zprod                  &
255                  &              / (  zpislopead(ji,jj,jk) * zetot2 * trn(ji,jj,jk,jpnch) + rtrn  )
256               ENDIF
257            END DO
258         END DO
259      END DO
260
261!CDIR NOVERRCHK
262      DO jk = 1, jpkm1
263!CDIR NOVERRCHK
264         DO jj = 1, jpj
265!CDIR NOVERRCHK
266            DO ji = 1, jpi
267               IF( etot(ji,jj,jk) > 1.E-3 ) THEN
268                  !  Computation of the various production terms for diatoms
269                  zetot2 = ediat(ji,jj,jk) * zstrn(ji,jj)
270                  zmax = MAX( 0.1, xlimdia(ji,jj,jk) )
271                  zpislope2n = zpislopead2(ji,jj,jk) * trn(ji,jj,jk,jpdch)        &
272                  &           / ( rtrn + trn(ji,jj,jk,jpdia) * 12.)        &
273                  &           / ( prmax(ji,jj,jk) * rday * zmax + rtrn )
274
275                  zprdiachl = prmax(ji,jj,jk) * (  1.- EXP( -zetot2 * zpislope2n )  )
276
277                  zprorcad(ji,jj,jk) = zprdia(ji,jj,jk) * xlimdia(ji,jj,jk) * trn(ji,jj,jk,jpdia) * rfact2
278
279                  zpronewd(ji,jj,jk) = zprorcad(ji,jj,jk) * xdiatno3(ji,jj,jk)     &
280                  &              / ( xdiatno3(ji,jj,jk) + xdiatnh4(ji,jj,jk) + rtrn )
281
282                  zprod = rday * zprorcad(ji,jj,jk) * zprdiachl * trn(ji,jj,jk,jpdia) * zmax
283
284                  zprofed(ji,jj,jk) = (fecdm)**2 * zprod / chlcdm                   &
285                  &              / ( zpislopead2(ji,jj,jk) * zetot2 * trn(ji,jj,jk,jpdfe) + rtrn )
286
287                  zprochld(ji,jj,jk) = chlcdm * 144. * zprod       &
288                  &              / ( zpislopead2(ji,jj,jk) * zetot2 * trn(ji,jj,jk,jpdch) + rtrn )
289
290               ENDIF
291            END DO
292         END DO
293      END DO
294      !
295
296      !   Update the arrays TRA which contain the biological sources and sinks
297      DO jk = 1, jpkm1
298         DO jj = 1, jpj
299           DO ji =1 ,jpi
300              zproreg  = zprorca(ji,jj,jk) - zpronew(ji,jj,jk)
301              zproreg2 = zprorcad(ji,jj,jk) - zpronewd(ji,jj,jk)
302              tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk)
303              tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) - zpronew(ji,jj,jk) - zpronewd(ji,jj,jk)
304              tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) - zproreg - zproreg2
305              tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zprorca(ji,jj,jk) * texcret
306              tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) + zprochln(ji,jj,jk) * texcret
307              tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) + zprofen(ji,jj,jk) * texcret
308              tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) + zprorcad(ji,jj,jk) * texcret2
309              tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) + zprochld(ji,jj,jk) * texcret2
310              tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) + zprofed(ji,jj,jk) * texcret2
311              tra(ji,jj,jk,jpbsi) = tra(ji,jj,jk,jpbsi) + zprorcad(ji,jj,jk) * zysopt(ji,jj,jk) * texcret2
312              tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + &
313              &                     excret2 * zprorcad(ji,jj,jk) + excret * zprorca(ji,jj,jk)
314              tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) + o2ut * ( zproreg + zproreg2) &
315              &                    + ( o2ut + o2nit ) * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) )
316              tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) &
317              &                     - texcret * zprofen(ji,jj,jk) - texcret2 * zprofed(ji,jj,jk)
318              tra(ji,jj,jk,jpsil) = tra(ji,jj,jk,jpsil) &
319              &                     - texcret2 * zprorcad(ji,jj,jk) * zysopt(ji,jj,jk)
320              tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprorca(ji,jj,jk) - zprorcad(ji,jj,jk)
321              tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) &
322              &                    + rno3 * ( zpronew(ji,jj,jk) + zpronewd(ji,jj,jk) )
323          END DO
324        END DO
325     END DO
326
327     ! Total primary production per year
328     DO jk = 1, jpkm1
329        DO jj = 1, jpj
330          DO ji = 1, jpi
331             zvol = cvol(ji,jj,jk)
332#if defined key_degrad
333             zvol = zvol * facvol(ji,jj,jk)
334#endif
335             tpp  = tpp + ( zprorca(ji,jj,jk) + zprorcad(ji,jj,jk) ) &
336                          * zvol * tmask(ji,jj,jk) * tmask_i(ji,jj)
337          END DO
338        END DO
339      END DO
340
341
342      IF( MOD( kt, nspyr ) == 0 .AND. jnt == nrdttrc ) THEN
343        IF( lk_mpp ) CALL mpp_sum( tpp )
344        WRITE(numout,*) 'Total PP :'
345        WRITE(numout,*) '-------------------- : ',tpp * 12. / 1.E12
346        WRITE(numout,*) '(GtC/yr)'
347        tpp = 0.
348      ENDIF
349
350#if defined key_diatrc && ! defined key_iomput
351      !   Supplementary diagnostics
352      zrfact2 = 1.e3 * rfact2r
353      trc3d(:,:,:,jp_pcs0_3d + 4)  = zprorca (:,:,:) * zrfact2 * tmask(:,:,:)
354      trc3d(:,:,:,jp_pcs0_3d + 5)  = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:)
355      trc3d(:,:,:,jp_pcs0_3d + 6)  = zpronew (:,:,:) * zrfact2 * tmask(:,:,:)
356      trc3d(:,:,:,jp_pcs0_3d + 7)  = zpronewd(:,:,:) * zrfact2 * tmask(:,:,:)
357      trc3d(:,:,:,jp_pcs0_3d + 8)  = zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:)
358      trc3d(:,:,:,jp_pcs0_3d + 9)  = zprofed (:,:,:) * zrfact2 * tmask(:,:,:)
359#  if ! defined key_kriest
360      trc3d(:,:,:,jp_pcs0_3d + 10) = zprofen (:,:,:) * zrfact2 * tmask(:,:,:)
361#  endif
362#endif
363
364#if defined key_diatrc && defined key_iomput
365      zrfact2 = 1.e3 * rfact2r
366      IF ( jnt == nrdttrc ) then
367         CALL iom_put( "PPPHY" , zprorca (:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by nanophyto
368         CALL iom_put( "PPPHY2", zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) )  ! primary production by diatom
369         CALL iom_put( "PPNEWN", zpronew (:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by nanophyto
370         CALL iom_put( "PPNEWD", zpronewd(:,:,:) * zrfact2 * tmask(:,:,:) )  ! new primary production by diatom
371         CALL iom_put( "PBSi"  , zprorcad(:,:,:) * zrfact2 * tmask(:,:,:) * zysopt(:,:,:) ) ! biogenic silica production
372         CALL iom_put( "PFeD"  , zprofed (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by diatom
373         CALL iom_put( "PFeN"  , zprofen (:,:,:) * zrfact2 * tmask(:,:,:) )  ! biogenic iron production by nanophyto
374      ENDIF
375#endif
376
377       IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
378         WRITE(charout, FMT="('prod')")
379         CALL prt_ctl_trc_info(charout)
380         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
381       ENDIF
382
383   END SUBROUTINE p4z_prod
384
385   SUBROUTINE p4z_prod_init
386
387      !!----------------------------------------------------------------------
388      !!                  ***  ROUTINE p4z_prod_init  ***
389      !!
390      !! ** Purpose :   Initialization of phytoplankton production parameters
391      !!
392      !! ** Method  :   Read the nampisprod namelist and check the parameters
393      !!      called at the first timestep (nit000)
394      !!
395      !! ** input   :   Namelist nampisprod
396      !!
397      !!----------------------------------------------------------------------
398
399      NAMELIST/nampisprod/ pislope, pislope2, excret, excret2, chlcnm, chlcdm,   &
400         &              fecnm, fecdm, grosip
401
402      REWIND( numnat )                     ! read numnat
403      READ  ( numnat, nampisprod )
404
405      IF(lwp) THEN                         ! control print
406         WRITE(numout,*) ' '
407         WRITE(numout,*) ' Namelist parameters for phytoplankton growth, nampisprod'
408         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
409         WRITE(numout,*) '    mean Si/C ratio                           grosip    =', grosip
410         WRITE(numout,*) '    P-I slope                                 pislope   =', pislope
411         WRITE(numout,*) '    excretion ratio of nanophytoplankton      excret    =', excret
412         WRITE(numout,*) '    excretion ratio of diatoms                excret2   =', excret2
413         WRITE(numout,*) '    P-I slope  for diatoms                    pislope2  =', pislope2
414         WRITE(numout,*) '    Minimum Chl/C in nanophytoplankton        chlcnm    =', chlcnm
415         WRITE(numout,*) '    Minimum Chl/C in diatoms                  chlcdm    =', chlcdm
416         WRITE(numout,*) '    Maximum Fe/C in nanophytoplankton         fecnm     =', fecnm
417         WRITE(numout,*) '    Minimum Fe/C in diatoms                   fecdm     =', fecdm
418      ENDIF
419
420      ! number of timesteps per year
421      nspyr  = INT( nyear_len(1) * rday / rdt )
422
423      texcret   = 1.0 - excret
424      texcret2  = 1.0 - excret2
425      tpp       = 0.
426
427   END SUBROUTINE p4z_prod_init
428
429
430
431#else
432   !!======================================================================
433   !!  Dummy module :                                   No PISCES bio-model
434   !!======================================================================
435CONTAINS
436   SUBROUTINE p4z_prod                    ! Empty routine
437   END SUBROUTINE p4z_prod
438#endif 
439
440   !!======================================================================
441END MODULE  p4zprod
Note: See TracBrowser for help on using the repository browser.