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 @ 186

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

CL + CE : NEMO TRC_SRC start

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