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.lobster1.h in trunk/NEMO/TOP_SRC/SMS – NEMO

source: trunk/NEMO/TOP_SRC/SMS/trcbio.lobster1.h @ 247

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

CL : Add CVS Header and CeCILL licence information

  • Property svn:eol-style set to native
  • Property svn:keywords set to Author Date Id Revision
File size: 10.5 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 ---------------------------------------------------------------------------
6C $Id$
7CCC
8CCC      trcbio.lobster1.h
9CCC      *****************
10CCC
11CC   defined key : key_trc_lobster1
12CC   ===========
13CC
14CC   INPUT :
15CC   -----
16CC      argument
17CC              ktask           : task identificator
18CC              kt              : time step
19CC      COMMON
20CC            /comcoo/          : orthogonal curvilinear coordinates
21CC                                and scale factors
22CC                                depths
23CC            /cottrp/          : present and next fields for passive
24CC                              : tracers
25CC            /comtsk/          : multitasking
26CC            /comtke/          : emin, en()
27CC            /cotbio/          : biological parameters
28CC
29CC   OUTPUT :
30CC   ------
31CC      COMMON
32CC            /cottrp/ tra      : general tracer trend increased by the
33CC                                now horizontal tracer advection trend
34CC            /cottbd/ trbio    : now horizontal tracer advection trend
35CC                                (IF 'key_trc_diabio' is activated)
36CC
37CC   WORKSPACE :
38CC   ---------
39CC      local
40CC               zdet,zzoo,zphy,znh4,zno3,zdom    : now concentrations
41CC               zlt,zlno3,zlnh4,zle              : limitation terms for phyto
42CC               zfno3phy and so on..             : fluxes between bio boxes
43CC               zphya,zzooa,zdeta, ...           : after bio trends
44CC               zppz, zpdz, zpppz, zppdz, zfood  : preferences terms
45CC               zfilpz, zfilpd                   : filtration terms
46CC      COMMON
47CC
48CC   EXTERNAL :                   no
49CC   --------
50CC
51CC   REFERENCES :                 no
52CC   ----------
53CC
54CC   MODIFICATIONS:
55CC   --------------
56CC       original : 99-07 (M. Levy)
57CC                  00-12 (E. Kestenare): assign a parameter
58CC                                        to name individual tracers
59CC                  01-03 (M. Levy) LNO3 + dia2d
60CC----------------------------------------------------------------------
61CC----------------------------------------------------------------------
62      USE oce_trc
63      USE trp_trc
64      USE sms
65      USE lbclnk
66      IMPLICIT NONE
67CC local declarations
68CC ==================
69      INTEGER kt
70      INTEGER ji,jj,jk,jn
71      REAL ztot(jpi), ze3t(jpk)
72      REAL zdet,zzoo,zphy,zno3,znh4,zdom,zlno3,zlnh4,zle,zlt
73      REAL zno3phy, znh4phy, zphynh4, zphydom, zphydet, zphyzoo, zdetzoo
74     $    ,zzoonh4, zzoodom, zzoodet, zdetnh4, zdetdom, znh4no3, zdomnh4
75     $    ,zppz,zpdz,zpppz,zppdz,zfood,zfilpz,zfildz,zphya,zzooa,zno3a
76     $    ,znh4a,zdeta,zdoma, ztra, zzoobod
77
78CC----------------------------------------------------------------------
79CC statement functions
80CC ===================
81CDIR$ NOLIST
82#include "domzgr_substitute.h90"
83CDIR$ LIST
84CCC---------------------------------------------------------------------
85CCC  OPA8, LODYC (07/99)
86CCC---------------------------------------------------------------------
87C   | --------------|
88C   | LOBSTER1 MODEL| 
89C   | --------------|
90
91#if defined key_trc_diaadd
92C convert fluxes in per day
93      DO jk=1,jpkbm1
94        ze3t(jk)=e3t(jk)*86400.
95      END DO
96      DO jk=jpkb,jpk
97        ze3t(jk)=0.
98      END DO
99#endif
100C
101C vertical slab
102C =============
103C
104      DO 1000 jj = 2,jpjm1
105C
106C 1. biological level
107C ===================
108C
109        DO ji = 2,jpim1
110          fbod(ji,jj)=0.
111#if defined key_trc_diaadd
112          DO jn=1,jpdia2d
113            trc2d(ji,jj,jn)=0.         
114          END DO
115#endif
116        END DO
117
118        DO jk=1,jpkbm1
119          DO ji = 2,jpim1
120C
121C
122C 1.1 trophic variables( det, zoo, phy, no3, nh4, dom)
123C ---------------------------------------------------
124C
125C negative trophic variables DO not contribute to the fluxes
126C
127            zdet = max(0.,trn(ji,jj,jk,jpdet))
128            zzoo = max(0.,trn(ji,jj,jk,jpzoo))
129            zphy = max(0.,trn(ji,jj,jk,jpphy))
130            zno3 = max(0.,trn(ji,jj,jk,jpno3))
131            znh4 = max(0.,trn(ji,jj,jk,jpnh4))
132            zdom = max(0.,trn(ji,jj,jk,jpdom))
133C
134C
135C 1.2  Limitations
136C ----------------
137C
138            zlt = 1.
139            zle = 1. - exp( -xpar(ji,jj,jk)/aki/zlt) 
140c            zlno3 = (aknut * zno3)/ (( aknut+znh4)*(aknut+zno3+znh4))
141            zlno3 = zno3* exp(-1.5*znh4) / (aknut+zno3)
142            zlnh4 = znh4 / (znh4+aknut) 
143
144C
145C
146C 1.3 sinks and sources
147C ---------------------
148C
149C
150C 1. phytoplankton production and exsudation
151C
152            zno3phy = tmumax * zle * zlt * zlno3 * zphy
153            znh4phy = tmumax * zle * zlt * zlnh4 * zphy
154
155            zphydom = rgamma * (1-fdoml) * (zno3phy + znh4phy)
156            zphynh4 = rgamma * fdoml     * (zno3phy + znh4phy)
157
158C
159C 2. zooplankton production
160C
161C preferences
162C
163            zppz = rppz
164            zpdz = 1. - rppz
165            zpppz = ( zppz * zphy ) /
166     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
167            zppdz = ( zpdz * zdet ) /
168     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
169            zfood = zpppz * zphy + zppdz * zdet
170C
171C filtration
172C
173            zfilpz = taus * zpppz / (aks + zfood)
174            zfildz = taus * zppdz / (aks + zfood)
175C
176C grazing
177C
178            zphyzoo = zfilpz * zphy * zzoo
179            zdetzoo = zfildz * zdet * zzoo
180C
181C 3. fecal pellets production
182C
183            zzoodet = rpnaz * zphyzoo + rdnaz * zdetzoo
184C
185C 4. zooplankton liquide excretion
186C
187            zzoonh4 = tauzn * zzoo * fdoml
188            zzoodom = tauzn * zzoo * (1-fdoml) 
189
190C 5. mortality
191C
192C phytoplankton mortality
193C
194            zphydet = tmminp * zphy
195C
196C
197C zooplankton mortality
198c closure : flux fbod is redistributed below level jpkbio
199C
200            zzoobod = tmminz * zzoo * zzoo
201            fbod(ji,jj) = fbod(ji,jj) + zzoobod * fse3t(ji,jj,jk)
202C
203C
204C 6. detritus and dom breakdown
205C
206C
207            zdetnh4 = taudn * fdoml * zdet
208            zdetdom = taudn * (1 - fdoml) * zdet
209            zdomnh4 = taudomn * zdom
210C
211C
212C 7. Nitrification
213C
214            znh4no3 = taunn * znh4
215C
216C
217C
218C 1.4 determination of trends
219C ---------------------------
220C
221C total trend for each biological tracer
222C
223            zphya =   zno3phy + znh4phy - zphynh4 - zphydom - zphyzoo
224     $          - zphydet
225            zzooa =   zphyzoo + zdetzoo - zzoodet - zzoodom - zzoonh4
226     $          - zzoobod
227            zno3a = - zno3phy + znh4no3
228            znh4a = - znh4phy - znh4no3 + zphynh4 + zzoonh4 + zdomnh4
229     $          + zdetnh4
230            zdeta = zphydet + zzoodet  - zdetzoo - zdetnh4 - zdetdom
231            zdoma = zphydom + zzoodom + zdetdom - zdomnh4
232C
233#if defined key_trc_diabio
234            trbio(ji,jj,jk,1) = zno3phy
235            trbio(ji,jj,jk,2) = znh4phy
236            trbio(ji,jj,jk,3) = zphynh4
237            trbio(ji,jj,jk,4) = zphydom
238            trbio(ji,jj,jk,5) = zphyzoo
239            trbio(ji,jj,jk,6) = zphydet
240            trbio(ji,jj,jk,7) = zdetzoo
241            trbio(ji,jj,jk,9) = zzoodet
242            trbio(ji,jj,jk,10) = zzoobod
243            trbio(ji,jj,jk,11) = zzoonh4
244            trbio(ji,jj,jk,12) = zzoodom
245            trbio(ji,jj,jk,13) = znh4no3
246            trbio(ji,jj,jk,14) = zdomnh4
247            trbio(ji,jj,jk,15) = zdetnh4
248#endif
249#if defined key_trc_diaadd
250            trc2d(ji,jj,1)=trc2d(ji,jj,1)+zno3phy*ze3t(jk)         
251            trc2d(ji,jj,2)=trc2d(ji,jj,2)+znh4phy*ze3t(jk)
252            trc2d(ji,jj,3)=trc2d(ji,jj,3)+zphydom*ze3t(jk)
253            trc2d(ji,jj,4)=trc2d(ji,jj,4)+zphynh4*ze3t(jk)
254            trc2d(ji,jj,5)=trc2d(ji,jj,5)+zphyzoo*ze3t(jk)
255            trc2d(ji,jj,6)=trc2d(ji,jj,6)+zphydet*ze3t(jk)
256            trc2d(ji,jj,7)=trc2d(ji,jj,7)+zdetzoo*ze3t(jk)
257c trend number 8 is in trcsed.F           
258            trc2d(ji,jj,9)=trc2d(ji,jj,9)+zzoodet*ze3t(jk)
259            trc2d(ji,jj,10)=trc2d(ji,jj,10)+zzoobod*ze3t(jk)
260            trc2d(ji,jj,11)=trc2d(ji,jj,11)+zzoonh4*ze3t(jk)
261            trc2d(ji,jj,12)=trc2d(ji,jj,12)+zzoodom*ze3t(jk)
262            trc2d(ji,jj,13)=trc2d(ji,jj,13)+znh4no3*ze3t(jk)
263            trc2d(ji,jj,14)=trc2d(ji,jj,14)+zdomnh4*ze3t(jk)
264            trc2d(ji,jj,15)=trc2d(ji,jj,15)+zdetnh4*ze3t(jk)
265             
266            trc2d(ji,jj,16)=trc2d(ji,jj,16)+(zno3phy+znh4phy-zphynh4
267     $          -zphydom-zphyzoo-zphydet)*ze3t(jk)
268            trc2d(ji,jj,17)=trc2d(ji,jj,17)+(zphyzoo+zdetzoo-zzoodet
269     $          -zzoobod-zzoonh4-zzoodom) *ze3t(jk)
270            trc2d(ji,jj,18)=trc2d(ji,jj,18)+zdetdom*ze3t(jk)
271
272            trc3d(ji,jj,jk,1)= zno3phy *86400     
273            trc3d(ji,jj,jk,2)= znh4phy *86400     
274            trc3d(ji,jj,jk,3)= znh4no3 *86400     
275#endif
276C
277C tracer flux at totox-point added to the general trend
278C
279            tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
280            tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
281            tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
282            tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + zno3a
283            tra(ji,jj,jk,jpnh4) = tra(ji,jj,jk,jpnh4) + znh4a
284            tra(ji,jj,jk,jpdom) = tra(ji,jj,jk,jpdom) + zdoma
285C
286          END DO
287        END DO
288C
289C 2. under biological level
290C =========================
291C
292        DO jk = jpkb,jpk
293C
294C 2.1 compute the remineralisation of all quantities towards nitrate
295C ------------------------------------------------------------------
296C
297          DO ji=2,jpim1
298            ztot(ji) = 0.
299          END DO
300          DO jn=1,jptra
301            IF (ctrcnm(jn).NE.'NO3') THEN
302                DO ji=2,jpim1
303                  ztra = remdmp(jk,jn) * trn(ji,jj,jk,jn) 
304                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) - ztra
305                  ztot(ji) = ztot(ji) + ztra
306                END DO
307            ENDIF
308          END DO
309          DO jn=1,jptra
310            IF (ctrcnm(jn).EQ.'NO3') THEN
311                DO ji=2,jpim1
312                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztot(ji)
313                END DO
314#if defined key_trc_diabio
315                trbio(ji,jj,jk,1)=ztot(ji)
316#endif
317            ENDIF
318          END DO
319        END DO
320
321
322#if defined key_trc_diabio
323        DO jk=jpkb,jpkm1
324          DO ji=2,jpim1
325            trbio(ji,jj,jk,2)=tra(ji,jj,jk,jptra)
326          END DO
327        END DO
328#endif
329C
330C
331C END of slab
332C ===========
333C
334 1000 CONTINUE
335
336#if defined key_trc_diaadd
337
338C Lateral boundary conditions on trc2d
339      DO jn=1,jpdia2d
340          CALL lbc_lnk(trc2d(:,:,jn),'T',1. )
341      END DO
342
343C Lateral boundary conditions on trc3d
344      DO jn=1,jpdia3d
345          CALL lbc_lnk(trc3d(:,:,1,jn),'T',1. )
346      END DO
347
348#endif
349
350#if defined key_trc_diabio
351C Lateral boundary conditions on trcbio
352      DO jn=1,jpdiabio
353          CALL lbc_lnk(trbio(:,:,1,jn),'T',1. )
354      END DO
355#endif
Note: See TracBrowser for help on using the repository browser.