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.
p4zmeso.F90 in branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z – NEMO

source: branches/2015/dev_r5803_NOC_WAD/NEMOGCM/NEMO/TOP_SRC/PISCES/P4Z/p4zmeso.F90 @ 5870

Last change on this file since 5870 was 5870, checked in by acc, 8 years ago

Branch 2015/dev_r5803_NOC_WAD. Merge in trunk changes from 5803 to 5869 in preparation for merge. Also tidied and reorganised some wetting and drying code. Renamed wadlmt.F90 to wetdry.F90. Wetting drying code changes restricted to domzgr.F90, domvvl.F90 nemogcm.F90 sshwzv.F90, dynspg_ts.F90, wetdry.F90 and dynhpg.F90. Code passes full SETTE tests with ln_wd=.false.. Still awaiting test case for checking with ln_wd=.false.

File size: 18.8 KB
Line 
1MODULE p4zmeso
2   !!======================================================================
3   !!                         ***  MODULE p4zmeso  ***
4   !! TOP :   PISCES Compute the sources/sinks for mesozooplankton
5   !!======================================================================
6   !! History :   1.0  !  2002     (O. Aumont) Original code
7   !!             2.0  !  2007-12  (C. Ethe, G. Madec)  F90
8   !!             3.4  !  2011-06  (O. Aumont, C. Ethe) Quota model for iron
9   !!----------------------------------------------------------------------
10#if defined key_pisces
11   !!----------------------------------------------------------------------
12   !!   'key_pisces'                                       PISCES bio-model
13   !!----------------------------------------------------------------------
14   !!   p4z_meso       :   Compute the sources/sinks for mesozooplankton
15   !!   p4z_meso_init  :   Initialization of the parameters for mesozooplankton
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 p4zsink         !  vertical flux of particulate matter due to sinking
21   USE p4zint          !  interpolation and computation of various fields
22   USE p4zprod         !  production
23   USE prtctl_trc      !  print control for debugging
24   USE iom             !  I/O manager
25
26   IMPLICIT NONE
27   PRIVATE
28
29   PUBLIC   p4z_meso              ! called in p4zbio.F90
30   PUBLIC   p4z_meso_init         ! called in trcsms_pisces.F90
31
32   !! * Shared module variables
33   REAL(wp), PUBLIC ::  part2        !: part of calcite not dissolved in mesozoo guts
34   REAL(wp), PUBLIC ::  xprefc       !: mesozoo preference for POC
35   REAL(wp), PUBLIC ::  xprefp       !: mesozoo preference for nanophyto
36   REAL(wp), PUBLIC ::  xprefz       !: mesozoo preference for diatoms
37   REAL(wp), PUBLIC ::  xprefpoc     !: mesozoo preference for POC
38   REAL(wp), PUBLIC ::  xthresh2zoo  !: zoo feeding threshold for mesozooplankton
39   REAL(wp), PUBLIC ::  xthresh2dia  !: diatoms feeding threshold for mesozooplankton
40   REAL(wp), PUBLIC ::  xthresh2phy  !: nanophyto feeding threshold for mesozooplankton
41   REAL(wp), PUBLIC ::  xthresh2poc  !: poc feeding threshold for mesozooplankton
42   REAL(wp), PUBLIC ::  xthresh2     !: feeding threshold for mesozooplankton
43   REAL(wp), PUBLIC ::  resrat2      !: exsudation rate of mesozooplankton
44   REAL(wp), PUBLIC ::  mzrat2       !: microzooplankton mortality rate
45   REAL(wp), PUBLIC ::  grazrat2     !: maximal mesozoo grazing rate
46   REAL(wp), PUBLIC ::  xkgraz2      !: non assimilated fraction of P by mesozoo
47   REAL(wp), PUBLIC ::  unass2       !: Efficicency of mesozoo growth
48   REAL(wp), PUBLIC ::  sigma2       !: Fraction of mesozoo excretion as DOM
49   REAL(wp), PUBLIC ::  epsher2      !: half sturation constant for grazing 2
50   REAL(wp), PUBLIC ::  grazflux     !: mesozoo flux feeding rate
51
52   !!----------------------------------------------------------------------
53   !! NEMO/TOP 3.3 , NEMO Consortium (2010)
54   !! $Id: p4zmeso.F90 3160 2011-11-20 14:27:18Z cetlod $
55   !! Software governed by the CeCILL licence (NEMOGCM/NEMO_CeCILL.txt)
56   !!----------------------------------------------------------------------
57
58CONTAINS
59
60   SUBROUTINE p4z_meso( kt, knt )
61      !!---------------------------------------------------------------------
62      !!                     ***  ROUTINE p4z_meso  ***
63      !!
64      !! ** Purpose :   Compute the sources/sinks for mesozooplankton
65      !!
66      !! ** Method  : - ???
67      !!---------------------------------------------------------------------
68      INTEGER, INTENT(in) ::   kt, knt ! ocean time step
69      INTEGER  :: ji, jj, jk
70      REAL(wp) :: zcompadi, zcompaph, zcompapoc, zcompaz, zcompam
71      REAL(wp) :: zgraze2 , zdenom, zdenom2
72      REAL(wp) :: zfact   , zstep, zfood, zfoodlim, zproport
73      REAL(wp) :: zmortzgoc, zfrac, zfracfe, zratio, zratio2
74      REAL(wp) :: zepshert, zepsherv, zgrarsig, zgraztot, zgraztotn, zgraztotf
75      REAL(wp) :: zgrarem2, zgrafer2, zgrapoc2, zprcaca, zmortz2, zgrasrat, zgrasratn
76#if defined key_kriest
77      REAL znumpoc
78#endif
79      REAL(wp) :: zrespz2, ztortz2, zgrazd, zgrazz, zgrazpof
80      REAL(wp) :: zgrazn, zgrazpoc, zgraznf, zgrazf
81      REAL(wp) :: zgrazfffp, zgrazfffg, zgrazffep, zgrazffeg
82      CHARACTER (len=25) :: charout
83      REAL(wp), POINTER, DIMENSION(:,:,:) :: zgrazing, zw3d
84
85      !!---------------------------------------------------------------------
86      !
87      IF( nn_timing == 1 )  CALL timing_start('p4z_meso')
88      !
89      IF( lk_iomput ) THEN
90         CALL wrk_alloc( jpi, jpj, jpk, zgrazing )
91         zgrazing(:,:,:) = 0._wp
92      ENDIF
93
94      DO jk = 1, jpkm1
95         DO jj = 1, jpj
96            DO ji = 1, jpi
97               zcompam   = MAX( ( trb(ji,jj,jk,jpmes) - 1.e-9 ), 0.e0 )
98# if defined key_degrad
99               zstep     = xstep * facvol(ji,jj,jk)
100# else
101               zstep     = xstep
102# endif
103               zfact     = zstep * tgfunc2(ji,jj,jk) * zcompam
104
105               !  Respiration rates of both zooplankton
106               !  -------------------------------------
107               zrespz2   = resrat2 * zfact * trb(ji,jj,jk,jpmes) / ( xkmort + trb(ji,jj,jk,jpmes) )  &
108                  &      + resrat2 * zfact * 3. * nitrfac(ji,jj,jk)
109
110               !  Zooplankton mortality. A square function has been selected with
111               !  no real reason except that it seems to be more stable and may mimic predation
112               !  ---------------------------------------------------------------
113               ztortz2   = mzrat2 * 1.e6 * zfact * trb(ji,jj,jk,jpmes)
114               !
115               zcompadi  = MAX( ( trb(ji,jj,jk,jpdia) - xthresh2dia ), 0.e0 )
116               zcompaz   = MAX( ( trb(ji,jj,jk,jpzoo) - xthresh2zoo ), 0.e0 )
117               ! Size effect of nanophytoplankton on grazing : the smaller it is, the less prone
118               ! it is to predation by mesozooplankton
119               ! -------------------------------------------------------------------------------
120               zcompaph  = MAX( ( trb(ji,jj,jk,jpphy) - xthresh2phy ), 0.e0 ) &
121                  &      * MIN(1., MAX( 0., ( quotan(ji,jj,jk) - 0.2) / 0.3 ) )
122               zcompapoc = MAX( ( trb(ji,jj,jk,jppoc) - xthresh2poc ), 0.e0 )
123
124               zfood     = xprefc * zcompadi + xprefz * zcompaz + xprefp * zcompaph + xprefpoc * zcompapoc 
125               zfoodlim  = MAX( 0., zfood - MIN( 0.5 * zfood, xthresh2 ) )
126               zdenom    = zfoodlim / ( xkgraz2 + zfoodlim )
127               zdenom2   = zdenom / ( zfood + rtrn )
128               zgraze2   = grazrat2 * zstep * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpmes) 
129
130               zgrazd    = zgraze2  * xprefc   * zcompadi  * zdenom2 
131               zgrazz    = zgraze2  * xprefz   * zcompaz   * zdenom2 
132               zgrazn    = zgraze2  * xprefp   * zcompaph  * zdenom2 
133               zgrazpoc  = zgraze2  * xprefpoc * zcompapoc * zdenom2 
134
135               zgraznf   = zgrazn   * trb(ji,jj,jk,jpnfe) / ( trb(ji,jj,jk,jpphy) + rtrn)
136               zgrazf    = zgrazd   * trb(ji,jj,jk,jpdfe) / ( trb(ji,jj,jk,jpdia) + rtrn)
137               zgrazpof  = zgrazpoc * trb(ji,jj,jk,jpsfe) / ( trb(ji,jj,jk,jppoc) + rtrn)
138
139               !  Mesozooplankton flux feeding on GOC
140               !  ----------------------------------
141               !  ----------------------------------
142# if ! defined key_kriest
143               zgrazffeg = grazflux  * zstep * wsbio4(ji,jj,jk)      &
144               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes)
145               zgrazfffg = zgrazffeg * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn)
146# endif
147               zgrazffep = grazflux  * zstep *  wsbio3(ji,jj,jk)     &
148               &           * tgfunc2(ji,jj,jk) * trb(ji,jj,jk,jppoc) * trb(ji,jj,jk,jpmes)
149               zgrazfffp = zgrazffep * trb(ji,jj,jk,jpsfe) / (trb(ji,jj,jk,jppoc) + rtrn)
150              !
151# if ! defined key_kriest
152              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg
153              ! Compute the proportion of filter feeders
154              zproport  = (zgrazffep + zgrazffeg)/(rtrn + zgraztot)
155              ! Compute fractionation of aggregates. It is assumed that
156              ! diatoms based aggregates are more prone to fractionation
157              ! since they are more porous (marine snow instead of fecal pellets)
158              zratio    = trb(ji,jj,jk,jpgsi) / ( trb(ji,jj,jk,jpgoc) + rtrn )
159              zratio2   = zratio * zratio
160              zfrac     = zproport * grazflux  * zstep * wsbio4(ji,jj,jk)      &
161               &          * trb(ji,jj,jk,jpgoc) * trb(ji,jj,jk,jpmes)          &
162               &          * ( 0.2 + 3.8 * zratio2 / ( 1.**2 + zratio2 ) )
163              zfracfe   = zfrac * trb(ji,jj,jk,jpbfe) / (trb(ji,jj,jk,jpgoc) + rtrn)
164
165              zgrazffep = zproport * zgrazffep
166              zgrazffeg = zproport * zgrazffeg
167              zgrazfffp = zproport * zgrazfffp
168              zgrazfffg = zproport * zgrazfffg
169              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep + zgrazffeg
170              zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk)   &
171              &   + zgrazpoc + zgrazffep + zgrazffeg
172              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp + zgrazfffg
173# else
174              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep
175              ! Compute the proportion of filter feeders
176              zproport  = zgrazffep / ( zgraztot + rtrn )
177              zgrazffep = zproport * zgrazffep
178              zgrazfffp = zproport * zgrazfffp
179              zgraztot  = zgrazd + zgrazz + zgrazn + zgrazpoc + zgrazffep
180              zgraztotn = zgrazd * quotad(ji,jj,jk) + zgrazz + zgrazn * quotan(ji,jj,jk) + zgrazpoc + zgrazffep
181              zgraztotf = zgrazf + zgraznf + zgrazz * ferat3 + zgrazpof + zgrazfffp
182# endif
183
184              ! Total grazing ( grazing by microzoo is already computed in p4zmicro )
185              IF( lk_iomput )  zgrazing(ji,jj,jk) = zgraztot
186
187              !    Mesozooplankton efficiency
188              !    --------------------------
189               zgrasrat  =  ( zgraztotf +rtrn )/ ( zgraztot + rtrn )
190               zgrasratn =  ( zgraztotn +rtrn )/ ( zgraztot + rtrn )
191               zepshert  = MIN( 1., zgrasratn, zgrasrat / ferat3)
192               zepsherv  = zepshert * MIN( epsher2, (1. - unass2) * zgrasrat / ferat3, (1. - unass2) * zgrasratn )
193               zgrarem2  = zgraztot * ( 1. - zepsherv - unass2 ) &
194                &       + ( 1. - epsher2 - unass2 ) / ( 1. - epsher2 ) * ztortz2
195               zgrafer2  = zgraztot * MAX( 0. , ( 1. - unass2 ) * zgrasrat - ferat3 * zepsherv )    &
196                &       + ferat3 * ( ( 1. - epsher2 - unass2 ) /( 1. - epsher2 ) * ztortz2 )
197               zgrapoc2  = zgraztot * unass2
198
199               !   Update the arrays TRA which contain the biological sources and sinks
200               zgrarsig  = zgrarem2 * sigma2
201               tra(ji,jj,jk,jppo4) = tra(ji,jj,jk,jppo4) + zgrarsig
202               tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + zgrarsig
203               tra(ji,jj,jk,jpdoc) = tra(ji,jj,jk,jpdoc) + zgrarem2 - zgrarsig
204               tra(ji,jj,jk,jpoxy) = tra(ji,jj,jk,jpoxy) - o2ut * zgrarsig
205               tra(ji,jj,jk,jpfer) = tra(ji,jj,jk,jpfer) + zgrafer2
206               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) + zgrarsig
207               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) + rno3 * zgrarsig             
208
209               zmortz2 = ztortz2 + zrespz2
210               zmortzgoc = unass2 / ( 1. - epsher2 ) * ztortz2 + zrespz2
211               tra(ji,jj,jk,jpmes) = tra(ji,jj,jk,jpmes) - zmortz2 + zepsherv * zgraztot 
212               tra(ji,jj,jk,jpdia) = tra(ji,jj,jk,jpdia) - zgrazd
213               tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) - zgrazz
214               tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) - zgrazn
215               tra(ji,jj,jk,jpnch) = tra(ji,jj,jk,jpnch) - zgrazn * trb(ji,jj,jk,jpnch) / ( trb(ji,jj,jk,jpphy) + rtrn )
216               tra(ji,jj,jk,jpdch) = tra(ji,jj,jk,jpdch) - zgrazd * trb(ji,jj,jk,jpdch) / ( trb(ji,jj,jk,jpdia) + rtrn )
217               tra(ji,jj,jk,jpdsi) = tra(ji,jj,jk,jpdsi) - zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn )
218               tra(ji,jj,jk,jpgsi) = tra(ji,jj,jk,jpgsi) + zgrazd * trb(ji,jj,jk,jpdsi) / ( trb(ji,jj,jk,jpdia) + rtrn )
219               tra(ji,jj,jk,jpnfe) = tra(ji,jj,jk,jpnfe) - zgraznf
220               tra(ji,jj,jk,jpdfe) = tra(ji,jj,jk,jpdfe) - zgrazf
221
222               ! calcite production
223               zprcaca = xfracal(ji,jj,jk) * zgrazn
224               prodcal(ji,jj,jk) = prodcal(ji,jj,jk) + zprcaca  ! prodcal=prodcal(nanophy)+prodcal(microzoo)+prodcal(mesozoo)
225               !
226               zprcaca = part2 * zprcaca
227               tra(ji,jj,jk,jpdic) = tra(ji,jj,jk,jpdic) - zprcaca
228               tra(ji,jj,jk,jptal) = tra(ji,jj,jk,jptal) - 2. * zprcaca
229               tra(ji,jj,jk,jpcal) = tra(ji,jj,jk,jpcal) + zprcaca
230#if defined key_kriest
231              znumpoc = trb(ji,jj,jk,jpnum) / ( trb(ji,jj,jk,jppoc) + rtrn )
232              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) + zmortzgoc - zgrazpoc - zgrazffep + zgrapoc2
233              tra(ji,jj,jk,jpnum) = tra(ji,jj,jk,jpnum) - zgrazpoc * znumpoc + zgrapoc2 * xkr_dmeso      &
234                 &   + zmortzgoc * xkr_dmeso - zgrazffep * znumpoc * wsbio4(ji,jj,jk) / ( wsbio3(ji,jj,jk) + rtrn )
235              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) + ferat3 * zmortzgoc - zgrazfffp - zgrazpof    &
236                 &                 + zgraztotf * unass2
237#else
238              tra(ji,jj,jk,jppoc) = tra(ji,jj,jk,jppoc) - zgrazpoc - zgrazffep + zfrac
239              tra(ji,jj,jk,jpgoc) = tra(ji,jj,jk,jpgoc) + zmortzgoc - zgrazffeg + zgrapoc2 - zfrac
240              tra(ji,jj,jk,jpsfe) = tra(ji,jj,jk,jpsfe) - zgrazpof - zgrazfffp + zfracfe
241              tra(ji,jj,jk,jpbfe) = tra(ji,jj,jk,jpbfe) + ferat3 * zmortzgoc - zgrazfffg     &
242                 &                + zgraztotf * unass2 - zfracfe
243#endif
244            END DO
245         END DO
246      END DO
247      !
248      IF( lk_iomput .AND. knt == nrdttrc ) THEN
249         CALL wrk_alloc( jpi, jpj, jpk, zw3d )
250         IF( iom_use( "GRAZ2" ) ) THEN
251            zw3d(:,:,:) = zgrazing(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)  !   Total grazing of phyto by zooplankton
252            CALL iom_put( "GRAZ2", zw3d )
253         ENDIF
254         IF( iom_use( "PCAL" ) ) THEN
255            zw3d(:,:,:) = prodcal(:,:,:) * 1.e+3 * rfact2r * tmask(:,:,:)   !  Calcite production
256            CALL iom_put( "PCAL", zw3d ) 
257         ENDIF
258         CALL wrk_dealloc( jpi, jpj, jpk, zw3d )
259      ENDIF
260      !
261      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
262        WRITE(charout, FMT="('meso')")
263        CALL prt_ctl_trc_info(charout)
264        CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
265      ENDIF
266      !
267      IF( lk_iomput )  CALL wrk_dealloc( jpi, jpj, jpk, zgrazing )
268      !
269      IF( nn_timing == 1 )  CALL timing_stop('p4z_meso')
270      !
271   END SUBROUTINE p4z_meso
272
273   SUBROUTINE p4z_meso_init
274
275      !!----------------------------------------------------------------------
276      !!                  ***  ROUTINE p4z_meso_init  ***
277      !!
278      !! ** Purpose :   Initialization of mesozooplankton parameters
279      !!
280      !! ** Method  :   Read the nampismes namelist and check the parameters
281      !!      called at the first timestep (nittrc000)
282      !!
283      !! ** input   :   Namelist nampismes
284      !!
285      !!----------------------------------------------------------------------
286
287      NAMELIST/nampismes/ part2, grazrat2, resrat2, mzrat2, xprefc, xprefp, xprefz,   &
288         &                xprefpoc, xthresh2dia, xthresh2phy, xthresh2zoo, xthresh2poc, &
289         &                xthresh2, xkgraz2, epsher2, sigma2, unass2, grazflux
290      INTEGER :: ios                 ! Local integer output status for namelist read
291
292      REWIND( numnatp_ref )              ! Namelist nampismes in reference namelist : Pisces mesozooplankton
293      READ  ( numnatp_ref, nampismes, IOSTAT = ios, ERR = 901)
294901   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in reference namelist', lwp )
295
296      REWIND( numnatp_cfg )              ! Namelist nampismes in configuration namelist : Pisces mesozooplankton
297      READ  ( numnatp_cfg, nampismes, IOSTAT = ios, ERR = 902 )
298902   IF( ios /= 0 ) CALL ctl_nam ( ios , 'nampismes in configuration namelist', lwp )
299      IF(lwm) WRITE ( numonp, nampismes )
300
301
302      IF(lwp) THEN                         ! control print
303         WRITE(numout,*) ' ' 
304         WRITE(numout,*) ' Namelist parameters for mesozooplankton, nampismes'
305         WRITE(numout,*) ' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~'
306         WRITE(numout,*) '    part of calcite not dissolved in mesozoo guts  part2        =', part2
307         WRITE(numout,*) '    mesozoo preference for phyto                   xprefc       =', xprefc
308         WRITE(numout,*) '    mesozoo preference for POC                     xprefp       =', xprefp
309         WRITE(numout,*) '    mesozoo preference for zoo                     xprefz       =', xprefz
310         WRITE(numout,*) '    mesozoo preference for poc                     xprefpoc     =', xprefpoc
311         WRITE(numout,*) '    microzoo feeding threshold  for mesozoo        xthresh2zoo  =', xthresh2zoo
312         WRITE(numout,*) '    diatoms feeding threshold  for mesozoo         xthresh2dia  =', xthresh2dia
313         WRITE(numout,*) '    nanophyto feeding threshold for mesozoo        xthresh2phy  =', xthresh2phy
314         WRITE(numout,*) '    poc feeding threshold for mesozoo              xthresh2poc  =', xthresh2poc
315         WRITE(numout,*) '    feeding threshold for mesozooplankton          xthresh2     =', xthresh2
316         WRITE(numout,*) '    exsudation rate of mesozooplankton             resrat2      =', resrat2
317         WRITE(numout,*) '    mesozooplankton mortality rate                 mzrat2       =', mzrat2
318         WRITE(numout,*) '    maximal mesozoo grazing rate                   grazrat2     =', grazrat2
319         WRITE(numout,*) '    mesozoo flux feeding rate                      grazflux     =', grazflux
320         WRITE(numout,*) '    non assimilated fraction of P by mesozoo       unass2       =', unass2
321         WRITE(numout,*) '    Efficicency of Mesozoo growth                  epsher2      =', epsher2
322         WRITE(numout,*) '    Fraction of mesozoo excretion as DOM           sigma2       =', sigma2
323         WRITE(numout,*) '    half sturation constant for grazing 2          xkgraz2      =', xkgraz2
324      ENDIF
325
326
327   END SUBROUTINE p4z_meso_init
328
329
330#else
331   !!======================================================================
332   !!  Dummy module :                                   No PISCES bio-model
333   !!======================================================================
334CONTAINS
335   SUBROUTINE p4z_meso                    ! Empty routine
336   END SUBROUTINE p4z_meso
337#endif 
338
339   !!======================================================================
340END MODULE p4zmeso
Note: See TracBrowser for help on using the repository browser.