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.
trcbio.F90 in branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER – NEMO

source: branches/DEV_r2006_merge_TRA_TRC/NEMO/TOP_SRC/LOBSTER/trcbio.F90 @ 2038

Last change on this file since 2038 was 2038, checked in by cetlod, 14 years ago

Apply the merge to passive tracers, see ticket:693

  • Property svn:keywords set to Id
File size: 22.4 KB
RevLine 
[934]1MODULE trcbio
2   !!======================================================================
3   !!                         ***  MODULE trcbio  ***
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#if defined key_lobster
12   !!----------------------------------------------------------------------
13   !!   'key_lobster'                                     LOBSTER bio-model
14   !!----------------------------------------------------------------------
15   !!   trc_bio        : 
16   !!----------------------------------------------------------------------
17   USE oce_trc         !
[1119]18   USE trc             !
[1071]19   USE sms_lobster     !
[934]20   USE lbclnk          !
21   USE prtctl_trc      ! Print control for debbuging
[2038]22   USE trdmod_trc
[1457]23   USE iom
[934]24   
25   IMPLICIT NONE
26   PRIVATE
27
28   PUBLIC   trc_bio    ! called in ???
29
30   !!* Substitution
[1457]31#  include "top_substitute.h90"
[934]32   !!----------------------------------------------------------------------
33   !! NEMO/TOP 2.0 , LOCEAN-IPSL (2007)
[1146]34   !! $Id$
[934]35   !! Software governed by the CeCILL licence (modipsl/doc/NEMO_CeCILL.txt)
36   !!----------------------------------------------------------------------
37
38CONTAINS
39
40   SUBROUTINE trc_bio( kt )
41      !!---------------------------------------------------------------------
42      !!                     ***  ROUTINE trc_bio  ***
43      !!
44      !! ** Purpose :   compute the now trend due to biogeochemical processes
45      !!              and add it to the general trend of passive tracers equations
46      !!
47      !! ** Method  :   each now biological flux is calculated in function of now
48      !!              concentrations of tracers.
49      !!              depending on the tracer, these fluxes are sources or sinks.
50      !!              the total of the sources and sinks for each tracer
51      !!              is added to the general trend.
52      !!       
53      !!                      tra = tra + zf...tra - zftra...
54      !!                                     |         |
55      !!                                     |         |
56      !!                                  source      sink
57      !!       
[2038]58      !!              IF 'key_diabio' defined , the biogeochemical trends
[934]59      !!              for passive tracers are saved for futher diagnostics.
60      !!---------------------------------------------------------------------
61      INTEGER, INTENT( in ) ::   kt      ! ocean time-step index     
62      !!
[1264]63      INTEGER  ::   ji, jj, jk, jl
[934]64      REAL(wp) ::   zdet, zzoo, zphy, zno3, znh4, zdom      ! now concentrations
65      REAL(wp) ::   zlno3, zlnh4, zle, zlt                  ! limitation terms for phyto
66      REAL(wp) ::   zno3phy, znh4phy, zphynh4, zphydom
67      REAL(wp) ::   zphydet, zphyzoo, zdetzoo
68      REAL(wp) ::   zzoonh4, zzoodom, zzoodet, zdetnh4, zdetdom
69      REAL(wp) ::   znh4no3, zdomnh4, zppz, zpdz, zpppz, zppdz, zfood
70      REAL(wp) ::   zfilpz, zfildz, zphya, zzooa, zno3a
71      REAL(wp) ::   znh4a, zdeta, zdoma, zzoobod, zboddet, zdomaju
[2038]72#if defined key_diatrc
[1457]73      REAL(wp) ::   ze3t
[934]74#endif
[2038]75#if defined key_diatrc && defined key_iomput
[1457]76      REAL(wp), DIMENSION(jpi,jpj,17)     :: zw2d
77      REAL(wp), DIMENSION(jpi,jpj,jpk,3) :: zw3d
78#endif
[1176]79      REAL(wp), DIMENSION(:,:,:,:), ALLOCATABLE ::   ztrbio
[934]80      CHARACTER (len=25) :: charout
81      !!---------------------------------------------------------------------
82
83      IF( kt == nit000 ) THEN
84         IF(lwp) WRITE(numout,*)
85         IF(lwp) WRITE(numout,*) ' trc_bio: LOBSTER bio-model'
86         IF(lwp) WRITE(numout,*) ' ~~~~~~~'
87      ENDIF
88
89      fbod(:,:) = 0.e0
[2038]90#if defined key_diatrc && ! defined key_iomput
[1255]91      DO jl = jp_lob0_2d, jp_lob1_2d
[1176]92         trc2d(:,:,jl) = 0.e0
[934]93      END DO 
94#endif
[2038]95#if defined key_diatrc && defined key_iomput
[1457]96      zw2d(:,:,:) = 0.e0
97      zw3d(:,:,:,:) = 0.e0
98#endif
[934]99
[1176]100      IF( l_trdtrc )THEN
101         ALLOCATE( ztrbio(jpi,jpj,jpk,jp_lobster_trd) )
102         ztrbio(:,:,:,:) = 0.
103      ENDIF
[934]104
105      !                                      ! -------------------------- !
106      DO jk = 1, jpkbm1                      !  Upper ocean (bio-layers)  !
107         !                                   ! -------------------------- !
108         DO jj = 2, jpjm1
[1457]109            DO ji = fs_2, fs_jpim1 
[934]110               ! trophic variables( det, zoo, phy, no3, nh4, dom)
111               ! ------------------------------------------------
112
113               ! negative trophic variables DO not contribute to the fluxes
[2038]114               zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) )
115               zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) )
116               zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) )
117               zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) )
118               znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) )
119               zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) )
[934]120
121               ! Limitations
122               zlt   = 1.
123               zle   = 1. - EXP( -xpar(ji,jj,jk) / aki / zlt )
124               ! psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03
125               zlno3 = zno3 * EXP( -psinut * znh4 ) / ( akno3 + zno3 )
126               zlnh4 = znh4 / (znh4+aknh4) 
127
128               ! sinks and sources
129               !    phytoplankton production and exsudation
130               zno3phy = tmumax * zle * zlt * zlno3 * zphy
131               znh4phy = tmumax * zle * zlt * zlnh4 * zphy
132
133               !    fphylab added by asklod AS Kremeur 2005-03
134               zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy)
135               zphynh4 = rgamma * fphylab * (zno3phy + znh4phy)
136
137               ! zooplankton production
138               !    preferences
139               zppz = rppz
140               zpdz = 1. - rppz
141               zpppz = ( zppz * zphy ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
142               zppdz = ( zpdz * zdet ) / ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
143               zfood = zpppz * zphy + zppdz * zdet
144               !    filtration
145               zfilpz = taus * zpppz / (aks + zfood)
146               zfildz = taus * zppdz / (aks + zfood)
147               !    grazing
148               zphyzoo = zfilpz * zphy * zzoo
149               zdetzoo = zfildz * zdet * zzoo
150
151               ! fecal pellets production
152               zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo
153 
154               ! zooplankton liquide excretion
155               zzoonh4 = tauzn * fzoolab * zzoo 
156               zzoodom = tauzn * (1 - fzoolab) * zzoo
157
158               ! mortality
159               !    phytoplankton mortality
160               zphydet = tmminp * zphy
161
162               !    zooplankton mortality
163               !    closure : flux fbod is redistributed below level jpkbio
164               zzoobod = tmminz * zzoo * zzoo
165               fbod(ji,jj) = fbod(ji,jj) + (1-fdbod) * zzoobod * fse3t(ji,jj,jk)
166               zboddet = fdbod * zzoobod
167
168               ! detritus and dom breakdown
169               zdetnh4 = taudn * fdetlab * zdet
170               zdetdom = taudn * (1 - fdetlab) * zdet 
171
172               zdomnh4 = taudomn * zdom
173
174               ! flux added to express how the excess of nitrogen from
175               ! PHY, ZOO and DET to DOM goes directly to NH4 (flux of ajustment)
176               zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
177
178               ! Nitrification
179               znh4no3 = taunn * znh4
180
181               ! determination of trends
182               !    total trend for each biological tracer
183               zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet
184               zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod
185               zno3a = - zno3phy + znh4no3
186               znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju
187               zdeta =   zphydet + zzoodet - zdetzoo - zdetnh4 - zdetdom + zboddet
188               zdoma =   zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
[1119]189
[1457]190               ! tracer flux at totox-point added to the general trend
[2038]191               tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta
192               tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa
193               tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya
194               tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a
195               tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a
196               tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma
[1457]197
[2038]198#if defined key_diabio
[1255]199               trbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy
200               trbio(ji,jj,jk,jp_lob0_trd +  1) = znh4phy
201               trbio(ji,jj,jk,jp_lob0_trd +  2) = zphynh4
202               trbio(ji,jj,jk,jp_lob0_trd +  3) = zphydom
203               trbio(ji,jj,jk,jp_lob0_trd +  4) = zphyzoo
204               trbio(ji,jj,jk,jp_lob0_trd +  5) = zphydet
205               trbio(ji,jj,jk,jp_lob0_trd +  6) = zdetzoo
206               trbio(ji,jj,jk,jp_lob0_trd +  8) = zzoodet
207               trbio(ji,jj,jk,jp_lob0_trd +  9) = zzoobod
208               trbio(ji,jj,jk,jp_lob0_trd + 10) = zzoonh4
209               trbio(ji,jj,jk,jp_lob0_trd + 11) = zzoodom
210               trbio(ji,jj,jk,jp_lob0_trd + 12) = znh4no3
211               trbio(ji,jj,jk,jp_lob0_trd + 13) = zdomnh4
212               trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4
213               trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom
[934]214#endif
[1176]215               IF( l_trdtrc ) THEN
[1255]216                  ztrbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy
217                  ztrbio(ji,jj,jk,jp_lob0_trd +  1) = znh4phy
218                  ztrbio(ji,jj,jk,jp_lob0_trd +  2) = zphynh4
219                  ztrbio(ji,jj,jk,jp_lob0_trd +  3) = zphydom
220                  ztrbio(ji,jj,jk,jp_lob0_trd +  4) = zphyzoo
221                  ztrbio(ji,jj,jk,jp_lob0_trd +  5) = zphydet
222                  ztrbio(ji,jj,jk,jp_lob0_trd +  6) = zdetzoo
[1176]223                  !  trend number 8 in trcsed
[1255]224                  ztrbio(ji,jj,jk,jp_lob0_trd +  8) = zzoodet
225                  ztrbio(ji,jj,jk,jp_lob0_trd +  9) = zzoobod
226                  ztrbio(ji,jj,jk,jp_lob0_trd + 10) = zzoonh4
227                  ztrbio(ji,jj,jk,jp_lob0_trd + 11) = zzoodom
228                  ztrbio(ji,jj,jk,jp_lob0_trd + 12) = znh4no3
229                  ztrbio(ji,jj,jk,jp_lob0_trd + 13) = zdomnh4
230                  ztrbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4
231                  ztrbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom
[1176]232                  !  trend number 17 in trcexp
233                ENDIF
[934]234
[2038]235#if defined key_diatrc
[1457]236               ! convert fluxes in per day
237               ze3t = fse3t(ji,jj,jk) * 86400.
238#if ! defined key_iomput
239               trc2d(ji,jj,jp_lob0_2d    ) = trc2d(ji,jj, jp_lob0_2d    ) + zno3phy * ze3t 
240               trc2d(ji,jj,jp_lob0_2d + 1) = trc2d(ji,jj, jp_lob0_2d + 1) + znh4phy * ze3t
241               trc2d(ji,jj,jp_lob0_2d + 2) = trc2d(ji,jj, jp_lob0_2d + 2) + zphydom * ze3t
242               trc2d(ji,jj,jp_lob0_2d + 3) = trc2d(ji,jj, jp_lob0_2d + 3) + zphynh4 * ze3t
243               trc2d(ji,jj,jp_lob0_2d + 4) = trc2d(ji,jj, jp_lob0_2d + 4) + zphyzoo * ze3t
244               trc2d(ji,jj,jp_lob0_2d + 5) = trc2d(ji,jj, jp_lob0_2d + 5) + zphydet * ze3t
245               trc2d(ji,jj,jp_lob0_2d + 6) = trc2d(ji,jj, jp_lob0_2d + 6) + zdetzoo * ze3t
246               ! trend number 8 is in trcsed.F           
247               trc2d(ji,jj,jp_lob0_2d +  8) = trc2d(ji,jj,jp_lob0_2d +  8) + zzoodet * ze3t
248               trc2d(ji,jj,jp_lob0_2d +  9) = trc2d(ji,jj,jp_lob0_2d +  9) + zzoobod * ze3t
249               trc2d(ji,jj,jp_lob0_2d + 10) = trc2d(ji,jj,jp_lob0_2d + 10) + zzoonh4 * ze3t
250               trc2d(ji,jj,jp_lob0_2d + 11) = trc2d(ji,jj,jp_lob0_2d + 11) + zzoodom * ze3t
251               trc2d(ji,jj,jp_lob0_2d + 12) = trc2d(ji,jj,jp_lob0_2d + 12) + znh4no3 * ze3t
252               trc2d(ji,jj,jp_lob0_2d + 13) = trc2d(ji,jj,jp_lob0_2d + 13) + zdomnh4 * ze3t
253               trc2d(ji,jj,jp_lob0_2d + 14) = trc2d(ji,jj,jp_lob0_2d + 14) + zdetnh4 * ze3t             
254               trc2d(ji,jj,jp_lob0_2d + 15) = trc2d(ji,jj,jp_lob0_2d + 15) + (  zno3phy + znh4phy - zphynh4   &
255                  &                                 - zphydom - zphyzoo - zphydet ) * ze3t
256               trc2d(ji,jj,jp_lob0_2d + 16) = trc2d(ji,jj,jp_lob0_2d + 16) + (  zphyzoo + zdetzoo - zzoodet   &
257                  &                                 - zzoobod - zzoonh4 - zzoodom ) * ze3t
258               trc2d(ji,jj,jp_lob0_2d + 17) = trc2d(ji,jj,jp_lob0_2d + 17) + zdetdom * ze3t
259               ! trend number 19 is in trcexp.F
260#else
261               zw2d(ji,jj,1)  = zw2d(ji,jj,1)  + zno3phy * ze3t 
262               zw2d(ji,jj,2)  = zw2d(ji,jj,2)  + znh4phy * ze3t
263               zw2d(ji,jj,3)  = zw2d(ji,jj,3)  + zphydom * ze3t
264               zw2d(ji,jj,4)  = zw2d(ji,jj,4)  + zphynh4 * ze3t
265               zw2d(ji,jj,5)  = zw2d(ji,jj,5)  + zphyzoo * ze3t
266               zw2d(ji,jj,6)  = zw2d(ji,jj,6)  + zphydet * ze3t
267               zw2d(ji,jj,7)  = zw2d(ji,jj,7)  + zdetzoo * ze3t
268               zw2d(ji,jj,8)  = zw2d(ji,jj,8)  + zzoodet * ze3t
269               zw2d(ji,jj,9)  = zw2d(ji,jj,9)  + zzoobod * ze3t
270               zw2d(ji,jj,10) = zw2d(ji,jj,10) + zzoonh4 * ze3t
271               zw2d(ji,jj,11) = zw2d(ji,jj,11) + zzoodom * ze3t
272               zw2d(ji,jj,12) = zw2d(ji,jj,12) + znh4no3 * ze3t
273               zw2d(ji,jj,13) = zw2d(ji,jj,13) + zdomnh4 * ze3t
274               zw2d(ji,jj,14) = zw2d(ji,jj,14) + zdetnh4 * ze3t             
275               zw2d(ji,jj,15) = zw2d(ji,jj,15) + ( zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet ) * ze3t
276               zw2d(ji,jj,16) = zw2d(ji,jj,16) + ( zphyzoo + zdetzoo - zzoodet - zzoobod - zzoonh4 - zzoodom ) * ze3t
277               zw2d(ji,jj,17) = zw2d(ji,jj,17) + zdetdom * ze3t
278#endif
[2038]279#if defined key_diatrc 
[1457]280# if ! defined key_iomput
281               trc3d(ji,jj,jk,jp_lob0_3d    ) = zno3phy * 86400     
282               trc3d(ji,jj,jk,jp_lob0_3d + 1) = znh4phy * 86400     
283               trc3d(ji,jj,jk,jp_lob0_3d + 2) = znh4no3 * 86400   
284# else
285               zw3d(ji,jj,jk,1) = zno3phy * 86400     
286               zw3d(ji,jj,jk,2) = znh4phy * 86400     
287               zw3d(ji,jj,jk,3) = znh4no3 * 86400   
288# endif
289#endif 
290#endif
[934]291            END DO
292         END DO
293      END DO
294
295      !                                      ! -------------------------- !
[1457]296      DO jk = jpkb, jpkm1                    !  Upper ocean (bio-layers)  !
[934]297         !                                   ! -------------------------- !
298         DO jj = 2, jpjm1
[1457]299            DO ji = fs_2, fs_jpim1 
[934]300               ! remineralisation of all quantities towards nitrate
301
302               !    trophic variables( det, zoo, phy, no3, nh4, dom)
303               !       negative trophic variables DO not contribute to the fluxes
[2038]304               zdet = MAX( 0.e0, trn(ji,jj,jk,jp_lob_det) )
305               zzoo = MAX( 0.e0, trn(ji,jj,jk,jp_lob_zoo) )
306               zphy = MAX( 0.e0, trn(ji,jj,jk,jp_lob_phy) )
307               zno3 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_no3) )
308               znh4 = MAX( 0.e0, trn(ji,jj,jk,jp_lob_nh4) )
309               zdom = MAX( 0.e0, trn(ji,jj,jk,jp_lob_dom) )
[934]310
311               !    Limitations
312               zlt   = 0.e0
313               zle   = 0.e0
314               zlno3 = 0.e0
315               zlnh4 = 0.e0
316
317               !    sinks and sources
318               !       phytoplankton production and exsudation
319               zno3phy = 0.e0
320               znh4phy = 0.e0
321               zphydom = 0.e0
322               zphynh4 = 0.e0
323
324               !    zooplankton production
325               zphyzoo = 0.e0      ! grazing
326               zdetzoo = 0.e0
327
328               zzoodet = 0.e0      ! fecal pellets production
329
330               zzoonh4 = tauzn * fzoolab * zzoo         ! zooplankton liquide excretion
331               zzoodom = tauzn * (1 - fzoolab) * zzoo
332
333               !    mortality
334               zphydet = tmminp * zphy      ! phytoplankton mortality
335
336               zzoobod = 0.e0               ! zooplankton mortality
337               zboddet = 0.e0               ! closure : flux fbod is redistributed below level jpkbio
338
339               !    detritus and dom breakdown
340               zdetnh4 = taudn * fdetlab * zdet
341               zdetdom = taudn * (1 - fdetlab) * zdet 
342
343               zdomnh4 = taudomn * zdom
344               zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
345
346               !    Nitrification
347               znh4no3 = taunn * znh4
348
349
350               ! determination of trends
351               !     total trend for each biological tracer
352               zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo - zphydet
353               zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4 - zzoobod
354               zno3a = - zno3phy + znh4no3
355               znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4 + zdetnh4 + zdomaju
356               zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom + zboddet
357               zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
358
[1457]359               ! tracer flux at totox-point added to the general trend
[2038]360               tra(ji,jj,jk,jp_lob_det) = tra(ji,jj,jk,jp_lob_det) + zdeta
361               tra(ji,jj,jk,jp_lob_zoo) = tra(ji,jj,jk,jp_lob_zoo) + zzooa
362               tra(ji,jj,jk,jp_lob_phy) = tra(ji,jj,jk,jp_lob_phy) + zphya
363               tra(ji,jj,jk,jp_lob_no3) = tra(ji,jj,jk,jp_lob_no3) + zno3a
364               tra(ji,jj,jk,jp_lob_nh4) = tra(ji,jj,jk,jp_lob_nh4) + znh4a
365               tra(ji,jj,jk,jp_lob_dom) = tra(ji,jj,jk,jp_lob_dom) + zdoma
[1457]366               !
[2038]367#if defined key_diabio
[1255]368               trbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy
369               trbio(ji,jj,jk,jp_lob0_trd +  1) = znh4phy
370               trbio(ji,jj,jk,jp_lob0_trd +  2) = zphynh4
371               trbio(ji,jj,jk,jp_lob0_trd +  3) = zphydom
372               trbio(ji,jj,jk,jp_lob0_trd +  4) = zphyzoo
373               trbio(ji,jj,jk,jp_lob0_trd +  5) = zphydet
374               trbio(ji,jj,jk,jp_lob0_trd +  6) = zdetzoo
375               trbio(ji,jj,jk,jp_lob0_trd +  8) = zzoodet
376               trbio(ji,jj,jk,jp_lob0_trd +  9) = zzoobod
377               trbio(ji,jj,jk,jp_lob0_trd + 10) = zzoonh4
378               trbio(ji,jj,jk,jp_lob0_trd + 11) = zzoodom
379               trbio(ji,jj,jk,jp_lob0_trd + 12) = znh4no3
380               trbio(ji,jj,jk,jp_lob0_trd + 13) = zdomnh4
381               trbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4
382               trbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom
[934]383#endif
[1176]384               IF( l_trdtrc ) THEN
[1255]385                  ztrbio(ji,jj,jk,jp_lob0_trd     ) = zno3phy
386                  ztrbio(ji,jj,jk,jp_lob0_trd +  1) = znh4phy
387                  ztrbio(ji,jj,jk,jp_lob0_trd +  2) = zphynh4
388                  ztrbio(ji,jj,jk,jp_lob0_trd +  3) = zphydom
389                  ztrbio(ji,jj,jk,jp_lob0_trd +  4) = zphyzoo
390                  ztrbio(ji,jj,jk,jp_lob0_trd +  5) = zphydet
391                  ztrbio(ji,jj,jk,jp_lob0_trd +  6) = zdetzoo
[1176]392                  !  trend number 8 in trcsed
[1255]393                  ztrbio(ji,jj,jk,jp_lob0_trd +  8) = zzoodet
394                  ztrbio(ji,jj,jk,jp_lob0_trd +  9) = zzoobod
395                  ztrbio(ji,jj,jk,jp_lob0_trd + 10) = zzoonh4
396                  ztrbio(ji,jj,jk,jp_lob0_trd + 11) = zzoodom
397                  ztrbio(ji,jj,jk,jp_lob0_trd + 12) = znh4no3
398                  ztrbio(ji,jj,jk,jp_lob0_trd + 13) = zdomnh4
399                  ztrbio(ji,jj,jk,jp_lob0_trd + 14) = zdetnh4
400                  ztrbio(ji,jj,jk,jp_lob0_trd + 15) = zdetdom
[1176]401                  !  trend number 17 in trcexp
402                ENDIF
[2038]403#if defined key_diatrc
[1457]404# if ! defined key_iomput
405               trc3d(ji,jj,jk,jp_lob0_3d    ) =  zno3phy * 86400     
406               trc3d(ji,jj,jk,jp_lob0_3d + 1) =  znh4phy * 86400     
407               trc3d(ji,jj,jk,jp_lob0_3d + 2) =  znh4no3 * 86400     
408# else
409               zw3d(ji,jj,jk,1) = zno3phy * 86400     
410               zw3d(ji,jj,jk,2) = znh4phy * 86400     
411               zw3d(ji,jj,jk,3) = znh4no3 * 86400   
412# endif
413#endif
[934]414            END DO
415         END DO
416      END DO
417
[2038]418#if defined key_diatrc
[1457]419      ! Lateral boundary conditions
420# if ! defined key_iomput
[1255]421      DO jl = jp_lob0_2d, jp_lob1_2d
[1176]422          CALL lbc_lnk( trc2d(:,:,jl),'T', 1. )
[934]423      END DO 
[1457]424# else
425      DO jl = 1, 17 
426          CALL lbc_lnk( zw2d(:,:,jl),'T', 1. )
427      END DO
428      ! Save diagnostics
429      CALL iom_put( "TNO3PHY", zw2d(:,:,1) )
430      CALL iom_put( "TNH4PHY", zw2d(:,:,2) )
431      CALL iom_put( "TPHYDOM", zw2d(:,:,3) )
432      CALL iom_put( "TPHYNH4", zw2d(:,:,4) )
433      CALL iom_put( "TPHYZOO", zw2d(:,:,5) )
434      CALL iom_put( "TPHYDET", zw2d(:,:,6) )
435      CALL iom_put( "TDETZOO", zw2d(:,:,7) )
436      CALL iom_put( "TZOODET", zw2d(:,:,8) )
437      CALL iom_put( "TZOOBOD", zw2d(:,:,9) )
438      CALL iom_put( "TZOONH4", zw2d(:,:,10) )
439      CALL iom_put( "TZOODOM", zw2d(:,:,11) )
440      CALL iom_put( "TNH4NO3", zw2d(:,:,12) )
441      CALL iom_put( "TDOMNH4", zw2d(:,:,13) )
442      CALL iom_put( "TDETNH4", zw2d(:,:,14) )
443      CALL iom_put( "TPHYTOT", zw2d(:,:,15) )
444      CALL iom_put( "TZOOTOT", zw2d(:,:,16) )
445      CALL iom_put( "TDETDOM", zw2d(:,:,17) )
446# endif
447#endif
448
[2038]449#if defined key_diatrc
[1457]450      ! Lateral boundary conditions
451# if ! defined key_iomput
[1255]452      DO jl = jp_lob0_3d, jp_lob1_3d
[1176]453          CALL lbc_lnk( trc3d(:,:,1,jl),'T', 1. )
[934]454      END DO 
[1457]455# else
456      DO jl = 1, 3
457          CALL lbc_lnk( zw3d(:,:,:,jl),'T', 1. )
458      END DO
459      ! save diagnostics
460      CALL iom_put( "FNO3PHY", zw3d(:,:,:,1) )
461      CALL iom_put( "FNH4PHY", zw3d(:,:,:,2) )
462      CALL iom_put( "FNH4NO3", zw3d(:,:,:,3) )
463# endif 
[934]464#endif
465
[2038]466#if defined key_diabio
[934]467      ! Lateral boundary conditions on trcbio
[1255]468      DO jl = jp_lob0_trd, jp_lob1_trd
[1176]469          CALL lbc_lnk( trbio(:,:,1,jl),'T', 1. )
[934]470      END DO 
471#endif
472      !
[1176]473      IF( l_trdtrc ) THEN
[1255]474         DO jl = jp_lob0_trd, jp_lob1_trd
[1176]475            CALL trd_mod_trc( ztrbio(:,:,:,jl), jl, kt )   ! handle the trend
476         END DO
477      ENDIF
478
[1953]479      IF( l_trdtrc ) DEALLOCATE( ztrbio )
480
[934]481      IF(ln_ctl)   THEN  ! print mean trends (used for debugging)
482         WRITE(charout, FMT="('bio')")
483         CALL prt_ctl_trc_info(charout)
484         CALL prt_ctl_trc(tab4d=tra, mask=tmask, clinfo=ctrcnm)
485      ENDIF
486
487   END SUBROUTINE trc_bio
488
489#else
490   !!======================================================================
491   !!  Dummy module :                                   No PISCES bio-model
492   !!======================================================================
493CONTAINS
494   SUBROUTINE trc_bio( kt )                   ! Empty routine
495      INTEGER, INTENT( in ) ::   kt
496      WRITE(*,*) 'trc_bio: You should not have seen this print! error?', kt
497   END SUBROUTINE trc_bio
498#endif 
499
500   !!======================================================================
501END MODULE  trcbio
Note: See TracBrowser for help on using the repository browser.