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

source: trunk/NEMO/TOP_SRC/SMS/trcbio.npzd.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: 7.0 KB
Line 
1C $Id$
2CCC
3CCC      trcbio.npzd.h
4CCC      *****************
5CCC
6CC   defined key : key_trc_npzd
7CC   ===========
8CC
9CC
10CC   INPUT :
11CC   -----
12CC      argument
13CC              ktask           : task identificator
14CC              kt              : time step
15CC      COMMON
16CC            /comcoo/          : orthogonal curvilinear coordinates
17CC                                and scale factors
18CC                                depths
19CC            /cottrp/          : present and next fields for passive
20CC                              : tracers
21CC            /comtsk/          : multitasking
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,znut              : now concentrations
36CC               zlt,zlnut,zlpe                   : limitation terms for phyto
37CC                                                 
38CC               zflxnp,zflxpn,zflxpz,zflxdz      : fluxes between bio
39CC                                                  boxes
40CC               zflxpd,zflxzd,zflxdn
41CC               zphya,zzooa,znuta,zdeta          : after bio trends
42CC               zphimp, zmp, zphimz, zmz         : mortality terms
43CC               zppz, zpdz, zpppz, zppdz, zfood  : preferences terms
44CC               zfilpz, zfilpd                   : filtration terms
45CC
46CC   EXTERNAL :                   no
47CC   --------
48CC
49CC   REFERENCES :                 no
50CC   ----------
51CC
52CC   MODIFICATIONS:
53CC   --------------
54CC       original : 95-02 (M. Levy)
55CC                  99-07 (M. Levy) version .h
56CC                  99-09 (M. Levy) version with no deep mixing limitation
57CC       adaptations : 00-12 (E. Kestenare) 
58CC                     assign a parameter to name individual tracers
59CC                     01-02 (E. Kestenare)
60CC                     introduce jpno3 instead of jpnut
61CC                     01-02 (E. Kestenare) add sediments
62      USE oce_trc
63      USE_trp_trc
64      USE sms
65      IMPLICIT NONE
66CC local declarations
67CC ==================
68      INTEGER kt
69
70      INTEGER ji,jj,jk,jn
71      REAL ztot(jpi)
72      REAL zdet,zzoo,zphy,znut,zflxnp,zflxpn,zppz,zpdz,zpppz,
73     $    zppdz,zfood,zfilpz,zfildz,zflxpz,zflxdz,zflxzl,zflxzn,zflxpd,
74     $    zflxzd,zflxdn,zphya,zzooa,znuta,zdeta,ztra
75      REAL zle,zlt,zlnut
76
77CCC---------------------------------------------------------------------
78CCC  OPA8, LODYC (15/11/96)
79CCC---------------------------------------------------------------------
80C   | --------------|
81C   | NPZD MODEL| 
82C   | --------------|
83
84C
85C vertical slab
86C =============
87C
88      DO 1000 jj = 2,jpjm1
89C
90C 1. biological level
91C ===================
92C
93C       set fbod to 0 for sediments
94        DO ji = 2,jpim1
95          fbod(ji,jj)=0.
96        END DO
97 
98        DO jk=1,jpkbm1
99          DO ji = 2,jpim1
100C
101C
102C 1.1 trophic variables( det, zoo, phy, nut)
103C ------------------------------------------
104C
105C negative trophic variables DO not contribute to the fluxes
106C
107            zdet = max(0.,trn(ji,jj,jk,jpdet))
108            zzoo = max(0.,trn(ji,jj,jk,jpzoo))
109            zphy = max(0.,trn(ji,jj,jk,jpphy))
110            znut = max(0.,trn(ji,jj,jk,jpno3))
111C
112C
113C 1.2 Limitations
114C -----------------------
115C
116            zlt = 1.
117            zle = 1. - exp( -xpar(ji,jj,jk)/aki/zlt) 
118            zlnut = znut / ( znut + aknut )
119C
120C
121C 1.3 sinks and sources
122C ---------------------
123C
124C
125C 4.1 phytoplankton production and exsudation
126C
127            zflxnp = tmumax * zle * zlt * zlnut  * zphy
128            zflxpn = rgamma * zflxnp
129C
130C 4.2 zoolplankton production
131C
132C preferences
133C
134            zppz = rppz
135            zpdz = 1. - rppz
136            zpppz = ( zppz * zphy ) /
137     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
138            zppdz = ( zpdz * zdet ) /
139     $          ( ( zppz * zphy + zpdz * zdet ) + 1.e-13 )
140            zfood = zpppz * zphy + zppdz * zdet
141C
142C filtration
143C
144            zfilpz = taus * zpppz / (aks + zfood)
145            zfildz = taus * zppdz / (aks + zfood)
146C
147C grazing
148C
149
150            zflxpz = zfilpz * zphy * zzoo
151            zflxdz = zfildz * zdet * zzoo
152C
153C 3. fecal pellets production
154C
155            zflxzl = rpnaz * zflxpz + rdnaz * zflxdz
156C
157C 4. zooplankton liquide excretion IF zzoo greater THEN eggzoo
158C
159            zflxzn = tauzn * zzoo * (1. + sign(1., zzoo - eggzoo))/2.
160C
161C 5. mortality
162C
163C phytoplankton mortality
164C
165            zflxpd = tmminp * zphy
166C
167C
168C zooplankton mortality if zzoo greater then eggzoo
169C
170C
171            zflxzd = tmminz * zzoo * (1. + sign(1., zzoo - eggzoo))/2.
172C
173C
174C 6. detritus breakdomn
175C
176            zflxdn = taudn * zdet
177C
178C
179C 1.4 determination of trends
180C ---------------------------
181C
182C total trend for each biological tracer
183C
184            zphya = zflxnp - zflxpn - zflxpz - zflxpd
185            zzooa = zflxpz + zflxdz - zflxzd - zflxzl - zflxzn
186            znuta = zflxpn + zflxzn + zflxdn - zflxnp
187            zdeta = zflxpd + zflxzd + zflxzl - zflxdn - zflxdz
188C
189#if defined key_trc_diabio
190            trbio(ji,jj,jk,1) = zflxnp
191            trbio(ji,jj,jk,2) = zflxpz
192            trbio(ji,jj,jk,3) = zflxpd
193            trbio(ji,jj,jk,4) = zflxdz
194            trbio(ji,jj,jk,5) = zflxzd + zflxzl
195            trbio(ji,jj,jk,6) = zflxzn
196            trbio(ji,jj,jk,7) = zflxdn
197            trbio(ji,jj,jk,9) = zflxpn + zflxzn + zflxdn
198#endif
199C
200C tracer flux at totox-point added to the general trend
201C
202            tra(ji,jj,jk,jpdet) = tra(ji,jj,jk,jpdet) + zdeta
203            tra(ji,jj,jk,jpzoo) = tra(ji,jj,jk,jpzoo) + zzooa
204            tra(ji,jj,jk,jpphy) = tra(ji,jj,jk,jpphy) + zphya
205            tra(ji,jj,jk,jpno3) = tra(ji,jj,jk,jpno3) + znuta
206C
207          END DO
208        END DO
209
210C
211C 2. under biological level
212C =========================
213C
214        DO jk=jpkb,jpk
215C
216C 2.1 compute the remineralisation of all quantities towards nutrients
217C --------------------------------------------------------------------
218C
219          DO ji=2,jpim1
220            ztot(ji) = 0.
221          END DO
222          DO jn=1,jptra
223            IF (ctrcnm(jn).NE.'NO3') THEN
224                DO ji=2,jpim1
225                  ztra = remdmp(jk,jn) * trn(ji,jj,jk,jn) 
226                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) - ztra
227                  ztot(ji) = ztot(ji) + ztra
228                END DO
229            ENDIF
230          END DO
231          DO jn=1,jptra
232            IF (ctrcnm(jn).EQ.'NUT') THEN
233                DO ji=2,jpim1
234                  tra(ji,jj,jk,jn) = tra(ji,jj,jk,jn) + ztot(ji)
235                END DO
236#if defined key_trc_diabio
237                trbio(ji,jj,jk,1)=ztot(ji)
238#endif
239            ENDIF
240          END DO
241        END DO
242C
243#if defined key_trc_diabio
244        DO jk=jpkb,jpkm1
245          DO ji=2,jpim1
246            trbio(ji,jj,jk,9)=tra(ji,jj,jk,jptra)
247          END DO
248        END DO
249#endif
250C
251C
252C END of slab
253C ===========
254C
255 1000 CONTINUE
Note: See TracBrowser for help on using the repository browser.