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/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/TOP_SRC/PISCES – NEMO

source: branches/2011/dev_r2787_LOCEAN3_TRA_TRP/NEMOGCM/NEMO/TOP_SRC/PISCES/p4zprod.F90 @ 2819

Last change on this file since 2819 was 2819, checked in by cetlod, 13 years ago

Improvment of branch dev_r2787_LOCEAN3_TRA_TRP

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