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.F in tags/nemo_v1_10/NEMO/TOP_SRC/SMS – NEMO

source: tags/nemo_v1_10/NEMO/TOP_SRC/SMS/trcbio.F @ 3750

Last change on this file since 3750 was 341, checked in by opalod, 19 years ago

nemo_v1_update_028 : CT : add missing headers

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 16.4 KB
Line 
1
2CCC $Header$ 
3CCC  TOP 1.0 , LOCEAN-IPSL (2005) 
4C This software is governed by CeCILL licence see modipsl/doc/NEMO_CeCILL.txt 
5C ---------------------------------------------------------------------------
6      SUBROUTINE trcbio(kt)
7#if defined key_passivetrc && defined key_trc_lobster1
8CCC---------------------------------------------------------------------
9CCC
10CCC                       ROUTINE trcbio
11CCC                     *******************
12CCC
13CCC  PURPOSE :
14CCC  ---------
15CCC     compute the now trend due to biogeochemical processes
16CCC     and add it to the general trend of passive tracers equations.
17CCC
18CCC   Three options:
19CCC     Default option  : no biological trend
20CCC       IF 'key_trc_lobster1' : LOBSTER1 model
21CCC
22CC   METHOD :
23CC   -------
24CC      each now biological flux is calculated  in FUNCTION of now
25CC      concentrations of tracers.
26CC      depending on the tracer, these fluxes are sources or sinks.
27CC      the total of the sources and sinks for each tracer
28CC      is added to the general trend.
29CC
30CC    tra = tra + zf...tra - zftra...
31CC                             |         |
32CC                             |         |
33CC                          source      sink
34CC
35CC
36CC      IF 'key_trc_diabio' key is activated, the biogeochemical
37CC trends for passive tracers are saved for futher diagnostics.
38CC
39CC      multitasked on vertical slab (jj-loop)
40CC
41CC   -----
42CC      argument
43CC              ktask           : task identificator
44CC              kt              : time step
45CC      COMMON
46CC            /comcoo/          : orthogonal curvilinear coordinates
47CC                                and scale factors
48CC                                depths
49CC            /cottrp/          : present and next fields for passive
50CC                              : tracers
51CC            /comtsk/          : multitasking
52CC            /comtke/          : emin, en()
53CC            /cotbio/          : biological parameters
54CC
55CC   OUTPUT :
56CC   ------
57CC      COMMON
58CC            /cottrp/ tra      : general tracer trend increased by the
59CC                                now horizontal tracer advection trend
60CC            /cottbd/ trbio    : now horizontal tracer advection trend
61CC                                (IF 'key_trc_diabio' is activated)
62CC
63CC   WORKSPACE :
64CC   ---------
65CC      local
66CC               zdet,zzoo,zphy,znh4,zno3,zdom    : now concentrations
67CC               zlt,zlno3,zlnh4,zle              : limitation terms for phyto
68CC               zfno3phy and so on..             : fluxes between bio boxes
69CC               zphya,zzooa,zdeta, ...           : after bio trends
70CC               zppz, zpdz, zpppz, zppdz, zfood  : preferences terms
71CC               zfilpz, zfilpd                   : filtration terms
72CC      COMMON
73CC
74CC   EXTERNAL :                   no
75CC   --------
76CC
77CC   REFERENCES :                 no
78CC   ----------
79CC
80CC   MODIFICATIONS:
81CC   --------------
82CC       original : 99-07 (M. Levy)
83CC                  00-12 (E. Kestenare): assign a parameter
84CC                                        to name individual tracers
85CC                  01-03 (M. Levy) LNO3 + dia2d
86CC----------------------------------------------------------------------
87CC----------------------------------------------------------------------
88      USE oce_trc
89      USE trp_trc
90      USE sms
91      USE lbclnk
92      IMPLICIT NONE
93CC local declarations
94CC ==================
95      INTEGER kt
96      INTEGER ji,jj,jk,jn
97      REAL ztot(jpi), ze3t(jpk)
98      REAL zdet,zzoo,zphy,zno3,znh4,zdom,zlno3,zlnh4,zle,zlt
99      REAL zno3phy, znh4phy, zphynh4, zphydom, zphydet, zphyzoo, zdetzoo
100     $    ,zzoonh4, zzoodom, zzoodet, zdetnh4, zdetdom, znh4no3, zdomnh4
101     $    ,zppz,zpdz,zpppz,zppdz,zfood,zfilpz,zfildz,zphya,zzooa,zno3a
102     $    ,znh4a,zdeta,zdoma, ztra, zzoobod, zboddet, zdomaju
103
104CC----------------------------------------------------------------------
105CC statement functions
106CC ===================
107CDIR$ NOLIST
108#include "domzgr_substitute.h90"
109CDIR$ LIST
110CCC---------------------------------------------------------------------
111CCC  OPA8, LODYC (07/99)
112CCC---------------------------------------------------------------------
113C   | --------------|
114C   | LOBSTER1 MODEL| 
115C   | --------------|
116
117#if defined key_trc_diaadd
118C convert fluxes in per day
119      DO jk=1,jpkbm1
120        ze3t(jk)=e3t(jk)*86400.
121      END DO
122      DO jk=jpkb,jpk
123        ze3t(jk)=0.
124      END DO 
125#endif
126C
127C vertical slab
128C =============
129C
130      DO 1000 jj = 2,jpjm1
131C
132C 1. biological level
133C ===================
134C
135        DO ji = 2,jpim1
136          fbod(ji,jj)=0.
137#if defined key_trc_diaadd
138          DO jn=1,jpdia2d
139            trc2d(ji,jj,jn)=0.         
140          END DO 
141#endif
142        END DO
143
144        DO jk=1,jpkbm1
145          DO ji = 2,jpim1
146C
147C
148C 1.1 trophic variables( det, zoo, phy, no3, nh4, dom)
149C ---------------------------------------------------
150C
151C negative trophic variables DO not contribute to the fluxes
152C
153            zdet = max(0.,trn(ji,jj,jk,jpdet))
154            zzoo = max(0.,trn(ji,jj,jk,jpzoo))
155            zphy = max(0.,trn(ji,jj,jk,jpphy))
156            zno3 = max(0.,trn(ji,jj,jk,jpno3))
157            znh4 = max(0.,trn(ji,jj,jk,jpnh4))
158            zdom = max(0.,trn(ji,jj,jk,jpdom))
159C
160C
161C 1.2  Limitations
162C ----------------
163C
164            zlt = 1.
165            zle = 1. - exp( -xpar(ji,jj,jk)/aki/zlt)
166C psinut,akno3,aknh4 added by asklod AS Kremeur 2005-03
167            zlno3 = zno3* exp(-psinut*znh4) / (akno3+zno3)
168            zlnh4 = znh4 / (znh4+aknh4) 
169
170C
171C
172C 1.3 sinks and sources
173C ---------------------
174C
175C
176C 1. phytoplankton production and exsudation
177C
178            zno3phy = tmumax * zle * zlt * zlno3 * zphy
179            znh4phy = tmumax * zle * zlt * zlnh4 * zphy
180
181C fphylab added by asklod AS Kremeur 2005-03
182            zphydom = rgamma * (1 - fphylab) * (zno3phy + znh4phy)
183            zphynh4 = rgamma * fphylab * (zno3phy + znh4phy)
184
185C
186C 2. zooplankton production
187C
188C preferences
189C
190            zppz = rppz
191            zpdz = 1. - rppz
192            zpppz = ( zppz * zphy ) /
193     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
194            zppdz = ( zpdz * zdet ) /
195     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
196            zfood = zpppz * zphy + zppdz * zdet
197C
198C filtration
199C
200            zfilpz = taus * zpppz / (aks + zfood)
201            zfildz = taus * zppdz / (aks + zfood)
202C
203C grazing
204C
205            zphyzoo = zfilpz * zphy * zzoo
206            zdetzoo = zfildz * zdet * zzoo
207C
208C 3. fecal pellets production
209C
210            zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo
211C
212C 4. zooplankton liquide excretion
213C
214            zzoonh4 = tauzn * zzoo * fdoml 
215            zzoodom = tauzn * zzoo * (1-fdoml) 
216
217C 5. mortality
218C
219C phytoplankton mortality 
220C
221            zphydet = tmminp * zphy
222C
223C
224C zooplankton mortality
225c closure : flux fbod is redistributed below level jpkbio
226C
227            zzoobod = tmminz * zzoo * zzoo
228            fbod(ji,jj) = fbod(ji,jj) + zzoobod * fse3t(ji,jj,jk)
229C
230C
231C 6. detritus and dom breakdown
232C
233C
234            zdetnh4 = taudn * fdoml * zdet
235            zdetdom = taudn * (1 - fdoml) * zdet
236            zdomnh4 = taudomn * zdom
237C
238C
239C 7. Nitrification
240C
241            znh4no3 = taunn * znh4
242C
243C
244C
245C 1.4 determination of trends
246C ---------------------------
247C
248C total trend for each biological tracer
249C
250            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo
251     $          - zphydet
252            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4
253     $          - zzoobod
254            zno3a = - zno3phy + znh4no3
255            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4
256     $          + zdetnh4
257            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom
258            zdoma = zphydom + zzoodom + zdetdom - zdomnh4
259C
260#if defined key_trc_diabio
261            trbio(ji,jj,jk,1) = zno3phy
262            trbio(ji,jj,jk,2) = znh4phy
263            trbio(ji,jj,jk,3) = zphynh4
264            trbio(ji,jj,jk,4) = zphydom
265            trbio(ji,jj,jk,5) = zphyzoo
266            trbio(ji,jj,jk,6) = zphydet
267            trbio(ji,jj,jk,7) = zdetzoo
268            trbio(ji,jj,jk,9) = zzoodet
269            trbio(ji,jj,jk,10) = zzoobod
270            trbio(ji,jj,jk,11) = zzoonh4
271            trbio(ji,jj,jk,12) = zzoodom
272            trbio(ji,jj,jk,13) = znh4no3
273            trbio(ji,jj,jk,14) = zdomnh4
274            trbio(ji,jj,jk,15) = zdetnh4
275#endif
276#if defined key_trc_diaadd
277            trc2d(ji,jj,1)=trc2d(ji,jj,1)+zno3phy*ze3t(jk)         
278            trc2d(ji,jj,2)=trc2d(ji,jj,2)+znh4phy*ze3t(jk)
279            trc2d(ji,jj,3)=trc2d(ji,jj,3)+zphydom*ze3t(jk)
280            trc2d(ji,jj,4)=trc2d(ji,jj,4)+zphynh4*ze3t(jk)
281            trc2d(ji,jj,5)=trc2d(ji,jj,5)+zphyzoo*ze3t(jk)
282            trc2d(ji,jj,6)=trc2d(ji,jj,6)+zphydet*ze3t(jk)
283            trc2d(ji,jj,7)=trc2d(ji,jj,7)+zdetzoo*ze3t(jk)
284c trend number 8 is in trcsed.F           
285            trc2d(ji,jj,9)=trc2d(ji,jj,9)+zzoodet*ze3t(jk)
286            trc2d(ji,jj,10)=trc2d(ji,jj,10)+zzoobod*ze3t(jk)
287            trc2d(ji,jj,11)=trc2d(ji,jj,11)+zzoonh4*ze3t(jk)
288            trc2d(ji,jj,12)=trc2d(ji,jj,12)+zzoodom*ze3t(jk)
289            trc2d(ji,jj,13)=trc2d(ji,jj,13)+znh4no3*ze3t(jk)
290            trc2d(ji,jj,14)=trc2d(ji,jj,14)+zdomnh4*ze3t(jk)
291            trc2d(ji,jj,15)=trc2d(ji,jj,15)+zdetnh4*ze3t(jk)
292             
293            trc2d(ji,jj,16)=trc2d(ji,jj,16)+(zno3phy+znh4phy-zphynh4
294     $          -zphydom-zphyzoo-zphydet)*ze3t(jk)
295            trc2d(ji,jj,17)=trc2d(ji,jj,17)+(zphyzoo+zdetzoo-zzoodet
296     $          -zzoobod-zzoonh4-zzoodom) *ze3t(jk)
297            trc2d(ji,jj,18)=trc2d(ji,jj,18)+zdetdom*ze3t(jk)
298
299            trc3d(ji,jj,jk,1)= zno3phy *86400     
300            trc3d(ji,jj,jk,2)= znh4phy *86400     
301            trc3d(ji,jj,jk,3)= znh4no3 *86400     
302#endif
303C
304C tracer flux at totox-point added to the general trend
305C
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
312C
313          END DO
314        END DO
315C
316C 2. under biological level
317C =========================
318C
319        DO jk = jpkb,jpk
320C
321C 2.1 compute the remineralisation of all quantities towards nitrate 
322C ------------------------------------------------------------------
323C
324          DO ji = 2,jpim1
325C
326C 2.1.1 trophic variables( det, zoo, phy, no3, nh4, dom)
327C -----------------------------------------------------
328C
329C negative trophic variables DO not contribute to the fluxes
330C
331            zdet = max(0.,trn(ji,jj,jk,jpdet))
332            zzoo = max(0.,trn(ji,jj,jk,jpzoo))
333            zphy = max(0.,trn(ji,jj,jk,jpphy))
334            zno3 = max(0.,trn(ji,jj,jk,jpno3))
335            znh4 = max(0.,trn(ji,jj,jk,jpnh4))
336            zdom = max(0.,trn(ji,jj,jk,jpdom))
337CC
338CC 2.1.2  Limitations
339CC ----------------
340CC
341            zlt = 0.
342            zle = 0.
343            zlno3 = 0.
344            zlnh4 = 0.
345CC
346CC
347CC 2.1.3 sinks and sources
348CC ---------------------
349CC
350CC
351CC 1. phytoplankton production and exsudation
352CC
353            zno3phy = 0.
354            znh4phy = 0.
355C
356            zphydom = 0.
357            zphynh4 = 0.
358CC
359CC 2. zooplankton production
360CC
361CC grazing
362CC
363            zphyzoo = 0. 
364            zdetzoo = 0.
365CC
366CC 3. fecal pellets production
367CC
368            zzoodet = 0.
369CC
370CC 4. zooplankton liquide excretion
371CC
372            zzoonh4 = tauzn * fzoolab * zzoo 
373            zzoodom = tauzn * (1 - fzoolab) * zzoo
374CC
375CC 5. mortality
376CC
377CC phytoplankton mortality 
378CC
379            zphydet = tmminp * zphy
380CC
381CC
382CC zooplankton mortality
383Cc closure : flux fbod is redistributed below level jpkbio
384CC
385            zzoobod = 0.
386            zboddet = 0. 
387CC
388CC
389CC 6. detritus and dom breakdown
390CC
391            zdetnh4 = taudn * fdetlab * zdet
392            zdetdom = taudn * (1 - fdetlab) * zdet 
393C
394            zdomnh4 = taudomn * zdom
395            zdomaju = (1 - redf/reddom) * (zphydom + zzoodom + zdetdom)
396CC
397CC 7. Nitrification
398CC
399            znh4no3 = taunn * znh4
400CC
401CC
402CC 2.1.4 determination of trends
403CC ---------------------------
404CC
405CC total trend for each biological tracer
406CC
407            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo
408     $          - zphydet
409            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4
410     $          - zzoobod
411            zno3a = - zno3phy + znh4no3
412            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4
413     $          + zdetnh4 + zdomaju
414            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom +
415     $          zboddet
416            zdoma = zphydom + zzoodom + zdetdom - zdomnh4 - zdomaju
417CC
418#if defined key_trc_diabio
419            trbio(ji,jj,jk,1) = zno3phy
420            trbio(ji,jj,jk,2) = znh4phy
421            trbio(ji,jj,jk,3) = zphynh4
422            trbio(ji,jj,jk,4) = zphydom
423            trbio(ji,jj,jk,5) = zphyzoo
424            trbio(ji,jj,jk,6) = zphydet
425            trbio(ji,jj,jk,7) = zdetzoo
426            trbio(ji,jj,jk,9) = zzoodet
427            trbio(ji,jj,jk,10) = zzoobod
428            trbio(ji,jj,jk,11) = zzoonh4
429            trbio(ji,jj,jk,12) = zzoodom
430            trbio(ji,jj,jk,13) = znh4no3
431            trbio(ji,jj,jk,14) = zdomnh4
432            trbio(ji,jj,jk,15) = zdetnh4
433#endif
434#if defined key_trc_diaadd
435            trc2d(ji,jj,1)=trc2d(ji,jj,1)+zno3phy*ze3t(jk)         
436            trc2d(ji,jj,2)=trc2d(ji,jj,2)+znh4phy*ze3t(jk)
437            trc2d(ji,jj,3)=trc2d(ji,jj,3)+zphydom*ze3t(jk)
438            trc2d(ji,jj,4)=trc2d(ji,jj,4)+zphynh4*ze3t(jk)
439            trc2d(ji,jj,5)=trc2d(ji,jj,5)+zphyzoo*ze3t(jk)
440            trc2d(ji,jj,6)=trc2d(ji,jj,6)+zphydet*ze3t(jk)
441            trc2d(ji,jj,7)=trc2d(ji,jj,7)+zdetzoo*ze3t(jk)
442Cc trend number 8 is in trcsed.F           
443            trc2d(ji,jj,9)=trc2d(ji,jj,9)+zzoodet*ze3t(jk)
444            trc2d(ji,jj,10)=trc2d(ji,jj,10)+zzoobod*ze3t(jk)
445            trc2d(ji,jj,11)=trc2d(ji,jj,11)+zzoonh4*ze3t(jk)
446            trc2d(ji,jj,12)=trc2d(ji,jj,12)+zzoodom*ze3t(jk)
447            trc2d(ji,jj,13)=trc2d(ji,jj,13)+znh4no3*ze3t(jk)
448            trc2d(ji,jj,14)=trc2d(ji,jj,14)+zdomnh4*ze3t(jk)
449            trc2d(ji,jj,15)=trc2d(ji,jj,15)+zdetnh4*ze3t(jk)
450             
451            trc2d(ji,jj,16)=trc2d(ji,jj,16)+(zno3phy+znh4phy-zphynh4
452     $          -zphydom-zphyzoo-zphydet)*ze3t(jk)
453            trc2d(ji,jj,17)=trc2d(ji,jj,17)+(zphyzoo+zdetzoo-zzoodet
454     $          -zzoobod-zzoonh4-zzoodom) *ze3t(jk)
455            trc2d(ji,jj,18)=trc2d(ji,jj,18)+zdetdom*ze3t(jk)
456
457            trc3d(ji,jj,jk,1)= zno3phy *86400     
458            trc3d(ji,jj,jk,2)= znh4phy *86400     
459            trc3d(ji,jj,jk,3)= znh4no3 *86400     
460#endif
461CC
462CC tracer flux at totox-point added to the general trend
463CC
464            tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
465            tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
466            tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
467            tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a
468            tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a
469            tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
470CC
471          END DO
472        END DO
473
474
475
476
477c$$$        DO jk = jpkb,jpk
478c$$$C
479c$$$C 2.1 Old way to compute the remineralisation : asklod AS Kremeur (before 2005-03)
480c$$$C ------------------------------------------------------------------
481c$$$C
482c$$$          DO ji=2,jpim1
483c$$$            ztot(ji) = 0.
484c$$$          END DO
485c$$$          DO jn=1,jptra
486c$$$            IF (ctrcnm(jn).NE.'NO3') THEN
487c$$$                DO ji=2,jpim1
488c$$$                  ztra = remdmp(jk,jn) * trn(ji,jj,jk,jn) 
489c$$$                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) - ztra
490c$$$                  ztot(ji) = ztot(ji) + ztra
491c$$$                END DO
492c$$$            ENDIF
493c$$$          END DO
494c$$$          DO jn=1,jptra
495c$$$            IF (ctrcnm(jn).EQ.'NO3') THEN
496c$$$                DO ji=2,jpim1
497c$$$                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztot(ji)
498c$$$                END DO
499c$$$#if defined key_trc_diabio
500c$$$                trbio(ji,jj,jk,1)=ztot(ji)
501c$$$#endif
502c$$$            ENDIF
503c$$$          END DO
504c$$$        END DO
505
506C
507C
508C END of slab
509C ===========
510C
511 1000 CONTINUE
512
513#if defined key_trc_diaadd
514
515C Lateral boundary conditions on trc2d
516      DO jn=1,jpdia2d
517          CALL lbc_lnk(trc2d(:,:,jn),'T',1. )
518      END DO
519
520C Lateral boundary conditions on trc3d
521      DO jn=1,jpdia3d
522          CALL lbc_lnk(trc3d(:,:,1,jn),'T',1. )
523      END DO 
524
525#endif
526
527#if defined key_trc_diabio
528C Lateral boundary conditions on trcbio
529      DO jn=1,jpdiabio
530          CALL lbc_lnk(trbio(:,:,1,jn),'T',1. )
531      END DO 
532#endif
533
534#  else
535C
536C    no biological model
537C
538#  endif
539
540C
541C
542      RETURN
543      END
Note: See TracBrowser for help on using the repository browser.